package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) /** * 对方体力高于自己时才能命中,将对方体力减到和自己相同 */ func init() { input.InitEffect(input.EffectType.Skill, 7, &Effect7{}) } // Effect 7: 对方体力高于自己时才能命中,将对方体力减到和自己相同 type Effect7 struct { node.EffectNode max alpacadecimal.Decimal } func (e *Effect7) SkillHit() bool { if e.Ctx().Opp.CurrentPet.Info.Hp <= e.Ctx().Our.CurrentPet.Info.Hp { e.Ctx().SkillEntity.Accuracy = alpacadecimal.Zero } return true } func (e *Effect7) DamageFloor(t *info.DamageZone) bool { //fmt.Println("Effect7_old", t.Damage.IntPart()) if t.Type == info.DamageType.Red { if e.Ctx().Our.CurrentPet.Info.Hp <= e.Ctx().Opp.CurrentPet.Info.Hp { t.Damage = alpacadecimal.NewFromInt(int64(e.Ctx().Opp.CurrentPet.Info.Hp - e.Ctx().Our.CurrentPet.Info.Hp)) e.max = t.Damage } } // fmt.Println("Effect7_new", t.Damage.IntPart()) return true } func (e *Effect7) 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 }