fix(fight): 修复技能效果命中判断逻辑错误
修复了技能攻击中效果命中的判断条件,使用更准确的 AttackTime 字段代替 AttackValue.AttackTime。同时优化了回合开始与结束时宠物状态的还原逻辑,确 保血量与技能列表能正确恢复。此外,修正了效果叠加判断条件的取反问题,避 免不可叠加效果被错误处理。
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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()) //获取到当前叠层数然后叠加
|
||||
|
||||
Reference in New Issue
Block a user