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 count int can bool can2 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 } e.can2 = true // t := &Effect71_sub{ // count: 2, // } // 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 } func (e *Effect71) ActionStart(a, b *action.SelectSkillAction) bool { if !e.can2 { return true } //fmt.Println(e.Ctx().SkillEntity) if e.Ctx().SkillEntity == nil { return true } if e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } if e.count <= 0 { e.Alive(false) } e.count-- e.Ctx().SkillEntity.CritRate = 16 return true }