diff --git a/logic/service/fight/boss/NewSeIdx_32.go b/logic/service/fight/boss/NewSeIdx_32.go index e6d6e9fa..37ee50ae 100644 --- a/logic/service/fight/boss/NewSeIdx_32.go +++ b/logic/service/fight/boss/NewSeIdx_32.go @@ -26,7 +26,7 @@ func (e *NewSel32) OnSkill() bool { if e.Ctx().SkillEntity.AttackTime == 0 { return true } - if !e.Ctx().SkillEntity.Side { + if !e.Ctx().SkillEntity.Hit { return true } success, _, _ := e.Input.Player.Roll(int(e.Args()[0].Div(alpacadecimal.NewFromInt(10)).IntPart()), 100) diff --git a/logic/service/fight/effect/EffectAttackMiss.go b/logic/service/fight/effect/EffectAttackMiss.go index 2e487ea9..d2e26384 100644 --- a/logic/service/fight/effect/EffectAttackMiss.go +++ b/logic/service/fight/effect/EffectAttackMiss.go @@ -46,10 +46,6 @@ func registerAttackMissEffects() { // 核心逻辑:技能命中时,若为目标攻击类型则强制miss // ----------------------------------------------------------- func (e *EffectAttackMiss) Skill_Hit_ex() bool { - // 命中判定失败,不触发 - if !e.Hit() { - return true - } // 技能为空时不处理 skill := e.Ctx().SkillEntity diff --git a/logic/service/fight/effect/EffectDefeatTrigger.go b/logic/service/fight/effect/EffectDefeatTrigger.go index b19ee1dd..8b82167e 100644 --- a/logic/service/fight/effect/EffectDefeatTrigger.go +++ b/logic/service/fight/effect/EffectDefeatTrigger.go @@ -47,9 +47,7 @@ func registerDefeatTriggerEffects() { // ----------------------------------------------------------- // OnSkill:命中时标记当次攻击可触发效果 func (e *EffectDefeatTrigger) OnSkill() bool { - if !e.Hit() { - return true - } + e.can = true // 标记当次攻击有效 return true } diff --git a/logic/service/fight/effect/EffectPhysicalAttackAddStatus.go b/logic/service/fight/effect/EffectPhysicalAttackAddStatus.go index e7f397e2..12102757 100644 --- a/logic/service/fight/effect/EffectPhysicalAttackAddStatus.go +++ b/logic/service/fight/effect/EffectPhysicalAttackAddStatus.go @@ -47,10 +47,6 @@ func registerPhysicalAttackAddStatusEffects() { // 核心逻辑:受物理攻击时触发(覆盖父类方法) // ----------------------------------------------------------- func (e *EffectPhysicalAttackAddStatus) Skill_Use_ex() bool { - // 1. 命中判定失败,不触发 - if !e.Hit() { - return true - } // 2. 技能为空或非物理攻击,不触发 skill := e.Ctx().SkillEntity diff --git a/logic/service/fight/effect/effect_1.go b/logic/service/fight/effect/effect_1.go index af96790b..3589b12b 100644 --- a/logic/service/fight/effect/effect_1.go +++ b/logic/service/fight/effect/effect_1.go @@ -25,9 +25,6 @@ func init() { // 命中之后 func (e *Effect1) OnSkill() bool { - if !e.Hit() { - return true - } e.Input.Heal( e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.SumDamage.Div(alpacadecimal.NewFromInt(2)), diff --git a/logic/service/fight/effect/effect_101.go b/logic/service/fight/effect/effect_101.go index 5ffedfa2..9c843f8e 100644 --- a/logic/service/fight/effect/effect_101.go +++ b/logic/service/fight/effect/effect_101.go @@ -23,9 +23,6 @@ func init() { // 命中之后 func (e *Effect101) OnSkill() bool { - if !e.Hit() { - return true - } e.Input.Heal( e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.SumDamage.Mul(e.Args()[0].Div(alpacadecimal.NewFromInt(100))), diff --git a/logic/service/fight/effect/effect_104_109.go b/logic/service/fight/effect/effect_104_109.go index ec3d7f7a..8177dc2c 100644 --- a/logic/service/fight/effect/effect_104_109.go +++ b/logic/service/fight/effect/effect_104_109.go @@ -51,9 +51,7 @@ func (e *Effect104) SetArgs(t *input.Input, a ...int) { // 技能触发时调用 // ----------------------------------------------------------- func (e *Effect104) OnSkill() bool { - if !e.Hit() { - return true - } + if !e.can { e.can = true return true diff --git a/logic/service/fight/effect/effect_105.go b/logic/service/fight/effect/effect_105.go index 92d43f17..98ee3c77 100644 --- a/logic/service/fight/effect/effect_105.go +++ b/logic/service/fight/effect/effect_105.go @@ -21,9 +21,6 @@ func init() { // 命中之后 func (e *Effect105) OnSkill() bool { - if !e.Hit() { - return true - } e.Input.Heal( e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.SumDamage.Div(e.Args()[0]), diff --git a/logic/service/fight/effect/effect_107.go b/logic/service/fight/effect/effect_107.go index d33742fd..fcf18d43 100644 --- a/logic/service/fight/effect/effect_107.go +++ b/logic/service/fight/effect/effect_107.go @@ -23,9 +23,6 @@ type Effect107 struct { // 我方使用效果 func (e *Effect107) Skill_Useed() bool { - if !e.Hit() { - return true - } d := e.Ctx().Our.SumDamage.Cmp(alpacadecimal.NewFromInt(int64(e.SideEffectArgs[0]))) //说明伤害小于N diff --git a/logic/service/fight/effect/effect_110.go b/logic/service/fight/effect/effect_110.go index 0c57014a..302125f1 100644 --- a/logic/service/fight/effect/effect_110.go +++ b/logic/service/fight/effect/effect_110.go @@ -19,9 +19,7 @@ func (e *Effect110) SetArgs(t *input.Input, a ...int) { } func (e *Effect110) Skill_Use_ex() bool { - if !e.Hit() { - return true - } + if e.Ctx().SkillEntity != nil { if e.Ctx().SkillEntity.AttackTime != 0 { //没有闪避掉 return true diff --git a/logic/service/fight/effect/effect_111.go b/logic/service/fight/effect/effect_111.go index c0097e05..6f282ad3 100644 --- a/logic/service/fight/effect/effect_111.go +++ b/logic/service/fight/effect/effect_111.go @@ -15,9 +15,6 @@ type Effect111 struct { } func (e *Effect111) OnSkill() bool { - if !e.Hit() { - return true - } e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, diff --git a/logic/service/fight/effect/effect_112.go b/logic/service/fight/effect/effect_112.go index 6ed5134a..767cee09 100644 --- a/logic/service/fight/effect/effect_112.go +++ b/logic/service/fight/effect/effect_112.go @@ -24,9 +24,7 @@ func init() { // 命中之后 func (e *Effect112) OnSkill() bool { - if !e.Hit() { - return true - } + e.can = true e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, diff --git a/logic/service/fight/effect/effect_115.go b/logic/service/fight/effect/effect_115.go index 019e689b..162961dc 100644 --- a/logic/service/fight/effect/effect_115.go +++ b/logic/service/fight/effect/effect_115.go @@ -24,9 +24,7 @@ type Effect115 struct { } func (e *Effect115) OnSkill() bool { - if !e.Hit() { - return true - } + // 概率判定 ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100) if !ok { diff --git a/logic/service/fight/effect/effect_116.go b/logic/service/fight/effect/effect_116.go index 9d865c19..d6af6014 100644 --- a/logic/service/fight/effect/effect_116.go +++ b/logic/service/fight/effect/effect_116.go @@ -33,9 +33,6 @@ func (e *Effect116) SetArgs(t *input.Input, a ...int) { } func (e *Effect116) Skill_Useed() bool { - if !e.Hit() { - return true - } if e.Input.FightC.IsFirst(e.Input.Player) { e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.SumDamage.Div(alpacadecimal.NewFromInt(5))) diff --git a/logic/service/fight/effect/effect_117.go b/logic/service/fight/effect/effect_117.go index 45adbfa5..d0eda329 100644 --- a/logic/service/fight/effect/effect_117.go +++ b/logic/service/fight/effect/effect_117.go @@ -31,9 +31,6 @@ func (e *Effect117) SetArgs(t *input.Input, a ...int) { } func (e *Effect117) OnSkill() bool { - if !e.Hit() { - return true - } if e.Input.FightC.IsFirst(e.Input.Player) { // 概率判定 diff --git a/logic/service/fight/effect/effect_119_123.go b/logic/service/fight/effect/effect_119_123.go index aa19471e..1a5bafe2 100644 --- a/logic/service/fight/effect/effect_119_123.go +++ b/logic/service/fight/effect/effect_119_123.go @@ -18,9 +18,7 @@ type Effect119 struct { } func (e *Effect119) OnSkill() bool { - if !e.Hit() { - return true - } + e.can = true return true } @@ -67,9 +65,6 @@ type Effect120 struct { } func (e *Effect120) OnSkill() bool { - if !e.Hit() { - return true - } // 50%概率 ok, _, _ := e.Input.Player.Roll(50, 100) @@ -105,9 +100,6 @@ type Effect121 struct { } func (e *Effect121) OnSkill() bool { - if !e.Hit() { - return true - } // 检查属性是否相同 if e.Ctx().Our.CurrentPet.PetInfo.Type == e.Ctx().Opp.CurrentPet.PetInfo.Type { @@ -143,9 +135,7 @@ func (e *Effect122) Skill_Hit() bool { } func (e *Effect122) OnSkill() bool { - if !e.Hit() { - return true - } + if e.can { propIndex := int(e.Args()[0].IntPart()) chance := int(e.Args()[1].IntPart()) diff --git a/logic/service/fight/effect/effect_124_126.go b/logic/service/fight/effect/effect_124_126.go index 8dd43291..b4171b0e 100644 --- a/logic/service/fight/effect/effect_124_126.go +++ b/logic/service/fight/effect/effect_124_126.go @@ -15,9 +15,6 @@ type Effect124 struct { } func (e *Effect124) OnSkill() bool { - if !e.Hit() { - return true - } chance := int(e.Args()[0].IntPart()) changeAmount := int(e.Args()[1].IntPart()) diff --git a/logic/service/fight/effect/effect_125.go b/logic/service/fight/effect/effect_125.go index ccbff8ad..1cac7267 100644 --- a/logic/service/fight/effect/effect_125.go +++ b/logic/service/fight/effect/effect_125.go @@ -27,9 +27,7 @@ func (e *Effect125) SetArgs(t *input.Input, a ...int) { } func (e *Effect125) DamageLock_ex(t *info.DamageZone) bool { - if !e.Hit() { - return true - } + if t.Type != info.DamageType.Red { return true } @@ -37,6 +35,6 @@ func (e *Effect125) DamageLock_ex(t *info.DamageZone) bool { if t.Damage.Cmp(e.Args()[1]) == -1 { return true } - t.Damage=e.Args()[1] + t.Damage = e.Args()[1] return true } diff --git a/logic/service/fight/effect/effect_128.go b/logic/service/fight/effect/effect_128.go index d4f3e537..971244de 100644 --- a/logic/service/fight/effect/effect_128.go +++ b/logic/service/fight/effect/effect_128.go @@ -30,9 +30,7 @@ func (e *Effect128) SetArgs(t *input.Input, a ...int) { } func (e *Effect128) DamageLock_ex(t *info.DamageZone) bool { - if !e.Hit() { - return true - } + if t.Type != info.DamageType.Red { return true } diff --git a/logic/service/fight/effect/effect_13.go b/logic/service/fight/effect/effect_13.go index 3f08af2e..d5d2df4b 100644 --- a/logic/service/fight/effect/effect_13.go +++ b/logic/service/fight/effect/effect_13.go @@ -26,9 +26,7 @@ func init() { // 技能触发时调用 // ----------------------------------------------------------- func (e *Effect13) OnSkill() bool { - if !e.Hit() { - return true - } + if gconv.Int(e.Ctx().Opp.CurrentPet.PetInfo.Type) == int(element.ElementTypeGrass) { return true } diff --git a/logic/service/fight/effect/effect_130.go b/logic/service/fight/effect/effect_130.go index a003d3aa..a7fc26c4 100644 --- a/logic/service/fight/effect/effect_130.go +++ b/logic/service/fight/effect/effect_130.go @@ -17,9 +17,6 @@ type Effect130 struct { // ----------------------------------------------------------- func (e *Effect130) OnSkill() bool { // 1. 命中判定失败,不触发 - if !e.Hit() { - return true - } if e.Ctx().Opp.CurrentPet.PetInfo.Gender != int(e.Args()[0].IntPart()) { return true diff --git a/logic/service/fight/effect/effect_131.go b/logic/service/fight/effect/effect_131.go index a4c67104..130e18fb 100644 --- a/logic/service/fight/effect/effect_131.go +++ b/logic/service/fight/effect/effect_131.go @@ -28,10 +28,6 @@ type Effect131 struct { // Damage_DIV_ex 受击前触发(核心伤害拦截节点) // 该方法在伤害计算前执行,适合修改/清零伤害实现免疫效果 func (e *Effect131) DamageLock_ex(t *info.DamageZone) bool { - // 1. 检查效果是否命中(未命中则不生效) - if !e.Hit() { - return true - } // 3. 获取配置的目标性别X(Args[0]存储X性别的数值) xGender := e.Args()[0].IntPart() diff --git a/logic/service/fight/effect/effect_134.go b/logic/service/fight/effect/effect_134.go index 2ddcc9e7..574ed3af 100644 --- a/logic/service/fight/effect/effect_134.go +++ b/logic/service/fight/effect/effect_134.go @@ -20,9 +20,7 @@ type Effect134 struct { } func (e *Effect134) DamageFloor(t *info.DamageZone) bool { - if !e.Hit() { - return true - } + // fmt.Println("Effect134_old", t.Damage.IntPart()) if t.Type == info.DamageType.Red { diff --git a/logic/service/fight/effect/effect_135.go b/logic/service/fight/effect/effect_135.go index d33e7465..235aa3fd 100644 --- a/logic/service/fight/effect/effect_135.go +++ b/logic/service/fight/effect/effect_135.go @@ -22,9 +22,7 @@ type Effect135 struct { } func (e *Effect135) DamageFloor(t *info.DamageZone) bool { - if !e.Hit() { - return true - } + // fmt.Println("Effect135_old", t.Damage.IntPart()) if t.Type == info.DamageType.Red { diff --git a/logic/service/fight/effect/effect_136.go b/logic/service/fight/effect/effect_136.go index e742d8fe..ad994877 100644 --- a/logic/service/fight/effect/effect_136.go +++ b/logic/service/fight/effect/effect_136.go @@ -21,11 +21,18 @@ func init() { } // 命中之后 -func (e *Effect136) OnSkill() bool { - if !e.Hit() { - heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) - e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) +func (e *Effect136) Skill_Hit() bool { + + if e.Ctx().SkillEntity == nil { + return true } + if e.Ctx().SkillEntity.AttackTime != 0 { + return true + } + +heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) + return true } diff --git a/logic/service/fight/effect/effect_145.go b/logic/service/fight/effect/effect_145.go index 92fbe603..4562effc 100644 --- a/logic/service/fight/effect/effect_145.go +++ b/logic/service/fight/effect/effect_145.go @@ -20,10 +20,6 @@ func init() { // 命中之后 func (e *Effect145) OnSkill() bool { - if !e.Hit() { - return true - - } if e.Ctx().Opp.StatEffect_Exist(info.PetStatus.Poisoned) { heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[0]) diff --git a/logic/service/fight/effect/effect_147_159.go b/logic/service/fight/effect/effect_147_159.go index bf1480c0..310ea640 100644 --- a/logic/service/fight/effect/effect_147_159.go +++ b/logic/service/fight/effect/effect_147_159.go @@ -15,9 +15,6 @@ type Effect147 struct { } func (e *Effect147) OnSkill() bool { - if !e.Hit() { - return true - } if e.Ctx().Our.FightC.IsFirst(e.Ctx().Our.Player) { return true @@ -47,9 +44,7 @@ type Effect148 struct { } func (e *Effect148) OnSkill() bool { - if !e.Hit() { - return true - } + if e.Ctx().Our.FightC.IsFirst(e.Ctx().Our.Player) { return true } @@ -77,9 +72,6 @@ type Effect159 struct { } func (e *Effect159) OnSkill() bool { - if !e.Hit() { - return true - } // 检查自身体力是否小于最大值的1/{0} maxHP := int64(e.Ctx().Our.CurrentPet.Info.MaxHp) diff --git a/logic/service/fight/effect/effect_151.go b/logic/service/fight/effect/effect_151.go index 007ed99d..d70ad849 100644 --- a/logic/service/fight/effect/effect_151.go +++ b/logic/service/fight/effect/effect_151.go @@ -19,10 +19,6 @@ func init() { // 命中之后 func (e *Effect151) OnSkill() bool { - if !e.Hit() { - return true - - } if e.Ctx().Opp.StatEffect_Exist(info.PetStatus.Burned) { chance := e.EffectNode.SideEffectArgs[0] diff --git a/logic/service/fight/effect/effect_1605.go b/logic/service/fight/effect/effect_1605.go index ba205e41..3243f627 100644 --- a/logic/service/fight/effect/effect_1605.go +++ b/logic/service/fight/effect/effect_1605.go @@ -23,9 +23,6 @@ func init() { // 技能触发时调用 // ----------------------------------------------------------- func (e *Effect1605) OnSkill() bool { - if !e.Hit() { - return true - } // n% 触发概率(默认 SideEffectArgs[0]) chance := e.SideEffectArgs[0] diff --git a/logic/service/fight/effect/effect_180.go b/logic/service/fight/effect/effect_180.go index 5d2c815b..8e5b09b2 100644 --- a/logic/service/fight/effect/effect_180.go +++ b/logic/service/fight/effect/effect_180.go @@ -21,9 +21,7 @@ func init() { // 命中之后 func (e *Effect180) OnSkill() bool { - if !e.Hit() { - return true - } + e.Ctx().Opp.CancelTurn(e.Ctx().Our) return true } diff --git a/logic/service/fight/effect/effect_195.go b/logic/service/fight/effect/effect_195.go index 8c73e7c7..d070b7cb 100644 --- a/logic/service/fight/effect/effect_195.go +++ b/logic/service/fight/effect/effect_195.go @@ -22,9 +22,7 @@ func init() { // 命中之后 func (e *Effect195) OnSkill() bool { - if !e.Hit() { - return true - } + e.Ctx().Opp.CancelTurn(e.Ctx().Our) return true } diff --git a/logic/service/fight/effect/effect_21.go b/logic/service/fight/effect/effect_21.go index 4f3ea81c..733f6614 100644 --- a/logic/service/fight/effect/effect_21.go +++ b/logic/service/fight/effect/effect_21.go @@ -26,9 +26,7 @@ type Effect21 struct { // 使用技能时,不可被继承,继承Miss和Hit就行 func (e *Effect21) OnSkill() bool { - if !e.Hit() { - return true - } + e.l.Do(func() { //保证技能使用后初始化一次就行 statIndex := e.SideEffectArgs[0] @@ -45,10 +43,6 @@ func (e *Effect21) OnSkill() bool { // 被攻击时候反弹 func (e *Effect21) Skill_Use_ex() bool { - //未命中 - if !e.Hit() { - return true - } //不是技能 if e.Ctx().SkillEntity == nil { return true diff --git a/logic/service/fight/effect/effect_28.go b/logic/service/fight/effect/effect_28.go index 58182acc..1f101ce6 100644 --- a/logic/service/fight/effect/effect_28.go +++ b/logic/service/fight/effect/effect_28.go @@ -22,9 +22,6 @@ type Effect28 struct { } func (e *Effect28) OnSkill() bool { - if !e.Hit() { - return true - } e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, diff --git a/logic/service/fight/effect/effect_29.go b/logic/service/fight/effect/effect_29.go index 8c22ac8e..597a13d6 100644 --- a/logic/service/fight/effect/effect_29.go +++ b/logic/service/fight/effect/effect_29.go @@ -24,9 +24,6 @@ type Effect29 struct { } func (e *Effect29) OnSkill() bool { - if !e.Hit() { - return true - } e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ diff --git a/logic/service/fight/effect/effect_31.go b/logic/service/fight/effect/effect_31.go index 3f95b9b6..a6f5cc55 100644 --- a/logic/service/fight/effect/effect_31.go +++ b/logic/service/fight/effect/effect_31.go @@ -24,9 +24,6 @@ type Effect31 struct { } func (e *Effect31) Damage_Mul(t *info.DamageZone) bool { - if !e.Hit() { - return true - } if t.Type == info.DamageType.Red { n := int(e.Input.FightC.GetRand().Int31n(int32(e.SideEffectArgs[1]-e.SideEffectArgs[0]+1))) + e.SideEffectArgs[0] diff --git a/logic/service/fight/effect/effect_32.go b/logic/service/fight/effect/effect_32.go index 3799c143..eb798fb6 100644 --- a/logic/service/fight/effect/effect_32.go +++ b/logic/service/fight/effect/effect_32.go @@ -22,9 +22,7 @@ type Effect32 struct { } func (e *Effect32) Action_start(a, b *action.SelectSkillAction) bool { - if !e.Hit() { - return true - } + if e.Ctx().SkillEntity == nil { return true } diff --git a/logic/service/fight/effect/effect_34.go b/logic/service/fight/effect/effect_34.go index 839a2f4f..32d850f2 100644 --- a/logic/service/fight/effect/effect_34.go +++ b/logic/service/fight/effect/effect_34.go @@ -24,9 +24,7 @@ type Effect34 struct { // 使用技能时,不可被继承,继承Miss和Hit就行 func (e *Effect34) OnSkill() bool { - if !e.Hit() { - return true - } + e.can = true return true } diff --git a/logic/service/fight/effect/effect_36.go b/logic/service/fight/effect/effect_36.go index 068f3467..80a3a7f3 100644 --- a/logic/service/fight/effect/effect_36.go +++ b/logic/service/fight/effect/effect_36.go @@ -23,9 +23,7 @@ type Effect36 struct { } func (e *Effect36) OnSkill() bool { - if !e.Hit() { - return true - } + e.can = true return true } diff --git a/logic/service/fight/effect/effect_39.go b/logic/service/fight/effect/effect_39.go index ef531c5f..f1143805 100644 --- a/logic/service/fight/effect/effect_39.go +++ b/logic/service/fight/effect/effect_39.go @@ -21,9 +21,7 @@ type Effect39 struct { } func (e *Effect39) OnSkill() bool { - if !e.Hit() { - return true - } + // 概率判定 ok, _, _ := e.Input.Player.Roll(e.SideEffectArgs[0], 100) if !ok { diff --git a/logic/service/fight/effect/effect_41.go b/logic/service/fight/effect/effect_41.go index 8fa3affc..dbec4786 100644 --- a/logic/service/fight/effect/effect_41.go +++ b/logic/service/fight/effect/effect_41.go @@ -36,9 +36,6 @@ func (e *Effect41) SetArgs(t *input.Input, a ...int) { // 伤害落实前触发,限制最大伤害 func (e *Effect41) Damage_DIV_ex(t *info.DamageZone) bool { - if !e.Hit() { - return true - } if e.Ctx().SkillEntity == nil { return true } diff --git a/logic/service/fight/effect/effect_42.go b/logic/service/fight/effect/effect_42.go index 7a941c7d..a2e33c08 100644 --- a/logic/service/fight/effect/effect_42.go +++ b/logic/service/fight/effect/effect_42.go @@ -16,9 +16,7 @@ type Effect42 struct { } func (e *Effect42) Damage_Mul(t *info.DamageZone) bool { - if !e.Hit() { - return true - } + if e.Ctx().SkillEntity == nil { return true } diff --git a/logic/service/fight/effect/effect_43.go b/logic/service/fight/effect/effect_43.go index b5b16b0a..848d6ed1 100644 --- a/logic/service/fight/effect/effect_43.go +++ b/logic/service/fight/effect/effect_43.go @@ -22,9 +22,7 @@ type Effect43 struct { } func (e *Effect43) OnSkill() bool { - if !e.Hit() { - return true - } + tt := alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.MaxHp)).Div(alpacadecimal.NewFromInt(int64(e.SideEffectArgs[0]))) //fmt.Println("恢复自身最大体量的1/n", tt.IntPart()) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, tt) diff --git a/logic/service/fight/effect/effect_44.go b/logic/service/fight/effect/effect_44.go index 0e55c5eb..35ff7b5a 100644 --- a/logic/service/fight/effect/effect_44.go +++ b/logic/service/fight/effect/effect_44.go @@ -16,9 +16,7 @@ type Effect44 struct { } func (e *Effect44) Damage_DIV_ex(t *info.DamageZone) bool { - if !e.Hit() { - return true - } + if e.Ctx().SkillEntity == nil { return true } diff --git a/logic/service/fight/effect/effect_46.go b/logic/service/fight/effect/effect_46.go index ae4849eb..5ebfef5a 100644 --- a/logic/service/fight/effect/effect_46.go +++ b/logic/service/fight/effect/effect_46.go @@ -17,9 +17,7 @@ type Effect46 struct { } func (e *Effect46) Damage_DIV_ex(t *info.DamageZone) bool { - if !e.Hit() { - return true - } + if e.Ctx().SkillEntity == nil { return true } diff --git a/logic/service/fight/effect/effect_466.go b/logic/service/fight/effect/effect_466.go index b536fb86..95ed96ed 100644 --- a/logic/service/fight/effect/effect_466.go +++ b/logic/service/fight/effect/effect_466.go @@ -21,9 +21,7 @@ type Effect466 struct { } func (e *Effect466) OnSkill() bool { - if !e.Hit() { - return true - } + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Args()[0]) return true } diff --git a/logic/service/fight/effect/effect_478.go b/logic/service/fight/effect/effect_478.go index e09b2d6a..dd634283 100644 --- a/logic/service/fight/effect/effect_478.go +++ b/logic/service/fight/effect/effect_478.go @@ -23,17 +23,13 @@ func init() { // 命中之后 func (e *Effect478) OnSkill() bool { - if !e.Hit() { - return true - } + e.can = true return true } func (e *Effect478) Skill_Hit_ex() bool { - if !e.Hit() { - return true - } + if !e.can { return true } diff --git a/logic/service/fight/effect/effect_48.go b/logic/service/fight/effect/effect_48.go index 7c7cb331..5fc685fb 100644 --- a/logic/service/fight/effect/effect_48.go +++ b/logic/service/fight/effect/effect_48.go @@ -15,10 +15,6 @@ type Effect48 struct { func (e *Effect48) EFFect_Befer(in *input.Input, effEffect input.Effect) bool { - if !e.Hit() { - return true - } - if in != e.Ctx().Opp { return true } diff --git a/logic/service/fight/effect/effect_49.go b/logic/service/fight/effect/effect_49.go index fee3ac95..eb1ce2f1 100644 --- a/logic/service/fight/effect/effect_49.go +++ b/logic/service/fight/effect/effect_49.go @@ -13,9 +13,7 @@ type Effect49 struct { } func (e *Effect49) Damage_SUB_ex(t *info.DamageZone) bool { - if !e.Hit() { - return true - } + if e.Ctx().SkillEntity == nil { return true } diff --git a/logic/service/fight/effect/effect_4_5.go b/logic/service/fight/effect/effect_4_5.go index 61c60631..8c8bba49 100644 --- a/logic/service/fight/effect/effect_4_5.go +++ b/logic/service/fight/effect/effect_4_5.go @@ -38,9 +38,6 @@ type EffectStat struct { // 技能触发时调用 // ----------------------------------------------------------- func (e *EffectStat) OnSkill() bool { - if !e.Hit() { - return true - } // 参数解构 (防止 SideEffectArgs 长度不足) var ( diff --git a/logic/service/fight/effect/effect_50.go b/logic/service/fight/effect/effect_50.go index 84a72603..b006e8f8 100644 --- a/logic/service/fight/effect/effect_50.go +++ b/logic/service/fight/effect/effect_50.go @@ -16,9 +16,7 @@ type Effect50 struct { } func (e *Effect50) Damage_DIV_ex(t *info.DamageZone) bool { - if !e.Hit() { - return true - } + if e.Ctx().SkillEntity == nil { return true } diff --git a/logic/service/fight/effect/effect_53_90.go b/logic/service/fight/effect/effect_53_90.go index 5c06e601..8fe8ce2e 100644 --- a/logic/service/fight/effect/effect_53_90.go +++ b/logic/service/fight/effect/effect_53_90.go @@ -22,9 +22,6 @@ type Effect90 struct { } func (e *Effect90) Damage_Mul(t *info.DamageZone) bool { - if !e.Hit() { - return true - } if t.Type == info.DamageType.Red { diff --git a/logic/service/fight/effect/effect_54.go b/logic/service/fight/effect/effect_54.go index aea01576..d7fc6e64 100644 --- a/logic/service/fight/effect/effect_54.go +++ b/logic/service/fight/effect/effect_54.go @@ -14,9 +14,7 @@ type Effect54 struct { } func (e *Effect54) Damage_DIV_ex(t *info.DamageZone) bool { - if !e.Hit() { - return true - } + if e.Ctx().SkillEntity == nil { return true } diff --git a/logic/service/fight/effect/effect_566.go b/logic/service/fight/effect/effect_566.go index 8fc27a43..204dbdfa 100644 --- a/logic/service/fight/effect/effect_566.go +++ b/logic/service/fight/effect/effect_566.go @@ -22,9 +22,7 @@ func init() { // 命中之后 func (e *Effect566) OnSkill() bool { - if !e.Hit() { - return true - } + e.Ctx().Opp.CancelTurn(e.Ctx().Our) return true } diff --git a/logic/service/fight/effect/effect_57.go b/logic/service/fight/effect/effect_57.go index 3e7cf9cd..22a55457 100644 --- a/logic/service/fight/effect/effect_57.go +++ b/logic/service/fight/effect/effect_57.go @@ -28,9 +28,7 @@ func (e *Effect57) SetArgs(t *input.Input, a ...int) { } func (e *Effect57) OnSkill() bool { - if !e.Hit() { - return true - } + heal := e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1]) e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, heal) return true diff --git a/logic/service/fight/effect/effect_58.go b/logic/service/fight/effect/effect_58.go index 635934ca..05624988 100644 --- a/logic/service/fight/effect/effect_58.go +++ b/logic/service/fight/effect/effect_58.go @@ -22,18 +22,14 @@ type Effect58 struct { } func (e *Effect58) OnSkill() bool { - if !e.Hit() { - return true - } + e.Can = true return true } func (e *Effect58) Action_start(a, b *action.SelectSkillAction) bool { - if !e.Hit() { - return true - } + if !e.Can { return true } diff --git a/logic/service/fight/effect/effect_59.go b/logic/service/fight/effect/effect_59.go index 89e90cd6..536d5f36 100644 --- a/logic/service/fight/effect/effect_59.go +++ b/logic/service/fight/effect/effect_59.go @@ -31,9 +31,7 @@ func (e *Effect59) SetArgs(t *input.Input, a ...int) { // 命中之后 func (e *Effect59) OnSkill() bool { - if !e.Hit() { - return true - } + e.can = true e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, diff --git a/logic/service/fight/effect/effect_60.go b/logic/service/fight/effect/effect_60.go index 0444acb7..26368973 100644 --- a/logic/service/fight/effect/effect_60.go +++ b/logic/service/fight/effect/effect_60.go @@ -28,9 +28,7 @@ func (e *Effect60) SetArgs(t *input.Input, a ...int) { } func (e *Effect60) OnSkill() bool { - if !e.Hit() { - return true - } + if e.Ctx().SkillEntity == nil { return true } diff --git a/logic/service/fight/effect/effect_62.go b/logic/service/fight/effect/effect_62.go index 511c6c61..af35b5a7 100644 --- a/logic/service/fight/effect/effect_62.go +++ b/logic/service/fight/effect/effect_62.go @@ -86,10 +86,6 @@ func init() { // 魂印开局添加,然后切精灵不消失 func (e *Effect62) OnSkill() bool { - if !e.Hit() { - //e.Alive(false) - return true - } //e.Duration(1) //必须保持到下一回合,这样才会被复制 // e.opp = ctx.Input diff --git a/logic/service/fight/effect/effect_65.go b/logic/service/fight/effect/effect_65.go index 844db05a..bf434510 100644 --- a/logic/service/fight/effect/effect_65.go +++ b/logic/service/fight/effect/effect_65.go @@ -14,9 +14,6 @@ type Effect65 struct { } func (e *Effect65) Skill_Hit() bool { - if !e.Hit() { - return true - } if e.Ctx().SkillEntity == nil { return true diff --git a/logic/service/fight/effect/effect_68.go b/logic/service/fight/effect/effect_68.go index 804f9e0b..b2c1eb84 100644 --- a/logic/service/fight/effect/effect_68.go +++ b/logic/service/fight/effect/effect_68.go @@ -16,9 +16,7 @@ type Effect68 struct { } func (e *Effect68) DamageLock_ex(t *info.DamageZone) bool { - if !e.Hit() { - return true - } + if e.Ctx().SkillEntity == nil { return true } diff --git a/logic/service/fight/effect/effect_69.go b/logic/service/fight/effect/effect_69.go index d0edb3ea..e900be6d 100644 --- a/logic/service/fight/effect/effect_69.go +++ b/logic/service/fight/effect/effect_69.go @@ -27,9 +27,7 @@ func init() { } func (e *Effect69) OnSkill() bool { - if !e.Hit() { - return true - } + t := &Effect69_sub{ EffectNode: node.EffectNode{}, } diff --git a/logic/service/fight/effect/effect_7.go b/logic/service/fight/effect/effect_7.go index 4b4de944..f012312d 100644 --- a/logic/service/fight/effect/effect_7.go +++ b/logic/service/fight/effect/effect_7.go @@ -32,9 +32,7 @@ func (e *Effect7) Skill_Hit() bool { return true } func (e *Effect7) DamageFloor(t *info.DamageZone) bool { - if !e.Hit() { - return true - } + //fmt.Println("Effect7_old", t.Damage.IntPart()) if t.Type == info.DamageType.Red { if e.Ctx().Our.CurrentPet.Info.Hp <= e.Ctx().Opp.CurrentPet.Info.Hp { @@ -49,9 +47,7 @@ func (e *Effect7) DamageFloor(t *info.DamageZone) bool { return true } func (e *Effect7) DamageLock(t *info.DamageZone) bool { - if !e.Hit() { - return true - } + //fmt.Println("Effect7_old", t.Damage.IntPart()) if t.Type == info.DamageType.Red { if t.Damage.Cmp(e.max) == 1 { diff --git a/logic/service/fight/effect/effect_71.go b/logic/service/fight/effect/effect_71.go index 19a58576..36e90d66 100644 --- a/logic/service/fight/effect/effect_71.go +++ b/logic/service/fight/effect/effect_71.go @@ -35,9 +35,7 @@ func (e *Effect71) SetArgs(t *input.Input, a ...int) { // 命中之后 func (e *Effect71) OnSkill() bool { - if !e.Hit() { - return true - } + e.can = true e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, diff --git a/logic/service/fight/effect/effect_72.go b/logic/service/fight/effect/effect_72.go index 639f5c77..3dd5c717 100644 --- a/logic/service/fight/effect/effect_72.go +++ b/logic/service/fight/effect/effect_72.go @@ -23,14 +23,21 @@ func init() { } // 命中之后 -func (e *Effect72) OnSkill() bool { - if !e.Hit() { - e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ - Type: info.DamageType.True, - Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.Hp)), - }) - e.Ctx().Our.CurrentPet.NotAlive = true +func (e *Effect72) Skill_Hit() bool { + + if e.Ctx().SkillEntity == nil { + return true } + if e.Ctx().SkillEntity.AttackTime != 0 { + return true + } + + e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ + Type: info.DamageType.True, + Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.Hp)), + }) + e.Ctx().Our.CurrentPet.NotAlive = true + return true } diff --git a/logic/service/fight/effect/effect_73.go b/logic/service/fight/effect/effect_73.go index 7203d836..53291c91 100644 --- a/logic/service/fight/effect/effect_73.go +++ b/logic/service/fight/effect/effect_73.go @@ -34,9 +34,6 @@ func (e *Effect73) SetArgs(t *input.Input, a ...int) { } func (e *Effect73) Action_end_ex() bool { - if !e.Hit() { - return true - } if !e.Input.FightC.IsFirst(e.Ctx().Our.Player) { return true } diff --git a/logic/service/fight/effect/effect_74_75.go b/logic/service/fight/effect/effect_74_75.go index c33d99ff..50f7690a 100644 --- a/logic/service/fight/effect/effect_74_75.go +++ b/logic/service/fight/effect/effect_74_75.go @@ -27,9 +27,6 @@ func newEffectRandomStatus(ranges []statusRange) *EffectRandomStatus { // 通用逻辑:命中后按概率随机触发状态 func (e *EffectRandomStatus) OnSkill() bool { - if !e.Hit() { - return true - } // 生成0-99的随机数(100种可能) randVal := int(e.Input.FightC.GetRand().Int31n(100)) diff --git a/logic/service/fight/effect/effect_76.go b/logic/service/fight/effect/effect_76.go index 6fcaf9fd..af90be05 100644 --- a/logic/service/fight/effect/effect_76.go +++ b/logic/service/fight/effect/effect_76.go @@ -24,9 +24,7 @@ type Effect76 struct { } func (e *Effect76) OnSkill() bool { - if !e.Hit() { - return true - } + // 概率判定 ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100) if !ok { diff --git a/logic/service/fight/effect/effect_77.go b/logic/service/fight/effect/effect_77.go index 52266f4e..35740f8d 100644 --- a/logic/service/fight/effect/effect_77.go +++ b/logic/service/fight/effect/effect_77.go @@ -28,9 +28,7 @@ func (e *Effect77) SetArgs(t *input.Input, a ...int) { } func (e *Effect77) OnSkill() bool { - if !e.Hit() { - return true - } + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Args()[1]) return true } diff --git a/logic/service/fight/effect/effect_776.go b/logic/service/fight/effect/effect_776.go index c4d48456..6e3b8766 100644 --- a/logic/service/fight/effect/effect_776.go +++ b/logic/service/fight/effect/effect_776.go @@ -13,9 +13,6 @@ type Effect776 struct { } func (e *Effect776) Damage_Mul(t *info.DamageZone) bool { - if !e.Hit() { - return true - } if t.Type == info.DamageType.Red { diff --git a/logic/service/fight/effect/effect_79.go b/logic/service/fight/effect/effect_79.go index e25f5291..a98e57ca 100644 --- a/logic/service/fight/effect/effect_79.go +++ b/logic/service/fight/effect/effect_79.go @@ -24,9 +24,6 @@ func init() { // 命中之后 // 特攻+2速度+1命中+1, func (e *Effect79) OnSkill() bool { - if !e.Hit() { - return true - } e.Ctx().Our.SetProp(e.Ctx().Our, 2, 2, info.AbilityOpType.ADD) e.Ctx().Our.SetProp(e.Ctx().Our, 4, 1, info.AbilityOpType.ADD) diff --git a/logic/service/fight/effect/effect_8.go b/logic/service/fight/effect/effect_8.go index 4b15009a..c644a4e6 100644 --- a/logic/service/fight/effect/effect_8.go +++ b/logic/service/fight/effect/effect_8.go @@ -34,9 +34,7 @@ func (e *Effect8) DamageFloor(t *info.DamageZone) bool { return true } func (e *Effect8) DamageLock(t *info.DamageZone) bool { - if !e.Hit() { - return true - } + //fmt.Println("Effect7_old", t.Damage.IntPart()) if t.Type == info.DamageType.Red { if t.Damage.Cmp(e.max) == 1 { diff --git a/logic/service/fight/effect/effect_80.go b/logic/service/fight/effect/effect_80.go index ac4b0e59..f1e0647f 100644 --- a/logic/service/fight/effect/effect_80.go +++ b/logic/service/fight/effect/effect_80.go @@ -22,9 +22,6 @@ func init() { } func (e *Effect80) OnSkill() bool { - if !e.Hit() { - return true - } att := e.Ctx().Our.CurrentPet.GetMaxHP().Div(alpacadecimal.NewFromInt(2)) e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ diff --git a/logic/service/fight/effect/effect_81.go b/logic/service/fight/effect/effect_81.go index 32a2b087..70d92d4e 100644 --- a/logic/service/fight/effect/effect_81.go +++ b/logic/service/fight/effect/effect_81.go @@ -20,18 +20,14 @@ type Effect81 struct { } func (e *Effect81) OnSkill() bool { - if !e.Hit() { - return true - } + e.can = true return true } func (e *Effect81) Action_start(a, b *action.SelectSkillAction) bool { - if !e.Hit() { - return true - } + if !e.can { return true } diff --git a/logic/service/fight/effect/effect_83.go b/logic/service/fight/effect/effect_83.go index c4b45900..c3f3f66d 100644 --- a/logic/service/fight/effect/effect_83.go +++ b/logic/service/fight/effect/effect_83.go @@ -23,18 +23,14 @@ type Effect83 struct { } func (e *Effect83) OnSkill() bool { - if !e.Hit() { - return true - } + e.can = true return true } func (e *Effect83) Compare_Pre(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) bool { - if !e.Hit() { - return true - } + if !e.can { return true } @@ -63,9 +59,7 @@ func (e *Effect83) Compare_Pre(fattack *action.SelectSkillAction, sattack *actio // /自身雄性,下两回合必定先手;自身雌性,下两回合必定致命一击 func (e *Effect83) Action_start(a, b *action.SelectSkillAction) bool { - if !e.Hit() { - return true - } + if !e.can { return true } diff --git a/logic/service/fight/effect/effect_87.go b/logic/service/fight/effect/effect_87.go index 62abb1b5..78ce9eae 100644 --- a/logic/service/fight/effect/effect_87.go +++ b/logic/service/fight/effect/effect_87.go @@ -19,9 +19,6 @@ type Effect87 struct { } func (e *Effect87) OnSkill() bool { - if !e.Hit() { - return true - } e.Ctx().Our.HealPP(-1) return true diff --git a/logic/service/fight/effect/effect_88.go b/logic/service/fight/effect/effect_88.go index d5a0aa37..1dffd837 100644 --- a/logic/service/fight/effect/effect_88.go +++ b/logic/service/fight/effect/effect_88.go @@ -22,9 +22,7 @@ type Effect88 struct { } func (e *Effect88) Damage_Mul(t *info.DamageZone) bool { - if !e.Hit() { - return true - } + // 概率判定 ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100) if !ok { diff --git a/logic/service/fight/effect/effect_89.go b/logic/service/fight/effect/effect_89.go index fecde7a3..dfddeb59 100644 --- a/logic/service/fight/effect/effect_89.go +++ b/logic/service/fight/effect/effect_89.go @@ -31,9 +31,6 @@ func (e *Effect89) SetArgs(t *input.Input, a ...int) { } func (e *Effect89) Skill_Useed() bool { - if !e.Hit() { - return true - } e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.SumDamage.Div(e.Args()[1])) diff --git a/logic/service/fight/effect/effect_93.go b/logic/service/fight/effect/effect_93.go index 14f37a90..f8c73efb 100644 --- a/logic/service/fight/effect/effect_93.go +++ b/logic/service/fight/effect/effect_93.go @@ -24,9 +24,7 @@ type Effect93 struct { } func (e *Effect93) OnSkill() bool { - if !e.Hit() { - return true - } + // 概率判定 ok, _, _ := e.Input.Player.Roll(int(e.Args()[0].IntPart()), 100) if !ok { diff --git a/logic/service/fight/effect/effect_95.go b/logic/service/fight/effect/effect_95.go index e8cc228d..b95bf338 100644 --- a/logic/service/fight/effect/effect_95.go +++ b/logic/service/fight/effect/effect_95.go @@ -21,9 +21,6 @@ type Effect95 struct { } func (e *Effect95) Action_start(a, b *action.SelectSkillAction) bool { - if !e.Hit() { - return true - } //fmt.Println(e.Ctx().SkillEntity) if e.Ctx().SkillEntity == nil { diff --git a/logic/service/fight/effect/effect_98.go b/logic/service/fight/effect/effect_98.go index 20102e99..3138a5ed 100644 --- a/logic/service/fight/effect/effect_98.go +++ b/logic/service/fight/effect/effect_98.go @@ -24,9 +24,6 @@ type Effect98 struct { } func (e *Effect98) Damage_Mul(t *info.DamageZone) bool { - if !e.Hit() { - return true - } if e.Ctx().Opp.CurrentPet.Gender != 1 { return true diff --git a/logic/service/fight/effect/effect_EffectConditionalAddDamage.go b/logic/service/fight/effect/effect_EffectConditionalAddDamage.go index 253ee339..755a49dd 100644 --- a/logic/service/fight/effect/effect_EffectConditionalAddDamage.go +++ b/logic/service/fight/effect/effect_EffectConditionalAddDamage.go @@ -56,9 +56,6 @@ func registerConditionalAddDamageEffects() { // ----------------------------------------------------------- func (e *EffectConditionalAddDamage) OnSkill() bool { // 1. 命中判定失败,不触发 - if !e.Hit() { - return true - } // 2. 获取当前效果ID对应的条件函数 cond, ok := conditionMap[int(e.ID().Suffix())] diff --git a/logic/service/fight/effect/effect_attr.go b/logic/service/fight/effect/effect_attr.go index f7643505..9cb589f8 100644 --- a/logic/service/fight/effect/effect_attr.go +++ b/logic/service/fight/effect/effect_attr.go @@ -90,9 +90,6 @@ func (e *EffectPropSyncReverse) SetArgs(t *input.Input, a ...int) { } func (e *EffectPropSyncReverse) OnSkill() bool { - if !e.Hit() { - return true - } if e.opppet != nil { return true } diff --git a/logic/service/fight/effect/effect_prop.go b/logic/service/fight/effect/effect_prop.go index 47b23d02..c399d447 100644 --- a/logic/service/fight/effect/effect_prop.go +++ b/logic/service/fight/effect/effect_prop.go @@ -18,9 +18,6 @@ type Effect3 struct { // 执行时逻辑 // ---------------------- func (e *Effect3) OnSkill() bool { - if !e.Hit() { - return true - } // 遍历六项能力值(攻击、防御、速度等) for i := 0; i < 6; i++ { diff --git a/logic/service/fight/effect/sterStatusEffects.go b/logic/service/fight/effect/sterStatusEffects.go index adeda34a..a4b4ba29 100644 --- a/logic/service/fight/effect/sterStatusEffects.go +++ b/logic/service/fight/effect/sterStatusEffects.go @@ -53,9 +53,6 @@ func registerStatusEffects() { // 技能触发时调用 // ----------------------------------------------------------- func (e *Effect10) OnSkill() bool { - if !e.Hit() { - return true - } // n% 触发概率(默认 SideEffectArgs[0]) chance := e.EffectNode.SideEffectArgs[0] diff --git a/logic/service/fight/fightc.go b/logic/service/fight/fightc.go index 367868e0..2b11cda8 100644 --- a/logic/service/fight/fightc.go +++ b/logic/service/fight/fightc.go @@ -60,16 +60,18 @@ func (f *FightC) processSkillAttack(attacker, defender *input.Input, skill *info attacker.SumDamage = attacker.SumDamage.Mul(alpacadecimal.NewFromInt(2)) } - if !skill.Side { - //这时候将被覆盖的效果全部装回来enterturn - for _, effect := range attacker.Effect_Lost { - if effect.Duration() > 0 || effect.Duration() == -1 { - effect.Alive(true) - } - } - } else { + //到这里已经是强制miss或者命中,所以根本不存在强制miss改命中的情况,因为miss的时候不会执行到这里 + if !skill.Hit { + for _, effect := range attacker.EffectCache { - effect.Hit(true) //我方效果命中 + effect.Alive(false) //我方效果命中 + } + //这时候将被覆盖的效果全部装回来enterturn + for _, effect := range attacker.EffectLost { + if effect.Duration() > 0 || effect.Duration() == -1 { + //effect.Alive(true) + attacker.AddEffect(effect.GetInput(), effect) + } } } @@ -123,7 +125,7 @@ func (f *FightC) enterturn(firstAttack, secondAttack *action.SelectSkillAction) f.Broadcast(func(ff *input.Input) { ff.EffectCache = make([]input.Effect, 0) //先把上一回合数据清空,但是应该把本身延续类效果集成过来 - ff.Effect_Lost = make([]input.Effect, 0) + ff.EffectLost = make([]input.Effect, 0) ff.Exec(func(effect input.Effect) bool { //回合开始前 effect.Turn_Start(firstAttack, secondAttack) return true diff --git a/logic/service/fight/info/BattleSkillEntity.go b/logic/service/fight/info/BattleSkillEntity.go index cee8913e..4d990310 100644 --- a/logic/service/fight/info/BattleSkillEntity.go +++ b/logic/service/fight/info/BattleSkillEntity.go @@ -61,8 +61,8 @@ type SkillEntity struct { Pet *BattlePetEntity //MaxValue func(ahp, bhp uint32) decimal.Decimal Crit uint32 - AttackTime uint32 //记录技能实际是否命中 - Side bool + AttackTime uint32 //记录技能实际是否命中,0表示未命中,1表示命中,2表示必中 + Hit bool } // CreateSkill 创建战斗技能实例(可指定是否无限PP) @@ -115,7 +115,7 @@ func (s *SkillEntity) SetMiss() bool { // 无效掉附带属性 func (s *SkillEntity) SetNoSide() bool { - s.Side = false + s.Hit = false return true } @@ -176,14 +176,14 @@ func (s *SkillEntity) AttackTimeC(level int) uint32 { if s.MustHit != 0 { s.AttackTime = 2 - s.Side = true + s.Hit = true return s.AttackTime } a := int64(s.GetAccuracy(level)) r := s.Rand.Int63n(100) if a >= r { - s.Side = true + s.Hit = true s.AttackTime = 1 } return s.AttackTime diff --git a/logic/service/fight/input/input.go b/logic/service/fight/input/input.go index 32773781..33d8b883 100644 --- a/logic/service/fight/input/input.go +++ b/logic/service/fight/input/input.go @@ -27,7 +27,7 @@ type Input struct { // info.BattleActionI Effects []Effect //effects 实际上全局就是effect无限回合 //effects容器 技能的 EffectCache []Effect //这里是命中前执行的容器,也就是命中前执行的所有逻辑相关,理论上一个effect被激活,就应该同时将其他的effect取消激活 - Effect_Lost []Effect + EffectLost []Effect // 删掉伤害记录,可以在回调中记录,而不是每次调用记录 SumDamage alpacadecimal.Decimal //伤害 // DamageZone struct { @@ -105,6 +105,7 @@ func (our *Input) SetOPP(t *Input) { } func (our *Input) RecoverEffect() { + //println("恢复效果",our.UserID) //根本没释放技能,这些效果全部失效 for _, e := range our.EffectCache { @@ -114,9 +115,10 @@ func (our *Input) RecoverEffect() { } //这时候将被覆盖的效果全部装回来enterturn - for _, e := range our.Effect_Lost { + for _, e := range our.EffectLost { if e.Duration() > 0 || e.Duration() == -1 { - e.Alive(true) + // e.Alive(true) + our.AddEffect(e.GetInput(), e) } } @@ -125,15 +127,18 @@ func (our *Input) RecoverEffect() { func (our *Input) ReactvieEffect() { //根本没释放技能,这些效果全部失效 - for _, e := range our.Effect_Lost { + for _, e := range our.EffectLost { e.Alive(false) + // our.AddEffect(e.GetInput(), e) + } //这时候将被覆盖的效果全部装回来enterturn for _, e := range our.EffectCache { - e.Alive(true) - + // e.Alive(true) + //因为后手方实际上是到了他出手阶段重新添加的结果,而非后手方重新激活效果 + our.AddEffect(e.GetInput(), e) } } @@ -250,7 +255,7 @@ func (our *Input) Parseskill(skill *action.SelectSkillAction) { //t.SetArgs(i, temparg[:args]...) //设置入参 loste := our.AddEffect(our, t) if loste != nil { - our.Effect_Lost = append(our.Effect_Lost, loste) + our.EffectLost = append(our.EffectLost, loste) } // } diff --git a/logic/service/fight/input/interface.go b/logic/service/fight/input/interface.go index 6902e331..c2c27217 100644 --- a/logic/service/fight/input/interface.go +++ b/logic/service/fight/input/interface.go @@ -62,7 +62,7 @@ type Effect interface { Ctx() *Ctx //回合数,然后次数另外维护 Duration(...int) int - Hit(...bool) bool + //Hit(...bool) bool Alive(...bool) bool Stack(...int) int CanStack(...bool) bool diff --git a/logic/service/fight/loop.go b/logic/service/fight/loop.go index af7e082a..57707e73 100644 --- a/logic/service/fight/loop.go +++ b/logic/service/fight/loop.go @@ -39,7 +39,7 @@ func (f *FightC) battleLoop() { break } - println("进入回合") + println("进入回合", f.Round) f.resolveRound(actions[ourID], actions[oppID]) } diff --git a/logic/service/fight/node/node.go b/logic/service/fight/node/node.go index 0dd41ffc..64e0e641 100644 --- a/logic/service/fight/node/node.go +++ b/logic/service/fight/node/node.go @@ -68,16 +68,17 @@ func (e *EffectNode) ID(t ...input.EffectIDCombiner) input.EffectIDCombiner { return e.id } -func (e *EffectNode) Hit(t ...bool) bool { - if len(t) > 0 { - // println("效果命中", e.id.GetEffectType(), e.id.Suffix(), t[0]) - e.hit = t[0] - } +// func (e *EffectNode) Hit(t ...bool) bool { - return e.hit +// if len(t) > 0 { +// // println("效果命中", e.id.GetEffectType(), e.id.Suffix(), t[0]) +// e.hit = t[0] +// } -} +// return e.hit + +// } func (e *EffectNode) CanStack(t ...bool) bool { if len(t) > 0 {