using System.Linq; using PkmnLib.Plugin.Gen7.Scripts.Pokemon; namespace PkmnLib.Plugin.Gen7.Scripts.Moves; [Script(ScriptCategory.Move, "encore")] public class Encore : Script { /// public override void OnSecondaryEffect(IExecutingMove move, IPokemon target, byte hit) { var battle = target.BattleData?.Battle; if (battle == null) return; var currentTurn = battle.ChoiceQueue!.LastRanChoice; var lastMove = battle.PreviousTurnChoices .SelectMany(x => x) .OfType() .TakeWhile(x => x != currentTurn) .LastOrDefault(x => x.User == target); if (lastMove == null) { move.GetHitData(target, hit).Fail(); return; } var effect = new EncoreEffect(target, lastMove.ChosenMove.MoveData.Name, 3); target.Volatile.Add(effect); } }