Files
cultivation-world-simulator/src/classes/hp.py
2025-12-22 00:30:09 +08:00

85 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from dataclasses import dataclass
from src.classes.cultivation import Realm
@dataclass
class HP:
"""
血量。
会因为战斗天灾或者其他原因降低cur。
会随时间或者服用丹药等补充cur。
会因为突破境界服用丹药等增加max。
"""
max: int
cur: int
def reduce(self, value_2_reduce:int) -> bool:
self.cur -= value_2_reduce
is_alive = True
if self.cur < 0:
is_alive = False
return is_alive
def recover(self, value_2_recover:int) -> bool:
self.cur += value_2_recover
if self.cur > self.max:
self.cur = self.max
return True
def add_max(self, value_2_add:int) -> bool:
self.max += value_2_add
return True
def __str__(self) -> str:
return f"{self.cur}/{self.max}"
def __repr__(self) -> str:
return self.__str__()
# 比较运算符使用cur进行比较
def __eq__(self, other) -> bool:
if isinstance(other, HP):
return self.cur == other.cur
return self.cur == other
def __ne__(self, other) -> bool:
if isinstance(other, HP):
return self.cur != other.cur
return self.cur != other
def __lt__(self, other) -> bool:
if isinstance(other, HP):
return self.cur < other.cur
return self.cur < other
def __le__(self, other) -> bool:
if isinstance(other, HP):
return self.cur <= other.cur
return self.cur <= other
def __gt__(self, other) -> bool:
if isinstance(other, HP):
return self.cur > other.cur
return self.cur > other
def __ge__(self, other) -> bool:
if isinstance(other, HP):
return self.cur >= other.cur
return self.cur >= other
def to_dict(self) -> dict:
"""转换为可序列化的字典"""
return {"max": self.max, "cur": self.cur}
@classmethod
def from_dict(cls, data: dict) -> "HP":
"""从字典重建HP"""
return cls(max=data["max"], cur=data["cur"])
HP_MAX_BY_REALM = {
Realm.Qi_Refinement: 100,
Realm.Foundation_Establishment: 200,
Realm.Core_Formation: 300,
Realm.Nascent_Soul: 400,
}