// ----------------------------------------------------------------------
// Suicide Barrels!
// Coded by Lobe, based on the Gmod10/Gmod9 game-mode!

// In Suicide Barrels there are 2 teams, Barrels and Humans.
// The object of the game for the humans is to kill the barrels, the object of the
// barrels is to suicide bomb the humans. The enviroment is filled with fake explosive barrels,
// so the player barrels can blend in and the humans never know which barrel is a player and which are props.

// Maps need to be prefixed with sb_
// If you are using Mani, please update your maplist file, and remove any maps not prefixed with sb_
// Also remove the 'es_load sbmanager' from your config file (Only if you are running Mani)

// Note:
// If you are having trouble with Mani and EST, please run Mani through MetaMod

// Thanks to:
// -SuperDave
// -People on the IRC server
// -VashD & airservers.com
// -TIM3PORT

block load
{
	es_set sb_version "Suicide Barrels Version 0.1"
	es_makepublic sb_version
	es_set sb_teamvar 0
	es_xset sb_handle 0
	es_set sb_barrelnum 0
	es_set sb_humannum 0
	es_set sb_oldplayerid server_var(mp_playerid)
	es_set sb_tempdeaths 0
	mp_playerid 1
	mp_roundtime 25
	es_msg #multi #green[Suicide Barrels]#lightgreen The script has been loaded!
	es echo Loaded server_var(sb_version)
}

event player_say
{
	// There are two commands.
	// First is !swapme
	// Second is !help
	if (event_var(text) equalto "!help") do
	{
		// Ok, so he wants help. Lets see what team he is on
		if (event_var(es_userteam) equalto 2) do
		{
			// Ok, its a barrel
			es_menu 25 event_var(userid) "Suicide Barrels Help\nCreated by Lobe\n \nBarrel Help:\nYou are a barrel. You should blend in perfectly well\nwith your surroundings. Your goal is to sneak up to\nunsuspecting humans and explode, killing them!\nTo explode, simply jump!\nTips: Humans can see you turning!"
		}
		else do
		{
			if (event_var(es_userteam) equalto 3) do
			{
				// So its a human
				es_menu 25 event_var(userid) "Suicide Barrels Help\nCreated by Lobe\n \nHuman Help:\nYou are a human, who finds himself trapped in a hellish\nnightmare! Your only weapon: A 'BarrelSlayer' gun, with 1 bullet per reload!\nYour mission: Survive!\nTips: Dont be to eager with your shots, and dont forget to\nlook behind you!"
			}
			else do
			{
				es_tell event_var(userid) #green [Suicide Barrels] You must join a team first...
			}
		}
	}
	if (event_var(text) equalto "!swapme") do
	{
		if (event_var(es_userteam) equalto 2) do
		{
			// So a barrel wants to swap teams
			// Ok. We need to get the player counts of the Barrels and humans, and compare them
			es_set sb_barrelnum 0
			es_set sb_humannum 0
			es_getplayercount sb_barrelnum 2
			es_getplayercount sb_humannum 3
			if (server_var(sb_barrelnum) < server_var(sb_humannum)) do
			{
				// So there are more barrels than humans.
				// Because the player is a barrel, we cant switch him
				es_tell event_var(userid) #green [Suicide Barrels] You cannot switch teams! The humans outnumber the barrels!
			}
			else do
			{
				// Ok, lets see. There are not more humans than barrels
				if (server_var(sb_barrelnum) equalto server_var(sb_humannum)) do
				{
					// Ok, so there are equal teams. We cant swap him!
					es_tell event_var(userid) #green [Suicide Barrels] You cannot switch teams! There are equal teams!
				}
				else do
				{
					// Ok, so there are unbalanced teams. Lets swap him!
					es_tell event_var(userid) #green [Suicide Barrels] The teams are unbalanced! You have been swapped to the Humans
					es est_Team event_var(userid) 3 1
				}
			}
		}
		else do
		{
			if (event_var(es_userteam) equalto 3) do
			{
				// So a human wants to swap
				es_set sb_barrelnum 0
				es_set sb_humannum 0
				es_getplayercount sb_barrelnum 2
				es_getplayercount sb_humannum 3
				if (server_var(sb_barrelnum) > server_var(sb_humannum)) do
				{
					es_tell event_var(userid) #green [Suicide Barrels] You cannot switch teams! The barrels outnumber the humans!
				}
				else do
				{
					if (server_var(sb_barrelnum) equalto server_var(sb_humannum)) do
					{
						es_tell event_var(userid) #green [Suicide Barrels] You cannot switch teams! There are equal teams!
					}
					else do
					{
						es_tell event_var(userid) #green [Suicide Barrels] The teams are unbalanced! You have been swapped to the Barrels
						es est_Team event_var(userid) 2 1
					}
				}
			}
			else do
			{
				es_tell event_var(userid) #green [Suicide Barrels] You must be in a team to swap...
			}
		}
	}
}

event player_death
{
	if (event_var(es_userteam) equalto 2) do
	{
		es_delayed 3 est_spawn event_var(userid) 1
	}
	if (event_var(es_userteam) equalto 3) do
	{
		es_delayed 3 est_spawn event_var(userid) 1
		es_delayed 3 es_fire event_var(userid) cs_ragdoll kill
	}
}

event player_spawn
{
	es est_StripPlayer event_var(userid) 1
	if (event_var(es_userteam) equalto 2) do
	{
		es est_restrictall event_var(userid)
		es playerset speed event_var(userid) 1.5
		es playerset model event_var(userid) models/props_c17/oildrum001_explosive.mdl
		es_fire event_var(userid) !self addoutput "health 1"
		es_tell event_var(userid) #green [Suicide Barrels] Jump to explode and kill all the humans near you!
	}

	if (event_var(es_userteam) equalto 3) do
	{
		es est_restrictall event_var(userid)
		es est_unrestrict event_var(userid) usp
		es_give event_var(userid) weapon_usp
		es_fire event_var(userid) !self addoutput "health 1"
	}
}

event item_pickup
{
	if (event_var(es_userteam) notequalto 3) do
	{
		es est_DropWeapon event_var(userid) weapon_usp
		es est_DropWeapon event_var(userid) weapon_knife
	}
}

event player_jump
{
	if (event_var(es_userteam) equalto 2) do
	{
		es_fire event_var(userid) env_explosion kill
		es_give event_var(userid) env_explosion
		es_fire event_var(userid) env_explosion addoutput "imagnitude 200"
		es_xset sb_handle 0
		es_getplayerhandle sb_handle event_var(userid)
		es_setindexprop server_var(eventscripts_lastgive) CBaseEntity.m_hOwnerEntity server_var(sb_handle)
		// Set the kills
		es est_KillAdd event_var(userid) 1
		es_set sb_tempdeaths 0
		es est_GetKills sb_tempdeaths event_var(userid)
		es_math sb_tempdeaths - 1
		es est_DeathSet event_var(userid) server_var(sb_tempdeaths)
		// Boom!
		es_fire event_var(userid) env_explosion explode
		es_tell event_var(userid) #green [Suicide Barrels] BOOM! You exploded!
	}
}

block unload
{
	es_set sb_teamvar 0
	es_xset sb_handle 0
	es_set sb_barrelnum 0
	es_set sb_humannum 0
	es mp_playerid server_var(sb_oldplayerid)
	es est_unrestrictall #a
	es_msg #multi #green[Suicide Barrels]#lightgreen The script has been unloaded!
}

