From 2a2842100a4596d79f7bbf486a0091be186bc934 Mon Sep 17 00:00:00 2001 From: Ebag333 Date: Sun, 17 Jul 2016 00:01:41 -0700 Subject: [PATCH 1/7] Applied size reduction effect to neut/nos --- eos/effects/energyneutralizerentity.py | 27 ++++++++++++++---- eos/effects/energyneutralizerfalloff.py | 28 +++++++++++++++---- eos/effects/energynosferatufalloff.py | 17 +++++++++++ eos/effects/entityenergyneutralizerfalloff.py | 27 ++++++++++++++---- .../fighterabilityenergyneutralizer.py | 23 +++++++++++++-- 5 files changed, 104 insertions(+), 18 deletions(-) diff --git a/eos/effects/energyneutralizerentity.py b/eos/effects/energyneutralizerentity.py index 993df4a39..d1fba92c7 100644 --- a/eos/effects/energyneutralizerentity.py +++ b/eos/effects/energyneutralizerentity.py @@ -4,9 +4,26 @@ # Drones from group: Energy Neutralizer Drone (3 of 3) from eos.types import State type = "active", "projected" -def handler(fit, container, context): - if "projected" in context and ((hasattr(container, "state") \ - and container.state >= State.ACTIVE) or hasattr(container, "amountActive")): - amount = container.getModifiedItemAttr("energyNeutralizerAmount") - time = container.getModifiedItemAttr("duration") +def handler(fit, module, context): + if "projected" in context and ((hasattr(module, "state") \ + and module.state >= State.ACTIVE) or hasattr(container, "amountActive")): + amount = module.getModifiedItemAttr("energyNeutralizerAmount") + time = module.getModifiedItemAttr("duration") + rigSize = fit.ship.getModifiedItemAttr("rigSize") + modifierLarge = module.getModifiedItemAttr("entityCapacitorLevelModifierLarge") + modifierMedium = module.getModifiedItemAttr("entityCapacitorLevelModifierMedium") + modifierSmall = module.getModifiedItemAttr("entityCapacitorLevelModifierSmall") + + #Small rigged ships + if (rigSize == 1) and modifierSmall: + amount = amount*modifierSmall + + #Medium rigged ships + if (rigSize == 2) and modifierMedium: + amount = amount*modifierMedium + + #Large rigged ships + if (rigSize == 3) and modifierLarge: + amount = amount*modifierLarge + fit.addDrain(time, amount, 0) diff --git a/eos/effects/energyneutralizerfalloff.py b/eos/effects/energyneutralizerfalloff.py index b0702ad29..d2f148e2f 100644 --- a/eos/effects/energyneutralizerfalloff.py +++ b/eos/effects/energyneutralizerfalloff.py @@ -4,9 +4,27 @@ # Modules from group: Energy Neutralizer (51 of 51) from eos.types import State type = "active", "projected" -def handler(fit, container, context): - if "projected" in context and ((hasattr(container, "state") \ - and container.state >= State.ACTIVE) or hasattr(container, "amountActive")): - amount = container.getModifiedItemAttr("energyNeutralizerAmount") - time = container.getModifiedItemAttr("duration") +def handler(fit, module, context): + if "projected" in context and ((hasattr(module, "state") \ + and module.state >= State.ACTIVE) or hasattr(container, "amountActive")): + amount = module.getModifiedItemAttr("energyNeutralizerAmount") + time = module.getModifiedItemAttr("duration") + rigSize = fit.ship.getModifiedItemAttr("rigSize") + modifierLarge = module.getModifiedItemAttr("entityCapacitorLevelModifierLarge") + modifierMedium = module.getModifiedItemAttr("entityCapacitorLevelModifierMedium") + modifierSmall = module.getModifiedItemAttr("entityCapacitorLevelModifierSmall") + + #Small rigged ships + if (rigSize == 1) and modifierSmall: + amount = amount*modifierSmall + + #Medium rigged ships + if (rigSize == 2) and modifierMedium: + amount = amount*modifierMedium + + #Large rigged ships + if (rigSize == 3) and modifierLarge: + amount = amount*modifierLarge + fit.addDrain(time, amount, 0) + diff --git a/eos/effects/energynosferatufalloff.py b/eos/effects/energynosferatufalloff.py index c2c3cecb7..6febb39be 100644 --- a/eos/effects/energynosferatufalloff.py +++ b/eos/effects/energynosferatufalloff.py @@ -7,7 +7,24 @@ runTime = "late" def handler(fit, module, context): amount = module.getModifiedItemAttr("powerTransferAmount") time = module.getModifiedItemAttr("duration") + rigSize = fit.ship.getModifiedItemAttr("rigSize") + modifierLarge = module.getModifiedItemAttr("entityCapacitorLevelModifierLarge") + modifierMedium = module.getModifiedItemAttr("entityCapacitorLevelModifierMedium") + modifierSmall = module.getModifiedItemAttr("entityCapacitorLevelModifierSmall") + if "projected" in context: + #Small rigged ships + if (rigSize == 1) and modifierSmall: + amount = amount*modifierSmall + + #Medium rigged ships + if (rigSize == 2) and modifierMedium: + amount = amount*modifierMedium + + #Large rigged ships + if (rigSize == 3) and modifierLarge: + amount = amount*modifierLarge + fit.addDrain(time, amount, 0) elif "module" in context: module.itemModifiedAttributes.force("capacitorNeed", -amount) \ No newline at end of file diff --git a/eos/effects/entityenergyneutralizerfalloff.py b/eos/effects/entityenergyneutralizerfalloff.py index 138f2e667..4303cdcab 100644 --- a/eos/effects/entityenergyneutralizerfalloff.py +++ b/eos/effects/entityenergyneutralizerfalloff.py @@ -4,9 +4,26 @@ # Drones from group: Energy Neutralizer Drone (3 of 3) from eos.types import State type = "active", "projected" -def handler(fit, container, context): - if "projected" in context and ((hasattr(container, "state") \ - and container.state >= State.ACTIVE) or hasattr(container, "amountActive")): - amount = container.getModifiedItemAttr("energyNeutralizerAmount") - time = container.getModifiedItemAttr("energyNeutralizerDuration") +def handler(fit, module, context): + if "projected" in context and ((hasattr(module, "state") \ + and module.state >= State.ACTIVE) or hasattr(module, "amountActive")): + amount = module.getModifiedItemAttr("energyNeutralizerAmount") + time = module.getModifiedItemAttr("energyNeutralizerDuration") + rigSize = fit.ship.getModifiedItemAttr("rigSize") + modifierLarge = module.getModifiedItemAttr("entityCapacitorLevelModifierLarge") + modifierMedium = module.getModifiedItemAttr("entityCapacitorLevelModifierMedium") + modifierSmall = module.getModifiedItemAttr("entityCapacitorLevelModifierSmall") + + #Small rigged ships + if (rigSize == 1) and modifierSmall: + amount = amount*modifierSmall + + #Medium rigged ships + if (rigSize == 2) and modifierMedium: + amount = amount*modifierMedium + + #Large rigged ships + if (rigSize == 3) and modifierLarge: + amount = amount*modifierLarge + fit.addDrain(time, amount, 0) diff --git a/eos/effects/fighterabilityenergyneutralizer.py b/eos/effects/fighterabilityenergyneutralizer.py index 0315e4301..5f8c9e72d 100644 --- a/eos/effects/fighterabilityenergyneutralizer.py +++ b/eos/effects/fighterabilityenergyneutralizer.py @@ -12,8 +12,25 @@ prefix = "fighterAbilityEnergyNeutralizer" type = "active", "projected" -def handler(fit, container, context): +def handler(fit, module, context): if "projected" in context: - amount = container.getModifiedItemAttr("{}Amount".format(prefix)) - time = container.getModifiedItemAttr("{}Duration".format(prefix)) + amount = module.getModifiedItemAttr("{}Amount".format(prefix)) + time = module.getModifiedItemAttr("{}Duration".format(prefix)) + rigSize = fit.ship.getModifiedItemAttr("rigSize") + modifierLarge = module.getModifiedItemAttr("entityCapacitorLevelModifierLarge") + modifierMedium = module.getModifiedItemAttr("entityCapacitorLevelModifierMedium") + modifierSmall = module.getModifiedItemAttr("entityCapacitorLevelModifierSmall") + + # Small rigged ships + if (rigSize == 1) and modifierSmall: + amount = amount * modifierSmall + + # Medium rigged ships + if (rigSize == 2) and modifierMedium: + amount = amount * modifierMedium + + # Large rigged ships + if (rigSize == 3) and modifierLarge: + amount = amount * modifierLarge + fit.addDrain(time, amount, 0) \ No newline at end of file From a35b9b5d3f7a89c55c99b1dd4a01bfd6e847d1d4 Mon Sep 17 00:00:00 2001 From: Ebag333 Date: Sun, 17 Jul 2016 10:47:15 -0700 Subject: [PATCH 2/7] Added sig reduction for cap neuts --- eos/effects/energyneutralizerentity.py | 9 +++++++++ eos/effects/energyneutralizerfalloff.py | 9 +++++++++ eos/effects/energynosferatufalloff.py | 9 +++++++++ eos/effects/entityenergyneutralizerfalloff.py | 9 +++++++++ eos/effects/fighterabilityenergyneutralizer.py | 9 +++++++++ 5 files changed, 45 insertions(+) diff --git a/eos/effects/energyneutralizerentity.py b/eos/effects/energyneutralizerentity.py index d1fba92c7..136509df7 100644 --- a/eos/effects/energyneutralizerentity.py +++ b/eos/effects/energyneutralizerentity.py @@ -13,6 +13,15 @@ def handler(fit, module, context): modifierLarge = module.getModifiedItemAttr("entityCapacitorLevelModifierLarge") modifierMedium = module.getModifiedItemAttr("entityCapacitorLevelModifierMedium") modifierSmall = module.getModifiedItemAttr("entityCapacitorLevelModifierSmall") + energyNeutralizerSignatureResolution = module.getModifiedItemAttr("energyNeutralizerSignatureResolution") + signatureRadius = fit.ship.getModifiedItemAttr("signatureRadius") + + #Signature reduction, uses the bomb formula as per CCP Larrikin + if energyNeutralizerSignatureResolution: + sigRatio = signatureRadius/energyNeutralizerSignatureResolution + + sigReductionList = [1, sigRatio] + amount = amount*min(sigReductionList) #Small rigged ships if (rigSize == 1) and modifierSmall: diff --git a/eos/effects/energyneutralizerfalloff.py b/eos/effects/energyneutralizerfalloff.py index d2f148e2f..0cea5d766 100644 --- a/eos/effects/energyneutralizerfalloff.py +++ b/eos/effects/energyneutralizerfalloff.py @@ -13,6 +13,15 @@ def handler(fit, module, context): modifierLarge = module.getModifiedItemAttr("entityCapacitorLevelModifierLarge") modifierMedium = module.getModifiedItemAttr("entityCapacitorLevelModifierMedium") modifierSmall = module.getModifiedItemAttr("entityCapacitorLevelModifierSmall") + energyNeutralizerSignatureResolution = module.getModifiedItemAttr("energyNeutralizerSignatureResolution") + signatureRadius = fit.ship.getModifiedItemAttr("signatureRadius") + + #Signature reduction, uses the bomb formula as per CCP Larrikin + if energyNeutralizerSignatureResolution: + sigRatio = signatureRadius/energyNeutralizerSignatureResolution + + sigReductionList = [1, sigRatio] + amount = amount*min(sigReductionList) #Small rigged ships if (rigSize == 1) and modifierSmall: diff --git a/eos/effects/energynosferatufalloff.py b/eos/effects/energynosferatufalloff.py index 6febb39be..67fbdb5ae 100644 --- a/eos/effects/energynosferatufalloff.py +++ b/eos/effects/energynosferatufalloff.py @@ -11,6 +11,15 @@ def handler(fit, module, context): modifierLarge = module.getModifiedItemAttr("entityCapacitorLevelModifierLarge") modifierMedium = module.getModifiedItemAttr("entityCapacitorLevelModifierMedium") modifierSmall = module.getModifiedItemAttr("entityCapacitorLevelModifierSmall") + energyNeutralizerSignatureResolution = module.getModifiedItemAttr("energyNeutralizerSignatureResolution") + signatureRadius = fit.ship.getModifiedItemAttr("signatureRadius") + + # Signature reduction, uses the bomb formula as per CCP Larrikin + if energyNeutralizerSignatureResolution: + sigRatio = signatureRadius / energyNeutralizerSignatureResolution + + sigReductionList = [1, sigRatio] + amount = amount * min(sigReductionList) if "projected" in context: #Small rigged ships diff --git a/eos/effects/entityenergyneutralizerfalloff.py b/eos/effects/entityenergyneutralizerfalloff.py index 4303cdcab..baa8429b6 100644 --- a/eos/effects/entityenergyneutralizerfalloff.py +++ b/eos/effects/entityenergyneutralizerfalloff.py @@ -13,6 +13,15 @@ def handler(fit, module, context): modifierLarge = module.getModifiedItemAttr("entityCapacitorLevelModifierLarge") modifierMedium = module.getModifiedItemAttr("entityCapacitorLevelModifierMedium") modifierSmall = module.getModifiedItemAttr("entityCapacitorLevelModifierSmall") + energyNeutralizerSignatureResolution = module.getModifiedItemAttr("energyNeutralizerSignatureResolution") + signatureRadius = fit.ship.getModifiedItemAttr("signatureRadius") + + #Signature reduction, uses the bomb formula as per CCP Larrikin + if energyNeutralizerSignatureResolution: + sigRatio = signatureRadius/energyNeutralizerSignatureResolution + + sigReductionList = [1, sigRatio] + amount = amount*min(sigReductionList) #Small rigged ships if (rigSize == 1) and modifierSmall: diff --git a/eos/effects/fighterabilityenergyneutralizer.py b/eos/effects/fighterabilityenergyneutralizer.py index 5f8c9e72d..56fd963d3 100644 --- a/eos/effects/fighterabilityenergyneutralizer.py +++ b/eos/effects/fighterabilityenergyneutralizer.py @@ -20,6 +20,15 @@ def handler(fit, module, context): modifierLarge = module.getModifiedItemAttr("entityCapacitorLevelModifierLarge") modifierMedium = module.getModifiedItemAttr("entityCapacitorLevelModifierMedium") modifierSmall = module.getModifiedItemAttr("entityCapacitorLevelModifierSmall") + energyNeutralizerSignatureResolution = module.getModifiedItemAttr("energyNeutralizerSignatureResolution") + signatureRadius = fit.ship.getModifiedItemAttr("signatureRadius") + + #Signature reduction, uses the bomb formula as per CCP Larrikin + if energyNeutralizerSignatureResolution: + sigRatio = signatureRadius/energyNeutralizerSignatureResolution + + sigReductionList = [1, sigRatio] + amount = amount*min(sigReductionList) # Small rigged ships if (rigSize == 1) and modifierSmall: From 7d0f65c1f3f7caf9134478183dacfec865cfce97 Mon Sep 17 00:00:00 2001 From: Ebag333 Date: Sun, 17 Jul 2016 10:52:08 -0700 Subject: [PATCH 3/7] Moved the sig size reduction under projected --- eos/effects/energynosferatufalloff.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/eos/effects/energynosferatufalloff.py b/eos/effects/energynosferatufalloff.py index 67fbdb5ae..0ef37e515 100644 --- a/eos/effects/energynosferatufalloff.py +++ b/eos/effects/energynosferatufalloff.py @@ -14,14 +14,14 @@ def handler(fit, module, context): energyNeutralizerSignatureResolution = module.getModifiedItemAttr("energyNeutralizerSignatureResolution") signatureRadius = fit.ship.getModifiedItemAttr("signatureRadius") - # Signature reduction, uses the bomb formula as per CCP Larrikin - if energyNeutralizerSignatureResolution: - sigRatio = signatureRadius / energyNeutralizerSignatureResolution - - sigReductionList = [1, sigRatio] - amount = amount * min(sigReductionList) - if "projected" in context: + # Signature reduction, uses the bomb formula as per CCP Larrikin + if energyNeutralizerSignatureResolution: + sigRatio = signatureRadius / energyNeutralizerSignatureResolution + + sigReductionList = [1, sigRatio] + amount = amount * min(sigReductionList) + #Small rigged ships if (rigSize == 1) and modifierSmall: amount = amount*modifierSmall From 60288204fc4342f81b786b89567d6c2adaebc801 Mon Sep 17 00:00:00 2001 From: Ebag333 Date: Sun, 17 Jul 2016 11:24:24 -0700 Subject: [PATCH 4/7] switched from using container/module to bag_of_dicks Also cleaned up some warnings PyCharm was throwing. --- eos/effects/energyneutralizerentity.py | 19 +++++++++--------- eos/effects/energyneutralizerfalloff.py | 20 +++++++++---------- eos/effects/energynosferatufalloff.py | 18 +++++++++-------- eos/effects/entityenergyneutralizerfalloff.py | 19 +++++++++--------- .../fighterabilityenergyneutralizer.py | 19 ++++++++---------- 5 files changed, 48 insertions(+), 47 deletions(-) diff --git a/eos/effects/energyneutralizerentity.py b/eos/effects/energyneutralizerentity.py index 136509df7..14817a94b 100644 --- a/eos/effects/energyneutralizerentity.py +++ b/eos/effects/energyneutralizerentity.py @@ -4,16 +4,17 @@ # Drones from group: Energy Neutralizer Drone (3 of 3) from eos.types import State type = "active", "projected" -def handler(fit, module, context): - if "projected" in context and ((hasattr(module, "state") \ - and module.state >= State.ACTIVE) or hasattr(container, "amountActive")): - amount = module.getModifiedItemAttr("energyNeutralizerAmount") - time = module.getModifiedItemAttr("duration") + + +def handler(fit, src, context): + if "projected" in context and ((hasattr(src, "state") and src.state >= State.ACTIVE) or hasattr(src, "amountActive")): + amount = src.getModifiedItemAttr("energyNeutralizerAmount") + time = src.getModifiedItemAttr("duration") rigSize = fit.ship.getModifiedItemAttr("rigSize") - modifierLarge = module.getModifiedItemAttr("entityCapacitorLevelModifierLarge") - modifierMedium = module.getModifiedItemAttr("entityCapacitorLevelModifierMedium") - modifierSmall = module.getModifiedItemAttr("entityCapacitorLevelModifierSmall") - energyNeutralizerSignatureResolution = module.getModifiedItemAttr("energyNeutralizerSignatureResolution") + modifierLarge = src.getModifiedItemAttr("entityCapacitorLevelModifierLarge") + modifierMedium = src.getModifiedItemAttr("entityCapacitorLevelModifierMedium") + modifierSmall = src.getModifiedItemAttr("entityCapacitorLevelModifierSmall") + energyNeutralizerSignatureResolution = src.getModifiedItemAttr("energyNeutralizerSignatureResolution") signatureRadius = fit.ship.getModifiedItemAttr("signatureRadius") #Signature reduction, uses the bomb formula as per CCP Larrikin diff --git a/eos/effects/energyneutralizerfalloff.py b/eos/effects/energyneutralizerfalloff.py index 0cea5d766..c4933be59 100644 --- a/eos/effects/energyneutralizerfalloff.py +++ b/eos/effects/energyneutralizerfalloff.py @@ -4,16 +4,17 @@ # Modules from group: Energy Neutralizer (51 of 51) from eos.types import State type = "active", "projected" -def handler(fit, module, context): - if "projected" in context and ((hasattr(module, "state") \ - and module.state >= State.ACTIVE) or hasattr(container, "amountActive")): - amount = module.getModifiedItemAttr("energyNeutralizerAmount") - time = module.getModifiedItemAttr("duration") + + +def handler(fit, src, context): + if "projected" in context and ((hasattr(src, "state") and src.state >= State.ACTIVE) or hasattr(src, "amountActive")): + amount = src.getModifiedItemAttr("energyNeutralizerAmount") + time = src.getModifiedItemAttr("duration") rigSize = fit.ship.getModifiedItemAttr("rigSize") - modifierLarge = module.getModifiedItemAttr("entityCapacitorLevelModifierLarge") - modifierMedium = module.getModifiedItemAttr("entityCapacitorLevelModifierMedium") - modifierSmall = module.getModifiedItemAttr("entityCapacitorLevelModifierSmall") - energyNeutralizerSignatureResolution = module.getModifiedItemAttr("energyNeutralizerSignatureResolution") + modifierLarge = src.getModifiedItemAttr("entityCapacitorLevelModifierLarge") + modifierMedium = src.getModifiedItemAttr("entityCapacitorLevelModifierMedium") + modifierSmall = src.getModifiedItemAttr("entityCapacitorLevelModifierSmall") + energyNeutralizerSignatureResolution = src.getModifiedItemAttr("energyNeutralizerSignatureResolution") signatureRadius = fit.ship.getModifiedItemAttr("signatureRadius") #Signature reduction, uses the bomb formula as per CCP Larrikin @@ -36,4 +37,3 @@ def handler(fit, module, context): amount = amount*modifierLarge fit.addDrain(time, amount, 0) - diff --git a/eos/effects/energynosferatufalloff.py b/eos/effects/energynosferatufalloff.py index 0ef37e515..8dad1ea3d 100644 --- a/eos/effects/energynosferatufalloff.py +++ b/eos/effects/energynosferatufalloff.py @@ -4,14 +4,16 @@ # Modules from group: Energy Nosferatu (51 of 51) type = "active", "projected" runTime = "late" -def handler(fit, module, context): - amount = module.getModifiedItemAttr("powerTransferAmount") - time = module.getModifiedItemAttr("duration") + + +def handler(fit, src, context): + amount = src.getModifiedItemAttr("powerTransferAmount") + time = src.getModifiedItemAttr("duration") rigSize = fit.ship.getModifiedItemAttr("rigSize") - modifierLarge = module.getModifiedItemAttr("entityCapacitorLevelModifierLarge") - modifierMedium = module.getModifiedItemAttr("entityCapacitorLevelModifierMedium") - modifierSmall = module.getModifiedItemAttr("entityCapacitorLevelModifierSmall") - energyNeutralizerSignatureResolution = module.getModifiedItemAttr("energyNeutralizerSignatureResolution") + modifierLarge = src.getModifiedItemAttr("entityCapacitorLevelModifierLarge") + modifierMedium = src.getModifiedItemAttr("entityCapacitorLevelModifierMedium") + modifierSmall = src.getModifiedItemAttr("entityCapacitorLevelModifierSmall") + energyNeutralizerSignatureResolution = src.getModifiedItemAttr("energyNeutralizerSignatureResolution") signatureRadius = fit.ship.getModifiedItemAttr("signatureRadius") if "projected" in context: @@ -36,4 +38,4 @@ def handler(fit, module, context): fit.addDrain(time, amount, 0) elif "module" in context: - module.itemModifiedAttributes.force("capacitorNeed", -amount) \ No newline at end of file + src.itemModifiedAttributes.force("capacitorNeed", -amount) \ No newline at end of file diff --git a/eos/effects/entityenergyneutralizerfalloff.py b/eos/effects/entityenergyneutralizerfalloff.py index baa8429b6..06da16b45 100644 --- a/eos/effects/entityenergyneutralizerfalloff.py +++ b/eos/effects/entityenergyneutralizerfalloff.py @@ -4,16 +4,17 @@ # Drones from group: Energy Neutralizer Drone (3 of 3) from eos.types import State type = "active", "projected" -def handler(fit, module, context): - if "projected" in context and ((hasattr(module, "state") \ - and module.state >= State.ACTIVE) or hasattr(module, "amountActive")): - amount = module.getModifiedItemAttr("energyNeutralizerAmount") - time = module.getModifiedItemAttr("energyNeutralizerDuration") + + +def handler(fit, src, context): + if "projected" in context and ((hasattr(src, "state") and src.state >= State.ACTIVE) or hasattr(src, "amountActive")): + amount = src.getModifiedItemAttr("energyNeutralizerAmount") + time = src.getModifiedItemAttr("energyNeutralizerDuration") rigSize = fit.ship.getModifiedItemAttr("rigSize") - modifierLarge = module.getModifiedItemAttr("entityCapacitorLevelModifierLarge") - modifierMedium = module.getModifiedItemAttr("entityCapacitorLevelModifierMedium") - modifierSmall = module.getModifiedItemAttr("entityCapacitorLevelModifierSmall") - energyNeutralizerSignatureResolution = module.getModifiedItemAttr("energyNeutralizerSignatureResolution") + modifierLarge = src.getModifiedItemAttr("entityCapacitorLevelModifierLarge") + modifierMedium = src.getModifiedItemAttr("entityCapacitorLevelModifierMedium") + modifierSmall = src.getModifiedItemAttr("entityCapacitorLevelModifierSmall") + energyNeutralizerSignatureResolution = src.getModifiedItemAttr("energyNeutralizerSignatureResolution") signatureRadius = fit.ship.getModifiedItemAttr("signatureRadius") #Signature reduction, uses the bomb formula as per CCP Larrikin diff --git a/eos/effects/fighterabilityenergyneutralizer.py b/eos/effects/fighterabilityenergyneutralizer.py index 56fd963d3..4eeaeb633 100644 --- a/eos/effects/fighterabilityenergyneutralizer.py +++ b/eos/effects/fighterabilityenergyneutralizer.py @@ -3,24 +3,21 @@ Since fighter abilities do not have any sort of item entity in the EVE database, we must derive the abilities from the effects, and thus this effect file contains some custom information useful only to fighters. """ -from eos.types import State - # User-friendly name for the ability displayName = "Energy Neutralizer" - prefix = "fighterAbilityEnergyNeutralizer" - type = "active", "projected" -def handler(fit, module, context): + +def handler(fit, src, context): if "projected" in context: - amount = module.getModifiedItemAttr("{}Amount".format(prefix)) - time = module.getModifiedItemAttr("{}Duration".format(prefix)) + amount = src.getModifiedItemAttr("{}Amount".format(prefix)) + time = src.getModifiedItemAttr("{}Duration".format(prefix)) rigSize = fit.ship.getModifiedItemAttr("rigSize") - modifierLarge = module.getModifiedItemAttr("entityCapacitorLevelModifierLarge") - modifierMedium = module.getModifiedItemAttr("entityCapacitorLevelModifierMedium") - modifierSmall = module.getModifiedItemAttr("entityCapacitorLevelModifierSmall") - energyNeutralizerSignatureResolution = module.getModifiedItemAttr("energyNeutralizerSignatureResolution") + modifierLarge = src.getModifiedItemAttr("entityCapacitorLevelModifierLarge") + modifierMedium = src.getModifiedItemAttr("entityCapacitorLevelModifierMedium") + modifierSmall = src.getModifiedItemAttr("entityCapacitorLevelModifierSmall") + energyNeutralizerSignatureResolution = src.getModifiedItemAttr("energyNeutralizerSignatureResolution") signatureRadius = fit.ship.getModifiedItemAttr("signatureRadius") #Signature reduction, uses the bomb formula as per CCP Larrikin From a2c00494889f3ee9794286e28cb1fc64ed1ba15e Mon Sep 17 00:00:00 2001 From: Ebag333 Date: Sun, 17 Jul 2016 13:43:52 -0700 Subject: [PATCH 5/7] Moved neut reduction logic into fit.py --- eos/effects/energydestabilizationnew.py | 13 +++++---- eos/effects/energyneutralizerentity.py | 27 +------------------ eos/effects/energyneutralizerfalloff.py | 27 +------------------ eos/effects/energynosferatufalloff.py | 27 +------------------ eos/effects/energytransfer.py | 8 +++--- eos/effects/entityenergyneutralizerfalloff.py | 27 +------------------ .../fighterabilityenergyneutralizer.py | 27 +------------------ eos/effects/remoteenergytransferfalloff.py | 8 +++--- eos/saveddata/fit.py | 18 ++++++++++++- 9 files changed, 36 insertions(+), 146 deletions(-) diff --git a/eos/effects/energydestabilizationnew.py b/eos/effects/energydestabilizationnew.py index d2c3b8e03..fdde53f92 100644 --- a/eos/effects/energydestabilizationnew.py +++ b/eos/effects/energydestabilizationnew.py @@ -1,10 +1,9 @@ # Not used by any item from eos.types import State type = "active", "projected" -def handler(fit, container, context): - if "projected" in context and ((hasattr(container, "state") \ - and container.state >= State.ACTIVE) or hasattr(container, "amountActive")): - multiplier = container.amountActive if hasattr(container, "amountActive") else 1 - amount = container.getModifiedItemAttr("energyNeutralizerAmount") - time = container.getModifiedItemAttr("duration") - fit.addDrain(time, amount * multiplier, 0) +def handler(fit, src, context): + if "projected" in context and ((hasattr(src, "state") and src.state >= State.ACTIVE) or hasattr(src, "amountActive")): + multiplier = src.amountActive if hasattr(src, "amountActive") else 1 + amount = src.getModifiedItemAttr("energyNeutralizerAmount") + time = src.getModifiedItemAttr("duration") + fit.addDrain(src, time, amount * multiplier, 0) diff --git a/eos/effects/energyneutralizerentity.py b/eos/effects/energyneutralizerentity.py index 14817a94b..37ab5ad05 100644 --- a/eos/effects/energyneutralizerentity.py +++ b/eos/effects/energyneutralizerentity.py @@ -10,30 +10,5 @@ def handler(fit, src, context): if "projected" in context and ((hasattr(src, "state") and src.state >= State.ACTIVE) or hasattr(src, "amountActive")): amount = src.getModifiedItemAttr("energyNeutralizerAmount") time = src.getModifiedItemAttr("duration") - rigSize = fit.ship.getModifiedItemAttr("rigSize") - modifierLarge = src.getModifiedItemAttr("entityCapacitorLevelModifierLarge") - modifierMedium = src.getModifiedItemAttr("entityCapacitorLevelModifierMedium") - modifierSmall = src.getModifiedItemAttr("entityCapacitorLevelModifierSmall") - energyNeutralizerSignatureResolution = src.getModifiedItemAttr("energyNeutralizerSignatureResolution") - signatureRadius = fit.ship.getModifiedItemAttr("signatureRadius") - #Signature reduction, uses the bomb formula as per CCP Larrikin - if energyNeutralizerSignatureResolution: - sigRatio = signatureRadius/energyNeutralizerSignatureResolution - - sigReductionList = [1, sigRatio] - amount = amount*min(sigReductionList) - - #Small rigged ships - if (rigSize == 1) and modifierSmall: - amount = amount*modifierSmall - - #Medium rigged ships - if (rigSize == 2) and modifierMedium: - amount = amount*modifierMedium - - #Large rigged ships - if (rigSize == 3) and modifierLarge: - amount = amount*modifierLarge - - fit.addDrain(time, amount, 0) + fit.addDrain(src, time, amount, 0) diff --git a/eos/effects/energyneutralizerfalloff.py b/eos/effects/energyneutralizerfalloff.py index c4933be59..5a58dce48 100644 --- a/eos/effects/energyneutralizerfalloff.py +++ b/eos/effects/energyneutralizerfalloff.py @@ -10,30 +10,5 @@ def handler(fit, src, context): if "projected" in context and ((hasattr(src, "state") and src.state >= State.ACTIVE) or hasattr(src, "amountActive")): amount = src.getModifiedItemAttr("energyNeutralizerAmount") time = src.getModifiedItemAttr("duration") - rigSize = fit.ship.getModifiedItemAttr("rigSize") - modifierLarge = src.getModifiedItemAttr("entityCapacitorLevelModifierLarge") - modifierMedium = src.getModifiedItemAttr("entityCapacitorLevelModifierMedium") - modifierSmall = src.getModifiedItemAttr("entityCapacitorLevelModifierSmall") - energyNeutralizerSignatureResolution = src.getModifiedItemAttr("energyNeutralizerSignatureResolution") - signatureRadius = fit.ship.getModifiedItemAttr("signatureRadius") - #Signature reduction, uses the bomb formula as per CCP Larrikin - if energyNeutralizerSignatureResolution: - sigRatio = signatureRadius/energyNeutralizerSignatureResolution - - sigReductionList = [1, sigRatio] - amount = amount*min(sigReductionList) - - #Small rigged ships - if (rigSize == 1) and modifierSmall: - amount = amount*modifierSmall - - #Medium rigged ships - if (rigSize == 2) and modifierMedium: - amount = amount*modifierMedium - - #Large rigged ships - if (rigSize == 3) and modifierLarge: - amount = amount*modifierLarge - - fit.addDrain(time, amount, 0) + fit.addDrain(src, time, amount, 0) diff --git a/eos/effects/energynosferatufalloff.py b/eos/effects/energynosferatufalloff.py index 8dad1ea3d..a0a79273e 100644 --- a/eos/effects/energynosferatufalloff.py +++ b/eos/effects/energynosferatufalloff.py @@ -9,33 +9,8 @@ runTime = "late" def handler(fit, src, context): amount = src.getModifiedItemAttr("powerTransferAmount") time = src.getModifiedItemAttr("duration") - rigSize = fit.ship.getModifiedItemAttr("rigSize") - modifierLarge = src.getModifiedItemAttr("entityCapacitorLevelModifierLarge") - modifierMedium = src.getModifiedItemAttr("entityCapacitorLevelModifierMedium") - modifierSmall = src.getModifiedItemAttr("entityCapacitorLevelModifierSmall") - energyNeutralizerSignatureResolution = src.getModifiedItemAttr("energyNeutralizerSignatureResolution") - signatureRadius = fit.ship.getModifiedItemAttr("signatureRadius") if "projected" in context: - # Signature reduction, uses the bomb formula as per CCP Larrikin - if energyNeutralizerSignatureResolution: - sigRatio = signatureRadius / energyNeutralizerSignatureResolution - - sigReductionList = [1, sigRatio] - amount = amount * min(sigReductionList) - - #Small rigged ships - if (rigSize == 1) and modifierSmall: - amount = amount*modifierSmall - - #Medium rigged ships - if (rigSize == 2) and modifierMedium: - amount = amount*modifierMedium - - #Large rigged ships - if (rigSize == 3) and modifierLarge: - amount = amount*modifierLarge - - fit.addDrain(time, amount, 0) + fit.addDrain(src, time, amount, 0) elif "module" in context: src.itemModifiedAttributes.force("capacitorNeed", -amount) \ No newline at end of file diff --git a/eos/effects/energytransfer.py b/eos/effects/energytransfer.py index 8390cf52c..d004628bc 100644 --- a/eos/effects/energytransfer.py +++ b/eos/effects/energytransfer.py @@ -1,7 +1,7 @@ # Not used by any item type = "projected", "active" -def handler(fit, module, context): +def handler(fit, src, context): if "projected" in context: - amount = module.getModifiedItemAttr("powerTransferAmount") - duration = module.getModifiedItemAttr("duration") - fit.addDrain(duration, -amount, 0) + amount = src.getModifiedItemAttr("powerTransferAmount") + duration = src.getModifiedItemAttr("duration") + fit.addDrain(src, duration, -amount, 0) diff --git a/eos/effects/entityenergyneutralizerfalloff.py b/eos/effects/entityenergyneutralizerfalloff.py index 06da16b45..342598ebf 100644 --- a/eos/effects/entityenergyneutralizerfalloff.py +++ b/eos/effects/entityenergyneutralizerfalloff.py @@ -10,30 +10,5 @@ def handler(fit, src, context): if "projected" in context and ((hasattr(src, "state") and src.state >= State.ACTIVE) or hasattr(src, "amountActive")): amount = src.getModifiedItemAttr("energyNeutralizerAmount") time = src.getModifiedItemAttr("energyNeutralizerDuration") - rigSize = fit.ship.getModifiedItemAttr("rigSize") - modifierLarge = src.getModifiedItemAttr("entityCapacitorLevelModifierLarge") - modifierMedium = src.getModifiedItemAttr("entityCapacitorLevelModifierMedium") - modifierSmall = src.getModifiedItemAttr("entityCapacitorLevelModifierSmall") - energyNeutralizerSignatureResolution = src.getModifiedItemAttr("energyNeutralizerSignatureResolution") - signatureRadius = fit.ship.getModifiedItemAttr("signatureRadius") - #Signature reduction, uses the bomb formula as per CCP Larrikin - if energyNeutralizerSignatureResolution: - sigRatio = signatureRadius/energyNeutralizerSignatureResolution - - sigReductionList = [1, sigRatio] - amount = amount*min(sigReductionList) - - #Small rigged ships - if (rigSize == 1) and modifierSmall: - amount = amount*modifierSmall - - #Medium rigged ships - if (rigSize == 2) and modifierMedium: - amount = amount*modifierMedium - - #Large rigged ships - if (rigSize == 3) and modifierLarge: - amount = amount*modifierLarge - - fit.addDrain(time, amount, 0) + fit.addDrain(src, time, amount, 0) diff --git a/eos/effects/fighterabilityenergyneutralizer.py b/eos/effects/fighterabilityenergyneutralizer.py index 4eeaeb633..bad275c32 100644 --- a/eos/effects/fighterabilityenergyneutralizer.py +++ b/eos/effects/fighterabilityenergyneutralizer.py @@ -13,30 +13,5 @@ def handler(fit, src, context): if "projected" in context: amount = src.getModifiedItemAttr("{}Amount".format(prefix)) time = src.getModifiedItemAttr("{}Duration".format(prefix)) - rigSize = fit.ship.getModifiedItemAttr("rigSize") - modifierLarge = src.getModifiedItemAttr("entityCapacitorLevelModifierLarge") - modifierMedium = src.getModifiedItemAttr("entityCapacitorLevelModifierMedium") - modifierSmall = src.getModifiedItemAttr("entityCapacitorLevelModifierSmall") - energyNeutralizerSignatureResolution = src.getModifiedItemAttr("energyNeutralizerSignatureResolution") - signatureRadius = fit.ship.getModifiedItemAttr("signatureRadius") - #Signature reduction, uses the bomb formula as per CCP Larrikin - if energyNeutralizerSignatureResolution: - sigRatio = signatureRadius/energyNeutralizerSignatureResolution - - sigReductionList = [1, sigRatio] - amount = amount*min(sigReductionList) - - # Small rigged ships - if (rigSize == 1) and modifierSmall: - amount = amount * modifierSmall - - # Medium rigged ships - if (rigSize == 2) and modifierMedium: - amount = amount * modifierMedium - - # Large rigged ships - if (rigSize == 3) and modifierLarge: - amount = amount * modifierLarge - - fit.addDrain(time, amount, 0) \ No newline at end of file + fit.addDrain(src, time, amount, 0) \ No newline at end of file diff --git a/eos/effects/remoteenergytransferfalloff.py b/eos/effects/remoteenergytransferfalloff.py index ddb6fab9a..f618d3d3c 100644 --- a/eos/effects/remoteenergytransferfalloff.py +++ b/eos/effects/remoteenergytransferfalloff.py @@ -3,8 +3,8 @@ # Used by: # Modules from group: Remote Capacitor Transmitter (41 of 41) type = "projected", "active" -def handler(fit, module, context): +def handler(fit, src, context): if "projected" in context: - amount = module.getModifiedItemAttr("powerTransferAmount") - duration = module.getModifiedItemAttr("duration") - fit.addDrain(duration, -amount, 0) + amount = src.getModifiedItemAttr("powerTransferAmount") + duration = src.getModifiedItemAttr("duration") + fit.addDrain(src, duration, -amount, 0) diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index 3ab32c7d4..bc63595eb 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -873,8 +873,24 @@ class Fit(object): rechargeRate = self.ship.getModifiedItemAttr("shieldRechargeRate") / 1000.0 return 10 / rechargeRate * sqrt(percent) * (1 - sqrt(percent)) * capacity - def addDrain(self, cycleTime, capNeed, clipSize=0): + def addDrain(self, src, cycleTime, capNeed, clipSize=0): """ Used for both cap drains and cap fills (fills have negative capNeed) """ + + rigSize = self.ship.getModifiedItemAttr("rigSize") + energyNeutralizerSignatureResolution = src.getModifiedItemAttr("energyNeutralizerSignatureResolution") + signatureRadius = self.ship.getModifiedItemAttr("signatureRadius") + neutSizes = {1.0: 'Small', 2.0: 'Medium', 3.0: 'Large', 4.0: 'Capital'} + + #Signature reduction, uses the bomb formula as per CCP Larrikin + if energyNeutralizerSignatureResolution: + capNeed = capNeed*min(1, signatureRadius/energyNeutralizerSignatureResolution) + + #Size reduction, reduces neuts based off ship rig size + for sizeInt, sizeName in neutSizes.iteritems(): + capacitorLevelModifier = src.getModifiedItemAttr("entityCapacitorLevelModifier{}".format(sizeName)) + if (rigSize == sizeInt) and capacitorLevelModifier: + capNeed = capNeed*capacitorLevelModifier + resistance = self.ship.getModifiedItemAttr("energyWarfareResistance") or 1 if capNeed > 0 else 1 self.__extraDrains.append((cycleTime, capNeed * resistance, clipSize)) From 88384a2fd8671ee8d8a73c5f0d039f7cfee7c20c Mon Sep 17 00:00:00 2001 From: Ebag333 Date: Sun, 17 Jul 2016 14:10:58 -0700 Subject: [PATCH 6/7] RAH gets pissy if there is no damage profile If there is no damage profile (likely from one that's deleted, and somehow the profile doesn't get set back to uniform), then RAH tries to apply null values. This skips making the RAH reactive if that scenario happens. --- eos/effects/adaptivearmorhardener.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/eos/effects/adaptivearmorhardener.py b/eos/effects/adaptivearmorhardener.py index c3955ebf0..1202b1fde 100644 --- a/eos/effects/adaptivearmorhardener.py +++ b/eos/effects/adaptivearmorhardener.py @@ -9,10 +9,10 @@ def handler(fit, module, context): #Adjust RAH to match the current damage pattern damagePattern = fit.damagePattern - attrDamagePattern = "%sAmount" % type - damagePatternModifier = getattr(damagePattern,attrDamagePattern)/float(sum((damagePattern.emAmount,damagePattern.thermalAmount,damagePattern.kineticAmount,damagePattern.explosiveAmount))) - modifiedResistModifier = (1-(((1-module.getModifiedItemAttr(attr))*4)*(damagePatternModifier))) - module.forceItemAttr(attr, modifiedResistModifier) + if damagePattern: + attrDamagePattern = "%sAmount" % type + damagePatternModifier = getattr(damagePattern,attrDamagePattern)/float(sum((damagePattern.emAmount,damagePattern.thermalAmount,damagePattern.kineticAmount,damagePattern.explosiveAmount))) + modifiedResistModifier = (1-(((1-module.getModifiedItemAttr(attr))*4)*(damagePatternModifier))) + module.forceItemAttr(attr, modifiedResistModifier) - fit.ship.multiplyItemAttr(attr, module.getModifiedItemAttr(attr), - stackingPenalties=True, penaltyGroup="preMul") + fit.ship.multiplyItemAttr(attr, module.getModifiedItemAttr(attr), stackingPenalties=True, penaltyGroup="preMul") From 071dfaf6560a3c1dd81fec86151de2ea94fcfa57 Mon Sep 17 00:00:00 2001 From: Ebag333 Date: Mon, 18 Jul 2016 06:41:50 -0700 Subject: [PATCH 7/7] Removed ship size, as this applies only to NPCs --- eos/saveddata/fit.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/eos/saveddata/fit.py b/eos/saveddata/fit.py index bc63595eb..843abceb8 100644 --- a/eos/saveddata/fit.py +++ b/eos/saveddata/fit.py @@ -879,18 +879,11 @@ class Fit(object): rigSize = self.ship.getModifiedItemAttr("rigSize") energyNeutralizerSignatureResolution = src.getModifiedItemAttr("energyNeutralizerSignatureResolution") signatureRadius = self.ship.getModifiedItemAttr("signatureRadius") - neutSizes = {1.0: 'Small', 2.0: 'Medium', 3.0: 'Large', 4.0: 'Capital'} #Signature reduction, uses the bomb formula as per CCP Larrikin if energyNeutralizerSignatureResolution: capNeed = capNeed*min(1, signatureRadius/energyNeutralizerSignatureResolution) - #Size reduction, reduces neuts based off ship rig size - for sizeInt, sizeName in neutSizes.iteritems(): - capacitorLevelModifier = src.getModifiedItemAttr("entityCapacitorLevelModifier{}".format(sizeName)) - if (rigSize == sizeInt) and capacitorLevelModifier: - capNeed = capNeed*capacitorLevelModifier - resistance = self.ship.getModifiedItemAttr("energyWarfareResistance") or 1 if capNeed > 0 else 1 self.__extraDrains.append((cycleTime, capNeed * resistance, clipSize))