MCPcopy Create free account
hub / github.com/pyfa-org/Pyfa / _getAutoResists

Function _getAutoResists

graphs/wrapper.py:199–262  ·  view source on GitHub ↗
(fit)

Source from the content-addressed store, hash-verified

197
198
199def _getAutoResists(fit):
200 # Get all the data
201 # HP / EHP
202 hpData = fit.hp
203 shieldHp = hpData['shield']
204 armorHp = hpData['armor']
205 hullHp = hpData['hull']
206 uniformDamagePattern = DamagePattern(emAmount=25, thermalAmount=25, kineticAmount=25, explosiveAmount=25)
207 ehpData = uniformDamagePattern.calculateEhp(fit.ship)
208 shieldEhp = ehpData['shield']
209 armorEhp = ehpData['armor']
210 hullEhp = ehpData['hull']
211 totalEhp = shieldEhp + armorEhp + hullEhp
212 # Resist factors
213 try:
214 shieldResFactor = shieldEhp / shieldHp
215 except ZeroDivisionError:
216 shieldResFactor = 1
217 try:
218 armorResFactor = armorEhp / armorHp
219 except ZeroDivisionError:
220 armorResFactor = 1
221 try:
222 hullResFactor = hullEhp / hullHp
223 except ZeroDivisionError:
224 hullResFactor = 1
225 # Tank
226 tankData = fit.tank
227 shieldTank = tankData['shieldRepair']
228 armorTank = tankData['armorRepair']
229 hullTank = tankData['hullRepair']
230 shieldRegen = tankData['passiveShield']
231
232 shieldScore = 0
233 armorScore = 0
234 hullScore = 0
235 # EHP scoring
236 ehpWeight = 100
237 shieldScore += ehpWeight * (shieldEhp / totalEhp) ** 1.5
238 armorScore += ehpWeight * (armorEhp / totalEhp) ** 1.5
239 hullScore += ehpWeight * (hullEhp / totalEhp) ** 1.5
240 # Resists scoring
241 # We include it to have some extra points for receiving better reps from the outside
242 resistWeight = 25
243 bestResFactor = max(shieldResFactor, armorResFactor, hullResFactor)
244 shieldScore += resistWeight * (shieldResFactor / bestResFactor) ** 1.5
245 armorScore += resistWeight * (armorResFactor / bestResFactor) ** 1.5
246 hullScore += resistWeight * (hullResFactor / bestResFactor) ** 1.5
247 # Active tank
248 activeWeight = 10000
249 shieldScore += activeWeight * shieldTank * shieldResFactor / totalEhp
250 armorScore += activeWeight * armorTank * armorResFactor / totalEhp
251 hullScore += activeWeight * hullTank * hullResFactor / totalEhp
252 # Shield regen
253 regenWeight = 5000
254 shieldScore += regenWeight * shieldRegen * shieldResFactor / totalEhp
255 maxScore = max(shieldScore, armorScore, hullScore)
256 if maxScore == shieldScore:

Callers 1

getResistsMethod · 0.85

Calls 5

calculateEhpMethod · 0.95
DamagePatternClass · 0.90
_getShieldResistsFunction · 0.85
_getArmorResistsFunction · 0.85
_getHullResistsFunction · 0.85

Tested by

no test coverage detected