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

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)