////////////////////////////////////////////////////////
// Explosion Gibs   ATAMAH' (ICQ: 305-839) ////
////////////////////////////////////////////////////////
// Explosion Gibs by ATAMAH (ICQ: 305-839) /////////////
////////////////////////////////////////////////////////

block load
{
	es_xset owner 0
	es_xset tkey 0
	es_xset towner 0

	es_xset tname 0

	es_xset bomb_loc 0

	es_xset player_id 0
	es_xset gib_name 0

	es_xset p_loc 0

	es_xset gibs_lifetime 0

	es_mexec ../addons/eventscripts/exp_gibs/exp_gibs.cfg

	es_xset lifetime_string 0
	es_format lifetime_string "m_flGibLife %1" server_var(gibs_lifetime)

	es_xset exp_gibs 1.1
	es_xmakepublic exp_gibs

	es_msg #multi #lightgreen[Explosion Gibs]#default Plugin loaded
}

block unload
{
	es_msg #multi #lightgreen[Explosion Gibs]#default Plugin unloaded
}

event round_start
{
	es_xset planted_flag 0
}

event bomb_planted
{
	es_xset planted_flag 1

	es_xset bomb_loc_x 0
	es_xset bomb_loc_y 0
	es_xset bomb_loc_z 0	

	es_getplayerlocation bomb_loc_x bomb_loc_y bomb_loc_z event_var(userid)

	es_createvectorstring bomb_loc server_var(bomb_loc_x) server_var(bomb_loc_y) server_var(bomb_loc_z)
}

event bomb_exploded
{
	es_xset planted_flag 0

	es es_xset he_origin server_var(bomb_loc)

	es_xset angles1 0

	es_xset angles_string 0

	es_xset angle_x 0
	es_xset angle_y 0
	es_xset angle_z 0	

	es_xset vector1 0
	es_xset length1 0

	es_xset rag_origin 0

	es_keygroupcreate ent_ragdolls
	es_createentitylist ent_ragdolls "cs_ragdoll"
	es_foreachkey tkey in ent_ragdolls "es_getindexprop rag_origin server_var(tkey) CCSRagdoll.m_vecOrigin ; es_createvectorfrompoints vector1 server_var(he_origin) server_var(rag_origin) ; es vecmath length1 server_var(vector1) length ; if (server_var(length1) < 1024) then es_xdoblock exp_gibs/exp_ragdoll"
	es_keygroupdelete ent_ragdolls
}

event hegrenade_detonate
{
	es_xset he_origin 0
	es_createvectorstring he_origin event_var(x) event_var(y) event_var(z)

	es_xset angles1 0

	es_xset angles_string 0

	es_xset angle_x 0
	es_xset angle_y 0
	es_xset angle_z 0	

	es_xset vector1 0
	es_xset length1 0

	es_xset rag_origin 0

	es_keygroupcreate ent_ragdolls
	es_createentitylist ent_ragdolls "cs_ragdoll"
	es_foreachkey tkey in ent_ragdolls "es_getindexprop rag_origin server_var(tkey) CCSRagdoll.m_vecOrigin ; es_createvectorfrompoints vector1 server_var(he_origin) server_var(rag_origin) ; es vecmath length1 server_var(vector1) length ; if (server_var(length1) < 256) then es_xdoblock exp_gibs/exp_ragdoll"
	es_keygroupdelete ent_ragdolls

	es_xset player_origin 0

	es_keygroupcreate ent_players
	es_createplayerlist ent_players
	es_foreachkey tkey in ent_players "es_getplayerprop player_origin server_var(tkey) CCSPlayer.baseclass.baseclass.baseclass.baseclass.baseclass.baseclass.m_vecOrigin ; es_createvectorfrompoints vector1 server_var(he_origin) server_var(player_origin) ; es vecmath length1 server_var(vector1) length ; if (server_var(length1) < 256) then es_xdoblock exp_gibs/shake_player"
	es_keygroupdelete ent_players
}

block shake_player
{
	es_xset shake_dist 256
	es_xset player_dead 0

	//es_tell server_var(tkey) You'll be shake

	es_math shake_dist - server_var(length1)
	es_math shake_dist / 4

	//es_tell server_var(tkey) Shake value server_var(shake_dist)

	es_keygetvalue player_dead ent_players server_var(tkey) isdead
	
	ifx false(player_dead) do
	{
		es est_shake server_var(tkey) 1 server_var(shake_dist) 5
	}
}

