Files
cultivation-world-simulator/src/classes/spirit_animal.py
2026-01-04 22:03:05 +08:00

52 lines
1.4 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 __future__ import annotations
from dataclasses import dataclass
from src.classes.cultivation import Realm
@dataclass
class SpiritAnimal:
"""
灵兽:附着于 Avatar 的唯一“守护灵兽”。
仅记录名称与境界,并据境界提供固定战斗力点数加成。
规则:
- 练气/筑基/金丹/元婴 对应战斗力点数 +2/+4/+6/+8
- Avatar 最多只能拥有一个 spirit_animal新的会覆盖旧的。
"""
name: str
realm: Realm
def get_extra_strength_points(self) -> int:
mapping = {
Realm.Qi_Refinement: 2,
Realm.Foundation_Establishment: 4,
Realm.Core_Formation: 6,
Realm.Nascent_Soul: 8,
}
return mapping.get(self.realm, 0)
def get_info(self) -> str:
return f"{self.name}{self.realm.value}"
@property
def effects(self) -> dict[str, object]:
"""
灵兽提供的效果集合。当前仅包含战斗力点数,后续可扩展其他键。
"""
pts = self.get_extra_strength_points()
return {"extra_battle_strength_points": pts} if pts else {}
def get_structured_info(self) -> dict:
from src.classes.effect import format_effects_to_text
return {
"name": self.name,
"desc": f"境界:{self.realm.value}",
"grade": self.realm.value,
"effect_desc": format_effects_to_text(self.effects),
}