modifiers.py (5423B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\dogma\effects\modifiers.py 2 3 4 class BaseModifier(object): 5 6 def __init__(self, operator, domain, modifiedAttributeID, modifyingAttributeID): 7 self.operator = operator 8 self.domain = domain 9 self.modifiedAttributeID = modifiedAttributeID 10 self.modifyingAttributeID = modifyingAttributeID 11 self.isShipModifier = domain == 'shipID' 12 self.isCharModifier = domain == 'charID' 13 self.isStuctureModifier = domain == 'structureID' 14 self.isOtherModifier = domain == 'otherID' 15 16 def _GetDomainID(self, env): 17 if self.domain is None: 18 return env.itemID 19 return getattr(env, self.domain) 20 21 def Start(self, env, dogmaLM, itemID, shipID, charID, otherID, targetID): 22 self._GetStartFunc(dogmaLM)(*self._GetArgs(env, itemID)) 23 24 def Stop(self, env, dogmaLM, itemID, shipID, charID, otherID, targetID): 25 self._GetStopFunc(dogmaLM)(*self._GetArgs(env, itemID)) 26 27 def IsShipModifier(self): 28 return self.isShipModifier 29 30 def IsCharModifier(self): 31 return self.isCharModifier 32 33 def IsStructureModifier(self): 34 return self.isStuctureModifier 35 36 def IsOtherModifier(self): 37 return self.isOtherModifier 38 39 40 class ItemModifier(BaseModifier): 41 42 def _GetArgs(self, env, itemID): 43 return (self.operator, 44 self._GetDomainID(env), 45 self.modifiedAttributeID, 46 itemID, 47 self.modifyingAttributeID) 48 49 def _GetStartFunc(self, dogmaLM): 50 return dogmaLM.AddModifier 51 52 def _GetStopFunc(self, dogmaLM): 53 return dogmaLM.RemoveModifier 54 55 56 def _GetItemModifier(modifier): 57 return ItemModifier(modifier.operation, modifier.domain, modifier.modifiedAttributeID, modifier.modifyingAttributeID) 58 59 60 class LocationModifier(ItemModifier): 61 62 def _GetStartFunc(self, dogmaLM): 63 return dogmaLM.AddLocationModifier 64 65 def _GetStopFunc(self, dogmaLM): 66 return dogmaLM.RemoveLocationModifier 67 68 69 def _GetLocationModifier(modifier): 70 return LocationModifier(modifier.operation, modifier.domain, modifier.modifiedAttributeID, modifier.modifyingAttributeID) 71 72 73 class RequiredSkillModifier(BaseModifier): 74 75 def __init__(self, operator, domain, modifiedAttributeID, modifyingAttributeID, skillTypeID): 76 super(RequiredSkillModifier, self).__init__(operator, domain, modifiedAttributeID, modifyingAttributeID) 77 self.skillTypeID = skillTypeID 78 79 def _GetArgs(self, env, itemID): 80 return (self.operator, 81 self._GetDomainID(env), 82 self.skillTypeID, 83 self.modifiedAttributeID, 84 itemID, 85 self.modifyingAttributeID) 86 87 88 class LocationRequiredSkillModifier(RequiredSkillModifier): 89 90 def _GetStartFunc(self, dogmaLM): 91 return dogmaLM.AddLocationRequiredSkillModifier 92 93 def _GetStopFunc(self, dogmaLM): 94 return dogmaLM.RemoveLocationRequiredSkillModifier 95 96 97 def _GetLocationRequiredSkillModifier(modifer): 98 return LocationRequiredSkillModifier(modifer.operation, modifer.domain, modifer.modifiedAttributeID, modifer.modifyingAttributeID, modifer.skillTypeID) 99 100 101 class OwnerRequiredSkillModifier(RequiredSkillModifier): 102 103 def _GetStartFunc(self, dogmaLM): 104 return dogmaLM.AddOwnerRequiredSkillModifier 105 106 def _GetStopFunc(self, dogmaLM): 107 return dogmaLM.RemoveOwnerRequiredSkillModifier 108 109 def IsShipModifier(self): 110 return True 111 112 def IsCharModifier(self): 113 return True 114 115 116 def _GetOwnerRequiredSkillModifier(modifier): 117 return OwnerRequiredSkillModifier(modifier.operation, modifier.domain, modifier.modifiedAttributeID, modifier.modifyingAttributeID, modifier.skillTypeID) 118 119 120 class LocationGroupModifier(BaseModifier): 121 122 def __init__(self, operator, domain, modifiedAttributeID, modifyingAttributeID, groupID): 123 super(LocationGroupModifier, self).__init__(operator, domain, modifiedAttributeID, modifyingAttributeID) 124 self.groupID = groupID 125 126 def _GetArgs(self, env, itemID): 127 return (self.operator, 128 self._GetDomainID(env), 129 self.groupID, 130 self.modifiedAttributeID, 131 itemID, 132 self.modifyingAttributeID) 133 134 def _GetStartFunc(self, dogmaLM): 135 return dogmaLM.AddLocationGroupModifier 136 137 def _GetStopFunc(self, dogmaLM): 138 return dogmaLM.RemoveLocationGroupModifier 139 140 141 def _GetLocationGroupModifier(modifier): 142 return LocationGroupModifier(modifier.operation, modifier.domain, modifier.modifiedAttributeID, modifier.modifyingAttributeID, modifier.groupID) 143 144 145 class NoOpModifier(object): 146 147 def Start(self, env, dogmaLM, itemID, shipID, charID, otherID, targetID): 148 pass 149 150 def Stop(self, env, dogmaLM, itemID, shipID, charID, otherID, targetID): 151 pass 152 153 def IsShipModifier(self): 154 return False 155 156 def IsCharModifier(self): 157 return False 158 159 def IsStructureModifier(self): 160 return False 161 162 163 def _GetNoOpModifier(effectDict): 164 return NoOpModifier() 165 166 167 modifierGetterByType = {'ItemModifier': _GetItemModifier, 168 'LocationRequiredSkillModifier': _GetLocationRequiredSkillModifier, 169 'OwnerRequiredSkillModifier': _GetOwnerRequiredSkillModifier, 170 'LocationModifier': _GetLocationModifier, 171 'LocationGroupModifier': _GetLocationGroupModifier} 172 173 def GetModifierClassByTypeString(modifierType): 174 return modifierGetterByType.get(modifierType)