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]