fix(fight): 修复战斗中属性变化与暴击判定逻辑
- 调整能力提升计算时机,确保命中后再恢复原始属性 - 暴击判断前置,仅在命中时计算暴击翻倍及破防逻辑 - 优化回合结束效果清除逻辑,增加状态存活判断 refactor(controller): 重构擂台相关接口返回结构体类型 - 将 ARENA_SET_OWENR、ARENA_FIGHT_OWENR 等函数的返回值统一改为 NullOutboundInfo,并移除冗余字段返回 - 广播逻辑调整,统一使用 Broadcast
This commit is contained in:
@@ -29,16 +29,17 @@ func InitEffect(etype EnumEffectType, id int, t Effect) {
|
||||
|
||||
NodeM[id+int(etype)] = t
|
||||
}
|
||||
func Geteffect(etype EnumEffectType, id int) Effect {
|
||||
func Geteffect[T int | byte](etype EnumEffectType, id T) Effect {
|
||||
|
||||
//todo 获取前GetEffect
|
||||
ret, ok := NodeM[id+int(etype)]
|
||||
ret, ok := NodeM[int(id)+int(etype)]
|
||||
if ok {
|
||||
//todo 获取前GetEffect
|
||||
|
||||
eff := deep.MustCopy(ret)
|
||||
if eff.ID() >= int(EffectType.Status) && eff.ID() < int(EffectType.Sub) {
|
||||
eff.CanStack(true) //状态类不能被覆盖,只能无限叠加
|
||||
|
||||
}
|
||||
|
||||
return eff
|
||||
@@ -150,6 +151,7 @@ func (our *Input) AddEffect(in *Input, e Effect) Effect {
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
e.Alive(true) //添加后默认激活
|
||||
//todo 免疫
|
||||
//TODO 先激活
|
||||
@@ -212,9 +214,9 @@ func (our *Input) Exec(fn func(Effect) bool) bool {
|
||||
}
|
||||
|
||||
// 消除回合类效果 efftype 输入是消对方的还是自己的,false是自己,true是对方
|
||||
func (our *Input) CancelTurn() {
|
||||
func (our *Input) CancelTurn(in *Input) {
|
||||
for _, value := range our.Effects {
|
||||
if value.Duration() > 0 { //false是自身,true是对方,反转后为真就是自己的
|
||||
if value.Duration() > 0 && value.Alive() { //false是自身,true是对方,反转后为真就是自己的
|
||||
//slice = append(slice[:i], slice[i+1:]...)
|
||||
value.Alive(false)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user