(fit)
| 161 | |
| 162 | @staticmethod |
| 163 | def getOutgoingProjectionData(fit): |
| 164 | # This is a subset of module groups capable of projection and a superset of those currently used by efs |
| 165 | modGroupNames = [ |
| 166 | "Remote Shield Booster", "Warp Scrambler", "Stasis Web", "Remote Capacitor Transmitter", |
| 167 | "Energy Nosferatu", "Energy Neutralizer", "Burst Jammer", "ECM", "Sensor Dampener", |
| 168 | "Weapon Disruptor", "Remote Armor Repairer", "Target Painter", "Remote Hull Repairer", |
| 169 | "Burst Projectors", "Warp Disrupt Field Generator", "Armor Resistance Shift Hardener", |
| 170 | "Micro Jump Drive", "Ship Modifiers", "Stasis Grappler", "Ancillary Remote Shield Booster", |
| 171 | "Ancillary Remote Armor Repairer", "Titan Phenomena Generator", "Non-Repeating Hardeners", |
| 172 | "Mutadaptive Remote Armor Repairer" |
| 173 | ] |
| 174 | projectedMods = EfsPort.getModsInGroups(fit, modGroupNames) |
| 175 | projections = [] |
| 176 | for mod in projectedMods: |
| 177 | maxRangeDefault = 0 |
| 178 | falloffDefault = 0 |
| 179 | stats = {} |
| 180 | if mod.item.group.name in ["Stasis Web", "Stasis Grappler"]: |
| 181 | stats["type"] = "Stasis Web" |
| 182 | stats["optimal"] = mod.getModifiedItemAttr("maxRange") |
| 183 | EfsPort.attrDirectMap(["duration", "speedFactor"], stats, mod) |
| 184 | elif mod.item.group.name == "Weapon Disruptor": |
| 185 | stats["type"] = "Weapon Disruptor" |
| 186 | stats["optimal"] = mod.getModifiedItemAttr("maxRange") |
| 187 | stats["falloff"] = mod.getModifiedItemAttr("falloffEffectiveness") |
| 188 | EfsPort.attrDirectMap([ |
| 189 | "trackingSpeedBonus", "maxRangeBonus", "falloffBonus", "aoeCloudSizeBonus", |
| 190 | "aoeVelocityBonus", "missileVelocityBonus", "explosionDelayBonus" |
| 191 | ], stats, mod) |
| 192 | elif mod.item.group.name == "Energy Nosferatu": |
| 193 | stats["type"] = "Energy Nosferatu" |
| 194 | EfsPort.attrDirectMap(["powerTransferAmount", "energyNeutralizerSignatureResolution"], stats, mod) |
| 195 | elif mod.item.group.name == "Energy Neutralizer": |
| 196 | stats["type"] = "Energy Neutralizer" |
| 197 | EfsPort.attrDirectMap([ |
| 198 | "energyNeutralizerSignatureResolution", "entityCapacitorLevelModifierSmall", |
| 199 | "entityCapacitorLevelModifierMedium", "entityCapacitorLevelModifierLarge", |
| 200 | "energyNeutralizerAmount" |
| 201 | ], stats, mod) |
| 202 | elif mod.item.group.name in ["Remote Shield Booster", "Ancillary Remote Shield Booster"]: |
| 203 | stats["type"] = "Remote Shield Booster" |
| 204 | EfsPort.attrDirectMap(["shieldBonus"], stats, mod) |
| 205 | elif mod.item.group.name in [ |
| 206 | "Remote Armor Repairer", "Ancillary Remote Armor Repairer", "Mutadaptive Remote Armor Repairer" |
| 207 | ]: |
| 208 | stats["type"] = "Remote Armor Repairer" |
| 209 | EfsPort.attrDirectMap(["armorDamageAmount"], stats, mod) |
| 210 | elif mod.item.group.name in ["Remote Capacitor Transmitter"]: |
| 211 | stats["type"] = "Remote Capacitor Transmitter" |
| 212 | EfsPort.attrDirectMap(["powerTransferAmount"], stats, mod) |
| 213 | elif mod.item.group.name == "Warp Scrambler": |
| 214 | stats["type"] = "Warp Scrambler" |
| 215 | EfsPort.attrDirectMap(["activationBlockedStrenght", "warpScrambleStrength"], stats, mod) |
| 216 | elif mod.item.group.name == "Warp Disrupt Field Generator": |
| 217 | maxRangeDefault = mod.getModifiedItemAttr("warpScrambleRange") |
| 218 | stats["type"] = "Warp Scrambler" |
| 219 | EfsPort.attrDirectMap(["activationBlockedStrenght", "warpScrambleStrength"], stats, mod) |
| 220 | if maxRangeDefault >= 30000: |
no test coverage detected