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

baseEffectCompiler.py (5498B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\common\script\dogma\baseEffectCompiler.py
      2 import cPickle
      3 import dogma.data
      4 import telemetry
      5 from carbon.common.script.sys.service import Service
      6 from dogma.effects import Effect
      7 from dogma.effects.modifiereffect import ModifierEffect
      8 from dogma.effects.util import CreateEffect
      9 from eve.common.lib import appConst
     10 from eveprefs import prefs
     11 NEUTRAL_EFFECT = Effect()
     12 
     13 class BaseEffectCompiler(Service):
     14     __guid__ = 'svc.baseEffectCompiler'
     15     __dependencies__ = ['dogmaStaticMgr']
     16 
     17     def __init__(self):
     18         self.effects = {}
     19         super(BaseEffectCompiler, self).__init__()
     20 
     21     @telemetry.ZONE_METHOD
     22     def SetupEffects(self):
     23         self.SetupDogmaEffects()
     24         self.SetupPythonEffects()
     25 
     26     @telemetry.ZONE_METHOD
     27     def SetupDogmaEffects(self):
     28         if not prefs.GetValue('enableNewStyleEffectAuthoring', True):
     29             return
     30         for effectInfo in dogma.data.get_all_effects():
     31             if effectInfo.modifierInfo:
     32                 try:
     33                     self.effects[effectInfo.effectID] = CreateEffect(effectInfo)
     34                 except Exception:
     35                     self.LogException('failed to load')
     36                     self.LogError('Failed to load effect', effectInfo.effectID, effectInfo.modifierInfo)
     37                     continue
     38 
     39             else:
     40                 self.effects[effectInfo.effectID] = NEUTRAL_EFFECT
     41 
     42     @telemetry.ZONE_METHOD
     43     def SetupPythonEffects(self):
     44         pythonEffects = self.GetPythonEffects()
     45         for item in pythonEffects:
     46             if not hasattr(item, '__effectIDs__'):
     47                 continue
     48             inst = item()
     49             for effectID in inst.__effectIDs__:
     50                 if isinstance(effectID, str):
     51                     effectName = effectID
     52                     effectID = getattr(appConst, effectName, None)
     53                     if effectID is None:
     54                         self.LogError('Namespace item', item, 'has non-existant effect name reference', effectName)
     55                         continue
     56                 self.effects[effectID] = inst
     57 
     58     def PickledSortedList(self, v):
     59         v.sort()
     60         return cPickle.dumps(v)
     61 
     62     def IsEffectPythonOverridden(self, effectID):
     63         try:
     64             return self.effects[effectID].isPythonEffect
     65         except KeyError:
     66             return False
     67 
     68     def IsEffectCreatedFromModifierInfo(self, effectID):
     69         try:
     70             return isinstance(self.effects[effectID], ModifierEffect)
     71         except KeyError:
     72             return False
     73 
     74     def StartEffect(self, effectID, env):
     75         return self.effects[effectID].Start(env, env.dogmaLM, env.itemID, env.shipID, env.charID, env.otherID, env.targetID)
     76 
     77     def PreStartEffectChecks(self, effectID, env):
     78         self.effects[effectID].PreStartChecks(env, env.dogmaLM, env.itemID, env.shipID, env.charID, env.otherID, env.targetID)
     79 
     80     def StartEffectChecks(self, effectID, env):
     81         self.effects[effectID].StartChecks(env, env.dogmaLM, env.itemID, env.shipID, env.charID, env.otherID, env.targetID)
     82 
     83     @telemetry.ZONE_METHOD
     84     def StopEffect(self, effectID, env, restricted = 0):
     85         if restricted:
     86             return self.effects[effectID].RestrictedStop(env, env.dogmaLM, env.itemID, env.shipID, env.charID, env.otherID, env.targetID)
     87         else:
     88             return self.effects[effectID].Stop(env, env.dogmaLM, env.itemID, env.shipID, env.charID, env.otherID, env.targetID)
     89 
     90     def IsEffectModifierOnly(self, effectID):
     91         return self.effects[effectID].__modifier_only__
     92 
     93     def IsEffectCharacterModifier(self, effectID):
     94         return self.effects[effectID].__modifies_character__
     95 
     96     def IsEffectShipModifier(self, effectID):
     97         return self.effects[effectID].__modifies_ship__
     98 
     99     def IsEffectDomainOther(self, effectID):
    100         return self.effects[effectID].__modifier_domain_other__
    101 
    102     def GetDogmaStaticMgr(self):
    103         return self.dogmaStaticMgr
    104 
    105     def GetEffect(self, effect_id):
    106         return self.effects[effect_id]
    107 
    108     def GetEffects(self):
    109         return self.effects
    110 
    111     def GetPythonEffects(self):
    112         from eve.common.script.dogma.fitting import LauncherFittedEffect, SubSystemFittedEffect, TurretFittedEffect, UpgradeFittedEffect
    113         from eve.common.script.dogma.hardPointModifierEffect import HardpointModifierEffect
    114         from eve.common.script.dogma.online import OnlineEffect
    115         from eve.common.script.dogma.pythonEffects.migratedeffects import ArmorRepairForEntities, ArmorRepairingEffect, CloakingTargetingDelayBonusPostPercentCloakingTargetingDelayBonusForShipModulesRequiringCloaking, DroneDmgBonus, MissileEMDmgBonus, MissileExplosiveDmgBonus, MissileKineticDmgBonus2, MissileThermalDmgBonus, SelfRof, ShieldBoostingEffect, TargetPassively
    116         from eve.common.script.dogma.slotModifier import SlotModifier
    117         return [ArmorRepairForEntities,
    118          ArmorRepairingEffect,
    119          CloakingTargetingDelayBonusPostPercentCloakingTargetingDelayBonusForShipModulesRequiringCloaking,
    120          DroneDmgBonus,
    121          HardpointModifierEffect,
    122          LauncherFittedEffect,
    123          MissileEMDmgBonus,
    124          MissileExplosiveDmgBonus,
    125          MissileKineticDmgBonus2,
    126          MissileThermalDmgBonus,
    127          OnlineEffect,
    128          SelfRof,
    129          ShieldBoostingEffect,
    130          SlotModifier,
    131          SubSystemFittedEffect,
    132          TargetPassively,
    133          TurretFittedEffect,
    134          UpgradeFittedEffect]