``` refactor(fight): 重构状态效果初始化逻辑,统一使用InitEffect方法并内置随机持续回合

This commit is contained in:
1
2025-12-11 19:12:54 +00:00
parent 8eb0a1324b
commit 5ca43fe21f
16 changed files with 42 additions and 72 deletions

View File

@@ -64,16 +64,11 @@ func (e *EffectPhysicalAttackAddStatus) Skill_Use_ex() bool {
return true
}
// 4. 计算持续回合默认2~3回合支持通过参数指定
duration := e.getDuration()
// 5. 获取状态效果实例并设置参数
statusEffect := input.Geteffect(input.EffectType.Status, int(e.targetStatus))
statusEffect := e.Ctx().Our.InitEffect(input.EffectType.Status, int(e.targetStatus))
if statusEffect == nil {
return true
}
statusEffect.Duration(duration)
statusEffect.SetArgs(e.Ctx().Our) // 目标为对手
// 6. 给对手添加状态
e.Ctx().Opp.AddEffect(e.Ctx().Our, statusEffect)
@@ -85,10 +80,3 @@ func (e *EffectPhysicalAttackAddStatus) SetArgs(t *input.Input, a ...int) {
e.EffectNode.SetArgs(t, a...)
e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0])
}
// 计算持续回合(封装为独立方法,增强可读性)
func (e *EffectPhysicalAttackAddStatus) getDuration() int {
// 默认随机2~3回合Int31n(2)返回0/1+2后为2/3
return int(e.Input.FightC.GetRand().Int31n(2)) + 2
}