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" ) /** * 自己牺牲(体力降到0), 使下一只出战精灵在前两回合内必定致命一击 */ type Effect71 struct { node.EffectNode can bool } func (e *Effect71) SwitchOut(in *input.Input) bool { return true } func init() { input.InitEffect(input.EffectType.Skill, 71, &Effect71{}) } func (e *Effect71) SetArgs(t *input.Input, a ...int) { //e.CanStack(-1)//后续的不会顶掉这个效果 e.EffectNode.SetArgs(t, a...) e.Duration(-1) //次数类,无限回合 } // 命中之后 func (e *Effect71) 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 *Effect71) SwitchIn(in *input.Input) bool { // 1. 检查效果是否生效(当次攻击有效) if !e.can { return true } if in != e.Ctx().Our { return true } t := &Effect71_sub{} t.Duration(1) tt := e.ID() tt.SetEffectType(input.EffectType.Sub) t.ID(tt) e.Ctx().Our.AddEffect(e.Ctx().Our, t) e.Alive(false) return true } type Effect71_sub struct { node.EffectNode } func (e *Effect71_sub) ActionStart(a, b *action.SelectSkillAction) bool { //fmt.Println(e.Ctx().SkillEntity) if e.Ctx().SkillEntity == nil { return true } if e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } e.Ctx().SkillEntity.CritRate = 16 return true }