refactor(fight/effect): 重构伤害处理逻辑,统一使用DamageZone管理伤害值并优化Effect接口,移除过时方法

This commit is contained in:
1
2025-09-26 02:09:33 +00:00
parent 6a3a8ba20f
commit 728f3a52d6
10 changed files with 171 additions and 199 deletions

View File

@@ -12,25 +12,52 @@ type EffectStatus struct {
Status info.EnumBattleStatus
}
type EffectStatusNotSkill struct {
type StatusNotSkill struct {
EffectStatus
}
func (e *EffectStatusNotSkill) CanSkill(opp *input.Input) bool {
func (e *StatusNotSkill) CanSkill(opp *input.Input) bool {
return false
}
// 扣血类
type DrainHP struct {
EffectStatus
}
func (e *DrainHP) OnTurnStart(opp *input.Input) {
e.Input.Pet(e.Input, func() { //我方取我方
e.Input.CurrentPet.Info.Hp = -e.Input.CurrentPet.Info.MaxHp / 8
})
}
// 被寄生种子 扣血类
type StatusDrainedHP struct {
DrainHP
}
func (e *StatusDrainedHP) OnTurnStart(opp *input.Input) {
e.DrainHP.OnTurnStart(opp)
opp.Pet(e.Input, func() { //我方取我方
opp.CurrentPet.Info.Hp = -e.Input.CurrentPet.Info.MaxHp / 8
})
}
func init() {
//麻痹,疲惫,害怕,石化,都是无法行动
tt := func(t info.EnumBattleStatus, f *EffectStatusNotSkill) {
tt := func(t info.EnumBattleStatus, f *StatusNotSkill) {
f.Status = t
input.InitEffect(input.EffectType.Status, int(t), f)
}
tt(info.PetStatus.Paralysis, &EffectStatusNotSkill{})
tt(info.PetStatus.Tired, &EffectStatusNotSkill{})
tt(info.PetStatus.Sleep, &EffectStatusNotSkill{})
tt(info.PetStatus.Petrified, &EffectStatusNotSkill{})
input.InitEffect(input.EffectType.Status, int(info.PetStatus.DrainHP), &EffectStatus{}) //寄生种子
tt(info.PetStatus.Paralysis, &StatusNotSkill{})
tt(info.PetStatus.Tired, &StatusNotSkill{})
tt(info.PetStatus.Sleep, &StatusNotSkill{})
tt(info.PetStatus.Petrified, &StatusNotSkill{})
}