refactor: 重构战斗回合结束逻辑
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user