package effect import ( "blazing/logic/service/fight/input" "blazing/logic/service/fight/node" ) // 511 - n%概率威力翻倍 体力低于1/m时概率增加k% type Effect511 struct { node.EffectNode } func (e *Effect511) SkillHit() bool { if e.Ctx().SkillEntity == nil { return true } // 基础概率 baseChance := e.Args()[0].IntPart() // 检查体力是否低于1/m maxHp := e.Ctx().Our.CurrentPet.GetMaxHP() currentHp := e.Ctx().Our.CurrentPet.GetHP() threshold := maxHp.Div(e.Args()[1]) // 1/m chance := baseChance if currentHp.Cmp(threshold) < 0 { // 体力低于阈值,概率增加k% chance += int64(e.Args()[2].IntPart()) } success, _, _ := e.Input.Player.Roll(int(chance), 100) if success { // 威力翻倍 e.Ctx().SkillEntity.XML.Power *= 2 } return true } func init() { input.InitEffect(input.EffectType.Skill, 511, &Effect511{}) }