namespace PkmnLib.Plugin.Gen7.Scripts.Battle;

[Script(ScriptCategory.Battle, "magic_room")]
public class MagicRoomEffect : Script, IScriptOnBeforeAnyHookInvoked, IScriptOnEndTurn, IScriptPreventHeldItemConsume
{
    private int _turnsLeft = 5;

    /// <inheritdoc />
    public void PreventHeldItemConsume(IPokemon pokemon, IItem heldItem, ref bool prevented)
    {
        prevented = true;
    }

    /// <inheritdoc />
    public void OnBeforeAnyHookInvoked(ref List<ScriptCategory>? suppressedCategories)
    {
        suppressedCategories ??= [];
        suppressedCategories.Add(ScriptCategory.ItemBattleTrigger);
    }

    /// <inheritdoc />
    public void OnEndTurn(IScriptSource owner, IBattle battle)
    {
        if (_turnsLeft > 0)
            _turnsLeft--;
        else
            RemoveSelf();
    }
}