// --------------------------------------------------------------------------
//
//	Updated RicoChet
//
// --------------------------------------------------------------------------

Actor U_RicoChet : RicoChet replaces RicoChet
{
	+NOCLIP
	Height 0
	Scale 0.05
	states
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_CheckFloor("SpawnFloor")
		TNT1 A 0 A_SpawnItemEx("DetectCeilBullet",0,0,-5,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_JumpIf(waterlevel > 1, "SpawnUnderwater")
		TNT1 AAAAAAAA 0 A_CustomMissile("RicoChetFX", 1, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_PlaySound("ricochet/hit")
		TNT1 AA 0 A_CustomMissile("RicoChetSmoke", 1, 0, random (0, 360), 2, random (70, 110))
		TNT1 A 0 A_SpawnItem("RicoChetFlare", 0)
		TNT1 A 0 A_Jump(256, "Spawn1", "Spawn2", "Spawn3", "Spawn4")
		stop
	
	SpawnFloor:
		TNT1 A 0
		TNT1 A 0 ACS_NamedExecuteAlways("BDCheckFloorType")
		TNT1 A 2
		TNT1 A 0 A_JumpIfInventory("IsOverWater", 1, "SpawnWater")
		TNT1 A 0 A_JumpIfInventory("IsOverNukage", 1, "SpawnNukage")
		TNT1 A 0 A_JumpIfInventory("IsOverSlime", 1, "SpawnSlime")
		TNT1 A 0 A_JumpIfInventory("IsOverBlood", 1, "SpawnBlood")
		TNT1 A 0 A_JumpIfInventory("IsOverLava", 1, "SpawnLava")
		TNT1 A 0 A_JumpIfInventory("IsOverGrass", 1, "SpawnDirt")
		TNT1 A 0 A_JumpIfInventory("IsOverSand", 1, "SpawnSand")
		TNT1 A 0 A_SpawnItemEx("DetectFloorBullet",0,0,5,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_JumpIf(waterlevel > 1, "SpawnUnderwater")
		TNT1 AAAAAAAA 0 A_CustomMissile("RicoChetFX", 1, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_PlaySound("ricochet/hit")
		TNT1 AA 0 A_CustomMissile("RicoChetSmoke", 1, 0, random (0, 360), 2, random (70, 110))
		TNT1 A 0 A_SpawnItem("RicoChetFlare", 0)
		TNT1 A 0 A_Jump(256, "Spawn1", "Spawn2", "Spawn3", "Spawn4")
		stop
		
	SpawnUnderwater:
		TNT1 AAA 0 A_CustomMissile("BUBULZ", 0, 0, random (0, 360), 2, random (0, 180))
		TNT1 A 0 A_PlaySound("ricochet/hit")
		TNT1 A 0 A_CustomMissile("RicoChetSmoke", 1, 0, random (0, 360), 2, random (70, 110))
		TNT1 A 0 A_SpawnItem("RicoChetFlare", 0)
		TNT1 A 0 A_Jump(256, "Spawn1", "Spawn2", "Spawn3", "Spawn4")
		Stop
		
	Spawn1:
		IPF2 AABB 1 bright
		Stop
	Spawn2:
		IPF2 CCDD 1 bright
		Stop
	Spawn3:
		IPF2 EEFF 1 bright
		Stop
	Spawn4:
		IPF2 GGHH 1 bright
		Stop
	}
}

Actor RevolverRicoChet : U_RicoChet
{
	Scale 0.12
}


// --------------------------------------------------------------------------
//
//	General RicoChet
//
// --------------------------------------------------------------------------

Actor RicoChetFlare : Flare_General
{
	scale 0.2
	states
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_Jump(128,"Fade2")
	Fade1:
		LENY A 2 bright
		LENY A 1 bright A_FadeOut(0.2)
		Wait
	Fade2:
		LENY B 2 bright
		LENY B 1 bright A_FadeOut(0.2)
		Wait
	}
}

ACTOR RicoChetSmoke: ExplosionSmoke
{
	Scale 0.15
	Alpha 0.5
	States
	{
	Spawn:
		TNT1 A 3
		TNT1 A 0 A_ScaleVelocity(frandom(0.8,1.2))
		TNT1 A 0 A_Jump(256,"Spawn1","Spawn2","Spawn3","Spawn4")
	Spawn1:
		SMK3 BCDEFGHIJKLM 1
		Stop
	Spawn2:
		SMK3 BCDDEFGGHIJJKLMM 1
		Stop
	Spawn3:
		SMK3 BCCDDEFFGGHIIJJKLLMM 1
		Stop
	Spawn4:
		SMK3 BCDEFGHIJKLM 2
		Stop
	}
}

ACTOR RicoChetFX
{
	game Doom
	RenderStyle Add
	+MISSILE
	+CLIENTSIDEONLY
	+NOTELEPORT
	+NOBLOCKMAP
	+BLOODLESSIMPACT 
	+FORCEXYBILLBOARD
	+DONTSPLASH
	+THRUACTORS
	+THRUGHOST
	+DOOMBOUNCE
	+GHOST
	gravity 0.9
	speed 5
	radius 1
	height 1
	BounceFactor 0.5
	WallBounceFactor 0.5
	Damage 0
	Scale 0.02
	alpha 1.0
	states
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_ScaleVelocity(frandom(0.8,1.2))
		SPKO A 1 bright
		TNT1 A 0 A_Jump(256,"Fade1","Fade2","Fade3")
	Fade1:
		SPKO A 2 bright
		SPKO A 1 bright A_FadeOut(0.4)
		Wait
	Fade2:
		SPKO A 1 bright
		SPKO A 1 bright A_FadeOut(0.3)
		Wait
	Fade3:
		SPKO A 0 bright
		SPKO A 1 bright A_FadeOut(0.2)
		Wait
	Death:
		TNT1 A 0
		Stop
	XDeath:
		TNT1 A 0
		Stop
	}
}


// --------------------------------------------------------------------------
//
//	Lava RicoChet
//
// --------------------------------------------------------------------------
/*
ACTOR RicoChetLava: FlameTrails
{
	Scale 0.5
	Speed 1
	States
	{
	Spawn:
		TNT1 A 0
		INFE ABCDEFGHIJKLMNOPQRST 1 BRIGHT
		Stop
	}
}

Actor RicoChetLavaSmoke: ExplosionSmoke
{
	RenderStyle Add
	+CLIENTSIDEONLY
	Speed 1
	Alpha 0.3
	Scale 0.4
	States
	{
	Spawn:
		SMOK AABB 2 A_FadeIn(0.08)
		Goto Death
	Death:
		SMOK CCDDEEFFGGHHIIJJKKLLMMNNOOPPPQQQQ 2 A_FadeOut(0.01)
		Stop
	}
}


// --------------------------------------------------------------------------
//
//	Grass RicoChet
//
// --------------------------------------------------------------------------

ACTOR U_DirtChunk
{
	Scale 0.2
	+noteleport
	+missile
	+bounceonactors
	+doombounce
	+forcexybillboard
	+CLIENTSIDEONLY
	Speed 4
	Gravity 0.7
	BounceFactor 0.3
	height 1
	radius 1
	Translation "128:151=74:79", "96:111=71:79"
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_ScaleVelocity(frandom(0.5,2.0))
		TNT1 A 0 A_GiveInventory("Timer", random(1,4))
		TNT1 A 0 A_JumpIfInventory("Timer",4,"See4")
		TNT1 A 0 A_JumpIfInventory("Timer",3,"See3")
		TNT1 A 0 A_JumpIfInventory("Timer",2,"See2")
	See1:
		DUST A 100
		Goto Death
	See2:
		DUST B 100
		Goto Death
	See3:
		DUST C 100
		Goto Death
	See4:
		DUST D 100
		Goto Death
	Death:
		TNT1 A 0 A_ChangeFlag("missile",0)
		TNT1 A 0 A_ChangeFlag("doombounce",0)
		TNT1 A 0 A_JumpIfInventory("Timer",4,"Death4")
		TNT1 A 0 A_JumpIfInventory("Timer",3,"Death3")
		TNT1 A 0 A_JumpIfInventory("Timer",2,"Death2")
	Death1:
		DUST A 60
		DUST A 1 A_Fadeout(0.1)
		Wait
	Death2:
		DUST B 60
		DUST B 1 A_Fadeout(0.1)
		Wait
	Death3:
		DUST C 60
		DUST C 1 A_Fadeout(0.1)
		Wait
	Death4:
		DUST D 60
		DUST D 1 A_Fadeout(0.1)
		Wait
	}
}

ACTOR U_MudDust replaces MudDust
{
	Scale 0.5
	+noteleport
	+missile
	+forcexybillboard
	+CLIENTSIDEONLY
	+DOOMBOUNCE
	BounceFactor 0.01
	Speed 4
	Gravity 0.5
	height 1
	radius 1
	States
	{
	Spawn:
		DIRP B 1
		Loop
	Death:
		DIRP B 300
		DIRP B 1 A_Fadeout(0.1)
		Wait
	}
}

ACTOR U_DirtRicochet: RicoChet
{
	renderstyle Translucent
	alpha 0.8
	XScale 1.1
	YScale 1.1
	states
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("BHITDIR")
		SDRT ABCDEF 2
		Stop
	}
}


// --------------------------------------------------------------------------
//
//	Splash RicoChet
//
// --------------------------------------------------------------------------

ACTOR U_WaterRicochet: RicoChet
{
	renderstyle Translucent
	alpha 0.8
	Scale 1.0
	states
	{
	Spawn:
		SPHW ABCDE 3
		Stop
	}
}

ACTOR SlimeRicochet1: U_WaterRicochet
{
	states
	{
	Spawn:
		SPHG ABCDE 3
		Stop
	}
}

ACTOR SlimeRicochet2: U_WaterRicochet
{
	states
	{
	Spawn:
		SDRT ABCDE 3
		Stop
	}
}

ACTOR BloodRicochet: U_WaterRicochet
{
	states
	{
	Spawn:
		BSPH EFGHIJK 3
		Stop
	}
}

actor U_BloodSplashBase replaces BloodSplashBase3
{
	Radius 1
	Height 1
	Mass 1
	alpha 0.6
	Scale 1.0
	+THRUACTORS
	+DONTSPLASH
	+NOGRAVITY
	+NOTELEPORT
	+CLIENTSIDEONLY
	States
	{
	Spawn:
		BSPH E 4
		TNT1 AAAAAA 0 A_CustomMissile("BloodParticleX", 2, random(-5,5), random (0, 360), 2, random (50, 140))
		TNT1 AAAAAA 0 A_CustomMissile("BloodParticleXFaster", 2, random(-5,5), random (0, 360), 2, random (50, 140))
		BSPH FGHIJK 4
		Stop
	}
}

actor U_BloodSplashBaseSmall : U_BloodSplashBase replaces BloodSplashBaseSmall
{
	Scale 0.5
	States
	{
	Spawn:
		BSPH E 4
		TNT1 AAAA 0 A_CustomMissile("BloodParticleX", 2, 0, random (0, 360), 2, random (50, 140))
		TNT1 AAAA 0 A_CustomMissile("BloodParticleXFaster", 2, 0, random (0, 360), 2, random (50, 140))
		BSPH FGHIJK 4
		Stop
	}
}

actor U_SlimeSplashBase replaces SlimeSplashBase
{
	Radius 1
	Height 1
	Mass 1
	alpha 0.6
	Scale 1.0
	+THRUACTORS
	+DONTSPLASH
	+NOGRAVITY
	+NOTELEPORT
	States
	{
	Spawn:
		SLIM E 4
		TNT1 AAAAAA 0 A_CustomMissile("slimeParticleX", 2, random(-5,5), random (0, 360), 2, random (50, 140))
		TNT1 AAAAAA 0 A_CustomMissile("slimeParticleXFaster", 2, random(-5,5), random (0, 360), 2, random (50, 140))
		SLIM FGHIJK 4
		Stop
	}
}

actor U_SlimeSplashBaseSmall : U_SlimeSplashBase replaces SlimeSplashBaseSmall
{
	Scale 0.5
	States
	{
	Spawn:
		SLIM E 4
		TNT1 AAAA 0 A_CustomMissile("slimeParticleX", 2, 0, random (0, 360), 2, random (50, 140))
		TNT1 AAAA 0 A_CustomMissile("slimeParticleXFaster", 2, 0, random (0, 360), 2, random (50, 140))
		SLIM FGHIJK 4
		Stop
	}
}

actor U_LavasplashBase replaces lavasplash
{
	Radius 1
	Height 1
	Mass 1
	alpha 0.6
	Scale 1.0
	+THRUACTORS
	+DONTSPLASH
	+NOGRAVITY
	+NOTELEPORT
	States
	{
	Spawn:
		LVAS ABCDEF 3
		Stop
	}
}

Actor U_slimeParticleXSuperFast: slimeParticleX
{
	Speed 7
	Scale 1.2
}
*/