Formulator / general /gains /formation.py
AngoHF's picture
5.6 commit
1467c05
raw
history blame
9.15 kB
from base.attribute import Attribute
from base.gain import Gain
class FormationGain(Gain):
gain_attributes: dict = {}
core_gain_attributes: dict = {}
rate_gain_attributes: dict = {}
def __init__(self, rate=0, core_rate=0):
super().__init__(type(self).__name__)
self.rate = rate / 100
self.core_rate = core_rate / 100
def add_attribute(self, attribute: Attribute):
for attr, value in self.gain_attributes.items():
setattr(attribute, attr, getattr(attribute, attr) + value)
for attr, value in self.core_gain_attributes.items():
setattr(attribute, attr, getattr(attribute, attr) + int(value * self.core_rate))
for attr, value in self.rate_gain_attributes.items():
setattr(attribute, attr, getattr(attribute, attr) + int(value * self.rate))
def sub_attribute(self, attribute: Attribute):
for attr, value in self.gain_attributes.items():
setattr(attribute, attr, getattr(attribute, attr) - value)
for attr, value in self.core_gain_attributes.items():
setattr(attribute, attr, getattr(attribute, attr) - int(value * self.core_rate))
for attr, value in self.rate_gain_attributes.items():
setattr(attribute, attr, getattr(attribute, attr) - int(value * self.rate))
class ä¹éŸ³ęƒŠå¼¦é˜µ(FormationGain):
gain_attributes = {
"magical_attack_power_gain": 50,
"magical_critical_strike_gain": 300,
"magical_critical_power_gain": 51,
}
core_gain_attributes = {"magical_overcome_gain": 307}
rate_gain_attributes = {"magical_attack_power_gain": 50}
class äøƒē»é€é„é˜µ(FormationGain):
gain_attributes = {
"magical_attack_power_gain": 51,
"magical_overcome_gain": 300
}
class å«å…¬ęŠ˜å†²é˜µ(FormationGain):
gain_attributes = {
"physical_attack_power_gain": 50,
"physical_overcome_gain": 200
}
core_gain_attributes = {"strength_gain": 10 * 5}
rate_gain_attributes = {"physical_attack_power_gain": 51}
class 天鼓雷音阵(FormationGain):
gain_attributes = {
"magical_attack_power_gain": 51,
"strain_gain": 20,
"magical_overcome_gain": 102
}
rate_gain_attributes = {"magical_attack_power_gain": 21 * 5}
class åŒ—ę–—äøƒę˜Ÿé˜µ(FormationGain):
gain_attributes = {
"physical_critical_strike_gain": 300,
"strain_gain": 20,
"physical_critical_power_gain": 150
}
rate_gain_attributes = {"physical_critical_strike_gain": 100 * 5}
class 九宫八卦阵(FormationGain):
gain_attributes = {
"magical_critical_strike_gain": 300,
"strain_gain": 20,
"magical_critical_power_gain": 154
}
rate_gain_attributes = {"magical_critical_strike_gain": 100 * 5}
class ä¾å±±č§‚ę¾œé˜µ(FormationGain):
gain_attributes = {
"agility_gain": 30,
"physical_attack_power_gain": 51,
"physical_critical_power_gain": 204
}
class äø‡č›Šå™¬åæƒé˜µ(FormationGain):
gain_attributes = {
"magical_attack_power_gain": 51,
"magical_critical_strike_gain": 300,
"magical_critical_power_gain": 102
}
core_gain_attributes = {"magical_attack_power_gain": 51}
rate_gain_attributes = {"magical_overcome_gain": 102}
class 流星赶月阵(FormationGain):
gain_attributes = {
"strength_gain": 30,
"strain_gain": 20,
"physical_overcome_gain": 205
}
rate_gain_attributes = {"physical_critical_strike_gain": 500}
class åƒęœŗē™¾å˜é˜µ(FormationGain):
gain_attributes = {
"magical_attack_power_gain": 51,
"all_shield_ignore": 52,
"all_critical_power_gain": 150
}
rate_gain_attributes = {"all_critical_strike_gain": 500}
class ē‚ŽåØē “é­”é˜µ(FormationGain):
gain_attributes = {
"magical_attack_power_gain": 51,
"magical_critical_strike_gain": 300,
}
core_gain_attributes = {"magical_critical_power_gain": 200}
rate_gain_attributes = {"magical_critical_strike_gain": 1000}
class é™é¾™ä¼č™Žé˜µ(FormationGain):
gain_attributes = {
"physical_attack_power_gain": 50,
"physical_overcome_gain": 102
}
core_gain_attributes = {"physical_overcome_gain": 306}
rate_gain_attributes = {"physical_overcome_base": 770 * 5}
class é”‹å‡ŒęØŖē»é˜µ(FormationGain):
gain_attributes = {
"physical_critical_strike_gain": 300,
"strain_gain": 20,
}
core_gain_attributes = {"physical_overcome_gain": 153}
rate_gain_attributes = {"physical_critical_power_gain": 20 * 5}
class äø‡ē±é‡‘å¼¦é˜µ(FormationGain):
gain_attributes = {
"magical_critical_strike_gain": 300,
"strain_gain": 20,
"magical_attack_power_gain": 102
}
core_gain_attributes = {"magical_critical_power_gain": 205}
rate_gain_attributes = {"magical_critical_strike_gain": 500}
class éœœå²šę“—é”‹é˜µ(FormationGain):
gain_attributes = {
"physical_attack_power_gain": 50,
"strain_gain": 20,
"physical_overcome_gain": 102,
}
rate_gain_attributes = {"all_critical_strike_gain": 500}
class å¢Ÿęµ·å¼•å½’é˜µ(FormationGain):
gain_attributes = {
"physical_critical_strike_gain": 300,
"physical_attack_power_gain": 133,
"physical_overcome_gain": 102
}
core_gain_attributes = {"physical_attack_power_gain": 51}
class é¾™ēš‡é›Ŗé£Žé˜µ(FormationGain):
gain_attributes = {
"physical_critical_strike_gain": 300,
"physical_attack_power_gain": 50,
"physical_critical_power_gain": 154,
}
core_gain_attributes = {"physical_critical_power_gain": 100}
rate_gain_attributes = {"physical_attack_power_gain": 102}
class ä¹ę˜Ÿęøøå¹“é˜µ(FormationGain):
values = [102, 92, 82, 71, 61, 51, 41, 31, 20, 10]
gain_attributes = {
"magical_attack_power_gain": 51,
"strain_gain": 20,
"magical_critical_power_gain": 100
}
core_gain_attributes = {"magical_critical_power_gain": sum(values) / len(values)}
rate_gain_attributes = {"all_damage_addition": int(154 / 2)}
class 乱暮浊茵阵(FormationGain):
gain_attributes = {
"magical_attack_power_gain": 51,
"all_damage_addition": 31,
"all_critical_strike_gain": 300
}
class ęØŖäŗ‘ē “é”‹é˜µ(FormationGain):
gain_attributes = {
"physical_attack_power_gain": 50,
"surplus_base": 1516,
"physical_overcome_gain": 256
}
core_gain_attributes = {"physical_critical_power_gain": 100}
class č‹ę¢§å¼•ēµé˜µ(FormationGain):
gain_attributes = {
"all_critical_strike_gain": 300,
"strain_gain": 20,
"all_damage_addition": 62,
}
rate_gain_attributes = {"all_critical_power_gain": 150}
FORMATIONS = {
"": ["åƒęœŗē™¾å˜é˜µ", "č‹ę¢§å¼•ēµé˜µ"],
"外功": [
"å«å…¬ęŠ˜å†²é˜µ", "åŒ—ę–—äøƒę˜Ÿé˜µ", "ä¾å±±č§‚ę¾œé˜µ", "流星赶月阵", "é™é¾™ä¼č™Žé˜µ", "é”‹å‡ŒęØŖē»é˜µ", "éœœå²šę“—é”‹é˜µ", "å¢Ÿęµ·å¼•å½’é˜µ",
"é¾™ēš‡é›Ŗé£Žé˜µ", "ęØŖäŗ‘ē “é”‹é˜µ"
],
"内功": [
"ä¹éŸ³ęƒŠå¼¦é˜µ", "äøƒē»é€é„é˜µ", "天鼓雷音阵", "九宫八卦阵", "äø‡č›Šå™¬åæƒé˜µ", "ē‚ŽåØē “é­”é˜µ", "äø‡ē±é‡‘å¼¦é˜µ", "ä¹ę˜Ÿęøøå¹“é˜µ",
"乱暮浊茵阵"
]
}
# FORMATION_GAIN_NAMES = {
# "ä¹éŸ³ęƒŠå¼¦é˜µ": "ä¹éŸ³ęƒŠå¼¦é˜µ(5%内攻3%内会5%å†…åŠŸä¼šę•ˆ/5%内攻)",
# "äøƒē»é€é„é˜µ": "äøƒē»é€é„é˜µ(5%内攻30%内砓)",
# "å«å…¬ęŠ˜å†²é˜µ": "å«å…¬ęŠ˜å†²é˜µ(5%外攻20%外砓/5%外攻)",
# "天鼓雷音阵": "天鼓雷音阵(5%内攻2%ę— åŒ10%内砓/5*2%内攻)",
# "åŒ—ę–—äøƒę˜Ÿé˜µ": "åŒ—ę–—äøƒę˜Ÿé˜µ(3%外会2%ę— åŒ15%å¤–åŠŸä¼šę•ˆ/5*1%外会)",
# "九宫八卦阵": "九宫八卦阵(3%内会2%ę— åŒ15%å†…åŠŸä¼šę•ˆ/5*1%内会)",
# "ä¾å±±č§‚ę¾œé˜µ": "ä¾å±±č§‚ę¾œé˜µ(3%身法5%外攻20%å¤–ę”»ä¼šę•ˆ)",
# "äø‡č›Šå™¬åæƒé˜µ": "äø‡č›Šå™¬åæƒé˜µ(5%内攻3%内会10%å†…åŠŸä¼šę•ˆ/10%内砓)",
# "流星赶月阵": "流星赶月阵(3%力道2%ę— åŒ20%外砓/5%外会)",
# "åƒęœŗē™¾å˜é˜µ": "åƒęœŗē™¾å˜é˜µ(5%内攻5%ꗠ视15%ä¼šę•ˆ/5%会心)",
# "ē‚ŽåØē “é­”é˜µ": "ē‚ŽåØē “é­”é˜µ(5%内攻3%内会/10%内会)",
# "é™é¾™ä¼č™Žé˜µ": "é™é¾™ä¼č™Žé˜µ(5%外攻10%外砓/5*770外砓)",
# "é”‹å‡ŒęØŖē»é˜µ": "é”‹å‡ŒęØŖē»é˜µ(3%外会2%ę— åŒ/5*2%å¤–åŠŸä¼šę•ˆ)",
# "äø‡ē±é‡‘å¼¦é˜µ": "äø‡ē±é‡‘å¼¦é˜µ(3%内会2%ę— åŒ10%内攻/5*1%内会",
# "éœœå²šę“—é”‹é˜µ": "éœœå²šę“—é”‹é˜µ(5%外攻2%ę— åŒ10%外砓/5%会心)",
# "å¢Ÿęµ·å¼•å½’é˜µ": "å¢Ÿęµ·å¼•å½’é˜µ(3%外会10%外攻10%外砓)",
# "é¾™ēš‡é›Ŗé£Žé˜µ": "é¾™ēš‡é›Ŗé£Žé˜µ(3%外会5%外攻15%å¤–åŠŸä¼šę•ˆ/10%外攻)",
# "ä¹ę˜Ÿęøøå¹“é˜µ": "ä¹ę˜Ÿęøøå¹“é˜µ(5%内攻2%ę— åŒ10%å†…åŠŸä¼šę•ˆ/15%伤害增加)",
# "乱暮浊茵阵": "乱暮浊茵阵(5%内攻3%伤害增加3%会心)",
# "ęØŖäŗ‘ē “é”‹é˜µ": "ęØŖäŗ‘ē “é”‹é˜µ(5%外攻1516ē “ę‹›25%外砓)",
# "č‹ę¢§å¼•ēµé˜µ": "č‹ę¢§å¼•ēµé˜µ(3%会心2%ę— åŒ6%伤害增加/15%ä¼šę•ˆ)",
# }
FORMATION_GAINS = {
formation: globals()[formation]
for formations in FORMATIONS.values() for formation in formations
}