Add drones to dps-range calculation

This commit is contained in:
DarkPhoenix
2019-07-04 13:40:04 +03:00
parent d2b838e9d5
commit 185cf4f625
2 changed files with 20 additions and 0 deletions

View File

@@ -19,6 +19,7 @@
import math
from functools import lru_cache
def getTurretMult(mod, fit, tgt, atkSpeed, atkAngle, distance, tgtSpeed, tgtAngle, tgtSigRadius):
@@ -115,6 +116,7 @@ def getFighterAbilityMult(fighter, ability, fit, distance, tgtSpeed, tgtSigRadiu
# Turret-specific
@lru_cache(maxsize=50)
def _calcTurretMult(chanceToHit):
"""Calculate damage multiplier for turret-based weapons."""
# https://wiki.eveuniversity.org/Turret_mechanics#Damage
@@ -130,6 +132,7 @@ def _calcTurretMult(chanceToHit):
return totalMult
@lru_cache(maxsize=1000)
def _calcTurretChanceToHit(
atkSpeed, atkAngle, atkRadius, atkOptimalRange, atkFalloffRange, atkTracking, atkOptimalSigRadius,
distance, tgtSpeed, tgtAngle, tgtRadius, tgtSigRadius
@@ -163,6 +166,7 @@ def _calcTrackingFactor(atkTracking, atkOptimalSigRadius, angularSpeed, tgtSigRa
# Missile-specific
@lru_cache(maxsize=200)
def _calcMissileMult(atkRadius, atkRange, atkEr, atkEv, atkDrf, distance, tgtSpeed, tgtSigRadius):
"""Calculate damage multiplier for missile launcher."""
# Missiles spawn in the center of the attacking ship
@@ -173,6 +177,7 @@ def _calcMissileMult(atkRadius, atkRange, atkEr, atkEv, atkDrf, distance, tgtSpe
return mult
@lru_cache(maxsize=200)
def _calcFighterMult(atkOptimalRange, atkFalloffRange, atkEr, atkEv, atkDrf, distance, tgtSpeed, tgtSigRadius):
"""Calculate damage multiplier for separate fighter ability,"""
rangeFactor = _calcRangeFactor(atkOptimalRange, atkFalloffRange, distance)

View File

@@ -103,6 +103,21 @@ class FitDamageStatsGraph(FitGraph):
distance=distance,
tgtSpeed=miscInputMap['tgtSpeed'],
tgtSigRadius=tgtSigRad)
for drone in fit.drones:
if not drone.isDealingDamage():
continue
droneDps = drone.getDps().total
totalDps += droneDps * getDroneMult(
drone=drone,
fit=fit,
tgt=tgt,
atkSpeed=miscInputMap['atkSpeed'],
atkAngle=miscInputMap['atkAngle'],
distance=distance,
tgtSpeed=miscInputMap['tgtSpeed'],
tgtAngle=miscInputMap['tgtAngle'],
tgtSigRadius=tgtSigRad)
xs.append(distance)
ys.append(totalDps)
return xs, ys