Add drones to dps-range calculation
This commit is contained in:
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
|
|
||||||
import math
|
import math
|
||||||
|
from functools import lru_cache
|
||||||
|
|
||||||
|
|
||||||
def getTurretMult(mod, fit, tgt, atkSpeed, atkAngle, distance, tgtSpeed, tgtAngle, tgtSigRadius):
|
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
|
# Turret-specific
|
||||||
|
@lru_cache(maxsize=50)
|
||||||
def _calcTurretMult(chanceToHit):
|
def _calcTurretMult(chanceToHit):
|
||||||
"""Calculate damage multiplier for turret-based weapons."""
|
"""Calculate damage multiplier for turret-based weapons."""
|
||||||
# https://wiki.eveuniversity.org/Turret_mechanics#Damage
|
# https://wiki.eveuniversity.org/Turret_mechanics#Damage
|
||||||
@@ -130,6 +132,7 @@ def _calcTurretMult(chanceToHit):
|
|||||||
return totalMult
|
return totalMult
|
||||||
|
|
||||||
|
|
||||||
|
@lru_cache(maxsize=1000)
|
||||||
def _calcTurretChanceToHit(
|
def _calcTurretChanceToHit(
|
||||||
atkSpeed, atkAngle, atkRadius, atkOptimalRange, atkFalloffRange, atkTracking, atkOptimalSigRadius,
|
atkSpeed, atkAngle, atkRadius, atkOptimalRange, atkFalloffRange, atkTracking, atkOptimalSigRadius,
|
||||||
distance, tgtSpeed, tgtAngle, tgtRadius, tgtSigRadius
|
distance, tgtSpeed, tgtAngle, tgtRadius, tgtSigRadius
|
||||||
@@ -163,6 +166,7 @@ def _calcTrackingFactor(atkTracking, atkOptimalSigRadius, angularSpeed, tgtSigRa
|
|||||||
|
|
||||||
|
|
||||||
# Missile-specific
|
# Missile-specific
|
||||||
|
@lru_cache(maxsize=200)
|
||||||
def _calcMissileMult(atkRadius, atkRange, atkEr, atkEv, atkDrf, distance, tgtSpeed, tgtSigRadius):
|
def _calcMissileMult(atkRadius, atkRange, atkEr, atkEv, atkDrf, distance, tgtSpeed, tgtSigRadius):
|
||||||
"""Calculate damage multiplier for missile launcher."""
|
"""Calculate damage multiplier for missile launcher."""
|
||||||
# Missiles spawn in the center of the attacking ship
|
# Missiles spawn in the center of the attacking ship
|
||||||
@@ -173,6 +177,7 @@ def _calcMissileMult(atkRadius, atkRange, atkEr, atkEv, atkDrf, distance, tgtSpe
|
|||||||
return mult
|
return mult
|
||||||
|
|
||||||
|
|
||||||
|
@lru_cache(maxsize=200)
|
||||||
def _calcFighterMult(atkOptimalRange, atkFalloffRange, atkEr, atkEv, atkDrf, distance, tgtSpeed, tgtSigRadius):
|
def _calcFighterMult(atkOptimalRange, atkFalloffRange, atkEr, atkEv, atkDrf, distance, tgtSpeed, tgtSigRadius):
|
||||||
"""Calculate damage multiplier for separate fighter ability,"""
|
"""Calculate damage multiplier for separate fighter ability,"""
|
||||||
rangeFactor = _calcRangeFactor(atkOptimalRange, atkFalloffRange, distance)
|
rangeFactor = _calcRangeFactor(atkOptimalRange, atkFalloffRange, distance)
|
||||||
|
|||||||
@@ -103,6 +103,21 @@ class FitDamageStatsGraph(FitGraph):
|
|||||||
distance=distance,
|
distance=distance,
|
||||||
tgtSpeed=miscInputMap['tgtSpeed'],
|
tgtSpeed=miscInputMap['tgtSpeed'],
|
||||||
tgtSigRadius=tgtSigRad)
|
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)
|
xs.append(distance)
|
||||||
ys.append(totalDps)
|
ys.append(totalDps)
|
||||||
return xs, ys
|
return xs, ys
|
||||||
|
|||||||
Reference in New Issue
Block a user