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

Method getVolleyParameters

eos/saveddata/module.py:477–526  ·  view source on GitHub ↗
(self, spoolOptions=None, targetProfile=None, ignoreState=False)

Source from the content-addressed store, hash-verified

475 return False
476
477 def getVolleyParameters(self, spoolOptions=None, targetProfile=None, ignoreState=False):
478 if self.isEmpty or (self.state < FittingModuleState.ACTIVE and not ignoreState):
479 return {0: DmgTypes.default()}
480 if self.__baseVolley is None:
481 self.__baseVolley = {}
482 if self.isBreacher:
483 dmgDelay = 1
484 subcycles = math.floor(self.getModifiedChargeAttr("dotDuration", 0) / 1000)
485 breacher_info = BreacherInfo(
486 absolute=self.getModifiedChargeAttr("dotMaxDamagePerTick", 0),
487 relative=self.getModifiedChargeAttr("dotMaxHPPercentagePerTick", 0) / 100)
488 for i in range(subcycles):
489 volley = DmgTypes.default()
490 volley.add_breacher(dmgDelay + i, breacher_info)
491 self.__baseVolley[dmgDelay + i] = volley
492 else:
493 dmgGetter = self.getModifiedChargeAttr if self.charge else self.getModifiedItemAttr
494 dmgMult = self.getModifiedItemAttr("damageMultiplier", 1)
495 # Some delay attributes have non-0 default value, so we have to pick according to effects
496 if {'superWeaponAmarr', 'superWeaponCaldari', 'superWeaponGallente', 'superWeaponMinmatar', 'lightningWeapon'}.intersection(self.item.effects):
497 dmgDelay = self.getModifiedItemAttr("damageDelayDuration", 0)
498 elif {'doomsdayBeamDOT', 'doomsdaySlash', 'doomsdayConeDOT', 'debuffLance'}.intersection(self.item.effects):
499 dmgDelay = self.getModifiedItemAttr("doomsdayWarningDuration", 0)
500 else:
501 dmgDelay = 0
502 dmgDuration = self.getModifiedItemAttr("doomsdayDamageDuration", 0)
503 dmgSubcycle = self.getModifiedItemAttr("doomsdayDamageCycleTime", 0)
504 # Reaper DD can damage each target only once
505 if dmgDuration != 0 and dmgSubcycle != 0 and 'doomsdaySlash' not in self.item.effects:
506 subcycles = math.floor(floatUnerr(dmgDuration / dmgSubcycle))
507 else:
508 subcycles = 1
509 for i in range(subcycles):
510 self.__baseVolley[dmgDelay + dmgSubcycle * i] = DmgTypes(
511 em=(dmgGetter("emDamage", 0)) * dmgMult,
512 thermal=(dmgGetter("thermalDamage", 0)) * dmgMult,
513 kinetic=(dmgGetter("kineticDamage", 0)) * dmgMult,
514 explosive=(dmgGetter("explosiveDamage", 0)) * dmgMult)
515 spoolType, spoolAmount = resolveSpoolOptions(spoolOptions, self)
516 spoolBoost = calculateSpoolup(
517 self.getModifiedItemAttr("damageMultiplierBonusMax", 0),
518 self.getModifiedItemAttr("damageMultiplierBonusPerCycle", 0),
519 self.rawCycleTime / 1000, spoolType, spoolAmount)[0]
520 spoolMultiplier = 1 + spoolBoost
521 adjustedVolleys = {}
522 for volleyTime, baseVolley in self.__baseVolley.items():
523 adjustedVolley = baseVolley * spoolMultiplier
524 adjustedVolley.profile = targetProfile
525 adjustedVolleys[volleyTime] = adjustedVolley
526 return adjustedVolleys
527
528 def getVolley(self, spoolOptions=None, targetProfile=None, ignoreState=False):
529 volleyParams = self.getVolleyParameters(spoolOptions=spoolOptions, targetProfile=targetProfile, ignoreState=ignoreState)

Callers 3

isDealingDamageMethod · 0.95
getVolleyMethod · 0.95
getDpsMethod · 0.95

Calls 10

BreacherInfoClass · 0.90
floatUnerrFunction · 0.90
DmgTypesClass · 0.90
resolveSpoolOptionsFunction · 0.90
calculateSpoolupFunction · 0.90
defaultMethod · 0.80
getModifiedChargeAttrMethod · 0.80
add_breacherMethod · 0.80
itemsMethod · 0.80
getModifiedItemAttrMethod · 0.45

Tested by

no test coverage detected