diff --git a/logic/service/fight/fightc.go b/logic/service/fight/fightc.go index 9e81e724..7ec0f1e2 100644 --- a/logic/service/fight/fightc.go +++ b/logic/service/fight/fightc.go @@ -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 + } +} diff --git a/modules/player/model/pet.go b/modules/player/model/pet.go index a1708b3f..11064f00 100644 --- a/modules/player/model/pet.go +++ b/modules/player/model/pet.go @@ -376,7 +376,7 @@ func (pet *PetInfo) Downgrade(level uint32) { func (petinfo *PetInfo) Update(isup bool) { // 最大进化次数限制(防止配置表闭环导致死循环) - maxEvolveTimes := 10 + maxEvolveTimes := 1 evolveCount := 0 // 循环进化:直到不满足进化条件 或 达到最大进化次数