class Theresas(Character): name: str = "德丽莎" attack: LowerBoundedInteger = LowerBoundedInteger(19) defence: LowerBoundedInteger = LowerBoundedInteger(12) speed: int = 22 extra_attack_turn: int = 3 def 血犹大第一可爱(self): skill_name = "血犹大第一可爱" if roll(30): self.log_skill(skill_name) defence_decreased = 5 log(f"【{self.enemy.name}】的防御力降低 {defence_decreased} 点") self.enemy.defence = max(0, self.enemy.defence - defence_decreased) def 在线踢人(self): skill_name = "在线踢人" self.log_skill(skill_name) for i in range(5): damageBase = LowerBoundedInteger(16) damage = Damage(self.get_damage_value(damageBase), False, True) self.cause_damage(damage) def move(self, turn): Character.move(self, turn) if self.skills_enabled: self.血犹大第一可爱() def extra_attack(self): self.在线踢人()
class Seele(Character): name: str = "希儿" attack: LowerBoundedInteger = LowerBoundedInteger(23) defence: LowerBoundedInteger = LowerBoundedInteger(13) speed: int = 26 extra_attack_turn: int = 0 is_white :bool = True def 我换我自己(self): skill_name = "我换我自己" self.log_skill(skill_name) self.is_white = not self.is_white log(f"【{self.name}】的当前状态为{'纯白' if self.is_white else '漆黑'}") self.拜托了另一个我() def 拜托了另一个我(self): skill_name = "拜托了另一个我" self.log_skill(skill_name) if self.is_white: self.restore_health(randint(1, 15)) self.attack -= 10 self.defence += 5 else: self.attack += 10 self.defence -= 5 def move(self, turn): self.我换我自己() Character.move(self, turn)
def 变成星星吧(self): skill_name = "变成星星吧" self.log_skill(skill_name) if roll(50): damageBase = LowerBoundedInteger(233) else: damageBase = LowerBoundedInteger(50) damage = Damage(self.get_damage_value(damageBase), False, True) self.cause_damage(damage)
class Olenyevas(Character): name: str = "阿琳姐妹" attack: LowerBoundedInteger = LowerBoundedInteger(18) defence: LowerBoundedInteger = LowerBoundedInteger(10) speed: int = 10 is_multiple: bool = True extra_attack_turn: int = 0 use_extra_attack: bool = False class 超级头槌(Buff): name = "超级头槌" def on_turn_start(self): self.target.use_extra_attack = True self.lasting -= 1 def on_turn_end(self): if self.lasting == 0: self.target.use_extra_attack = False log(f"【{self.target.name}】的【{self.name}】消失了") 九十六度生命之水used: bool = False def 九十六度生命之水(self): skill_name = "九十六度生命之水" if not self.九十六度生命之水used: self.九十六度生命之水used = True self.log_skill(skill_name) self.health = 20 log(f"【{self.name}】的当前生命值为 {self.health}") self.status.append(self.超级头槌(self)) def 变成星星吧(self): skill_name = "变成星星吧" self.log_skill(skill_name) if roll(50): damageBase = LowerBoundedInteger(233) else: damageBase = LowerBoundedInteger(50) damage = Damage(self.get_damage_value(damageBase), False, True) self.cause_damage(damage) def extra_attack_available(self, turn): return self.skills_enabled and self.use_extra_attack def extra_attack(self): self.变成星星吧() def is_dead(self): if self.skills_enabled: if not self.九十六度生命之水used: if Character.is_dead(self): self.九十六度生命之水() return False return Character.is_dead(self)
class Rita(Character): name: str = "丽塔" attack: LowerBoundedInteger = LowerBoundedInteger(26) defence: LowerBoundedInteger = LowerBoundedInteger(11) speed: int = 17 extra_attack_turn: int = 4 class 魅惑(Buff): name = "魅惑" def on_turn_start(self): self.target.skills_enabled = False self.lasting -= 1 def on_turn_end(self): if self.lasting == 0: self.target.skills_enabled = True log(f"【{self.target.name}】的【{self.name}】消失了") # trick 丽塔的减伤效果是加给自己的 魅惑成功: bool = False def 女仆的温柔清理(self, damage): skill_name = "女仆的温柔清理" if roll(35): self.log_skill(skill_name) damage.value -= 3 self.enemy.attack -= 4 # 丽塔的技能真难写 def 完美心意(self): skill_name = "完美心意" self.log_skill(skill_name) self.enemy.restore_health(4) self.enemy.status.append(self.魅惑(self.enemy, 2)) self.魅惑成功 = True def normal_attack(self): damage = self.get_normal_damage() if self.skills_enabled: self.女仆的温柔清理(damage) return self.cause_damage(damage) # trick 丽塔的减伤效果是加给自己的 def receive_damage(self, damage: Damage): value = damage.value if self.魅惑成功: damage.value = damage.value.add_percent(-60) Character.receive_damage(self, damage) def extra_attack(self): self.完美心意()
def 雷电家的龙女仆(self): skill_name = "雷电家的龙女仆" self.log_skill(skill_name) for i in range(5): damageBase = LowerBoundedInteger(3) damage = Damage(damageBase, True, True) self.cause_damage(damage)
def 吃我一矛(self): skill_name = "吃我一矛" self.log_skill(skill_name) damageBase = LowerBoundedInteger(self.attack + 2 * self.enemy.defence) damage = Damage(self.get_damage_value(damageBase), False, True) self.cause_damage(damage) self.音量太强()
def 在线踢人(self): skill_name = "在线踢人" self.log_skill(skill_name) for i in range(5): damageBase = LowerBoundedInteger(16) damage = Damage(self.get_damage_value(damageBase), False, True) self.cause_damage(damage)
class Mei(Character): name: str = "芽衣" attack: LowerBoundedInteger = LowerBoundedInteger(22) defence: LowerBoundedInteger = LowerBoundedInteger(12) speed: int = 30 extra_attack_turn: int = 2 class 麻痹(Buff): name = "麻痹" def on_add(self): super().on_add() def on_turn_start(self): self.target.movable = False self.lasting -= 1 def on_turn_end(self): if self.lasting == 0: self.target.movable = True log(f"【{self.target.name}】的【{self.name}】消失了") def 崩坏世界的歌姬(self): skill_name = "崩坏世界的歌姬" if roll(30): self.log_skill(skill_name) log(f"【{self.name}】对【{self.enemy.name}】造成【麻痹】") self.enemy.status.append(self.麻痹(self.enemy)) def 雷电家的龙女仆(self): skill_name = "雷电家的龙女仆" self.log_skill(skill_name) for i in range(5): damageBase = LowerBoundedInteger(3) damage = Damage(damageBase, True, True) self.cause_damage(damage) def move(self, turn): Character.move(self, turn) if self.skills_enabled: self.崩坏世界的歌姬() def extra_attack(self): self.雷电家的龙女仆()
class Kiana(Character): name: str = "琪亚娜" attack: LowerBoundedInteger = LowerBoundedInteger(24) defence: LowerBoundedInteger = LowerBoundedInteger(11) speed: int = 23 extra_attack_turn: int = 2 class 眩晕(Buff): name = "眩晕" def on_add(self): super().on_add() def on_turn_start(self): self.target.movable = False self.lasting -= 1 def on_turn_end(self): if self.lasting == 0: self.target.movable = True log(f"【{self.target.name}】的【{self.name}】消失了") def 吃我一矛(self): skill_name = "吃我一矛" self.log_skill(skill_name) damageBase = LowerBoundedInteger(self.attack + 2 * self.enemy.defence) damage = Damage(self.get_damage_value(damageBase), False, True) self.cause_damage(damage) self.音量太强() def 音量太强(self): skill_name = "音量太强" if roll(35): self.log_skill(skill_name) log(f"【{self.name}】眩晕了!!!") self.status.append(self.眩晕(self)) def extra_attack(self): self.吃我一矛()
def get_normal_damage_value(self, is_elemental: bool = False ) -> LowerBoundedInteger: return LowerBoundedInteger( self.get_damage_value(self.attack, is_elemental))
def get_damage_value(self, value: LowerBoundedInteger, is_elemental: bool = False) -> LowerBoundedInteger: return LowerBoundedInteger(value if is_elemental else value - self.enemy.defence)