46 lines
847 B
Go
46 lines
847 B
Go
package effect
|
|
|
|
import (
|
|
"blazing/logic/service/fight/input"
|
|
"blazing/logic/service/fight/node"
|
|
|
|
"github.com/gogf/gf/v2/util/grand"
|
|
)
|
|
|
|
// Effect 583: 使对手随机{0}项技能的PP值归零
|
|
type Effect583 struct {
|
|
node.EffectNode
|
|
}
|
|
|
|
func (e *Effect583) OnSkill() bool {
|
|
skills := e.Ctx().Opp.CurrentPet.Info.SkillList
|
|
if len(skills) == 0 {
|
|
return true
|
|
}
|
|
|
|
count := int(e.Args()[0].IntPart())
|
|
if count <= 0 {
|
|
return true
|
|
}
|
|
if count > len(skills) {
|
|
count = len(skills)
|
|
}
|
|
|
|
indexes := make([]int, len(skills))
|
|
for i := range indexes {
|
|
indexes[i] = i
|
|
}
|
|
|
|
for i := 0; i < count; i++ {
|
|
j := i + grand.Intn(len(indexes)-i)
|
|
indexes[i], indexes[j] = indexes[j], indexes[i]
|
|
e.Ctx().Opp.CurrentPet.Info.SkillList[indexes[i]].PP = 0
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
func init() {
|
|
input.InitEffect(input.EffectType.Skill, 583, &Effect583{})
|
|
}
|