local PLUGIN = PLUGIN
PLUGIN.name = "Arsenal"
PLUGIN.author = "Refosel"
PLUGIN.description = "Arsenal plugin (skeleton) — выдача оружия, патронов и управление очками снабжения."

ix.util.Include("sh_config.lua")
ix.util.Include("cl_plugin.lua")
ix.util.Include("sv_plugin.lua")


ix.command.Add("test_arsenal", {
	description = "Test arsenal weapon availability.",
	OnRun = function(self, client)
		local plugin = ix.plugin.list and ix.plugin.list["arsenal"]
		if not plugin then return "Plugin not found" end
		
		local char = client:GetCharacter()
		if not char then return "No character" end
		
		client:ChatPrint("--- Arsenal Test for " .. client:Nick() .. " ---")
		local avail = plugin:GetAvailableWeapons(char)
		client:ChatPrint("Available weapons total: " .. table.Count(avail))
		for class, data in pairs(avail) do
			client:ChatPrint(string.format("  [%s] %s (Donate: %s)", class, data.name or "N/A", tostring(data.isDonateVersion or false)))
		end
		client:ChatPrint("--- End Test ---")
	end
})

ix.command.Add("arsenal_supply_set", {
	description = "Set faction supply. Usage: arsenal_supply_set <amount> [faction id]",
	adminOnly = true,
	arguments = {
		ix.type.number,
		ix.type.number
	},
	OnRun = function(self, client, amount, faction)
        if CLIENT then return end
		local plugin = ix.plugin.list and ix.plugin.list["arsenal"]
		if not plugin then return client:Notify("Arsenal plugin not loaded") end

		local fid = faction or client:GetCharacter():GetFaction()
		plugin:SetFactionSupply(fid, math.max(tonumber(amount) or 0, 0))
		client:Notify("Set supply for faction " .. tostring(fid) .. " to " .. tostring(plugin:GetFactionSupply(fid)))
	end
})

ix.command.Add("arsenal_supply_add", {
	description = "Add (or subtract) supply for a faction. Usage: arsenal_supply_add <delta> [faction id]",
	adminOnly = true,
	arguments = {
		ix.type.number,
		ix.type.number
	},
	OnRun = function(self, client, delta, faction)
        if CLIENT then return end
		local plugin = ix.plugin.list and ix.plugin.list["arsenal"]
		if not plugin then return client:Notify("Arsenal plugin not loaded") end

		local fid = faction or client:GetCharacter():GetFaction()
		plugin:AddFactionSupply(fid, tonumber(delta) or 0)
		client:Notify("Faction " .. tostring(fid) .. " supply now: " .. tostring(plugin:GetFactionSupply(fid)))
	end
})
