MCPcopy Index your code
hub / github.com/pyfa-org/Pyfa / getOutgoingProjectionData

Method getOutgoingProjectionData

service/port/efs.py:163–256  ·  view source on GitHub ↗
(fit)

Source from the content-addressed store, hash-verified

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:

Callers 1

exportEfsMethod · 0.80

Calls 4

getModsInGroupsMethod · 0.80
attrDirectMapMethod · 0.80
getModifiedItemAttrMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected