package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) /** * 伤害大于对方体力时会余下1体力 */ func init() { input.InitEffect(input.EffectType.Skill, 8, &Effect8{}) } type Effect8 struct { node.EffectNode max alpacadecimal.Decimal } // DamageFloor 伤害落实前触发,限制最大伤害 func (e *Effect8) DamageFloor(t *info.DamageZone) bool { if e.Ctx().Opp.CurrentPet.GetHP().IntPart() <= 1 { return true } if t.Type == info.DamageType.Red { t.Damage = alpacadecimal.Min(t.Damage, e.Ctx().Opp.CurrentPet.GetHP().Sub(alpacadecimal.NewFromInt(1))) e.max = t.Damage } return true } func (e *Effect8) DamageLock(t *info.DamageZone) bool { //fmt.Println("Effect7_old", t.Damage.IntPart()) if t.Type == info.DamageType.Red { if t.Damage.Cmp(e.max) == 1 { t.Damage = e.max } } // fmt.Println("Effect7_new", t.Damage.IntPart()) return true }