diff --git a/logic/service/fight/effect/effect_62.go b/logic/service/fight/effect/effect_62.go index 48d250a6..fe21bfc5 100644 --- a/logic/service/fight/effect/effect_62.go +++ b/logic/service/fight/effect/effect_62.go @@ -47,7 +47,7 @@ func (e *Effect62) AfterHit(*input.Input, *info.SkillEntity) { func (e *Effect62) SetArgs(t *input.Input, a ...int) { e.EffectNode.SetArgs(t, a...) - e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) //激活前无限挂载 + e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) } diff --git a/logic/service/fight/input/effecti.go b/logic/service/fight/input/effecti.go index b7a80c0c..3a622a39 100644 --- a/logic/service/fight/input/effecti.go +++ b/logic/service/fight/input/effecti.go @@ -48,10 +48,10 @@ type Effect interface { // OnHeal() bool // 治疗生效时触发 // // 精灵切换相关触发 - // OnSwitchIn() bool // 精灵出战 / 上场时触发 - // OnSwitchOut() bool // 精灵下场时触发 - // OnOwnerSwitchIn() bool // 所属玩家精灵出战时触发 - // OnOwnerSwitchOut() bool // 所属玩家精灵下场时触发 + OnSwitchIn() bool // 精灵出战 / 上场时触发 + OnSwitchOut() bool // 精灵下场时触发 + OnOwnerSwitchIn() bool // 所属玩家精灵出战时触发 + OnOwnerSwitchOut() bool // 所属玩家精灵下场时触发 // PreBattleEnd() bool //战斗结束前 // OnBattleEnd() bool //战斗结束 diff --git a/logic/service/fight/playeraction.go b/logic/service/fight/playeraction.go index 16b508d8..1ea3bd88 100644 --- a/logic/service/fight/playeraction.go +++ b/logic/service/fight/playeraction.go @@ -4,6 +4,7 @@ import ( "blazing/common/data/xmlres" "blazing/logic/service/common" "blazing/logic/service/fight/info" + "blazing/logic/service/fight/input" "blazing/logic/service/player" "math" @@ -36,14 +37,31 @@ func (f *FightC) ChangePet(c common.PlayerI, id uint32) { BaseAction: NewBaseAction(c.GetInfo().UserID), } f.Switch = append(f.Switch, ret) - if c.GetInfo().UserID == f.ownerID { + f.GetInputByPlayer(c, false).Exec(func(t input.Effect) bool { - f.GetInputByPlayer(c, false).CurrentPet, ret.Reason = f.GetInputByPlayer(c, false).GetPet(id) - } else { + t.OnOwnerSwitchOut() - f.GetInputByPlayer(c, true).CurrentPet, ret.Reason = f.GetInputByPlayer(c, true).GetPet(id) - } + return true + }) + f.GetInputByPlayer(c, true).Exec(func(t input.Effect) bool { + t.OnSwitchOut() + + return true + }) + f.GetInputByPlayer(c, false).CurrentPet, ret.Reason = f.GetInputByPlayer(c, false).GetPet(id) + f.GetInputByPlayer(c, false).Exec(func(t input.Effect) bool { + + t.OnOwnerSwitchIn() + + return true + }) + f.GetInputByPlayer(c, true).Exec(func(t input.Effect) bool { + + t.OnSwitchIn() + + return true + }) f.actionChan <- ret }