using UnityEngine;
using System.Collections.Generic;

namespace Oxide.Plugins
{
    [Info("No Igniter Drain", "Lincoln", "1.0.4")]
    [Description("Prevent Igniters from damaging themselves while in use.")]

    public class NoIgniterDrain : RustPlugin
    {
        // Perf: reuse list for entity queries
        private readonly List<Igniter> _igniterList = new List<Igniter>();

        private void OnServerInitialized()
        {
            permission.RegisterPermission("NoIgniterDrain.unlimited", this);

            // Perf: use Vis.Entities with reusable list
            _igniterList.Clear();
            Vis.Entities<Igniter>(Vector3.zero, float.MaxValue, _igniterList);
            foreach (var entity in _igniterList)
            {
                OnEntitySpawned(entity);
            }
        }

        private void OnEntitySpawned(Igniter entity)
        {
            var player = entity.OwnerID.ToString();
            if(!permission.UserHasPermission(player, "NoIgniterDrain.unlimited"))
            {
                return;
            }
            else
            {
                entity.SelfDamagePerIgnite = 0f;
            }
        }

        private void Unload()
        {
            // Perf: use Vis.Entities with reusable list to reset igniters
            _igniterList.Clear();
            Vis.Entities<Igniter>(Vector3.zero, float.MaxValue, _igniterList);
            foreach (var entity in _igniterList)
            {
                entity.SelfDamagePerIgnite = 0.5f;
            }
        }
    }
}