Files
bl/logic/service/fight/effect/effect_power_doblue.go
昔念 142ef11a99 ```
refactor(fight): 统一战斗系统函数命名规范

统一了boss技能和效果系统中的函数命名规范,将下划线命名方式
改为驼峰命名方式,提高代码一致性和可读性。

函数名变更包括:
- Prop_Befer -> PropBefer
- Damage_DIV_ex -> DamageDivEx
- Compare_Pre -> ComparePre
- Skill_Hit_ex -> SkillHit_ex
- Damage_SUB_ex -> DamageSubEx
- Skill_Hit -> SkillHit
- DamageLock_ex -> DamageLock_ex

同时更新了相关注释中的函数名引用,
2026-01-04 22:10:34 +08:00

104 lines
2.7 KiB
Go

package effect
import (
"blazing/logic/service/fight/info"
"blazing/logic/service/fight/input"
"blazing/logic/service/fight/node"
)
// ---- 全局函数表自动管理 ----
var statusFuncRegistry = newStatusFuncRegistry()
type statusFuncRegistryType struct {
funcs map[int]func(*input.Input, *input.Input) bool
}
func newStatusFuncRegistry() *statusFuncRegistryType {
return &statusFuncRegistryType{funcs: make(map[int]func(*input.Input, *input.Input) bool)}
}
func (r *statusFuncRegistryType) Register(id int, f func(*input.Input, *input.Input) bool) {
r.funcs[id] = f
}
func (r *statusFuncRegistryType) Get(id int) func(*input.Input, *input.Input) bool {
return r.funcs[id]
}
// ---- Effect96 ----
type Effect96 struct {
node.EffectNode
StatusID int
}
func (e *Effect96) SkillHit() bool {
if f := statusFuncRegistry.Get(e.StatusID); f != nil && f(e.Ctx().Our, e.Ctx().Opp) {
e.Ctx().SkillEntity.Power *= 2
}
return true
}
// ---- 注册所有效果 ----
func init() {
registerStatusFunc(2, func(i, o *input.Input) bool {
return o.CurrentPet.Info.Hp < (o.CurrentPet.Info.MaxHp / 2)
})
registerStatusFunc(30, func(i, o *input.Input) bool {
return !i.FightC.IsFirst(i.Player)
})
registerStatusFunc(40, func(i, o *input.Input) bool {
return i.FightC.IsFirst(i.Player)
})
registerStatusFunc(64, func(i, o *input.Input) bool {
if i.StatEffect_Exist(info.PetStatus.Burned) {
return true
}
if i.StatEffect_Exist(info.PetStatus.Frozen) {
return true
}
if i.StatEffect_Exist(info.PetStatus.Poisoned) {
return true
}
return false
})
registerStatusFunc(96, func(i, o *input.Input) bool {
return o.StatEffect_Exist(info.PetStatus.Burned)
})
registerStatusFunc(97, func(i, o *input.Input) bool {
return o.StatEffect_Exist(info.PetStatus.Frozen)
})
registerStatusFunc(102, func(i, o *input.Input) bool {
return o.StatEffect_Exist(info.PetStatus.Paralysis)
})
registerStatusFunc(132, func(i, o *input.Input) bool {
return i.CurrentPet.Info.Hp < o.CurrentPet.Info.Hp
})
registerStatusFunc(168, func(i, o *input.Input) bool {
return o.StatEffect_Exist(info.PetStatus.Sleep)
})
registerStatusFunc(401, func(i, o *input.Input) bool {
return i.CurrentPet.PetInfo.Type == o.CurrentPet.PetInfo.Type
})
}
type Effect129 struct {
node.EffectNode
StatusID int
}
func (e *Effect129) SkillHit() bool {
if e.Ctx().Opp.CurrentPet.Gender != e.SideEffectArgs[0] {
return true
}
e.Ctx().SkillEntity.Power *= 2
return true
}
// 小助手函数,让注册看起来更自然
func registerStatusFunc(id int, fn func(*input.Input, *input.Input) bool) {
statusFuncRegistry.Register(id, fn)
input.InitEffect(input.EffectType.Skill, id, &Effect96{StatusID: id})
}