package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" "blazing/logic/service/fight/node" "github.com/shopspring/decimal" ) // 施加一个基类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.Damage(input.Ctx{ Input: opp, DamageZone: &info.DamageZone{ Type: info.DamageType.Red, Damage: decimal.NewFromUint64(uint64(opp.CurrentPet.Info.MaxHp)). Div(decimal.NewFromInt(8)), }, }) } // 被寄生种子 扣血类 type StatusDrainedHP struct { DrainHP } func (e *StatusDrainedHP) OnTurnStart(opp *input.Input) { e.DrainHP.OnTurnStart(opp) 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{}) }