package effect import ( "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" "blazing/logic/service/fight/node" ) // ----------------------------------------------------------- // 通用状态效果(例如 麻痹 / 中毒 / 疲惫 / 混乱 等) // ----------------------------------------------------------- type Effect1605 struct { node.EffectNode Status info.EnumPetStatus // 要施加的状态类型 } func init() { input.InitEffect(input.EffectType.Skill, 1605, &Effect1605{}) } // ----------------------------------------------------------- // 技能触发时调用 // ----------------------------------------------------------- func (e *Effect1605) OnSkill() bool { if !e.Hit() { return true } // n% 触发概率(默认 SideEffectArgs[0]) chance := e.SideEffectArgs[0] success, _, _ := e.Input.Player.Roll(chance, 100) if !success { return true } duration := int(e.Input.FightC.GetRand().Int31n(2)) // 默认随机 2~3 回合 duration++ // 获取状态效果 eff := input.Geteffect(input.EffectType.Status, int(e.SideEffectArgs[1])) if eff == nil { return true } eff.Duration(duration) eff.SetArgs(e.Ctx().Our) //输入参数是对方 e.Ctx().Opp.AddEffect(e.Ctx().Our, eff) return true }