block exp_ragdoll
{
	es vecmath angles1 server_var(vector1) angles

	es_token angle_x server_var(angles1) 1 ,
	es_token angle_y server_var(angles1) 2 ,
	es_token angle_z server_var(angles1) 3 ,
	es_format angles_string "angles %1 %2 %3" server_var(angle_x) server_var(angle_y) server_var(angle_z)

	es_remove server_var(tkey)
	
	es_getuserid player_id

	es_xset gib_name "head"
	es_xdoblock exp_gibs/shoot_gib
	es_setindexprop server_var(eventscripts_lastgive) CBaseEntity.m_vecOrigin server_var(rag_origin)

	es_xset gib_name "rib"
	es_xdoblock exp_gibs/shoot_gib
	es_setindexprop server_var(eventscripts_lastgive) CBaseEntity.m_vecOrigin server_var(rag_origin)

	es_xset gib_name "scapula"
	es_xdoblock exp_gibs/shoot_gib
	es_setindexprop server_var(eventscripts_lastgive) CBaseEntity.m_vecOrigin server_var(rag_origin)

	es_xset gib_name "spine"
	es_xdoblock exp_gibs/shoot_gib
	es_setindexprop server_var(eventscripts_lastgive) CBaseEntity.m_vecOrigin server_var(rag_origin)

	es_xdoblock exp_gibs/blood_exp
	es_setindexprop server_var(eventscripts_lastgive) CBaseEntity.m_vecOrigin server_var(rag_origin)
}

event player_hurt
{
	ifx true(planted_flag) do
	{
		if (event_var(weapon) == 0) do
		{
			if (event_var(dmg_health) > 120) do
			{
				es es_xset player_id event_var(userid)
				
				es_xset angles1 0
				es_xset angles_string 0

				es_xset angle_x 0
				es_xset angle_y 0
				es_xset angle_z 0	

				es_xset vector1 0	

				es_xset p_loc_x 0
				es_xset p_loc_y 0
				es_xset p_loc_z 0	
				es_getplayerlocation p_loc_x p_loc_y p_loc_z event_var(userid)
				es_createvectorstring p_loc server_var(p_loc_x) server_var(p_loc_y) server_var(p_loc_z)

				es_createvectorfrompoints vector1 server_var(bomb_loc) server_var(p_loc)

				es vecmath angles1 server_var(vector1) angles

				es_token angle_x server_var(angles1) 1 ,
				es_token angle_y server_var(angles1) 2 ,
				es_token angle_z server_var(angles1) 3 ,
				es_format angles_string "angles %1 %2 %3" server_var(angle_x) server_var(angle_y) server_var(angle_z)

				es_getplayerhandle owner event_var(userid)

				es est_DeleteRagdolls event_var(userid)

				es_xset gib_name "head"
				es_xdoblock exp_gibs/shoot_gib

				es_xset gib_name "rib"
				es_xdoblock exp_gibs/shoot_gib

				es_xset gib_name "scapula"
				es_xdoblock exp_gibs/shoot_gib

				es_xset gib_name "spine"
				es_xdoblock exp_gibs/shoot_gib
				
				es_xdoblock exp_gibs/blood_exp
			}
		}
	}
}

event player_death
{
	if (event_var(weapon) == "hegrenade") do
	{
		es es_xset player_id event_var(userid)

		es_xset angles1 0

		es_xset angles_string 0

		es_xset angle_x 0
		es_xset angle_y 0
		es_xset angle_z 0	

		es_xset vector1 0

		es_xset p_loc_x 0
		es_xset p_loc_y 0
		es_xset p_loc_z 0	
		es_getplayerlocation p_loc_x p_loc_y p_loc_z event_var(userid)
		es_createvectorstring p_loc server_var(p_loc_x) server_var(p_loc_y) server_var(p_loc_z)

		es_createvectorfrompoints vector1 server_var(he_origin) server_var(p_loc)

		es vecmath angles1 server_var(vector1) angles

		es_token angle_x server_var(angles1) 1 ,
		es_token angle_y server_var(angles1) 2 ,
		es_token angle_z server_var(angles1) 3 ,
		es_format angles_string "angles %1 %2 %3" server_var(angle_x) server_var(angle_y) server_var(angle_z)

		es_getplayerhandle owner event_var(userid)

		es est_DeleteRagdolls event_var(userid)

		es_xset gib_name "head"
		es_xdoblock exp_gibs/shoot_gib

		es_xset gib_name "rib"
		es_xdoblock exp_gibs/shoot_gib

		es_xset gib_name "scapula"
		es_xdoblock exp_gibs/shoot_gib

		es_xset gib_name "spine"
		es_xdoblock exp_gibs/shoot_gib
				
		es_xdoblock exp_gibs/blood_exp
	}
}

