// UltraWU - The ultimate warmup timer
// Author: Lumpi@Work 
// Version: 1.2 | Build date: 07/21/09
// Requires EventScript 1.5 and ES_Tools .420

block load
{
	es_xset ultrawu_active 0
	es_xset ultrawu_warmup_timer 0
	es_xset ultrawu_display 0
	es_xset ultrawu_popup 0
	es_xset ultrawu_ff 0
	es_xset ultrawu_respawn 0
	es_xset ultrawu_knife 0
	es_xset ultrawu_grenades 0
	es_xset ultrawu_weapon 0
	es_xset ultrawu_nobomb 0
	es_xset ultrawu_preconfig 0
	es_xset ultrawu_afterconfig 0
	es_xset ultrawu_stats 0
	es_xset ultrawu_speed 0
	es_xset ultrawu_mologrenades 0
	es_xset ultrawu_remove_ragdolls 0
	es_xset ultrawu_remove_weapons 0
	es_xset ultrawu_version 1.2
	es_makepublic ultrawu_version

	es_mexec ../addons/eventscripts/ultrawu/ultrawu_config.cfg

	if (server_var(ultrawu_active) == 1) do
	{
		repeat create ultrawu_timer "es_doblock ultrawu/timer"
		repeat create ultrawu_weaponremover "es_xdoblock ultrawu/removeweapons"
		es_set ultrawu_timeleft server_var(ultrawu_warmup_timer)
		es_xset ultrawu_timer_status 1
		es_set ultrawu_timer_delay server_var(ultrawu_warmup_timer)
		es_doblock ultrawu/timer_delay
		es_doblock ultrawu/popupcreator
		es_xset ultrawu_noisy 0
		if (server_var(eventscripts_noisy) == 0) do
		{
			es_xdoblock corelib/noisy_on
		}
		else do
		{
			es_xset ultrawu_noisy 1
		}
	}
}

block popupcreator
{
	popup create UltraWU
	popup addline UltraWU "This server is running UltraWU Warmup"
	popup addline UltraWU "Made by [BuH]Lump1"
	popup addline UltraWU " "
	popup addline UltraWU "Features:"
	if (server_var(ultrawu_ff) == 1) do
	{
		popup addline UltraWU "- Friendly Fire disabled"
	}
	else do
	{
		popup addline UltraWU "- Friendly Fire enabled"
	}
	if (server_var(ultrawu_respawn) == 1) do
	{
		popup addline UltraWU "- Instant respawn"
	}
	if (server_var(ultrawu_knife) == 1) do
	{
		popup addline UltraWU "- Only knife"
	}
	if (server_var(ultrawu_grenades) == 1) do
	{
		popup addline UltraWU "- Unlimited HE grenades"
	}
	if (server_var(ultrawu_speed) == 1) do
	{
		popup addline UltraWU "- Speed mode"
	}
	if (server_var(ultrawu_mologrenades) == 1) do
	{
		popup addline UltraWU "- Molotov grenades"
	}
}

block unload
{
	repeat delete ultrawu_timer
	repeat delete ultrawu_weaponremover
	popup delete UltraWU
	if (server_var(ultrawu_noisy) == 0) do
	{
		es_xdoblock corelib/noisy_off
	}
}

block timer_delay
{
	es_xmath ultrawu_timer_delay float
	es_xmath ultrawu_timer_delay * 1.04
}

block removeweapons
{
	est_RemoveIdle weapon
}

block timer
{
	if (server_var(ultrawu_timer_status) == 1) do
	{
		if (server_var(ultrawu_display) == 1) do
		{
			es_centermsg Warmup: server_var(ultrawu_timeleft) seconds left
		}
		es_math ultrawu_timeleft - 1
	}
	if (server_var(ultrawu_timer_status) == 0) do
	{
		es_xdoblock ultrawu/afterwarmup
		repeat stop ultrawu_timer
		mp_restartgame 1
	}
	es_delayed server_var(ultrawu_timer_delay) es_xset ultrawu_timer_status 0
}

