From a4b2e5da9e82d1ac4baf61f6e3cb01ab8067741e Mon Sep 17 00:00:00 2001 From: 1 <1@72wo.cn> Date: Wed, 24 Sep 2025 20:51:42 +0000 Subject: [PATCH] =?UTF-8?q?refactor(fight/effect):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E5=A8=81=E5=8A=9B=E8=AE=A1=E7=AE=97=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E4=BC=98=E5=8C=96=E6=9A=B4=E5=87=BB=E5=88=A4?= =?UTF-8?q?=E5=AE=9A=E6=96=B9=E5=BC=8F=E5=B9=B6=E6=96=B0=E5=A2=9EBeforeSki?= =?UTF-8?q?ll=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logic/service/fight/effect/effect_damage.go | 9 +++++---- logic/service/fight/input/attr.go | 14 +++++++++++++- logic/service/fight/input/effecti.go | 5 +++-- logic/service/fight/node/skill.go | 4 +++- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/logic/service/fight/effect/effect_damage.go b/logic/service/fight/effect/effect_damage.go index 9026cb12..64e95593 100644 --- a/logic/service/fight/effect/effect_damage.go +++ b/logic/service/fight/effect/effect_damage.go @@ -19,9 +19,10 @@ func (e *Effect0) TurnEnd(opp *input.Input) { // 使用技能时 func (e *Effect0) OnSkill(opp *input.Input, skill *info.SkillEntity) { + e.Input.Skill(skill, func() { //变威力作用 - //变威力作用 - e.Stack(int(e.Input.CalculatePower(opp, skill).IntPart())) + e.Stack(int(e.Input.CalculatePower(opp, skill).IntPart())) + }) e.Input.Exec(func(t input.Effect) bool { //计算暴击率加成 @@ -38,7 +39,7 @@ func (this *Effect0) BeforHit(opp *input.Input, skill *info.SkillEntity) { skill.AttackTimeC(int(opp.GetProp(5, true))) //计算命中 skill.Crit = 0 CritRate := utils.Max(skill.CritRate, 1) - CritRateR := this.Input.FightC.GetRand().Int31n(16) + //CritAtkFirst: 先出手时必定致命一击; 默认: 0 if skill.CritAtkFirst != 0 && this.Input.First { CritRate = 16 @@ -57,7 +58,7 @@ func (this *Effect0) BeforHit(opp *input.Input, skill *info.SkillEntity) { } //todo 暴击伤害 - if CritRateR <= int32(CritRate) { + if t, _, _ := this.Input.Player.Roll(625*CritRate, 10000); t { skill.Crit = 1 } diff --git a/logic/service/fight/input/attr.go b/logic/service/fight/input/attr.go index 813fec14..8d329ce2 100644 --- a/logic/service/fight/input/attr.go +++ b/logic/service/fight/input/attr.go @@ -58,13 +58,25 @@ func (i *Input) Prop(in *Input, f func()) { i.CurrentPet = oldour //恢复 //opp.CurrentPet = oldouo //恢复 } +func (i *Input) Skill(in *info.SkillEntity, f func()) { + oldour := deepcopy.Copy(i.CurrentPet).(*info.SkillEntity) + //oldouo := deepcopy.Copy(opp.CurrentPet).(*info.BattlePetEntity) + i.Exec(func(t Effect) bool { //属性获取前 + + t.BeforeSkill(i,in) //使XX为XX + return true + }) + + in = oldour //恢复 + +} // 计算技能威力 func (i *Input) CalculatePower(deftype *Input, skill *info.SkillEntity) decimal.Decimal { //威力+区 //威力*区 - //todo 待修复input输入 + // 1. 计算等级因子 (level * 0.4 + 2) levelFactor := decimal.NewFromInt(int64(i.CurrentPet.Info.Level)). Mul(decimal.NewFromFloat(0.4)).Add(decimal.NewFromInt(2)) diff --git a/logic/service/fight/input/effecti.go b/logic/service/fight/input/effecti.go index 3a622a39..b8387ab6 100644 --- a/logic/service/fight/input/effecti.go +++ b/logic/service/fight/input/effecti.go @@ -10,7 +10,8 @@ type Effect interface { OnTurnStart(opp *Input) //回合开始 UseSkill(opp *Input) bool //使用技能 可以取消用技能节点 - + BeforeSkill(opp *Input, skill *info.SkillEntity) //闪避率计算,,实际上是修改命中的判断 + OnSkill(opp *Input, skill *info.SkillEntity) //闪避率计算,,实际上是修改命中的判断 // OnSkillPP() bool //技能PP减少节点 // OnCritPreDamage() bool //暴击判定成功且伤害计算前触发 @@ -26,7 +27,7 @@ type Effect interface { CalculateDamage(opp *Input, skill *info.SkillEntity) //击判定成功且伤害计算前触发 BeforeCalculateDamage(opp *Input, skill *info.SkillEntity) // 最终伤害计算前触发 - OnSkill(opp *Input, skill *info.SkillEntity) //闪避率计算,,实际上是修改命中的判断 + BeforHit(opp *Input, skill *info.SkillEntity) // 技能命中前触发 diff --git a/logic/service/fight/node/skill.go b/logic/service/fight/node/skill.go index 34f1ce19..226eda5d 100644 --- a/logic/service/fight/node/skill.go +++ b/logic/service/fight/node/skill.go @@ -18,4 +18,6 @@ func (e *EffectNode) OnSkill(opp *input.Input, skill *info.SkillEntity) { func (e *EffectNode) OnSkillPP() bool { return true } - +func (e *EffectNode) BeforeSkill(opp *input.Input, skill *info.SkillEntity) { + +}