From 21b85690fe3cd4c573ddc9a71309d039416877b7 Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Tue, 8 Oct 2013 01:54:36 +0400 Subject: [PATCH] Add bastion effect and fix some stuff in siege effect --- eos/effects/maraudermodeeffect25.py | 47 +++++++++++++++++++++++++++++ eos/effects/siegemodeeffect6.py | 21 ++++++++----- 2 files changed, 61 insertions(+), 7 deletions(-) create mode 100644 eos/effects/maraudermodeeffect25.py diff --git a/eos/effects/maraudermodeeffect25.py b/eos/effects/maraudermodeeffect25.py new file mode 100644 index 000000000..2dbc2404f --- /dev/null +++ b/eos/effects/maraudermodeeffect25.py @@ -0,0 +1,47 @@ +# Used by: +# Module: Bastion Module I +type = "active" +runTime = "early" +def handler(fit, module, context): + # Resistances + for layer, attrPrefix in (('shield', 'shield'), ('armor', 'armor'), ('hull', '')): + for damageType in ('Kinetic', 'Thermal', 'Explosive', 'Em'): + bonus = "%s%sDamageResonance" % (attrPrefix, damageType) + bonus = "%s%s" % (bonus[0].lower(), bonus[1:]) + booster = "%s%sDamageResonance" % (layer, damageType) + fit.ship.multiplyItemAttr(bonus, module.getModifiedItemAttr(booster), + stackingPenalties=True, penaltyGroup="preMul") + + # Turrets + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Large Energy Turret") or \ + mod.item.requiresSkill("Large Hybrid Turret") or \ + mod.item.requiresSkill("Large Projectile Turret"), + "maxRange", module.getModifiedItemAttr("maxRangeBonus"), + stackingPenalties=True) + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Large Energy Turret") or \ + mod.item.requiresSkill("Large Hybrid Turret") or \ + mod.item.requiresSkill("Large Projectile Turret"), + "falloff", module.getModifiedItemAttr("falloffBonus"), + stackingPenalties=True) + + # Missiles + fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Torpedoes") or \ + mod.charge.requiresSkill("Cruise Missiles"), + "maxVelocity", module.getModifiedItemAttr("missileVelocityBonus")) + + # Tanking + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Repair Systems") or mod.item.requiresSkill("Repair Systems"), + "armorDamageAmount", module.getModifiedItemAttr("armorDamageAmountBonus"), + stackingPenalties=True) + fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Operation") or mod.item.requiresSkill("Shield Operation"), + "shieldBonus", module.getModifiedItemAttr("shieldBoostMultiplier"), + stackingPenalties=True) + + # Speed penalty + fit.ship.boostItemAttr("maxVelocity", module.getModifiedItemAttr("speedFactor")) + + # Max locked targets + fit.ship.forceItemAttr("maxLockedTargets", module.getModifiedItemAttr("maxLockedTargets")) + + # Block Hostile ewar + fit.ship.forceItemAttr("disallowOffensiveModifiers", module.getModifiedItemAttr("disallowOffensiveModifiers")) diff --git a/eos/effects/siegemodeeffect6.py b/eos/effects/siegemodeeffect6.py index b2cf08c06..f6b2bbfc5 100755 --- a/eos/effects/siegemodeeffect6.py +++ b/eos/effects/siegemodeeffect6.py @@ -7,12 +7,14 @@ def handler(fit, module, context): fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Energy Turret") or \ mod.item.requiresSkill("Capital Hybrid Turret") or \ mod.item.requiresSkill("Capital Projectile Turret"), - "damageMultiplier", module.getModifiedItemAttr("damageMultiplierBonus")) + "damageMultiplier", module.getModifiedItemAttr("damageMultiplierBonus"), + stackingPenalties=True) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Energy Turret") or \ mod.item.requiresSkill("Capital Hybrid Turret") or \ mod.item.requiresSkill("Capital Projectile Turret"), - "trackingSpeed", module.getModifiedItemAttr("trackingSpeedBonus")) + "trackingSpeed", module.getModifiedItemAttr("trackingSpeedBonus"), + stackingPenalties=True) #Missiles for type in ("kinetic", "thermal", "explosive", "em"): @@ -26,15 +28,19 @@ def handler(fit, module, context): #Shield Boosters fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Operation"), - "duration", module.getModifiedItemAttr("shieldBonusDurationBonus")) + "duration", module.getModifiedItemAttr("shieldBonusDurationBonus"), + stackingPenalties=True) fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Operation"), - "shieldBonus", module.getModifiedItemAttr("shieldBoostMultiplier")) + "shieldBonus", module.getModifiedItemAttr("shieldBoostMultiplier"), + stackingPenalties=True) #Armor Reppers fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Armor Repair Unit", - "armorDamageAmount", module.getModifiedItemAttr("armorDamageAmountBonus")) + "armorDamageAmount", module.getModifiedItemAttr("armorDamageAmountBonus"), + stackingPenalties=True) fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Armor Repair Unit", - "duration", module.getModifiedItemAttr("armorDamageDurationBonus")) + "duration", module.getModifiedItemAttr("armorDamageDurationBonus"), + stackingPenalties=True) #Speed penalty fit.ship.boostItemAttr("maxVelocity", module.getModifiedItemAttr("speedFactor")) @@ -43,7 +49,8 @@ def handler(fit, module, context): fit.ship.multiplyItemAttr("mass", module.getModifiedItemAttr("massMultiplier")) #Scan resolution - fit.ship.multiplyItemAttr("scanResolution", module.getModifiedItemAttr("scanResolutionMultiplier")) + fit.ship.multiplyItemAttr("scanResolution", module.getModifiedItemAttr("scanResolutionMultiplier"), + stackingPenalties=True) #Max locked targets fit.ship.forceItemAttr("maxLockedTargets", module.getModifiedItemAttr("maxLockedTargets"))