block load
{
	wcs_xalias ulti_immunity1 "es_xset wcs_ok 0;es wcsgroup get ulti_immunity wcs_tmp server_var(wcs_target);if (server_var(wcs_tmp) == 0) then wcs_xalias ulti_immunity2"
	wcs_xalias ulti_immunity2 "es wcsgroup get ulti_immunity wcs_tmp server_var(wcs_target);if (server_var(wcs_tmp) == 0) then es_xset wcs_ok 1"
	wcs_xalias ulti_failed    "es wcs_xtell server_var(wcs_targetid) u_ulti_immunity_v;es wcs_xtell server_var(wcs_userid) u_ulti_immunity_a"
	wcs_xalias spec_checkwall "es_xexists ex command est_getwallbetween;if (server_var(ex) == 1) then est_getwallbetween wcs_wall server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) server_var(wcs_x2) server_var(wcs_y2) server_var(wcs_z2);if (server_var(ex) == 0) then es_xset wcs_wall 0"
}

block wcs_ulti_teleport
{
	es_xset wcs_ok 1
	//es wcsx get getViewCoord wcs_coord server_var(wcs_userid)
	//es wcsx split server_var(wcs_coord) wcs_x1 wcs_y1 wcs_z1
	es playerget viewcoord server_var(wcs_userid) wcs_x1 wcs_y1 wcs_z1
	//es est_GetViewCoord server_var(wcs_userid) wcs_x1 wcs_y1 wcs_z1
	es_getplayerlocation wcs_x2 wcs_y2 wcs_z2 server_var(wcs_userid)
	es_xcopy wcs_x wcs_x1
	es_xcopy wcs_y wcs_y1
	es_xcopy wcs_z wcs_z1
	es_math wcs_x - server_var(wcs_x2)
	es_math wcs_y - server_var(wcs_y2)
	es_math wcs_z - server_var(wcs_z2)
	if (server_var(wcs_x) < 0) then es_xmath wcs_x * -1
	if (server_var(wcs_y) < 0) then es_xmath wcs_y * -1
	if (server_var(wcs_z) < 0) then es_xmath wcs_z * -1
	ifx parse("(wcs_range < wcs_x) or (wcs_range < wcs_y) or (wcs_range < wcs_z)") do
	{
		es_xset wcs_ok 0
	}
	es wcsgroup get invisp wcs_tmp server_var(wcs_userid)
	if (server_var(wcs_tmp) != 0) do
	{
		//es_xmath wcs_tmp float
		//es_xmath wcs_tmp - 100
		//es_xmath wcs_tmp * -2.55
		//es est_rounddecimal wcs_tmp server_var(wcs_tmp) 0
		es wcs_setfx invisp server_var(wcs_userid) = server_var(wcs_tmp) 1
		//es est_setplayercolor server_var(wcs_userid) 255 255 255 0 1
		//es_delayed 1 est_setplayercolor server_var(wcs_userid) 255 255 255 server_var(wcs_tmp) 1
	}
	ifx true(wcs_ok) do
	{
		es wcsx create wcs_coord server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1)
		es wcs pushto server_var(wcs_userid) server_var(wcs_coord) 2
		//es est_PushTo server_var(wcs_userid) server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) "2"
		es wcs_xtell server_var(wcs_userid) u_teleported
		es usermsg fade server_var(wcs_userid) 0 server_var(wcs_fadetimer) 1 0 0 0 250
		//es est_Fade server_var(wcs_userid) 0 server_var(wcs_fadetimer) 1 0 0 0 250
	}
	else do
	{
		if (server_var(wcs_range) < server_var(wcs_x)) do
		{
			if (server_var(wcs_x2) >= 0) do
			{
				if (server_var(wcs_x1) >= 0) do
				{
					if (server_var(wcs_x2) <= server_var(wcs_x1)) then es_xmath wcs_x2 + server_var(wcs_range)
					if (server_var(wcs_x2) > server_var(wcs_x1)) then es_xmath wcs_x2 - server_var(wcs_range)
				}
				else do
				{
					es_math wcs_x2 - server_var(wcs_range)
				}
			}
			else do
			{
				if (server_var(wcs_x1) < 0) do
				{
					if (server_var(wcs_x2) <= server_var(wcs_x1)) then es_xmath wcs_x2 + server_var(wcs_range)
					if (server_var(wcs_x2) > server_var(wcs_x1)) then es_xmath wcs_x2 - server_var(wcs_range)
				}
				else do
				{
					es_math wcs_x2 + server_var(wcs_range)
				}
			}
			es_xcopy wcs_x1 wcs_x2
		}
		if (server_var(wcs_range) < server_var(wcs_y)) do
		{
			if (server_var(wcs_y2) >= 0) do
			{
				if (server_var(wcs_y1) >= 0) do
				{
					if (server_var(wcs_y2) <= server_var(wcs_y1)) then es_xmath wcs_y2 + server_var(wcs_range)
					if (server_var(wcs_y2) > server_var(wcs_y1)) then es_xmath wcs_y2 - server_var(wcs_range)
				}
				else do
				{
					es_math wcs_y2 - server_var(wcs_range)
				}
			}
			else do
			{
				if (server_var(wcs_y1) < 0) do
				{
					if (server_var(wcs_y2) <= server_var(wcs_y1)) then es_xmath wcs_y2 + server_var(wcs_range)
					if (server_var(wcs_y2) > server_var(wcs_y1)) then es_xmath wcs_y2 - server_var(wcs_range)
				}
				else do
				{
					es_math wcs_y2 + server_var(wcs_range)
				}
			}
			es_xcopy wcs_y1 wcs_y2
		}
		if (server_var(wcs_range) < server_var(wcs_z)) do
		{
			if (server_var(wcs_z2) >= 0) do
			{
				if (server_var(wcs_z1) >= 0) do
				{
					if (server_var(wcs_z2) <= server_var(wcs_z1)) then es_xmath wcs_z2 + server_var(wcs_range)
					if (server_var(wcs_z2) > server_var(wcs_z1)) then es_xmath wcs_z2 - server_var(wcs_range)
				}
				else do
				{
					es_math wcs_z2 - server_var(wcs_range)
				}
			}
			else do
			{
				if (server_var(wcs_z1) < 0) do
				{
					if (server_var(wcs_z2) <= server_var(wcs_z1)) then es_xmath wcs_z2 + server_var(wcs_range)
					if (server_var(wcs_z2) > server_var(wcs_z1)) then es_xmath wcs_z2 - server_var(wcs_range)
				}
				else do
				{
					es_math wcs_z2 + server_var(wcs_range)
				}
			}
			es_xcopy wcs_z1 wcs_z2
		}
		es wcsx create wcs_coord server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1)
		es wcs pushto server_var(wcs_userid) server_var(wcs_coord) 1
		//es est_PushTo server_var(wcs_userid) server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) "1"
		es wcs_xtell server_var(wcs_userid) u_teleport_failed
		es usermsg fade server_var(wcs_userid) 0 server_var(wcs_fadetimer) 0.2 0 0 0 220
		//es est_Fade server_var(wcs_userid) 0 server_var(wcs_fadetimer) 0.2 0 0 0 220
	}
}

