package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" "blazing/logic/service/fight/node" "sync" "github.com/alpacahq/alpacadecimal" ) /** * m~n回合每回合反弹对手1/k的伤害 */ func init() { input.InitEffect(input.EffectType.Skill, 21, &Effect21{}) } type Effect21 struct { node.EffectNode l sync.Once } // 使用技能时,不可被继承,继承Miss和Hit就行 func (e *Effect21) OnSkill() bool { e.l.Do(func() { //保证技能使用后初始化一次就行 statIndex := e.SideEffectArgs[0] endindex := e.SideEffectArgs[1] //回合产生 n := int(e.Input.FightC.GetRand().Int31n(int32(endindex-statIndex+1))) + statIndex e.Duration(n) //产生回合收益 //e.Input.AddEffect(input.Geteffect(input.EffectType.Status, int(info.PetStatus.Tired))) }) return true } // 被攻击时候反弹 func (e *Effect21) Skill_Use_ex() bool { //不是技能 if e.Ctx().SkillEntity == nil { return true } e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Fixed, Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Opp.SumDamage.IntPart())).Div(alpacadecimal.NewFromInt(int64(e.SideEffectArgs[0]))), }) return true }