(fit)
| 197 | |
| 198 | |
| 199 | def _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: |
no test coverage detected