block wcs_ulti_roots
{
	//es_xset wcs_team_target 0
	//es_getplayerteam wcs_team server_var(wcs_userid)
	//if (server_var(wcs_team) = 2) do
	//{
	//	es_xset wcs_team_target 3
	//	es_xset wcs_team_targetn "#ct,#alive"
	//}
	//if (server_var(wcs_team) = 3) do
	//{
	//	es_xset wcs_team_target 2
	//	es_xset wcs_team_targetn "#t,#alive"
	//}
	//if (server_var(wcs_team_target) != "0") do
	//{
	//	es_xset wcs_pcount 0
	//	es_getlivingplayercount wcs_pcount server_var(wcs_team_target)
	//	if (server_var(wcs_pcount) > 0) do
	//	{
	//		es usermsg fade server_var(wcs_userid) 0 1 1 10 55 5 200
	//		//es est_Fade server_var(wcs_userid) 0 1 1 10 55 5 200
	//		es_xset wcs_wall 1
	//		es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 server_var(wcs_userid)
	//		wcs_xalias wcs_run_ulti_roots1 "es_getplayerlocation wcs_x2 wcs_y2 wcs_z2 server_var(wcs_targetid);es_xmath wcs_z1 + 50;es_xmath wcs_z2 + 50;wcs_xalias spec_checkwall;if (server_var(wcs_wall) = 0) then wcs_xalias wcs_run_ulti_roots2"
	//		wcs_xalias wcs_run_ulti_roots2 "es_set wcs_target server_var(wcs_targetid);wcs_xalias ulti_immunity1;if (server_var(wcs_ok) == 1) then wcs_xalias wcs_run_ulti_roots3;if (server_var(wcs_ok) == 0) then wcs_xalias ulti_failed"
	//		wcs_xalias wcs_run_ulti_roots3 "es_xmath wcs_counter + 1;es wcs_setfx freeze server_var(wcs_targetid) = 1 server_var(wcs_freezetime)"
	//		es_xset wcs_counter 0
	//		es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 server_var(wcs_userid)
	//		es wcs_nearcoord wcs_targetid server_var(wcs_team_targetn) server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) server_var(wcs_radius) "es_exists ex userid server_var(wcs_targetid);if (server_var(ex) = 1) then wcs_xalias wcs_run_ulti_roots1"
	//		if (server_var(wcs_counter) > 0) then wcs_xcentertell server_var(wcs_userid) c_u_entanglingroots count server_var(wcs_counter)
	//		else es_xset wcs_ultinotexec 1
	//	}
	//	else do
	//	{
	//		es_xset wcs_ultinotexec 1
	//	}
	//}
	//if (server_var(wcs_ultinotexec) = 1) then wcs_xtell server_var(wcs_userid) u_roots_failed
	//if (server_var(wcs_ultinotexec) = 1) then wcs_cancelulti server_var(wcs_userid)
	es_xdoblock wcs/tools/ultimates/default2/wcs_ulti_roots
}

