using PkmnLib.Plugin.Gen7.Scripts.Utils; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "metronome")] public class Metronome : Script { /// public override void ChangeMove(IMoveChoice choice, ref StringKey moveName) { var battleData = choice.User.BattleData; if (battleData == null) return; var library = choice.User.Library; var moveLibrary = library.StaticLibrary.Moves; var retryCount = 0; while (true) { // Breaker for infinite loop. The odds that we'd accidentally roll a non-copyable move 100 times in a row // is extremely unlikely, unless the loaded move library only contains non-copyable moves. // This is a failsafe. if (retryCount > 100) throw new Exception("Metronome failed to find a valid move after 100 attempts."); var randomMove = moveLibrary.GetRandom(battleData.Battle.Random); if (!randomMove.CanCopyMove()) { retryCount++; continue; } moveName = randomMove.Name; break; } } }