73 lines
1.9 KiB
Python
73 lines
1.9 KiB
Python
from Mods.ModMenu import EnabledSaveType, Hook, SDKMod, OptionManager, RegisterMod
|
|
from Mods.ModUtils import SdkMod
|
|
|
|
|
|
## Enemies that MAY be upped: badass constructor, saturn, knuckle dragger, cassius
|
|
ENEMY_DROP_MULTI = {
|
|
'PawnBalance_Anemone_Cassius': 2, # Cassius
|
|
'PawnBalance_ConstructorBadass': 30, # Badass Constructor
|
|
'PawnBalance_LoaderGiant': 10, # Saturn
|
|
'PawnBalance_PrimalBeast_KnuckleDragger': 10, # Knuckle Dragger
|
|
'PawnBalance_Uranus': 1 # Uranus
|
|
}
|
|
|
|
|
|
class LootSplosion(SdkMod):
|
|
__doc__ = 'Multiplies drops of enemies that are killed. The extra drops can optionally require a critical hit.'
|
|
|
|
Name = 'Lootsplosion'
|
|
Description = 'Multiplies drops of enemies that are killed'
|
|
Author = 'Izalia Mae'
|
|
Version = '1.0'
|
|
|
|
|
|
def __init__(self):
|
|
self.set_enable_state('settings')
|
|
self.Options.new_slider(
|
|
'Drop Multiplier', 'Number of times to multiply the drops',
|
|
default = 15,
|
|
min = 0,
|
|
max = 50,
|
|
increment = 1,
|
|
id = 'multiplier'
|
|
)
|
|
|
|
self.Options.new_boolean(
|
|
'CritRequired', 'Require a critical hit',
|
|
default = True,
|
|
id = 'crit'
|
|
)
|
|
|
|
|
|
def get_drop_multi(self, enemy):
|
|
enemy_level = ENEMY_DROP_MULTI.get(enemy, None)
|
|
drop_level = self.Options.get('multiplier').CurrentValue
|
|
|
|
if enemy_level == None:
|
|
return self.Options.get('multiplier').CurrentValue
|
|
|
|
return min(drop_level, enemy_level)
|
|
|
|
|
|
@Hook("WillowGame.WillowPawn.DropLootOnDeath")
|
|
def handle_loot_drop(self, caller, function, params):
|
|
if not caller.bWasLastDamageACriticalHit and self.Options.get('crit').CurrentValue:
|
|
return True
|
|
|
|
enemy = caller.GetBalancedActorTypeIdentifier()
|
|
multi = self.get_drop_multi(enemy)
|
|
self.log(f'Drop Multi ({enemy}): {multi}')
|
|
|
|
for _ in range(multi):
|
|
caller.DropLootOnDeath(
|
|
params.Killer,
|
|
params.DamageType,
|
|
params.DamageTypeDefinition
|
|
)
|
|
|
|
return True
|
|
|
|
|
|
mod = LootSplosion()
|
|
mod.register()
|