-- Don't try to edit this file if you're trying to add new NPCs.
-- Just make a new file and copy the format below.

local Category = "Humans + Resistance"

local NPC = {
	Name = "Alyx Vance", 
	Class = "npc_alyx",
	Category = Category,
	Weapons = { "weapon_alyxgun", "weapon_smg1", "weapon_shotgun" }
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Barney Calhoun", 
	Class = "npc_barney",
	Category = Category,
	Weapons = { "weapon_smg1", "weapon_shotgun", "weapon_ar2" }
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Wallace Breen", 
	Class = "npc_breen",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Dog", 
	Class = "npc_dog",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Eli Vance", 
	Class = "npc_eli",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "G-Man", 
	Class = "npc_gman",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

-- Did you know that this MAN can shoot annabelle like he's been doing it his whole life?
local NPC = {
	Name = "Dr. Isaac Kleiner", 
	Class = "npc_kleiner",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Dr. Judith Mossman", 
	Class = "npc_mossman",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

-- I don't trust these Vorts, but I'll let em stay in this category until they mess up
local NPC = {
	Name = "Vortigaunt", 
	Class = "npc_vortigaunt",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = { 
    	Name = "Vortigaunt Slave",
    	Class = "npc_vortigaunt",
    	Category = Category,
    	Model = "models/vortigaunt_slave.mdl"
}
list.Set( "NPC", "VortigauntSlave", NPC )

local NPC = {
	Name = "Rebel", 
	Class = "npc_citizen",
	Category = Category,
	SpawnFlags = SF_CITIZEN_RANDOM_HEAD,
	KeyValues = { citizentype = CT_REBEL },
	Weapons = { "weapon_pistol", "weapon_ar2", "weapon_smg1", "weapon_ar2", "weapon_shotgun" }
}
list.Set( "NPC", "Rebel", NPC )

local NPC = {
	Name = "Odessa Cubbage",
	Class = "npc_citizen",
	Category = Category,
	Model = "models/odessa.mdl",
	KeyValues = { citizentype = CT_UNIQUE }
}
list.Set( "NPC", "npc_odessa", NPC )

local NPC = {
	Name = "Medic", 
	Class = "npc_citizen",
	Category = Category,
	SpawnFlags = SF_CITIZEN_MEDIC,
	KeyValues = { citizentype = CT_REBEL },
	Weapons = { "weapon_pistol", "weapon_smg1", "weapon_ar2", "weapon_shotgun" }
}
list.Set( "NPC", "Medic", NPC )

local NPC = {
	Name = "Refugee", 
	Class = "npc_citizen",
	Category = Category,
	KeyValues = { citizentype = CT_REFUGEE },
	Weapons = { "weapon_pistol", "weapon_smg1" }
}
list.Set( "NPC", "Refugee", NPC )

local NPC = {
	Name = "Citizen", 
	Class = "npc_citizen",
	Category = Category,
	KeyValues = { citizentype = CT_DOWNTRODDEN }
}
list.Set( "NPC", NPC.Class, NPC )

if ( IsMounted( "ep2" ) ) then

	local NPC = { 
		Name = "Uriah",
		Class = "npc_vortigaunt",
		Category = Category,
		Model = "models/vortigaunt_doctor.mdl"
	}
	list.Set( "NPC", "VortigauntUriah", NPC )

	local NPC = {
		Name = "Dr. Arne Magnusson",
		Class = "npc_magnusson",
		Category = Category
	}
	list.Set( "NPC", NPC.Class, NPC )

end

if ( IsMounted( "lostcoast" ) ) then 
	local NPC = {
		Name = "Fisherman",
		Class = "npc_fisherman",
		Category = Category,
		Weapons = { "weapon_oldmanharpoon" }
	}
	list.Set( "NPC", NPC.Class, NPC ) -- Has no death sequence
end


Category = "Zombies + Enemy Aliens"

local NPC = {
	Name = "Zombie", 
	Class = "npc_zombie",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Zombie Torso", 
	Class = "npc_zombie_torso",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Poison Zombie", 
	Class = "npc_poisonzombie",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Antlion", 
	Class = "npc_antlion",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Antlion Guard", 
	Class = "npc_antlionguard",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Barnacle", 
	Class = "npc_barnacle",
    Category = Category,
	OnCeiling = true,
	Offset = 2
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Fast Zombie", 
	Class = "npc_fastzombie",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Headcrab", 
	Class = "npc_headcrab",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Poison Headcrab", 
	Class = "npc_headcrab_black",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Fast Headcrab", 
	Class = "npc_headcrab_fast",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Fast Zombie Torso", 
	Class = "npc_fastzombie_torso",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

if ( IsMounted( "ep2" ) ) then
	local NPC = {
			Name = "Antlion Guardian",	
			Class = "npc_antlionguard",		
			Category = Category, 
			KeyValues = { cavernbreed = 1, incavern = 1 },	
			Material = "Models/antlion_guard/antlionGuard2" 
	}
	list.Set( "NPC", "npc_antlionguardian", NPC )

	local NPC = {
		Name = "Antlion Grub", 
		Class = "npc_antlion_grub",
		Category = Category,
			NoDrop = true,
			Offset = 1
	}
	list.Set( "NPC", NPC.Class, NPC )

	local NPC = {
		Name = "Antlion Worker", 
		Class = "npc_antlion_worker",
		Category = Category
	}
	list.Set( "NPC", NPC.Class, NPC )
	game.AddParticles( "particles/antlion_worker.pcf" )

	local NPC = {
		Name = "Zombine", 
		Class = "npc_zombine",
		Category = Category
	}
	list.Set( "NPC", NPC.Class, NPC )
end


Category = "Animals"

local NPC = {
	Name = "Father Grigori", 
	Class = "npc_monk",
	Category = Category,
	Weapons = { "weapon_annabelle" }
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Crow", 
	Class = "npc_crow",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Pigeon", 
	Class = "npc_pigeon",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Seagull", 
	Class = "npc_seagull",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )


Category = "Combine"

local NPC = {
	Name = "Metro Police", 
	Class = "npc_metropolice",
	Category = Category,
	Weapons = { "weapon_stunstick", "weapon_pistol", "weapon_smg1" }
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Rollermine", 
	Class = "npc_rollermine",
	Category = Category,
	Offset = 16
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Turret", 
	Class = "npc_turret_floor",
	Category = Category,
	OnFloor = true,
	TotalSpawnFlags = 0,
	Rotate = Angle( 0, 180, 0 ),
	Offset = 2
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Combine Soldier", 
	Class = "npc_combine_s",
	Category = Category,
	Model = "models/combine_soldier.mdl",
	Weapons = { "weapon_smg1", "weapon_ar2" }
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = { 
    Name = "Shotgun Soldier",
	Class = "npc_combine_s",
    Category = Category,
	Model = "models/combine_soldier.mdl",
    Skin = 1,
	Weapons = { "weapon_shotgun" }
}
list.Set( "NPC", "ShotgunSoldier", NPC )

local NPC = {
	Name = "Prison Guard", 
	Class = "npc_combine_s",
	Category = Category,
	Model = "models/combine_soldier_prisonguard.mdl",
	Weapons = { "weapon_smg1", "weapon_ar2" }
}
list.Set( "NPC", "CombinePrison", NPC )

local NPC = { 
    Name = "Prison Shotgun Guard",
	Class = "npc_combine_s",
    Category = Category,
    Model = "models/combine_soldier_prisonguard.mdl",
    Skin = 1,
	Weapons = { "weapon_shotgun" }
}	
list.Set( "NPC", "PrisonShotgunner", NPC )

local NPC = {
	Name = "Combine Elite", 
	Class = "npc_combine_s",
	Category = Category,
	Model = "models/combine_super_soldier.mdl",
	Weapons = { "weapon_ar2" }
}
list.Set( "NPC", "CombineElite", NPC )

local NPC = {
	Name = "City Scanner", 
	Class = "npc_cscanner",
	Category = Category,
	Offset = 20
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Shield Scanner", 
	Class = "npc_clawscanner",
	Category = Category,
	Offset = 20
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Combine Gunship", 
	Class = "npc_combinegunship",
	Category = Category,
	Offset = 300
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Combine Dropship", 
	Class = "npc_combinedropship",
	Category = Category,
	Offset = 300
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Hunter-Chopper", 
	Class = "npc_helicopter",
	Category = Category,
	Offset = 300
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Camera", 
	Class = "npc_combine_camera",
	Category = Category,
	OnCeiling = true,
	Offset = 2
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Ceiling Turret", 
	Class = "npc_turret_ceiling",
	Category = Category,
	SpawnFlags = 32, -- SF_NPC_TURRET_AUTOACTIVATE
	OnCeiling = true,
	Offset = 0
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Strider", 
	Class = "npc_strider",
	Category = Category,
	Offset = 100
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Stalker", 
	Class = "npc_stalker",
	Category = Category,
	Offset = 10
}
list.Set( "NPC", NPC.Class, NPC )

local NPC = {
	Name = "Manhack", 
	Class = "npc_manhack",
	Category = Category
}
list.Set( "NPC", NPC.Class, NPC )

if ( IsMounted( "ep2" ) ) then 
	local NPC = {
		Name = "Hunter", 
		Class = "npc_hunter",
		Category = Category
	}
	list.Set( "NPC", NPC.Class, NPC )
end

if ( IsMounted( "hl1" ) ) then

	Category = "Half-Life: Source"

	local NPC = { Name = "Alien Grunt", Class = "monster_alien_grunt", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	local NPC = { Name = "Nihilanth", Class = "monster_nihilanth", Category = Category, Offset = 1200 } list.Set( "NPC", NPC.Class, NPC )
	local NPC = { Name = "Tentacle", Class = "monster_tentacle", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	local NPC = { Name = "Alien Slave", Class = "monster_alien_slave", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	local NPC = { Name = "Gonarch", Class = "monster_bigmomma", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	local NPC = { Name = "Bullsquid", Class = "monster_bullchicken", Category = Category	} list.Set( "NPC", NPC.Class, NPC )
	local NPC = { Name = "Gargantua", Class = "monster_gargantua", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	local NPC = { Name = "Assassin", Class = "monster_human_assassin", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	local NPC = { Name = "Baby Crab", Class = "monster_babycrab", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	local NPC = { Name = "Grunt", Class = "monster_human_grunt", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	local NPC = { Name = "Cockroach", Class = "monster_cockroach", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	local NPC = { Name = "Houndeye", Class = "monster_houndeye", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	local NPC = { Name = "Scientist", Class = "monster_scientist", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	local NPC = { Name = "Snark", Class = "monster_snark", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	local NPC = { Name = "Zombie", Class = "monster_zombie", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	local NPC = { Name = "Headcrab", Class = "monster_headcrab", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	local NPC = { Name = "Controller", Class = "monster_alien_controller", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	local NPC = { Name = "Security Officer", Class = "monster_barney", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	
	--local NPC = { Name = "Turret", Class = "monster_turret", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	--local NPC = { Name = "Mini Turret", Class = "monster_miniturret", Category = Category } list.Set( "NPC", NPC.Class, NPC )
	--local NPC = { Name = "Sentry", Class = "monster_sentry", Category = Category, Offset = -20, OnFloor = true } list.Set( "NPC", NPC.Class, NPC )

end
