Files
bl/logic/service/fight/effect/536.go
昔念 fb32bb3c39 ```
feat(fight): 添加新效果类型574并优化现有战斗逻辑

- 重命名NewSel409结构体的Action_end_ex方法为Skill_Use_ex
- 将effect/523中HP检查改为Alive()方法调用
- 修复selfkill效果中的代码格式问题
- 新增效果类型574:消耗自身全部体力使下次技能必定先手、命中且暴击
- 实现Effect574的ComparePre和ActionStart方法处理先手、命中和暴击逻辑
```
2026-03-17 19:30:40 +08:00

40 lines
889 B
Go
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.

package effect
import (
"blazing/logic/service/fight/action"
"blazing/logic/service/fight/input"
"blazing/logic/service/fight/node"
)
// {
// "id": 536,
// "argsNum": 1,
// "info": "若当次攻击击败对手恢复对手体力上限1/{0}的体力"
// },
type Effect536 struct {
node.EffectNode
}
func (e *Effect536) OnSkill() bool {
divisor := e.Args()[0] // 除数
// 检查对手是否被击败体力值为0或以下
if e.Ctx().Opp.CurrentPet.Info.Hp <= 0 {
// 获取对手原来的体力上限
opponentMaxHP := e.Ctx().Opp.CurrentPet.GetMaxHP()
// 计算要恢复的体力值
healAmount := opponentMaxHP.Div(divisor)
// 为自身恢复体力
e.Ctx().Opp.Heal(e.Ctx().Our, &action.SelectSkillAction{}, healAmount)
}
return true
}
func init() {
input.InitEffect(input.EffectType.Skill, 536, &Effect536{})
}