Formulator / base /recipe.py
ango
04.11 commit
2f63a42
raw
history blame
1.27 kB
from typing import List
from base.gain import Gain
class Recipe(Gain):
def __init__(self, gain_name: str, skill_ids: List[int], value: int):
super().__init__(gain_name)
self.skill_ids = skill_ids
self.value = value
class DamageAdditionRecipe(Recipe):
def add(self, other):
if isinstance(other, dict):
for skill_id in self.skill_ids:
other[skill_id].skill_damage_addition += self.value
def sub(self, other):
if isinstance(other, dict):
for skill_id in self.skill_ids:
other[skill_id].skill_damage_addition -= self.value
class CriticalStrikeRecipe(Recipe):
def add(self, other):
if isinstance(other, dict):
for skill_id in self.skill_ids:
other[skill_id].skill_critical_strike += self.value
def sub(self, other):
if isinstance(other, dict):
for skill_id in self.skill_ids:
other[skill_id].skill_critical_strike -= self.value
def damage_addition_recipe(skill_ids, value, name="伤害增加"):
return DamageAdditionRecipe(name, skill_ids, value)
def critical_strike_recipe(skill_ids, value, name="会心增加"):
return CriticalStrikeRecipe(name, skill_ids, value)