This commit is contained in:
bridge
2025-09-25 21:45:43 +08:00
parent 3155384313
commit ced6a117e1
5 changed files with 22 additions and 33 deletions

View File

@@ -222,10 +222,10 @@ class CultivationProgress:
breakthrough_success_rate_by_realm = {
Realm.Qi_Refinement: 0.8,
Realm.Foundation_Establishment: 0.6,
Realm.Core_Formation: 0.4,
Realm.Nascent_Soul: 0.2,
Realm.Qi_Refinement: 0.8, # 练气80%
Realm.Foundation_Establishment: 0.6, # 筑基60%
Realm.Core_Formation: 0.4, # 金丹40%
Realm.Nascent_Soul: 0.2, # 元婴20%
}
breakthrough_fail_reduce_lifespan_by_realm = {

View File

@@ -59,17 +59,15 @@ def _build_root_members_from_csv() -> Dict[str, tuple]:
element_names = [s.strip() for s in elements_field.split(sep) if str(s).strip()]
element_members: List[RootElement] = []
for en in element_names:
try:
# RootElement 的值即为中文名,因此可直接用中文构造
element_members.append(RootElement(en))
except Exception as e:
raise ValueError(f"root.csv 中未知的元素名称: {en}") from e
element_members.append(RootElement(en))
members[key] = (cn_name, tuple(element_members))
return members
# 动态创建 Root 枚举(使用 mixin 作为 type使 __new__ 生效)
Root = Enum("Root", _build_root_members_from_csv(), type=_RootMixin)
# 某些环境下函数式创建的 Enum 可能未正确采用 mixin 的 __str__这里显式绑定确保生效
Root.__str__ = _RootMixin.__str__
# 元素到灵气类型的一一对应
@@ -94,21 +92,12 @@ def _load_extra_breakthrough_success_rate_from_csv() -> Dict["Root", float]:
从 root.csv 载入各灵根的额外突破成功率默认0。
列名extra_breakthrough_success_rate
"""
df = game_configs.get("root")
if df is None:
return {}
df = game_configs["root"]
bonuses: Dict["Root", float] = {}
for _, row in df.iterrows():
key = str(row["key"]).strip()
try:
root_member = getattr(Root, key)
except AttributeError:
# CSV 中的 key 未在 Root 中注册(理论不可能),跳过
continue
try:
bonus = float(row.get("extra_breakthrough_success_rate", 0) or 0)
except Exception:
bonus = 0.0
root_member = getattr(Root, key)
bonus = float(row.get("extra_breakthrough_success_rate", 0) or 0)
bonuses[root_member] = bonus
return bonuses

View File

@@ -144,7 +144,7 @@ def draw_tooltip_for_avatar(pygame_mod, screen, colors, font, avatar: Avatar):
f"境界: {str(avatar.cultivation_progress)}",
f"HP: {avatar.hp}",
f"MP: {avatar.mp}",
f"灵根: {avatar.root.value}",
f"灵根: {str(avatar.root)}",
f"个性: {', '.join([persona.name for persona in avatar.personas])}",
f"位置: ({avatar.pos_x}, {avatar.pos_y})",
]

View File

@@ -89,16 +89,16 @@ def make_avatars(world: World, count: int = 12, current_month_stamp: MonthStamp
avatars[avatar.id] = avatar
# —— 为演示添加少量示例关系 ——
avatar_list = list(avatars.values())
# if len(avatar_list) >= 2:
# avatar_list[0].set_relation(avatar_list[1], Relation.ENEMY)
# if len(avatar_list) >= 4:
# avatar_list[2].set_relation(avatar_list[3], Relation.FRIEND)
# if len(avatar_list) >= 6:
# # 师徒(随意指派方向,关系对称)
# avatar_list[4].set_relation(avatar_list[5], Relation.MASTER_APPRENTICE)
# if len(avatar_list) >= 8:
# # 情侣
# avatar_list[6].set_relation(avatar_list[7], Relation.LOVERS)
if len(avatar_list) >= 2:
avatar_list[0].set_relation(avatar_list[1], Relation.ENEMY)
if len(avatar_list) >= 4:
avatar_list[2].set_relation(avatar_list[3], Relation.FRIEND)
if len(avatar_list) >= 6:
# 师徒(随意指派方向,关系对称)
avatar_list[4].set_relation(avatar_list[5], Relation.MASTER_APPRENTICE)
if len(avatar_list) >= 8:
# 情侣
avatar_list[6].set_relation(avatar_list[7], Relation.LOVERS)
return avatars

View File

@@ -12,7 +12,7 @@ ai:
max_decide_num: 3
game:
init_npc_num: 3
init_npc_num: 6
npc_birth_rate_per_month: 0.001
df: