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
|
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 { //技能使用后的我方效果
|
attacker.Exec(func(effect input.Effect) bool { //技能使用后的我方效果
|
||||||
effect.Ctx().SkillEntity = currentSkill
|
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 defender.CurrentPet.Info.Hp == 0 {
|
||||||
if attacker.CurrentPet.Info.Hp == 0 { //先手方死亡,触发反同归于尽
|
|
||||||
|
|
||||||
attacker.CurrentPet.Info.Hp = 1
|
f.TURNOVER(defender)
|
||||||
}
|
|
||||||
|
|
||||||
//defender.CanAction = true //被打死就可以切精灵了
|
break
|
||||||
// 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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -376,7 +376,7 @@ func (pet *PetInfo) Downgrade(level uint32) {
|
|||||||
func (petinfo *PetInfo) Update(isup bool) {
|
func (petinfo *PetInfo) Update(isup bool) {
|
||||||
|
|
||||||
// 最大进化次数限制(防止配置表闭环导致死循环)
|
// 最大进化次数限制(防止配置表闭环导致死循环)
|
||||||
maxEvolveTimes := 10
|
maxEvolveTimes := 1
|
||||||
evolveCount := 0
|
evolveCount := 0
|
||||||
|
|
||||||
// 循环进化:直到不满足进化条件 或 达到最大进化次数
|
// 循环进化:直到不满足进化条件 或 达到最大进化次数
|
||||||
|
|||||||
Reference in New Issue
Block a user