Files
cultivation-world-simulator/src/classes/effects.py
2025-11-29 14:16:45 +08:00

436 lines
11 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.
"""
Effects 效果系统
================
本文件定义了游戏中所有合法的 effect 字段。
Effects 通过角色的 avatar.effects 属性合并并生效。
Effect 来源:
- 宗门 (sect)
- 功法 (technique)
- 灵根 (root)
- 特质 (persona)
- 兵器和辅助装备 (weapon, auxiliary)
"""
# =============================================================================
# Effect 常量定义
# =============================================================================
# --- 战斗相关 ---
EXTRA_BATTLE_STRENGTH_POINTS = "extra_battle_strength_points"
"""
额外战斗力点数
类型: int
结算: src/classes/battle.py
说明: 直接增加角色的战斗力数值。
数值参考:
- 微量: 1~2 (相当于提升1-2个小境界)
- 中量: 3~5 (相当于提升半个大境界)
- 大量: 8+ (相当于提升一个大境界)
"""
EXTRA_MAX_HP = "extra_max_hp"
"""
额外最大生命值
类型: int
结算: src/classes/avatar.py (__post_init__)
说明: 增加角色的最大生命值上限。
数值参考:
- 微量: 10~30
- 中量: 50~100 (练气期基础HP约100)
- 大量: 200+
"""
EXTRA_MAX_MP = "extra_max_mp"
"""
额外最大灵力值
类型: int
结算: src/classes/avatar.py (__post_init__)
说明: 增加角色的最大灵力值上限。
数值参考:
- 微量: 10~30
- 中量: 50~100 (练气期基础MP约100)
- 大量: 200+
"""
EXTRA_OBSERVATION_RADIUS = "extra_observation_radius"
"""
额外观察半径
类型: int
结算: [待实现]
说明: 增加角色的观察范围(格子数)。
数值参考:
- 微量: 1
- 中量: 2~3
- 大量: 5+
"""
# --- 修炼相关 ---
EXTRA_CULTIVATE_EXP = "extra_cultivate_exp"
"""
额外修炼经验
类型: int
结算: src/classes/action/cultivate.py
说明: 每次修炼结算时,额外增加的固定经验值。
数值参考:
- 微量: 5~10
- 中量: 20~50 (基础修炼约每次100点经验)
- 大量: 100+
"""
CULTIVATE_DURATION_REDUCTION = "cultivate_duration_reduction"
"""
修炼时长缩减
类型: float
结算: src/classes/action/cultivate.py
说明: 修炼动作的时长缩减比例。
数值参考:
- 微量: 0.05~0.1 (缩减5%-10%)
- 中量: 0.15~0.25
- 极限: 0.5 (不建议超过0.5)
"""
EXTRA_BREAKTHROUGH_SUCCESS_RATE = "extra_breakthrough_success_rate"
"""
额外突破成功率
类型: float
结算: src/classes/action/breakthrough.py
说明: 修改突破瓶颈时的成功率。
数值参考:
- 微量: 0.05 (5%)
- 中量: 0.1~0.15
- 大量: 0.3+
"""
# --- 双修相关 ---
EXTRA_DUAL_CULTIVATION_EXP = "extra_dual_cultivation_exp"
"""
额外双修经验
类型: int
结算: src/classes/mutual_action/dual_cultivation.py
说明: 双修时发起者额外获得的固定经验值。
数值参考:
- 微量: 10~30
- 中量: 50~100 (双修基础收益约300~500)
- 大量: 150+
"""
# --- 采集相关 ---
EXTRA_HARVEST_ITEMS = "extra_harvest_items"
"""
额外采集物品数量
类型: int
结算: src/classes/action/harvest.py
说明: 采集植物时额外获得的物品数量。
数值参考:
- 微量: 1
- 中量: 2~3
- 大量: 5+
"""
EXTRA_HUNT_ITEMS = "extra_hunt_items"
"""
额外狩猎物品数量
类型: int
结算: src/classes/action/hunt.py
说明: 狩猎动物时额外获得的物品数量。
数值参考:
- 微量: 1
- 中量: 2~3
- 大量: 5+
"""
# --- 移动相关 ---
EXTRA_MOVE_STEP = "extra_move_step"
"""
额外移动步数
类型: int
结算: [待实现]
说明: 每次移动时可以多移动的格子数。
数值参考:
- 微量: 1
- 中量: 2
- 大量: 3+
"""
# --- 捕捉相关 ---
EXTRA_CATCH_SUCCESS_RATE = "extra_catch_success_rate"
"""
额外捕捉成功率
类型: float
结算: src/classes/action/catch.py
说明: 捕捉灵兽时增加的成功率。
数值参考:
- 微量: 0.05~0.1 (5%-10%)
- 中量: 0.2~0.3
- 大量: 0.5+
"""
# --- 逃跑相关 ---
EXTRA_ESCAPE_SUCCESS_RATE = "extra_escape_success_rate"
"""
额外逃跑成功率
类型: float
结算: src/classes/battle.py
说明: 从战斗中逃离的成功率加成。
数值参考:
- 微量: 0.1
- 中量: 0.2~0.3
- 大量: 0.5 (配合基础概率几乎必逃)
"""
# --- 暗杀相关 ---
EXTRA_ASSASSINATE_SUCCESS_RATE = "extra_assassinate_success_rate"
"""
额外暗杀成功率
类型: float
结算: src/classes/battle.py (get_assassination_success_rate)
说明: 暗杀判定成功率的加成。
数值参考:
- 微量: 0.05~0.1
- 中量: 0.2~0.3
- 大量: 0.5+
"""
# --- 奇遇相关 ---
EXTRA_FORTUNE_PROBABILITY = "extra_fortune_probability"
"""
额外奇遇概率
类型: float
结算: src/classes/fortune.py
说明: 每月触发奇遇的额外概率(绝对值)。
数值参考:
- 基础概率通常极低 (<0.01)
- 微量: 0.005 (0.5%,显著增加)
- 中量: 0.01~0.02 (1%-2%,非常高)
- 极高: 0.05+ (5%,奇遇频发)
"""
# --- 兵器相关 ---
EXTRA_WEAPON_PROFICIENCY_GAIN = "extra_weapon_proficiency_gain"
"""
额外兵器熟练度增长速度
类型: float
结算: src/classes/action/nurture_weapon.py
说明: 熟练度增长倍率(乘法加成)。
数值参考:
- 微量: 0.1~0.2 (+10%-20%)
- 中量: 0.5 (+50%)
- 大量: 1.0 (+100%,翻倍)
"""
EXTRA_WEAPON_UPGRADE_CHANCE = "extra_weapon_upgrade_chance"
"""
额外兵器升华概率
类型: float
结算: src/classes/action/nurture_weapon.py
说明: 温养兵器时升华为宝物的概率加成。
数值参考:
- 基础概率: 0.05 (5%)
- 微量: 0.05 (+5%)
- 中量: 0.1~0.15
- 大量: 0.3+
"""
# --- 生存与恢复相关 ---
EXTRA_MAX_LIFESPAN = "extra_max_lifespan"
"""
额外最大寿元
类型: int (年)
结算: src/classes/age.py
说明: 增加角色的最大寿命上限。
数值参考:
- 微量: 5~10
- 中量: 20~50
- 大量: 100+
"""
EXTRA_HP_RECOVERY_RATE = "extra_hp_recovery_rate"
"""
额外HP恢复速率
类型: float
结算: src/classes/action/self_heal.py
说明: 疗伤时的HP恢复效率倍率。
数值参考:
- 微量: 0.1~0.2
- 中量: 0.5 (+50%)
- 大量: 1.0 (翻倍)
"""
DAMAGE_REDUCTION = "damage_reduction"
"""
伤害减免
类型: float
结算: src/classes/battle.py
说明: 受到伤害的减免比例(乘法减少)。
数值参考:
- 微量: 0.05~0.1 (5%-10%)
- 中量: 0.15~0.25
- 坦克: 0.3+ (不建议超过0.5)
"""
REALM_SUPPRESSION_BONUS = "realm_suppression_bonus"
"""
境界压制加成
类型: float
结算: src/classes/battle.py
说明: 当境界高于对手时,每级境界差提供的战斗力百分比加成。
数值参考:
- 基础值: 0.0 (无额外加成,仅靠基础属性)
- 微量: 0.1 (每级差多10%战斗力)
- 中量: 0.2~0.3
"""
# --- 经济相关 ---
EXTRA_ITEM_SELL_PRICE_MULTIPLIER = "extra_item_sell_price_multiplier"
"""
额外物品出售价格倍率
类型: float
结算: src/classes/action/sold.py
说明: 出售物品时的价格加成倍率。
数值参考:
- 微量: 0.1 (+10%)
- 中量: 0.2~0.3
- 奸商: 0.5+
"""
EXTRA_PLUNDER_MULTIPLIER = "extra_plunder_multiplier"
"""
额外搜刮收益倍率
类型: float
结算: src/classes/action/plunder_mortals.py
说明: 搜刮凡人时的收益倍率。
数值参考:
- 微量: 0.5 (+50%)
- 中量: 1.0~2.0 (翻倍到三倍)
- 暴徒: 3.0+
"""
# --- 社交相关 ---
#EXTRA_SOCIAL_SUCCESS_RATE = "extra_social_success_rate"
"""
额外社交成功率
类型: float
结算: src/classes/mutual_action/talk.py (待实现)
说明: 社交互动(请求双修、索要物品等)的成功率加成。
数值参考:
- 微量: 0.1
- 中量: 0.2~0.3
- 魅惑: 0.5+
"""
# --- 特殊权限 ---
LEGAL_ACTIONS = "legal_actions"
"""
合法动作列表
类型: list[str]
结算: 各个 action 的权限检查
说明: 允许角色执行的特殊动作列表。
可用值:
- "DevourMortals": 吞噬凡人(邪道法宝万魂幡)
"""
# =============================================================================
# CSV 配置格式规范
# =============================================================================
"""
CSV 中 effects 列的写法支持宽松JSON格式:
基础格式推荐无引号key:
{extra_battle_strength_points: 3}
{extra_battle_strength_points: 2, extra_max_hp: 50}
{legal_actions: ['DevourMortals']}
条件effectwhen字段:
[{when: 'avatar.weapon.type == WeaponType.SWORD', extra_battle_strength_points: 3}]
可访问: avatar, WeaponType, EquipmentGrade, Alignment
动态值字符串表达式会被eval:
{extra_battle_strength_points: 'avatar.weapon.special_data.get("souls", 0) * 0.1'}
注意: CSV中包含逗号的effects值需要用双引号包裹避免被误认为列分隔符
"""
# =============================================================================
# Effect 合并规则
# =============================================================================
"""
Effects 通过 src/classes/effect.py 中的 _merge_effects() 函数合并。
合并规则:
1. 列表类型 (如 legal_actions): 取并集(去重)
2. 数值类型 (如 extra_*): 累加
3. 其他类型: 后者覆盖前者
4. 动态表达式 (字符串形式): 在 Avatar.effects property 中 eval 计算
合并顺序(从低到高优先级):
1. 宗门 (sect)
2. 功法 (technique)
3. 灵根 (root)
4. 特质 (persona) - 遍历所有 personas
5. 兵器和辅助装备 (weapon, auxiliary)
最终结果通过 Avatar.effects 属性获取(实时计算)。
"""
# =============================================================================
# 所有合法 Effect 字段清单
# =============================================================================
ALL_EFFECTS = [
# 战斗相关
"extra_battle_strength_points", # int - 额外战斗力
"extra_max_hp", # int - 额外最大生命值
"extra_max_mp", # int - 额外最大灵力值
"extra_observation_radius", # int - 额外观察半径
"damage_reduction", # float - 伤害减免
"realm_suppression_bonus", # float - 境界压制加成
# 修炼相关
"extra_cultivate_exp", # int - 额外修炼经验
"cultivate_duration_reduction", # float - 修炼时长缩减
"extra_breakthrough_success_rate", # float - 额外突破成功率
# 双修相关
"extra_dual_cultivation_exp", # int - 额外双修经验
# 采集相关
"extra_harvest_items", # int - 额外采集物品数量
"extra_hunt_items", # int - 额外狩猎物品数量
# 移动相关
"extra_move_step", # int - 额外移动步数
# 捕捉相关
"extra_catch_success_rate", # float - 额外捕捉成功率
# 逃跑相关
"extra_escape_success_rate", # float - 额外逃跑成功率
# 暗杀相关
"extra_assassinate_success_rate", # float - 额外暗杀成功率
# 奇遇相关
"extra_fortune_probability", # float - 额外奇遇概率
# 兵器相关
"extra_weapon_proficiency_gain", # float - 额外兵器熟练度增长倍率
"extra_weapon_upgrade_chance", # float - 额外兵器升华概率
# 生存与恢复相关
"extra_max_lifespan", # int - 额外最大寿元(年)
"extra_hp_recovery_rate", # float - 额外HP恢复速率倍率
# 经济相关
"extra_item_sell_price_multiplier", # float - 额外物品出售价格倍率
"extra_plunder_multiplier", # float - 额外搜刮收益倍率
# 社交相关
# 特殊权限
"legal_actions", # list[str] - 合法动作列表
]