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

effect.py (3986B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\common\script\dogma\effect.py
      2 ApplyBrainEffect = {'M': lambda dogmaLM, targetID, fromAttrib, toAttribID, operation: dogmaLM.AddModifierWithSource(operation, targetID, toAttribID, fromAttrib),
      3  'LG': lambda dogmaLM, targetID, fromAttrib, toAttribID, operation, groupID: dogmaLM.AddLocationGroupModifierWithSource(operation, targetID, groupID, toAttribID, fromAttrib),
      4  'LRS': lambda dogmaLM, targetID, fromAttrib, toAttribID, operation, skillID: dogmaLM.AddLocationRequiredSkillModifierWithSource(operation, targetID, skillID, toAttribID, fromAttrib),
      5  'ORS': lambda dogmaLM, targetID, fromAttrib, toAttribID, operation, skillID: dogmaLM.AddOwnerRequiredSkillModifierWithSource(operation, targetID, skillID, toAttribID, fromAttrib),
      6  'L': lambda dogmaLM, targetID, fromAttrib, toAttribID, operation: dogmaLM.AddLocationModifierWithSource(operation, targetID, toAttribID, fromAttrib)}
      7 RemoveBrainEffect = {'M': lambda dogmaLM, targetID, fromAttrib, toAttribID, operation: dogmaLM.RemoveModifierWithSource(operation, targetID, toAttribID, fromAttrib),
      8  'LG': lambda dogmaLM, targetID, fromAttrib, toAttribID, operation, groupID: dogmaLM.RemoveLocationGroupModifierWithSource(operation, targetID, groupID, toAttribID, fromAttrib),
      9  'LRS': lambda dogmaLM, targetID, fromAttrib, toAttribID, operation, skillID: dogmaLM.RemoveLocationRequiredSkillModifierWithSource(operation, targetID, skillID, toAttribID, fromAttrib),
     10  'ORS': lambda dogmaLM, targetID, fromAttrib, toAttribID, operation, skillID: dogmaLM.RemoveOwnerRequiredSkillModifierWithSource(operation, targetID, skillID, toAttribID, fromAttrib),
     11  'L': lambda dogmaLM, targetID, fromAttrib, toAttribID, operation: dogmaLM.RemoveLocationModifierWithSource(operation, targetID, toAttribID, fromAttrib)}
     12 import dogma.const as dgmconst
     13 CombineModifiers = {dgmconst.dgmAssPreAssignment: lambda mod1, mod2: mod2,
     14  dgmconst.dgmAssPostAssignment: lambda mod1, mod2: mod2,
     15  dgmconst.dgmAssPreMul: lambda mod1, mod2: mod1 * mod2,
     16  dgmconst.dgmAssPostMul: lambda mod1, mod2: mod1 * mod2,
     17  dgmconst.dgmAssPreDiv: lambda mod1, mod2: mod1 * mod2,
     18  dgmconst.dgmAssPostDiv: lambda mod1, mod2: mod1 * mod2,
     19  dgmconst.dgmAssModAdd: lambda mod1, mod2: mod1 + mod2,
     20  dgmconst.dgmAssModSub: lambda mod1, mod2: mod1 + mod2,
     21  dgmconst.dgmAssPostPercent: lambda mod1, mod2: (100 + mod1) / 100.0 * ((100 + mod2) / 100.0) * 100 - 100,
     22  dgmconst.dgmAssPostPercentUnNerfed: lambda mod1, mod2: (100 + mod1) / 100.0 * ((100 + mod2) / 100.0) * 100 - 100}
     23 
     24 class Effect:
     25     __guid__ = 'dogmaXP.Effect'
     26     isPythonEffect = True
     27     __modifier_only__ = False
     28     __modifies_character__ = False
     29     __modifies_ship__ = False
     30 
     31     def RestrictedStop(self, *args):
     32         pass
     33 
     34     def PreStartChecks(self, *args):
     35         pass
     36 
     37     def StartChecks(self, *args):
     38         pass
     39 
     40     def Start(self, *args):
     41         pass
     42 
     43     def Stop(self, *args):
     44         pass
     45 
     46 
     47 class BrainEffect(object):
     48 
     49     def __init__(self, fromAttrib, toItemID, modifierType, toAttribID, operation, extras = tuple()):
     50         self.fromAttrib = fromAttrib
     51         self.value = None
     52         self.toItemID = toItemID
     53         self.modifierType = modifierType
     54         self.toAttribID = toAttribID
     55         self.operation = operation
     56         self.extras = extras
     57         self.skills = [fromAttrib.invItem.typeID]
     58 
     59     def GetLiteralKey(self):
     60         return (tuple(self.skills), self.value)
     61 
     62     def CombineWithEffect(self, effect):
     63         self.value = CombineModifiers[effect.operation](self.value, effect.value)
     64         self.skills.extend(effect.skills)
     65 
     66     def ResolveValue(self):
     67         self.value = self.fromAttrib.GetValue()
     68         self.fromAttrib = None
     69 
     70     def GetTargetKey(self):
     71         return (self.toItemID,
     72          self.toAttribID,
     73          self.modifierType,
     74          self.operation,
     75          self.extras)
     76 
     77     def GetApplicationArgs(self):
     78         return (self.toAttribID, self.operation) + self.extras