refactor(fight/effect): 重构伤害处理逻辑,统一使用DamageZone管理伤害值并优化Effect接口,移除过时方法
This commit is contained in:
@@ -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{})
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user