block shoot_gib
{
	es_give server_var(player_id) env_shooter

	if (server_var(gib_name) == head) do
	{
		es_format tname "exp_gib_head_%1" server_var(player_id)
		es est_setentname server_var(eventscripts_lastgive) server_var(tname)
		es_delayed 1 es_remove server_var(tname)

		es_xset gibs_count "m_iGibs 1"
		es_xset shoot_model "shootmodel models/gibs/hgibs.mdl"
	}

	if (server_var(gib_name) == rib) do
	{
		es_format tname "exp_gib_rib_%1" server_var(player_id)
		es est_setentname server_var(eventscripts_lastgive) server_var(tname)
		es_delayed 1 es_remove server_var(tname)

		es_xset gibs_count "m_iGibs 12"
		es_xset shoot_model "shootmodel models/gibs/hgibs_rib.mdl"
	}

	if (server_var(gib_name) == scapula) do
	{
		es_format tname "exp_gib_scapula_%1" server_var(player_id)
		es est_setentname server_var(eventscripts_lastgive) server_var(tname)
		es_delayed 1 es_remove server_var(tname)

		es_xset gibs_count "m_iGibs 2"
		es_xset shoot_model "shootmodel models/gibs/hgibs_scapula.mdl"
	}

	if (server_var(gib_name) == spine) do
	{
		es_format tname "exp_gib_spine_%1" server_var(player_id)
		es est_setentname server_var(eventscripts_lastgive) server_var(tname)
		es_delayed 1 es_remove server_var(tname)

		es_xset gibs_count "m_iGibs 1"
		es_xset shoot_model "shootmodel models/gibs/hgibs_spine.mdl"
	}

	es_fire event_var(userid) server_var(tname) addoutput server_var(angles_string)
	es_fire event_var(userid) server_var(tname) addoutput server_var(gibs_count)
	es_fire event_var(userid) server_var(tname) addoutput "delay 0"
	es_fire event_var(userid) server_var(tname) addoutput "gibangles 0 0 0"
	es_fire event_var(userid) server_var(tname) addoutput "m_flVelocity 250"
	es_fire event_var(userid) server_var(tname) addoutput "m_flVariance 100"
	es_fire event_var(userid) server_var(tname) addoutput server_var(lifetime_string)
	es_fire event_var(userid) server_var(tname) addoutput "lightingorigin 0"
	es_fire event_var(userid) server_var(tname) addoutput "renderfx 0"
	es_fire event_var(userid) server_var(tname) addoutput "rendermode 0"
	es_fire event_var(userid) server_var(tname) addoutput "renderamt 255"
	es_fire event_var(userid) server_var(tname) addoutput "rendercolor 255 255 255"
	es_fire event_var(userid) server_var(tname) addoutput "disablereceiveshadows 1"
	es_fire event_var(userid) server_var(tname) addoutput server_var(shoot_model)
	es_fire event_var(userid) server_var(tname) addoutput "shootsounds 3"
	es_fire event_var(userid) server_var(tname) addoutput "simulation 1"
	es_fire event_var(userid) server_var(tname) addoutput "skin 0"
	es_fire event_var(userid) server_var(tname) addoutput "gibanglevelocity -250"
	es_fire event_var(userid) server_var(tname) addoutput "lightingorigin 0"
	es_fire event_var(userid) server_var(tname) addoutput "nogibshadows 1"
	es_fire event_var(userid) server_var(tname) addoutput "gibgravityscale 1"
	es_fire event_var(userid) server_var(tname) addoutput "spawnflags 4"
	es_fire event_var(userid) server_var(tname) shoot
}

block blood_exp
{
	es_give server_var(player_id) env_blood

	es_format tname "exp_blood_%1" server_var(player_id)
	es est_setentname server_var(eventscripts_lastgive) server_var(tname)
	es_delayed 1 es_remove server_var(tname)

	es_setindexprop server_var(eventscripts_lastgive) CBaseEntity.m_fFlags 11

	es_fire event_var(userid) server_var(tname) addoutput "spawnflags 121"
	es_fire event_var(userid) server_var(tname) addoutput "amount 25"
	es_fire event_var(userid) server_var(tname) addoutput "color 0"
	es_fire event_var(userid) server_var(tname) emitblood
	es_fire event_var(userid) server_var(tname) kill
}