🗺️ 洛克王国 · 战斗规则手册

基于代码 battle.py 实际实现提取 · 点击标签页查看各类规则 · 发现错误请直接纠正
完整回合执行顺序(execute_full_turn)
1
回合开始:触发开局特性(battle_start_effects,只触发一次)
2
湿润印记处理:_apply_moisture_mark → 全队技能能耗 -N(印记层数)
3
回合开始特性逻辑(冷却递减、传动等预处理)
4
应对检测:判断 A/B 是否对对方技能有应对效果,决定先后手(见「应对系统」)
5
先手行动_execute_with_counter → 含伤害/状态/应对结算
6
检查倒地 → 扣 MP(_check_fainted_and_deduct_mp)→ 触发 ON_FAINT 特性
7
死亡换人 / 被动换人(auto_switch)→ 若玩家需选人,弹出选人面板(异步等待)
8
检查胜负 → 如已分出胜负则结束回合
9
后手行动:同步骤5
10
检查倒地 → 扣 MP → 换人 → 检查胜负
11
回合结束效果turn_end_effects
12
检查倒地 → 扣 MP → 换人 → 回合数 +1
回合结束效果顺序(turn_end_effects)
1
触发 ON_TURN_END 特性(双方)
2
触发 PASSIVE 特性(煤渣草灼烧不衰减检测)
3
中毒HP × 3% × 层数(不衰减)
4
灼烧HP × 2% × 层数,之后层数 ÷2(最少减1层);煤渣草在场则层数不减反加
5
冻伤:每回合累加 HP÷12 不可恢复伤害(侵蚀最大HP上限)
6
寄生HP × 8% × 层数,该值转给敌方恢复
7
星陨:倒计时 -1;到0引爆:(敌方魔攻/己方魔防) × 30 × 层数 × 0.9
8
天气效果(沙暴 1/16 HP·雪天冻结2层)→ 天气回合 -1
9
技能冷却 -1,临时能耗修改 -1 回合
10
印记回合结束效果(湿润/中毒印记/龙噬/荆刺等)
先后手判定逻辑(get_priority + _compare_action_order)
行动类型优先级值说明
换人 最高+99换人永远优先于技能和聚能
带先手加成技能skill.priority_mod + pokemon.priority_stage高优先级技能(如迅捷)
普通技能0速度高者先手
聚能0与普通技能同优先级,看速度
速度决胜规则
比较 优先级(priority_mod):高者先手
优先级相同 → 比较 当前速度(effective_speed):高者先手
速度相同 → 随机决定(50/50)
应对对先后手的影响
ℹ️
应对无视速度:A 应对 B 的技能 → B 先释放(被应对方先动),A 的应对效果在 B 释放过程中同步结算。不是"A 先动",而是"B 先动但 A 的防御效果已就位"。
场景执行顺序
A 应对 B,B 不应对 AB 先动(释放技能),A 的应对效果即时结算,A 后动
B 应对 A,A 不应对 BA 先动,B 的应对效果即时结算,B 后动
双方互相应对 / 无人应对正常先后手(优先级 → 速度 → 随机)
基础伤害公式(DamageCalculator)
📐
物理伤害 = (攻击方 effective_atk / 防守方 effective_def) × 技能威力 × 连击数 × 属性克制 × 0.9随机
魔法伤害 = (攻击方 effective_spatk / 防守方 effective_spdef) × ...
属性修正计算
修正值公式
有效物攻base_atk × (1 + atk_up) / max(0.1, 1 + atk_down)
有效物防base_def × (1 + def_up) / max(0.1, 1 + def_down)
有效速度base_spd × (1 + speed_up) / max(0.1, 1 + speed_down)
属性克制倍率
情况伤害倍率前端显示
克制(super effective)×2.0+克制!
普通×1.0无标注
抵抗(not very effective)≤×0.5抵抗
吸血(LIFE_DRAIN)
🩸
吸血在造成伤害的同一回合触发(非回合结束)。
回血量 = 实际造成伤害 × life_drain_pct(蝙蝠技能 = 100%)
动画:攻击命中后播放绿色 +N 浮动数字
减伤(DAMAGE_REDUCTION)
⚠️
减伤是防御方技能的被动效果,在被攻击时生效(ON_COUNTER 之前判定)。
减伤量直接乘在伤害上,如火焰护盾 = 70% 减伤 → 实际受 30% 伤害
回合结束状态伤害(每回合末结算)
状态每回合伤害/效果衰减规则换人是否清除
中毒 poison HP × 3% × 层数 不衰减 不清除
灼烧 burn HP × 2% × 层数 每回合层数 ÷2,最少 -1 层;煤渣草对手在场则层数增长 不清除
冻伤 freeze 每回合累加 HP÷12 的不可恢复伤害(从最大HP上限侵蚀) 不衰减,直到倒下 不清除
寄生 leech HP × 8% × 层数 不衰减 不清除
星陨 meteor 倒计时归零时引爆:(敌方魔攻÷己方魔防) × 30层 × 0.9 倒计时每回合 -1 -
萌化系统(cute_stacks)
规则说明
萌化层数上限默认 3 层;无忧无虑特性 = 无限(999)
换人不清除 萌化层数
触发条件使用含 CUTE_* 效果的技能时获得层数,不同技能有不同条件
状态何时被清除?
中毒/灼烧/寄生/冻伤换人不清除,只能通过主动清除技能(DISPEL_DEBUFFS)或特殊效果消除。
属性修正(atk_up/def_up 等)换人时清零
能量基础规则
初始能量
10
入场时满能量
聚能回复
+5
使用聚能(action=-1)时回复
能量上限
10
超出无效(gain_energy 有上限)
能量不足时的行为
技能需要能量 > 当前能量 → 尝试扣 HP 补差
HP 够 → 用 HP 补差(缺少能量 × HP×5%),执行技能
HP 不够 → 退回聚能逻辑:回复 +5 能量,不执行技能
换人与能量
🔄
换人不清除能量(能量随精灵本体保留)。
公平鸽「衡量」入场时:energy = min(10, max(自身, 敌方)) → 复制敌方能量
换人类型
类型触发优先级玩家能否自选
主动换人 玩家点击换人按钮 +99(高于所有技能) ✅ 可选任意存活精灵(除当前在场)
死亡换人 精灵 HP≤0 倒下 回合内即时处理(先/后手行动后各检查一次) ✅ 玩家弹出选人面板(排除倒下那只);AI随机选
被迫脱离 吓退应对成功 / 泡沫幻影等 FORCE_SWITCH 技能执行完后立即处理 ✅ 玩家弹出选人面板(候选 = 存活且非当前);AI随机
换人时保留与清除的内容
内容换人是否保留
HP保留
能量保留
中毒/灼烧/寄生/冻伤层数保留
萌化层数保留
属性修正(atk_up/def_up 等)清除
威力乘数(power_multiplier)清除
临时能耗修改清除
蓄力状态清除
换人后的入场处理
1
触发印记入场效果(降灵/荆刺/蓄电)
2
触发迅捷入场技能(AGILITY 标记的技能自动释放)
3
触发 ON_ENTER 特性(守护者/公平鸽衡量/系统发育等)
应对触发条件
应对类型触发条件代码标识
应对攻击对方使用物理/魔法技能ON_COUNTER, category="attack"
应对防御对方使用防御技能ON_COUNTER, category="defense"
应对变化对方使用变化/状态技能ON_COUNTER, category="status"
应对成功的额外效果(部分技能)
效果说明
INTERRUPT 打断对方技能被打断,不生效(地刺等)
FORCE_SWITCH 脱离应对成功后己方主动脱离(泡沫幻影等)
FORCE_ENEMY_SWITCH 逼退应对成功后对方被迫脱离(吓退等)
DAMAGE 反弹以对方技能威力造成伤害
BURN/POISON 状态附加状态给对方(火焰护盾 = 应对攻击后对方灼烧4层)
脱离效果只在应对成功时触发(有效果的防御技能判定通过),应对失败(如敌方使用变化技能但己方只应对攻击)不触发脱离。
聚能能否被打断?
⚠️
聚能可以被打断:若对方技能应对中有 INTERRUPT tag,在聚能执行前检查 → 打断则聚能不回能量。
胜负判定 & MP 系统
初始 MP
4
双方各 4 点斗志
扣 MP 条件
-1
己方精灵倒下 → MP -1
MP ≤ 0 立即判负(check_winner)。
先手精灵倒下后,若 MP ≤ 0 则直接结束,后手不再行动
MP 检查时机(每次都检查)
先手行动结束后
后手行动结束后
回合结束效果(中毒/灼烧等状态伤害)后