NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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)]