436 lines
11 KiB
Python
436 lines
11 KiB
Python
"""
|
||
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']}
|
||
|
||
条件effect(when字段):
|
||
[{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] - 合法动作列表
|
||
]
|