feat(fight): 调整精灵切换逻辑与属性计算流程
移除 OnOwnerSwitchIn 和 OnOwnerSwitchOut 接口定义及调用逻辑, 简化精灵切换时的效果触发机制。 调整 PetInfo 属性计算方法中 Hp 与 MaxHp 的赋值顺序, 确保初始化时 Hp 值正确设置。
This commit is contained in:
@@ -32,10 +32,10 @@ type Effect interface {
|
||||
Skill_Use(ctx Ctx) bool //技能PP减少节点
|
||||
Skill_Useed(ctx Ctx) bool //技能PP减少节点
|
||||
//OnDefeat(opp *Input) bool // 精灵被击败时触发
|
||||
OnSwitchIn(ctx Ctx) bool // 精灵出战 / 上场时触发
|
||||
OnSwitchOut(ctx Ctx) bool // 精灵下场时触发
|
||||
OnOwnerSwitchIn(ctx Ctx) bool // 所属玩家精灵出战时触发
|
||||
OnOwnerSwitchOut(ctx Ctx) bool // 所属玩家精灵下场时触发
|
||||
OnSwitchIn(ctx Ctx) bool // 精灵出战 / 上场时触发
|
||||
OnSwitchOut(ctx Ctx) bool // 精灵下场时触发
|
||||
// OnOwnerSwitchIn(ctx Ctx) bool // 所属玩家精灵出战时触发
|
||||
// OnOwnerSwitchOut(ctx Ctx) bool // 所属玩家精灵下场时触发
|
||||
|
||||
Turn_End(ctx Ctx) //回合结束计算
|
||||
PreBattleEnd(ctx Ctx) bool //战斗结束前
|
||||
|
||||
@@ -44,12 +44,7 @@ func (f *FightC) ChangePet(c common.PlayerI, id uint32) {
|
||||
}
|
||||
f.Switch = append(f.Switch, ret)
|
||||
f.GetInputByPlayer(c, false).InitAttackValue() //切换精灵消除能力提升
|
||||
f.GetInputByPlayer(c, false).Exec(func(t input.Effect) bool {
|
||||
|
||||
t.OnOwnerSwitchOut(input.Ctx{})
|
||||
|
||||
return true
|
||||
})
|
||||
f.GetInputByPlayer(c, true).Exec(func(t input.Effect) bool {
|
||||
|
||||
t.OnSwitchOut(input.Ctx{})
|
||||
@@ -57,18 +52,14 @@ func (f *FightC) ChangePet(c common.PlayerI, id uint32) {
|
||||
return true
|
||||
})
|
||||
f.GetInputByPlayer(c, false).CurrentPet, ret.Reason = f.GetInputByPlayer(c, false).GetPet(id)
|
||||
f.Broadcast(func(ff *input.Input) { //先给自身广播
|
||||
f.GetInputByPlayer(c, false).Effects = make([]input.Effect, 0) //清除效果类
|
||||
f.Broadcast(func(ff *input.Input) { //先给自身广播
|
||||
if ff.Player.GetInfo().UserID == c.GetInfo().UserID {
|
||||
ff.Player.SendChangePet(ret.Reason)
|
||||
}
|
||||
|
||||
})
|
||||
f.GetInputByPlayer(c, false).Exec(func(t input.Effect) bool {
|
||||
|
||||
t.OnOwnerSwitchIn(input.Ctx{})
|
||||
|
||||
return true
|
||||
})
|
||||
f.GetInputByPlayer(c, true).Exec(func(t input.Effect) bool {
|
||||
|
||||
t.OnSwitchIn(input.Ctx{})
|
||||
|
||||
@@ -282,7 +282,6 @@ func GenPetInfo(
|
||||
|
||||
// ---- 属性计算 ----
|
||||
p.CalculatePetPane()
|
||||
p.Hp = p.MaxHp
|
||||
|
||||
p.Update(true)
|
||||
|
||||
|
||||
@@ -34,12 +34,13 @@ func (p *PetInfo) CalculatePetPane() {
|
||||
naxml := xmlres.NatureRootMap[int(p.Nature)]
|
||||
petxml := xmlres.PetMAP[int(p.ID)]
|
||||
// 计算各项属性
|
||||
hp := p.calculatePetHPPanelSize(
|
||||
p.MaxHp = p.calculatePetHPPanelSize(
|
||||
uint32(petxml.HP),
|
||||
p.Dv,
|
||||
p.Level,
|
||||
p.Ev[0],
|
||||
)
|
||||
p.Hp = p.MaxHp
|
||||
// * battle_lv: atk(0), def(1), sp_atk(2), sp_def(3), spd(4), accuracy(5)
|
||||
p.Prop[0] = p.calculatePetPanelSize(
|
||||
uint32(petxml.Atk),
|
||||
@@ -81,6 +82,4 @@ func (p *PetInfo) CalculatePetPane() {
|
||||
naxml.SpeedCorrect,
|
||||
)
|
||||
|
||||
// 设置计算结果
|
||||
p.MaxHp = hp
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user