fix(logic/service/fight/input): 调整效果叠加逻辑以正确处理不可叠加状态

当 MaxStack 为 0 时,现在会正确地取消之前的效果,
而不是尝试进行叠加。同时优化了条件判断的结构,
确保逻辑更清晰且符合预期行为。
This commit is contained in:
2025-11-09 00:19:20 +08:00
parent ffaa5520bf
commit fd6202b560

View File

@@ -128,20 +128,24 @@ func (c *Input) AddEffect(e Effect) {
if e.ID() != 0 && v.ID() == e.ID() &&
v.Alive() &&
equalInts(v.GetArgs(), e.GetArgs()) &&
v.MaxStack() != 0 { //如果层数可以叠加或者是无限层数
equalInts(v.GetArgs(), e.GetArgs()) { //如果层数可以叠加或者是无限层数
if v.MaxStack() == 0 {
v.Alive(false) //不允许叠层,取消效果
///e.Alive(false) //取消之前效果
if v.Stack() <= v.MaxStack() { //如果小于最大叠层,状态可以叠层
} else {
///e.Alive(false) //取消之前效果
if v.Stack() <= v.MaxStack() { //如果小于最大叠层,状态可以叠层
e.Stack(v.Stack() + e.Stack()) //获取到当前叠层数然后叠加
//这里直接返回,不再继续执行后续效果,因为这里是可以叠加的效果
//v.Duration(e.Duration()) //回合数覆盖
e.Stack(v.Stack() + e.Stack()) //获取到当前叠层数然后叠加
//这里直接返回,不再继续执行后续效果,因为这里是可以叠加的效果
//v.Duration(e.Duration()) //回合数覆盖
}
return
// c.Effects = append(c.Effects, e)
//return
}
return
// c.Effects = append(c.Effects, e)
//return
}
}