Update bastion, siege, triage effects; add networked sensor array effect
This commit is contained in:
68
eos/effects/modulebonusbastionmodule.py
Normal file
68
eos/effects/modulebonusbastionmodule.py
Normal file
@@ -0,0 +1,68 @@
|
||||
# marauderModeEffect26
|
||||
#
|
||||
# Used by:
|
||||
# Module: Bastion Module I
|
||||
type = "active"
|
||||
runTime = "early"
|
||||
def handler(fit, src, 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)
|
||||
penalize = False if layer == 'hull' else True
|
||||
fit.ship.multiplyItemAttr(bonus, src.getModifiedItemAttr(booster),
|
||||
stackingPenalties=penalize, 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", src.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", src.getModifiedItemAttr("falloffBonus"),
|
||||
stackingPenalties=True)
|
||||
|
||||
# Missiles
|
||||
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Torpedoes") or \
|
||||
mod.charge.requiresSkill("Cruise Missiles") or \
|
||||
mod.charge.requiresSkill("Heavy Missiles"),
|
||||
"maxVelocity", src.getModifiedItemAttr("missileVelocityBonus"))
|
||||
|
||||
# Tanking
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Repair Systems"),
|
||||
"armorDamageAmount", src.getModifiedItemAttr("armorDamageAmountBonus"),
|
||||
stackingPenalties=True)
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Shield Operation"),
|
||||
"shieldBonus", src.getModifiedItemAttr("shieldBoostMultiplier"),
|
||||
stackingPenalties=True)
|
||||
|
||||
# Speed penalty
|
||||
fit.ship.boostItemAttr("maxVelocity", src.getModifiedItemAttr("speedFactor"))
|
||||
|
||||
# @todo: test these for April 2016 release
|
||||
# Max locked targets
|
||||
fit.ship.forceItemAttr("maxLockedTargets", src.getModifiedItemAttr("maxLockedTargets"))
|
||||
|
||||
# Block Hostile ewar
|
||||
fit.ship.forceItemAttr("disallowOffensiveModifiers", src.getModifiedItemAttr("disallowOffensiveModifiers"))
|
||||
|
||||
# new with April 2016 release
|
||||
for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'):
|
||||
fit.ship.boostItemAttr("scan{}Strength".format(scanType),
|
||||
src.getModifiedItemAttr("scan{}StrengthPercent").format(scanType),
|
||||
stackingPenalties=True)
|
||||
|
||||
fit.ship.boostItemAttr("remoteRepairImpedance", src.getModifiedItemAttr("remoteRepairImpedanceBonus"))
|
||||
fit.ship.boostItemAttr("remoteAssistanceImpedance", src.getModifiedItemAttr("remoteAssistanceImpedanceBonus"))
|
||||
fit.ship.boostItemAttr("sensorDampenerResistance", src.getModifiedItemAttr("sensorDampenerResistanceBonus"))
|
||||
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill("Micro Jump Drive Operation"), "activationBlocked", src.getModifiedItemAttr("activationBlockedStrenght"))
|
||||
fit.ship.increaseItemAttr("disallowDocking", src.getModifiedItemAttr("disallowDocking"))
|
||||
fit.ship.boostItemAttr("targetPainterResistance", src.getModifiedItemAttr("targetPainterResistanceBonus"))
|
||||
fit.ship.boostItemAttr("weaponDisruptionResistance", src.getModifiedItemAttr("weaponDisruptionResistanceBonus"))
|
||||
fit.ship.increaseItemAttr("disallowTethering", src.getModifiedItemAttr("disallowTethering"))
|
||||
fit.ship.increaseItemAttr("warpScrambleStatus", src.getModifiedItemAttr("siegeModeWarpStatus"))
|
||||
24
eos/effects/modulebonusnetworkedsensorarray.py
Normal file
24
eos/effects/modulebonusnetworkedsensorarray.py
Normal file
@@ -0,0 +1,24 @@
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.ship.increaseItemAttr("maxLockedTargets", src.getModifiedItemAttr("maxLockedTargetsBonus"))
|
||||
fit.ship.multiplyItemAttr("maxTargetRange", src.getModifiedItemAttr("maxTargetRangeMultiplier"), stackingPenalties=True, penaltyGroup="postMul")
|
||||
fit.ship.multiplyItemAttr("scanResolution", src.getModifiedItemAttr("scanResolutionMultiplier"), stackingPenalties=True)
|
||||
|
||||
for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'):
|
||||
fit.ship.boostItemAttr("scan{}Strength".format(scanType),
|
||||
src.getModifiedItemAttr("scan{}StrengthPercent").format(scanType),
|
||||
stackingPenalties=True)
|
||||
|
||||
# EW cap need increase
|
||||
groups = [
|
||||
'Burst Jammer',
|
||||
'Weapon Disruptor',
|
||||
'ECM',
|
||||
'Sensor Dampener',
|
||||
'Target Painter']
|
||||
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups or
|
||||
mod.item.requiresSkill("Propulsion Jamming"),
|
||||
"capacitorNeed", src.getModifiedItemAttr("ewCapacitorNeedBonus"))
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Propulsion Jamming"),
|
||||
"capacitorNeed", src.getModifiedItemAttr("ewCapacitorNeedBonus"))
|
||||
62
eos/effects/modulebonussiegemodule.py
Normal file
62
eos/effects/modulebonussiegemodule.py
Normal file
@@ -0,0 +1,62 @@
|
||||
# Used by:
|
||||
# Variations of module: Siege Module I (2 of 2)
|
||||
type = "active"
|
||||
runTime = "early"
|
||||
def handler(fit, src, context):
|
||||
#Turrets
|
||||
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", src.getModifiedItemAttr("damageMultiplierBonus"))
|
||||
|
||||
#Missiles
|
||||
for type in ("kinetic", "thermal", "explosive", "em"):
|
||||
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("XL Torpedoes") or \
|
||||
mod.charge.requiresSkill("XL Cruise Missiles") or \
|
||||
mod.charge.requiresSkill("Torpedoes"),
|
||||
"%sDamage" % type, src.getModifiedItemAttr("damageMultiplierBonus"))
|
||||
|
||||
# Reppers
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Operation") or \
|
||||
mod.item.requiresSkill("Capital Repair Systems"),
|
||||
"duration", src.getModifiedItemAttr("siegeLocalLogisticsDurationBonus"))
|
||||
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Shield Operation"),
|
||||
"shieldBonus", src.getModifiedItemAttr("siegeLocalLogisticsAmountBonus"),
|
||||
stackingPenalties=True)
|
||||
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capital Repair Systems"),
|
||||
"armorDamageAmount", src.getModifiedItemAttr("siegeLocalLogisticsAmountBonus"),
|
||||
stackingPenalties=True)
|
||||
|
||||
#Speed penalty
|
||||
fit.ship.boostItemAttr("maxVelocity", src.getModifiedItemAttr("speedFactor"))
|
||||
|
||||
#Mass
|
||||
fit.ship.multiplyItemAttr("mass", src.getModifiedItemAttr("siegeMassMultiplier"),
|
||||
stackingPenalties=True, penaltyGroup="postMul")
|
||||
|
||||
# @ todo: test for April 2016 release
|
||||
#Block Hostile EWAR and friendly effects
|
||||
fit.ship.forceItemAttr("disallowOffensiveModifiers", src.getModifiedItemAttr("disallowOffensiveModifiers"))
|
||||
fit.ship.forceItemAttr("disallowAssistance", src.getModifiedItemAttr("disallowAssistance"))
|
||||
|
||||
# new in April 2016 release
|
||||
for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'):
|
||||
fit.ship.boostItemAttr("scan{}Strength".format(scanType),
|
||||
src.getModifiedItemAttr("scan{}StrengthPercent").format(scanType),
|
||||
stackingPenalties=True)
|
||||
|
||||
# missile ROF bonus
|
||||
for group in ("Missile Launcher XL Torpedo", "Missile Launcher Rapid Torpedo", "Missile Launcher XL Cruise"):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == group, "speed", src.getModifiedItemAttr("siegeLauncherROFBonus"), stackingPenalties=True)
|
||||
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Torpedoes"), "maxVelocity", src.getModifiedItemAttr("siegeTorpedoVelocityBonus"), stackingPenalties=True)
|
||||
|
||||
fit.ship.increaseItemAttr("warpScrambleStatus", src.getModifiedItemAttr("siegeModeWarpStatus"))
|
||||
fit.ship.boostItemAttr("remoteRepairImpedance", src.getModifiedItemAttr("remoteRepairImpedanceBonus"))
|
||||
fit.ship.increaseItemAttr("disallowTethering", src.getModifiedItemAttr("disallowTethering"))
|
||||
fit.ship.boostItemAttr("sensorDampenerResistance", src.getModifiedItemAttr("sensorDampenerResistanceBonus"))
|
||||
fit.ship.boostItemAttr("remoteAssistanceImpedance", src.getModifiedItemAttr("remoteAssistanceImpedanceBonus"))
|
||||
fit.ship.boostItemAttr("weaponDisruptionResistance", src.getModifiedItemAttr("weaponDisruptionResistanceBonus"))
|
||||
fit.ship.increaseItemAttr("disallowDocking", src.getModifiedItemAttr("disallowDocking"))
|
||||
71
eos/effects/modulebonustriagemodule.py
Normal file
71
eos/effects/modulebonustriagemodule.py
Normal file
@@ -0,0 +1,71 @@
|
||||
# Used by:
|
||||
# Module: Triage Module I
|
||||
type = "active"
|
||||
runTime = "early"
|
||||
def handler(fit, src, context):
|
||||
# Remote effect bonuses (duration / amount / range / fallout)
|
||||
for skill, amtAttr, stack in (
|
||||
("Capital Remote Armor Repair Systems", "armorDamageAmount", True),
|
||||
("Capital Shield Emission Systems", "shieldBonus", True),
|
||||
("Capital Capacitor Emission Systems", "powerTransferAmount", False),
|
||||
("Capital Remote Hull Repair Systems", "structureDamageAmount"), False):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), "duration", src.getModifiedItemAttr("siegeRemoteLogisticsDurationBonus"))
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), amtAttr, src.getModifiedItemAttr("siegeRemoteLogisticsAmountBonus"), stackingPenalties=stack)
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), "maxRange", src.getModifiedItemAttr("siegeRemoteLogisticsRangeBonus"), stackingPenalties=True)
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), "falloffEffectiveness", src.getModifiedItemAttr("siegeRemoteLogisticsRangeBonus"), stackingPenalties=True)
|
||||
|
||||
# Local armor/shield rep effects (duration / amoutn)
|
||||
for skill, amtAttr in (
|
||||
("Capital Shield Operation", "shieldBonus"),
|
||||
("Capital Repair Systems", "armorDamageAmount")):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), "duration", src.getModifiedItemAttr("siegeLocalLogisticsDurationBonus"))
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill(skill), amtAttr, src.getModifiedItemAttr("siegeLocalLogisticsAmountBonus"))
|
||||
|
||||
|
||||
# Speed bonus
|
||||
fit.ship.boostItemAttr("maxVelocity", src.getModifiedItemAttr("speedFactor"), stackingPenalties=True)
|
||||
|
||||
# Scan resolution multiplier
|
||||
fit.ship.multiplyItemAttr("scanResolution", src.getModifiedItemAttr("scanResolutionMultiplier"), stackingPenalties=True)
|
||||
|
||||
# Mass multiplier
|
||||
fit.ship.multiplyItemAttr("mass", src.getModifiedItemAttr("siegeMassMultiplier"), stackingPenalties=True)
|
||||
|
||||
# Max locked targets
|
||||
fit.ship.increaseItemAttr("maxLockedTargets", src.getModifiedItemAttr("maxLockedTargetsBonus"))
|
||||
|
||||
|
||||
# EW cap need increase
|
||||
groups = [
|
||||
'Burst Jammer',
|
||||
'Weapon Disruptor',
|
||||
'ECM',
|
||||
'Sensor Dampener',
|
||||
'Target Painter']
|
||||
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name in groups or
|
||||
mod.item.requiresSkill("Propulsion Jamming"),
|
||||
"capacitorNeed", src.getModifiedItemAttr("ewCapacitorNeedBonus"))
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Propulsion Jamming"),
|
||||
"capacitorNeed", src.getModifiedItemAttr("ewCapacitorNeedBonus"))
|
||||
|
||||
# todo: test for April 2016 release
|
||||
# Block EWAR & projected effects
|
||||
fit.ship.forceItemAttr("disallowOffensiveModifiers", src.getModifiedItemAttr("disallowOffensiveModifiers"))
|
||||
fit.ship.forceItemAttr("disallowAssistance", src.getModifiedItemAttr("disallowAssistance"))
|
||||
|
||||
# new in April 2016 release
|
||||
|
||||
for scanType in ('Magnetometric', 'Ladar', 'Gravimetric', 'Radar'):
|
||||
fit.ship.boostItemAttr("scan{}Strength".format(scanType),
|
||||
src.getModifiedItemAttr("scan{}StrengthPercent").format(scanType),
|
||||
stackingPenalties=True)
|
||||
|
||||
fit.drones.filteredItemBoost(lambda mod: mod.item.requiresSkill("Drones"), "damageMultiplier", src.getModifiedItemAttr("droneDamageBonus"), stackingPenalties=True)
|
||||
|
||||
fit.ship.increaseItemAttr("warpScrambleStatus", src.getModifiedItemAttr("siegeModeWarpStatus"))
|
||||
fit.ship.boostItemAttr("sensorDampenerResistance", src.getModifiedItemAttr("sensorDampenerResistanceBonus"))
|
||||
fit.ship.boostItemAttr("remoteAssistanceImpedance", src.getModifiedItemAttr("remoteAssistanceImpedanceBonus"))
|
||||
fit.ship.increaseItemAttr("disallowDocking", src.getModifiedItemAttr("disallowDocking"))
|
||||
fit.ship.boostItemAttr("remoteRepairImpedance", src.getModifiedItemAttr("remoteRepairImpedanceBonus"))
|
||||
fit.ship.increaseItemAttr("disallowTethering", src.getModifiedItemAttr("disallowTethering"))
|
||||
Reference in New Issue
Block a user