propulsionModules.py (2643B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\common\script\dogma\pythonEffects\propulsionModules.py 2 import dogma.const as dogmaconst 3 from dogma.effects import Effect 4 from dogma.attributes import LiteralAttribute 5 SPEED_BOOST_FACTOR_CALC = 0.01 6 7 class Afterburner(Effect): 8 __guid__ = 'dogmaXP.Afterburner' 9 __effectIDs__ = ['effectModuleBonusAfterburner'] 10 MODIFIER_CHANGES = [(dogmaconst.dgmAssModAdd, dogmaconst.attributeMass, dogmaconst.attributeMassAddition)] 11 speedFactorAttribute = dogmaconst.attributeSpeedFactor 12 speedBoostFactorAttribute = dogmaconst.attributeSpeedBoostFactor 13 14 def Start(self, env, dogmaLM, itemID, shipID, charID, otherID, targetID): 15 self.AddModifiers(dogmaLM, shipID, itemID) 16 self._AddSpeedMultiplierModifier(env, dogmaLM, itemID, shipID) 17 18 def _AddSpeedMultiplierModifier(self, env, dogmaLM, itemID, shipID): 19 speedFactor = dogmaLM.GetAttributeValue(itemID, self.speedFactorAttribute) 20 speedBoostFactor = dogmaLM.GetAttributeValue(itemID, self.speedBoostFactorAttribute) 21 shipMass = dogmaLM.GetAttributeValue(shipID, dogmaconst.attributeMass) 22 speedMultiplier = 1 + SPEED_BOOST_FACTOR_CALC * speedFactor * speedBoostFactor / shipMass 23 env.afterburner_speedMultiplierAttribute = LiteralAttribute(speedMultiplier) 24 dogmaLM.AddModifierWithSource(dogmaconst.dgmAssPostMul, shipID, dogmaconst.attributeMaxVelocity, env.afterburner_speedMultiplierAttribute) 25 26 def Stop(self, env, dogmaLM, itemID, shipID, charID, otherID, targetID): 27 self.RemoveModifiers(dogmaLM, shipID, itemID) 28 self._RemoveSpeedMultiplierModifier(env, dogmaLM, shipID) 29 30 def _RemoveSpeedMultiplierModifier(self, env, dogmaLM, shipID): 31 dogmaLM.RemoveModifierWithSource(dogmaconst.dgmAssPostMul, shipID, dogmaconst.attributeMaxVelocity, env.afterburner_speedMultiplierAttribute) 32 33 def RefreshEffect(self, dogmaLM, env, itemID, shipID): 34 isThere = dogmaLM.IsAttributeInIcomingModifiers(shipID, dogmaconst.attributeMaxVelocity, env.afterburner_speedMultiplierAttribute, dogmaconst.dgmAssPostMul) 35 if not isThere: 36 return 37 self._RemoveSpeedMultiplierModifier(env, dogmaLM, shipID) 38 self._AddSpeedMultiplierModifier(env, dogmaLM, itemID, shipID) 39 40 RestrictedStop = Stop 41 42 43 class Microwarpdrive(Afterburner): 44 __guid__ = 'dogmaXP.Microwarpdrive' 45 __effectIDs__ = ['effectModuleBonusMicrowarpdrive'] 46 MODIFIER_CHANGES = Afterburner.MODIFIER_CHANGES + [(dogmaconst.dgmAssPostPercent, dogmaconst.attributeSignatureRadius, dogmaconst.attributeSignatureRadiusBonus)]