refactor: 重构战斗回合结束逻辑
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful

This commit is contained in:
xinian
2026-03-07 18:50:51 +08:00
committed by cnb
parent bf2325e2ef
commit 2d4ec0e5ba
2 changed files with 30 additions and 63 deletions

View File

@@ -260,7 +260,14 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction)
return true
})
if !attacker.CurrentPet.NotAlive {
if defender.CurrentPet.Info.Hp <= 0 && attacker.CurrentPet.Info.Hp <= 0 { //先手方死亡,触发反同归于尽
attacker.CurrentPet.Info.Hp = 1
}
if attacker.CurrentPet.Info.Hp <= 0 {
f.TURNOVER(attacker)
break
} else {
//技能使用后
attacker.Exec(func(effect input.Effect) bool { //技能使用后的我方效果
effect.Ctx().SkillEntity = currentSkill
@@ -269,70 +276,11 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction)
})
}
// fmt.Println(i,
// "技能名称:", attacker.CurrentPet.Info.Name,
// "玩家技能伤害:", attacker.SumDamage,
// "自身剩余血量:", attacker.CurrentPet.Info.Hp,
// "对手剩余血量:", defender.CurrentPet.Info.Hp,
// )
if attacker.CurrentPet.Info.Hp <= 0 {
attacker.CurrentPet.NotAlive = true
f.Broadcast(func(ff *input.Input) {
ff.Exec(func(t input.Effect) bool {
t.SwitchOut(attacker)
return true
})
})
if defender.CurrentPet.Info.Hp == 0 { //先手方死亡,触发反同归于尽
defender.CurrentPet.Info.Hp = 1
}
if f.IsWin(defender) { //然后检查是否战斗结束
f.FightOverInfo.WinnerId = defender.UserID
f.closefight = true
// break
}
//attacker.CanAction = true
break
}
if defender.CurrentPet.Info.Hp == 0 {
if attacker.CurrentPet.Info.Hp == 0 { //先手方死亡,触发反同归于尽
attacker.CurrentPet.Info.Hp = 1
}
f.TURNOVER(defender)
//defender.CanAction = true //被打死就可以切精灵了
// AI自动技能
defender.CurrentPet.NotAlive = true
f.Broadcast(func(ff *input.Input) {
ff.Exec(func(t input.Effect) bool {
t.SwitchOut(defender)
return true
})
})
if f.IsWin(attacker) { //然后检查是否战斗结束
var WinnerId uint32
if i == 0 {
WinnerId = f.First.Player.GetInfo().UserID
} else {
WinnerId = f.Second.Player.GetInfo().UserID
}
f.FightOverInfo.WinnerId = WinnerId
f.closefight = true
}
//break
break
}
}
@@ -384,3 +332,22 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction)
}
}
func (f *FightC) TURNOVER(cur *input.Input) {
cur.CurrentPet.NotAlive = true
f.Broadcast(func(ff *input.Input) {
ff.Exec(func(t input.Effect) bool {
t.SwitchOut(cur)
return true
})
})
if f.IsWin(f.GetInputByPlayer(cur.Player, true)) { //然后检查是否战斗结束
f.FightOverInfo.WinnerId = f.GetInputByPlayer(cur.Player, true).UserID
f.closefight = true
// break
}
}

View File

@@ -376,7 +376,7 @@ func (pet *PetInfo) Downgrade(level uint32) {
func (petinfo *PetInfo) Update(isup bool) {
// 最大进化次数限制(防止配置表闭环导致死循环)
maxEvolveTimes := 10
maxEvolveTimes := 1
evolveCount := 0
// 循环进化:直到不满足进化条件 或 达到最大进化次数