Spaces:
Runtime error
Runtime error
File size: 3,915 Bytes
ef62e40 2f63a42 ef62e40 2f63a42 ef62e40 2f63a42 a05a2de 55f0dce c255694 ef62e40 2f63a42 ef62e40 2f63a42 a05a2de ef62e40 2f63a42 ef62e40 f0b1638 4079f21 55f0dce c255694 f0b1638 2f63a42 f0b1638 2f63a42 4079f21 a05a2de |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
from typing import List, Dict
from base.gain import Gain
from base.skill import Skill
class RecipeGain(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 DoubleRecipeGain(Gain):
def __init__(self, gain_name, attack_skill_ids, damage_skill_ids, attack_value, damage_value):
super().__init__(gain_name)
self.attack_skill_ids = attack_skill_ids
self.damage_skill_ids = damage_skill_ids
self.attack_value = attack_value
self.damage_value = damage_value
class IntervalRecipe(RecipeGain):
def add_skills(self, skills: Dict[int, Skill]):
for skill_id in self.skill_ids:
skills[skill_id].interval += self.value
def sub_skills(self, skills: Dict[int, Skill]):
for skill_id in self.skill_ids:
skills[skill_id].interval -= self.value
class AttackPowerRecipe(RecipeGain):
def add_skills(self, skills: Dict[int, Skill]):
for skill_id in self.skill_ids:
skills[skill_id].attack_power_cof_gain *= self.value
def sub_skills(self, skills: Dict[int, Skill]):
for skill_id in self.skill_ids:
skills[skill_id].attack_power_cof_gain /= self.value
class DamageAdditionRecipe(RecipeGain):
def add_skills(self, skills: Dict[int, Skill]):
for skill_id in self.skill_ids:
skills[skill_id].skill_damage_addition += self.value
def sub_skills(self, skills: Dict[int, Skill]):
for skill_id in self.skill_ids:
skills[skill_id].skill_damage_addition -= self.value
class DoubleAdditionRecipe(DoubleRecipeGain):
def add_skills(self, skills: Dict[int, Skill]):
for skill_id in self.attack_skill_ids:
skills[skill_id].attack_power_cof_gain *= self.attack_value
for skill_id in self.damage_skill_ids:
skills[skill_id].skill_damage_addition += self.damage_value
def sub_skills(self, skills: Dict[int, Skill]):
for skill_id in self.attack_skill_ids:
skills[skill_id].attack_power_cof_gain /= self.attack_value
for skill_id in self.damage_skill_ids:
skills[skill_id].skill_damage_addition /= self.damage_value
class CriticalStrikeRecipe(RecipeGain):
def add_skills(self, skills: Dict[int, Skill]):
for skill_id in self.skill_ids:
skills[skill_id].skill_critical_strike += self.value
def sub_skills(self, skills: Dict[int, Skill]):
for skill_id in self.skill_ids:
skills[skill_id].skill_critical_strike -= self.value
class PveAdditionRecipe(RecipeGain):
def add_skills(self, skills: Dict[int, Skill]):
for skill_id in self.skill_ids:
skills[skill_id].skill_pve_addition += self.value
def sub_skills(self, skills: Dict[int, Skill]):
for skill_id in self.skill_ids:
skills[skill_id].skill_pve_addition -= self.value
def interval_recipe(skill_ids, value, name="减少运功时间"):
return IntervalRecipe(name, skill_ids, value)
def attack_power_recipe(skill_ids, value, name="系数增加"):
return AttackPowerRecipe(name, skill_ids, 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)
def pve_addition_recipe(skill_ids, value, name="非侠伤害增加"):
return PveAdditionRecipe(name, skill_ids, value)
def double_addition_recipe(
attack_power_skill_ids, damage_addition_skill_ids, attack_power_value, damage_addition_value, name="伤害增加"
):
return DoubleAdditionRecipe(
name, attack_power_skill_ids, damage_addition_skill_ids, attack_power_value, damage_addition_value
)
|