package effect import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" "blazing/logic/service/fight/node" "github.com/alpacahq/alpacadecimal" ) // 435 - 牺牲自己,使下回合出场的精灵首次攻击必定命中,必定先手 type Effect435 struct { node.EffectNode can bool can2 bool } func (e *Effect435) SetArgs(t *input.Input, a ...int) { //e.CanStack(-1)//后续的不会顶掉这个效果 e.EffectNode.SetArgs(t, a...) e.Duration(-1) //次数类,无限回合 } // 命中之后 func (e *Effect435) OnSkill() bool { e.can = true e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.MaxHp)), }) e.Ctx().Our.CurrentPet.NotAlive = true return true } func (e *Effect435) SwitchOut(in *input.Input) bool { return true } func (e *Effect435) SwitchIn(in *input.Input) bool { // 1. 检查效果是否生效(当次攻击有效) if !e.can { return true } // if in != e.Ctx().Our { return true } e.can2 = true return true } func (e *Effect435) ComparePre(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) bool { if !e.can2 { return true } if fattack == nil { return true } //先手是自己 if fattack.PlayerID == e.Ctx().Our.UserID { return true } if sattack == nil { return true } if sattack == nil { return true } if sattack.SkillEntity == nil { return true } //对调 sattack.SkillEntity.Priority += 7 e.Alive(false) return true } func init() { input.InitEffect(input.EffectType.Skill, 435, &Effect435{}) }