Move resistance calculation to multiplication method

This commit is contained in:
DarkPhoenix
2019-07-08 10:27:06 +03:00
parent c64d09ca54
commit e262aa7daa

View File

@@ -398,7 +398,7 @@ class ModifiedAttributeDict(collections.MutableMapping):
self.__placehold(attributeName) self.__placehold(attributeName)
self.__afflict(attributeName, "+", increase, increase != 0) self.__afflict(attributeName, "+", increase, increase != 0)
def multiply(self, attributeName, multiplier, stackingPenalties=False, penaltyGroup="default", skill=None, resist=True, *args, **kwargs): def multiply(self, attributeName, multiplier, stackingPenalties=False, penaltyGroup="default", skill=None, *args, **kwargs):
"""Multiply value of given attribute by given factor""" """Multiply value of given attribute by given factor"""
if multiplier is None: # See GH issue 397 if multiplier is None: # See GH issue 397
return return
@@ -406,6 +406,14 @@ class ModifiedAttributeDict(collections.MutableMapping):
if skill: if skill:
multiplier *= self.__handleSkill(skill) multiplier *= self.__handleSkill(skill)
resisted = False
# Goddammit CCP, make up your mind where you want this information >.< See #1139
if 'effect' in kwargs:
resistFactor = ModifiedAttributeDict.getResistance(self.fit, kwargs['effect']) or 1
if resistFactor != 1:
resisted = True
multiplier *= (multiplier - 1) * resistFactor + 1
# If we're asked to do stacking penalized multiplication, append values # If we're asked to do stacking penalized multiplication, append values
# to per penalty group lists # to per penalty group lists
if stackingPenalties: if stackingPenalties:
@@ -426,7 +434,7 @@ class ModifiedAttributeDict(collections.MutableMapping):
afflictPenal = "" afflictPenal = ""
if stackingPenalties: if stackingPenalties:
afflictPenal += "s" afflictPenal += "s"
if resist: if resisted:
afflictPenal += "r" afflictPenal += "r"
self.__afflict(attributeName, "%s*" % afflictPenal, multiplier, multiplier != 1) self.__afflict(attributeName, "%s*" % afflictPenal, multiplier, multiplier != 1)
@@ -436,15 +444,8 @@ class ModifiedAttributeDict(collections.MutableMapping):
if skill: if skill:
boostFactor *= self.__handleSkill(skill) boostFactor *= self.__handleSkill(skill)
resist = None
# Goddammit CCP, make up your mind where you want this information >.< See #1139
if 'effect' in kwargs:
resist = ModifiedAttributeDict.getResistance(self.fit, kwargs['effect']) or 1
boostFactor *= resist
# We just transform percentage boost into multiplication factor # We just transform percentage boost into multiplication factor
self.multiply(attributeName, 1 + boostFactor / 100.0, resist=(True if resist else False), *args, **kwargs) self.multiply(attributeName, 1 + boostFactor / 100.0, *args, **kwargs)
def force(self, attributeName, value): def force(self, attributeName, value):
"""Force value to attribute and prohibit any changes to it""" """Force value to attribute and prohibit any changes to it"""