diff --git a/logic/service/fight/fightc.go b/logic/service/fight/fightc.go index bb8f642d..5521aead 100644 --- a/logic/service/fight/fightc.go +++ b/logic/service/fight/fightc.go @@ -72,7 +72,7 @@ func (f *FightC) processSkillAttack(attacker, defender *input.Input, a *info.Ski // attacker.AddEffects(attacker.EffectCache...) //命中再添加效果 for _, e := range attacker.EffectCache { //这里实现应该参考本地技能是否命中,然后 - e.Hit(attacker.AttackValue.AttackTime != 0) //我方效果命中 + e.Hit(attacker.AttackTime != 0) //我方效果命中 } // 扣减防御方血量 @@ -130,6 +130,8 @@ func (f *FightC) enterturn(fattack, sattack *action.SelectSkillAction) { var oldpet [2]*model.PetInfo var oldpettype [2]int + var oldhp [2]uint32 + var oldskill [2][]model.SkillInfo oldpet[0], oldpet[1] = f.copypet(f.Our.CurrentPet.Info), f.copypet(f.Opp.CurrentPet.Info) @@ -137,7 +139,11 @@ func (f *FightC) enterturn(fattack, sattack *action.SelectSkillAction) { fmt.Println("开始时对方最大体力值", f.Opp.CurrentPet.Info.MaxHp) defer func() { - f.Our.CurrentPet.Info, f.Opp.CurrentPet.Info = oldpet[0], oldpet[1] //还原精灵信息 + oldhp[0], oldhp[1] = f.Opp.CurrentPet.Info.Hp, f.Our.CurrentPet.Info.Hp + oldskill[0], oldskill[1] = f.Opp.CurrentPet.Info.SkillList, f.Our.CurrentPet.Info.SkillList + f.Our.CurrentPet.Info, f.Opp.CurrentPet.Info = oldpet[0], oldpet[1] //还原精灵信息 + f.Opp.CurrentPet.Info.Hp, f.Our.CurrentPet.Info.Hp = oldhp[0], oldhp[1] + f.Opp.CurrentPet.Info.SkillList, f.Our.CurrentPet.Info.SkillList = oldskill[0], oldskill[1] f.Our.CurrentPet.PType, f.Opp.CurrentPet.PType = oldpettype[0], oldpettype[1] //还原精灵属性 fmt.Println("结束时对方最大体力值", f.Opp.CurrentPet.Info.MaxHp) diff --git a/logic/service/fight/input/effect.go b/logic/service/fight/input/effect.go index f8dc21d9..de7bef3b 100644 --- a/logic/service/fight/input/effect.go +++ b/logic/service/fight/input/effect.go @@ -165,9 +165,10 @@ func (our *Input) AddEffect(in *Input, e Effect) Effect { v.Alive() && //如果之前的效果还存活 equalInts(v.Args(), e.Args()) { //如果层数可以叠加或者是无限层数 - if v.CanStack() { //说明进行了替换 + if !v.CanStack() { //说明进行了替换 v.Alive(false) //不允许叠层,取消效果 e.Duration(utils.Max(e.Duration(), v.Duration())) + our.Effects = append(our.Effects, e) return v //这里把V替换掉了 } else { v.Stack(v.Stack() + e.Stack()) //获取到当前叠层数然后叠加