fix(logic/service/fight/input): 调整效果叠加逻辑以正确处理不可叠加状态
当 MaxStack 为 0 时,现在会正确地取消之前的效果, 而不是尝试进行叠加。同时优化了条件判断的结构, 确保逻辑更清晰且符合预期行为。
This commit is contained in:
@@ -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
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user