refactor(fight/effect): 重构技能威力计算逻辑,优化暴击判定方式并新增BeforeSkill接口

This commit is contained in:
1
2025-09-24 20:51:42 +00:00
parent 726a2d6cb5
commit a4b2e5da9e
4 changed files with 24 additions and 8 deletions

View File

@@ -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))

View File

@@ -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) // 技能命中前触发