def __init__( self, mod_label, mod_filename, desc_text, card_text, part_text, rewards1, rewards2, rewards3, single_name='Money', triple_name='Trust Fund', combo_name_mirv='Diversifying', combo_name_rain='Make It Rain', combo_name_nuke='Investing', combo_name_large='Big Spender', combo_name_bouncy='Bullish', combo_name_spring='Depreciating', combo_name_sticky='Price Fixing', combo_name_artillery='Windfall', combo_name_lingering='Jackpot', combo_name_divide='Compounding', combo_name_singularity='Moneysink', combo_name_roider='ROI Rage', combo_name_link='Pyramid Scheme', combo_name_transfusion='Cash Infusion', combo_name_generator='Taxing', combo_name_elemental='Cash Infusion', combo_name_force='Bailout', combo_name_money='Greed', ): """ rewards1, rewards2, and rewards3 should be a list of tuples, with the first element being a balance name (or `None`), the second being a pool name (or `None`), and the third being a weighting value (either a number or a `BVC` object). """ self.mod_label = mod_label self.mod_filename = mod_filename self.desc_text = desc_text self.card_text = card_text self.part_text = part_text self.single_name = single_name self.triple_name = triple_name self.combo_name_mirv = combo_name_mirv self.combo_name_rain = combo_name_rain self.combo_name_nuke = combo_name_nuke self.combo_name_large = combo_name_large self.combo_name_bouncy = combo_name_bouncy self.combo_name_spring = combo_name_spring self.combo_name_sticky = combo_name_sticky self.combo_name_artillery = combo_name_artillery self.combo_name_lingering = combo_name_lingering self.combo_name_divide = combo_name_divide self.combo_name_singularity = combo_name_singularity self.combo_name_roider = combo_name_roider self.combo_name_link = combo_name_link self.combo_name_transfusion = combo_name_transfusion self.combo_name_generator = combo_name_generator self.combo_name_elemental = combo_name_elemental self.combo_name_force = combo_name_force self.combo_name_money = combo_name_money # Construct our ItemPools right away self.rewards1 = ItemPool(self.pool1) self.rewards2 = ItemPool(self.pool2) self.rewards3 = ItemPool(self.pool3) for pool_obj, rewards in [ (self.rewards1, rewards1), (self.rewards2, rewards2), (self.rewards3, rewards3), ]: for balance_name, pool_name, weight in rewards: if balance_name: pool_obj.add_balance(balance_name, weight) else: pool_obj.add_pool(pool_name, weight)
self.itempool_leg = itempool_leg self.itempool_reg_qty = itempool_reg_qty self.itempool_leg_qty = itempool_leg_qty self.firerate_reg = firerate_reg self.firerate_leg = firerate_leg self.label_reg = label_reg self.label_leg = label_leg self.reg_cost = reg_cost self.leg_cost = leg_cost self.video = video ### ### Rapid-fire config (also defines the "default" reward pools) ### fab_default_reg = ItemPool('/Game/GameData/Loot/ItemPools/Fabricator/ItemPool_FabricatorGuns') fab_default_reg.add_pool('/Game/GameData/Loot/ItemPools/Guns/ItemPool_Guns_Uncommon', BVC(bvc=90)) fab_default_reg.add_pool('/Game/GameData/Loot/ItemPools/Guns/ItemPool_Guns_Rare', BVC(bvc=8)) fab_default_reg.add_pool('/Game/GameData/Loot/ItemPools/Guns/ItemPool_Guns_VeryRare', BVC(bvc=2)) fab_default_leg = ItemPool('/Game/GameData/Loot/ItemPools/Fabricator/ItemPool_FabricatorGuns_AltFire') fab_default_leg.add_pool('/Game/GameData/Loot/ItemPools/Guns/ItemPool_Guns_Legendary') fab_default_leg.add_pool('/Game/GameData/Loot/ItemPools/VendingMachines/DA_ItemPool_VendingMachine_CrazyEarl_MissionRewards', BVC(bvc=0.25)) rapidfire = Config(filename='rapidfire', label='Rapid-Fire', desc=[ "Converts the Fabricator's primary firing mode to full auto single-gun", "firing, and the legendary mode to a full auto shotgun-like blast. The", "quantity of gear dropped on the legendary mode has been buffed up a bit", "as well, which is mildly cheaty.",
lic=Mod.CC_BY_SA_40, v='1.0.0', cats='vendor', ) # We're basically recreating a BL2/TPS-style "GunsAndGear" ItemPool here, which isn't something that's # really found anywhere in BL3. So, I've chosen these relative weights here from the BL2 version, and # modified it slightly. The stock BL2 weights are: # Guns: 100 # Shields: 45 # Grenades: 35 # COMs: 25 # Artifacts: 20 # I'm scaling the non-guns to 60% so that you'll get guns for about 2/3 of the time. non_gun_scale = .6 pool = ItemPool( '/Game/PatchDLC/Ixora2/Loot/VendingMachines/DA_ItemPool_BlackMarket') pool.add_pool('/Game/GameData/Loot/ItemPools/Guns/ItemPool_Guns_Legendary', BVC(bvc=1, bvs=1)), pool.add_pool( '/Game/GameData/Loot/ItemPools/Shields/ItemPool_Shields_05_Legendary', BVC(bvc=1, bvs=.45 * non_gun_scale)), pool.add_pool( '/Game/GameData/Loot/ItemPools/GrenadeMods/ItemPool_GrenadeMods_05_Legendary', BVC(bvc=1, bvs=.35 * non_gun_scale)), pool.add_pool( '/Game/Gear/ClassMods/_Design/ItemPools/ItemPool_ClassMods_Beastmaster_05_Legendary', BVC(bva= '/Game/GameData/Loot/CharacterWeighting/Att_CharacterWeight_Beastmaster', bvs=.25 * non_gun_scale)), pool.add_pool( '/Game/Gear/ClassMods/_Design/ItemPools/ItemPool_ClassMods_Gunner_05_Legendary',
'Additionally, his kill skills last an additional [skillbold]$VALUE$ seconds[/skillbold].', ) mod.newline() # Add to the drop pools mod.header('Add to drop pools') data = BL3Data() for pool_name in [ '/Game/PatchDLC/Ixora/GameData/Loot/ItemPools/Chest/Event/ItemPool_GearUp_Event_Industry_Legendary', '/Game/PatchDLC/Ixora/GameData/Loot/ItemPools/ItemPool_Ixora_All_Legendary', ]: short_name = pool_name.split('/')[-1] pool = ItemPool.from_data(data, pool_name) weight = None for drop in pool.balanceditems: if drop.balance_name and 'InvBalD_CM_Ixora_OPE_L01' in drop.balance_name: drop.weight.bvs /= 1.5 weight = drop.weight break if not weight: raise Exception("Couldn't find Spy mod in {}".format(short_name)) pool.add_balance(balance, weight) mod.comment(short_name) mod.reg_hotfix(Mod.LEVEL, 'FrostSite_P', pool_name, 'BalancedItems', str(pool), )
"drops to be either health charges or damage-reduction charges instead.", ], lic=Mod.CC_BY_SA_40, v='1.0.0', cats='mayhem', ) # Boosters to switch to new_boosters = [ '/Game/Gear/Shields/_Design/PartSets/Part_Augment/Charges/HealthCharge/HealthChargePickup/InvBal_HealthCharge', '/Game/Gear/Shields/_Design/PartSets/Part_Augment/Charges/FortifyCharge/FortifyCharge_Pickup/InvBal_FortifyCharge', # Not gonna do the damage one, since this is probably gonna be used by melee-focused builds. #'/Game/Gear/Shields/_Design/PartSets/Part_Augment/Charges/PowerCharge/PowerCharge_Pickup/InvBal_PowerCharge', ] booster_weight = 1/len(new_boosters) # Set up the pool pool = ItemPool('/Game/PatchDLC/Mayhem2/Abilities/Enemy/FinishThem/ItemPool_Mayhem2_FinishThem') pool.add_balance('/Game/Pickups/Health/DA_InventoryBalance_Health.DA_InventoryBalance_Health') for booster in new_boosters: pool.add_balance(booster, weight=BVC(bvc=booster_weight)) # Write the hotfix mod.reg_hotfix(Mod.EARLYLEVEL, 'MatchAll', pool.pool_name, 'BalancedItems', str(pool)) mod.close()