Files
bl/logic/service/fight/effect/effect_status.go

64 lines
1.3 KiB
Go
Raw Normal View History

package effect
import (
"blazing/logic/service/fight/info"
"blazing/logic/service/fight/input"
"blazing/logic/service/fight/node"
)
// 施加一个基类effect
type EffectStatus struct {
node.EffectNode
Status info.EnumBattleStatus
}
type StatusNotSkill struct {
EffectStatus
}
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 *StatusNotSkill) {
f.Status = t
input.InitEffect(input.EffectType.Status, int(t), f)
}
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{})
}