block wcs_ulti_chain
{
	//es_xset wcs_team_target 0
	//es_getplayerteam wcs_team server_var(wcs_userid)
	//if (server_var(wcs_team) = 2) do
	//{
	//	es_xset wcs_team_target 3
	//	es_xset wcs_team_targetn "#ct,#alive"
	//}
	//if (server_var(wcs_team) = 3) do
	//{
	//	es_xset wcs_team_target 2
	//	es_xset wcs_team_targetn "#t,#alive"
	//}
	//if (server_var(wcs_team_target) != "0") do
	//{
	//	es_xset wcs_pcount 0
	//	es_getlivingplayercount wcs_pcount server_var(wcs_team_target)
	//	if (server_var(wcs_pcount) > 0) do
	//	{
	//		es usermsg fade server_var(wcs_userid) 0 2 1 240 240 240 100
	//		//es est_Fade server_var(wcs_userid) 0 2 1 240 240 240 100
	//		es_xset wcs_wall 1
	//		es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 server_var(wcs_userid)
	//		wcs_xalias wcs_run_ulti_chain1 "es_getplayerlocation wcs_x2 wcs_y2 wcs_z2 server_var(wcs_targetid);es_xmath wcs_z1 + 50;es_xmath wcs_z2 + 50;wcs_xalias spec_checkwall;if (server_var(wcs_wall) = 0) then wcs_xalias wcs_run_ulti_chain2"
	//		wcs_xalias wcs_run_ulti_chain2 "es_set wcs_target server_var(wcs_targetid);wcs_xalias ulti_immunity1;if (server_var(wcs_ok) == 1) then wcs_xalias wcs_run_ulti_chain3;if (server_var(wcs_ok) == 0) then wcs_xalias ulti_failed"
	//		wcs_xalias wcs_run_ulti_chain3 "es_xmath wcs_counter + 1;es wcs damage server_var(wcs_targetid) server_var(wcs_userid) 32"
	//		es_xset wcs_counter 0
	//		es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 server_var(wcs_userid)
	//		es wcs_nearcoord wcs_targetid server_var(wcs_team_targetn) server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) server_var(wcs_radius) "es_exists ex userid server_var(wcs_targetid);if (server_var(ex) = 1) then es_xif (server_var(wcs_counter) < server_var(wcs_maxtargets)) then wcs_xalias wcs_run_ulti_chain1"
	//		if (server_var(wcs_counter) > 0) then wcs_xcentertell server_var(wcs_userid) c_u_chainglightning count server_var(wcs_counter)
	//		else es_xset wcs_ultinotexec 1
	//	}
	//	else do
	//	{
	//		es_xset wcs_ultinotexec 1
	//	}
	//}
	//if (server_var(wcs_ultinotexec) = 1) then wcs_xtell server_var(wcs_userid) u_chain_failed
	//if (server_var(wcs_ultinotexec) = 1) then wcs_cancelulti server_var(wcs_userid)
	es_xdoblock wcs/tools/ultimates/default2/wcs_ulti_chain
}

block wcs_ulti_suicide
{
	//es_xset wcs_team_target 0
	//es_getplayerteam wcs_team server_var(wcs_userid)
	//if (server_var(wcs_team) = 2) do
	//{
	//	es_xset wcs_team_target 3
	//	es_xset wcs_team_targetn "#ct,#alive"
	//}
	//if (server_var(wcs_team) = 3) do
	//{
	//	es_xset wcs_team_target 2
	//	es_xset wcs_team_targetn "#t,#alive"
	//}
	//if (server_var(wcs_team_target) != "0") do
	//{
	//	es_xset wcs_pcount 0
	//	es_getlivingplayercount wcs_pcount server_var(wcs_team_target)
	//	if (server_var(wcs_pcount) > 0) do
	//	{
	//		wcs_xalias wcs_run_ulti_suicide1 "es_set wcs_target server_var(wcs_targetid);wcs_xalias ulti_immunity1;if (server_var(wcs_ok) == 1) then wcs_xalias wcs_run_ulti_suicide2;if (server_var(wcs_ok) == 0) then wcs_xalias ulti_failed"
	//		wcs_xalias wcs_run_ulti_suicide2 "es wcs explode server_var(wcs_userid) server_var(wcs_targetid) server_var(wcs_magnitude) server_var(wcs_radius)"
	//		es_getplayerlocation wcs_x1 wcs_y1 wcs_z1 server_var(wcs_userid)
	//		es wcs_nearcoord wcs_targetid server_var(wcs_team_targetn) server_var(wcs_x1) server_var(wcs_y1) server_var(wcs_z1) server_var(wcs_radius) "wcs_xalias wcs_run_ulti_suicide1"
	//	}
	//}
	es_xdoblock wcs/tools/ultimates/default2/wcs_ulti_suicide
}