block afterwarmup
{
	if (server_var(ultrawu_afterconfig) != 0) do
	{
		es_delayed .1 exec server_var(ultrawu_afterconfig)
	}
	if (server_var(ultrawu_stats) == 1) do
	{
		log on
	}
	if (server_var(ultrawu_ff) == 1) do
	{
		mp_friendlyfire 1
	}
	if (server_var(ultrawu_remove_weapons) == 1) do
	{
		repeat stop ultrawu_weaponremover
	}
	
}

event es_map_start
{
	if (server_var(ultrawu_active) == 1) do
	{
		if (server_var(ultrawu_preconfig) != 0) do
		{
			es_delayed .1 exec server_var(ultrawu_preconfig)
		}
		es_set ultrawu_timer_delay server_var(ultrawu_warmup_timer)
		es_doblock ultrawu/timer_delay
		es_set ultrawu_timeleft server_var(ultrawu_warmup_timer)
		es_xset ultrawu_timer_status 1
		repeat start ultrawu_timer 1
		if (server_var(ultrawu_stats) == 1) do
		{
			log off
		}
		if (server_var(ultrawu_ff) == 1) do
		{
			es_delayed 2 mp_friendlyfire 0
		}
		if (server_var(ultrawu_remove_weapons) == 1) do
		{
			repeat start ultrawu_weaponremover 4
		}
	}
}

event player_spawn
{
	if (server_var(ultrawu_active) == 1) do
	{
		if (server_var(ultrawu_timer_status) == 1) do
		{
			es playerset cash event_var(userid) 0
			if (server_var(ultrawu_knife) == 1) do
			{
				if (server_var(ultrawu_weapon) == 0) do
				{
					est_RemoveWeapon #a 1
					est_RemoveWeapon #a 2
				}
			}
			if (server_var(ultrawu_nobomb) == 1) do
			{
				est_RemoveWeapon #t weapon_c4
			}
			if (server_var(ultrawu_weapon) != 0) do
			{
				if (event_var(es_userteam) > 1) do
				{
					est_RemoveWeapon #a 2
					es_delayed .1 es_give event_var(userid) server_var(ultrawu_weapon)
				}
			}
			if (server_var(ultrawu_speed) == 1) do
			{
				es est_Speed event_var(userid) 2
			}
			if (server_var(ultrawu_grenades) == 1) do
			{
				if (event_var(es_userteam) > 1) do
				{
					es_delayed .1 es_give event_var(userid) weapon_hegrenade
				}
			}
		}
	}
	if (server_var(ultrawu_active) == 1) do
	{
		if (server_var(ultrawu_timer_status) == 0) do
		{
			if (server_var(ultrawu_speed) == 1) do
			{
				es est_Speed event_var(userid) 1.0
			}
		}
	}
}

event weapon_fire
{
	if (server_var(ultrawu_active) == 1) do
	{
		if (server_var(ultrawu_timer_status) == 1) do
		{
			if (server_var(ultrawu_grenades) == 1) do
			{
				if (event_var(weapon) == hegrenade) do
				{
					es_delayed .1 es_give event_var(userid) weapon_hegrenade
				}
			}
		}
	}	
}

event player_hurt
{
	if (server_var(ultrawu_active) == 1) do
	{
		if (server_var(ultrawu_timer_status) == 1) do
		{
			if (event_var(weapon) == hegrenade) do
			{
				es est_burn event_var(userid) 4
        		}
		}
	}
}

event player_death
{
	if (server_var(ultrawu_active) == 1) do
	{
		if (server_var(ultrawu_timer_status) == 1) do
		{
			if (server_var(ultrawu_respawn) == 1) do
			{
				es_delayed .1 es est_Spawn event_var(userid)
			}
			if (server_var(ultrawu_remove_ragdolls) == 1) do
			{
				es_delayed 4 es est_DeleteRagdolls event_var(userid)
			}
		}
	}
}

event player_activate
{
	if (server_var(ultrawu_active) == 1) do
	{
		if (server_var(ultrawu_timer_status) == 1) do
		{
			if (server_var(ultrawu_popup) == 1) do
			{
				es popup send UltraWU event_var(userid)
			}
		}
	}
}