//++++++++++++++++++++++++++++++++
//------------BOMBS---------------
//++++++++++++++++++++++++++++++++

//=================
//==Standard Bomb==
//=================


actor SlayerBomb
{
	projectile
	+notimefreeze
	+bloodlessimpact
	+bright
	+thruspecies
	+FORCEPAIN
	+FORCEXYBILLBOARD
	-NOGRAVITY
	damage (150)
	damagetype "macebomb"
	speed 35
	species "friendly"
	radius 8
	height 8
	bouncefactor 0.50
	scale 1
	Gravity 1
	bouncecount 2
	states
	{
	spawn:
		TNT1 A 0 
		TNT1 A 1
	flight:
		DSBM A 1 A_SpawnItemEx("SlayerGrenadeSmoke",0,0,1,0,0,frandom(1,3))
		DSBM B 1 A_SpawnItemEx("SlayerGrenadeSmoke",0,0,1,0,0,frandom(1,3))
		DSBM C 1 A_SpawnItemEx("SlayerGrenadeSmoke",0,0,1,0,0,frandom(1,3))
		DSBM D 1 A_SpawnItemEx("SlayerGrenadeSmoke",0,0,1,0,0,frandom(1,3))
		DSBM E 1 A_SpawnItemEx("SlayerGrenadeSmoke",0,0,1,0,0,frandom(1,3))
		DSBM F 1 A_SpawnItemEx("SlayerGrenadeSmoke",0,0,1,0,0,frandom(1,3))
		DSBM G 1 A_SpawnItemEx("SlayerGrenadeSmoke",0,0,1,0,0,frandom(1,3))
		DSBM H 1 A_SpawnItemEx("SlayerGrenadeSmoke",0,0,1,0,0,frandom(1,3))
		loop
	Xdeath:
		TNT1 A 0
		TNT1 A 0 A_NoGravity
		TNT1 AA 0 A_GiveToTarget ("SlayerLifeDrain",1)
		TNT1 A 1 A_GiveToTarget ("SlayerLifeDrain",1)
		goto Death
	Death:
		TNT1 A 0 A_PlaySound ("DoomSlayer/wrathnormal",0,1,0,0.6)
		TNT1 A 0 A_NoGravity
		TNT1 A 0 A_RadiusGive ("SlayerBombDrainer",175,RGF_MONSTERS|RGF_CUBE,1)
		WRML B 4 bright A_Explode (128,128,1,1)
		TNT1 A 0 Radius_Quake (2,6,0,10,0)
		TNT1 AAAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerTrail",frandom(-21,21),frandom(-21,21),frandom(10,31),frandom(-6,6),frandom(-4,8),frandom(2,3))
		TNT1 AAAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerEmber2",frandom(-16,16),frandom(-16,16),frandom(16,26),frandom(-1,1),frandom(-7,6),frandom(3,5))
		TNT1 AAAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerSmoke2",frandom(-4,4),frandom(-4,4),frandom(4,8),frandom(-4,6),frandom(-5,6),frandom(2,5))
		TNT1 AAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerSmoke",frandom(-4,4),frandom(-4,4),frandom(4,8),frandom(-4,6),frandom(-5,6),frandom(2,6))
		WRML C 3 bright
		WRML EFGH 2 bright
		stop
		
	}
}


actor SlayerGrenadeSmoke : LavaLazerSmoke
{
    Radius 1
    Height 1
	Scale 0.50
	Alpha 0.60
    States
    {
	Spawn:
		TNT1 A 2
		DSM1 ABCDEFG 2 A_FadeIn(0.02)
		Stop
	}
}


actor SlayerBombDrainer : custominventory
{
	+inventory.alwayspickup
	+INVENTORY.AUTOACTIVATE
	states
	{
	pickup:
		TNT1 A 0
		TNT1 A 1 A_CheckFlag ("Friendly", "NoHit")
		TNT1 A 0 A_JumpIfInventory ("SpiritSafety",1,"NoHit")
		TNT1 A 0 A_JumpIfInventory ("DrainBombSafety",1,"NoHit")
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_GiveInventory("SlayerLifeDrain",1, AAPTR_TARGET)
		TNT1 A 1 A_SpawnItemEx ("SlayerDrainSpawner",0,0,34,0,0,0,0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_TakeInventory ("DrainBombSafety",1)
		stop
	NoHit:
		TNT1 A 0
		TNT1 A 1 A_TakeInventory ("DrainBombSafety",1)
		stop
	}
}

Actor SlayerDrainSpawner
{ 
	Projectile
	+THRUACTORS
	States 
	{ 
	Spawn: 
		TNT1 A 0 
		TNT1 AAA 0 A_SpawnItemEx("SlayerDrainFX",frandom(-6.0,6.0),frandom(-7.0,8.0),frandom(9,16),0,0,random(-6,-8),0,SXF_NOCHECKPOSITION | SXF_SETMASTER) 
		TNT1 AA 1 A_SpawnItemEx("SlayerDrainFX",frandom(-9.0,9.0),frandom(-9.0,10.0),frandom(10,12),0,0,random(-6,-8),0,SXF_NOCHECKPOSITION | SXF_SETMASTER) 
		TNT1 AA 1 A_SpawnItemEx("SlayerDrainFX",frandom(-16.0,16.0),frandom(-15.0,16.0),frandom(15,23),0,0,random(-6,-8),0,SXF_NOCHECKPOSITION | SXF_SETMASTER) 
		TNT1 A 1 A_SpawnItemEx("SlayerDrainFX",frandom(-20.0,20.0),frandom(-21.0,21.0),frandom(20,36),0,0,random(-6,-8),0,SXF_NOCHECKPOSITION | SXF_SETMASTER) 
		TNT1 AA 1 A_SpawnItemEx("SlayerDrainFX",frandom(-9.0,9.0),frandom(-9.0,10.0),frandom(10,12),0,0,random(-6,-8),0,SXF_NOCHECKPOSITION | SXF_SETMASTER) 
		stop
	Death:
		TNT1 A 1
		stop
	}
}

Actor SlayerDrainFX 
{
	projectile
	radius 3
	height 6
	speed .1
	renderstyle translucent
	Alpha 0.9
	XScale 0.2
	YScale 1
	+FLOORCLIP
	+bright
	+DONTSPLASH
	+NOTELEPORT
	+clientsideonly
	states
	{
	spawn:
		SLX1 A random (10,18)
		SLX1 A 3 a_scalevelocity (0.60)
		goto death
	death:
		TNT1 A 1
		stop
	}
}

actor DrainBombSafety : Powerup
{
	Powerup.Duration -1
}	


actor SlayerLifeDrain : custominventory 
{
	inventory.maxamount 1
	+INVENTORY.AUTOACTIVATE
	states
	{
	pickup:
		TNT1 A 0
		TNT1 A 0 A_JumpIfHealthLower (100, "drain")
		stop
	drain:
		TNT1 A 0 A_GiveInventory ("healchecker",1)
		TNT1 A 0 A_PlaySound ("DoomSlayer/LifeDrain",1)
		TNT1 AAAAAAAAAAAAAA 0 A_SpawnItemEx ("MAXparticle",random(-8,16),random(-8,16),random(-10,10),random(-100,100)/20.0,random(-100,100)/20.0,random(-100,100)/20.0,0,160)
		TNT1 A 0 A_GiveInventory ("health", 5)
		stop
	}
}

actor WeakSlayerLifeDrain : custominventory 
{
	inventory.maxamount 1
	+INVENTORY.AUTOACTIVATE
	states
	{
	pickup:
		TNT1 A 0
		TNT1 A 0 A_JumpIfHealthLower (100, "drain")
		stop
	drain:
		TNT1 A 0 A_GiveInventory ("healchecker",1)
		TNT1 A 0 A_PlaySound ("DoomSlayer/LifeDrain",1)
		TNT1 AAAAAAAAAAAAAA 0 A_SpawnItemEx ("MAXparticle",random(-8,16),random(-8,16),random(-10,10),random(-100,100)/20.0,random(-100,100)/20.0,random(-100,100)/20.0,0,160)
		TNT1 A 0 A_GiveInventory ("health", 2)
		stop
	}
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


//=================
//==Sapphire Bomb==
//=================

actor SapphireFlashBomb : SlayerBomb
{
	states
	{
	spawn:
		TNT1 A 0 
	flight:
		DSBB A 1 A_SpawnItemEx ("BoomerangParticle", frandom(3,12),frandom(-12,12),frandom(-12,12), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS)
		DSBB B 1 
		DSBB C 1 A_SpawnItemEx ("BoomerangParticle", frandom(3,12),frandom(-12,12),frandom(-12,12), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS)
		DSBB D 1 
		DSBB E 1 A_SpawnItemEx ("BoomerangParticle", frandom(3,12),frandom(-12,12),frandom(-12,12), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS)
		DSBB F 1 
		DSBB G 1 A_SpawnItemEx ("BoomerangParticle", frandom(3,12),frandom(-12,12),frandom(-12,12), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS)
		DSBB H 1 
		loop
	Xdeath:
		TNT1 A 0
		TNT1 A 0 A_NoGravity
		TNT1 AA 0 A_GiveToTarget ("SlayerLifeDrain",1)
		TNT1 A 1 A_GiveToTarget ("SlayerLifeDrain",1)
		goto Death
	death:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("DoomSlayer/wrathnormal",0,1,0,0.6)
		TNT1 A 0 A_ChangeFlag ("NOGRAVITY",1)
		TNT1 A 0 A_RadiusGive ("SlayerBombDrainer",175,RGF_MONSTERS|RGF_CUBE,1)
		REVS F 4 bright A_Explode (128,128,1,1)
		TNT1 A 0 Radius_Quake (2,6,0,10,0)
		TNT1 AAAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerTrail",frandom(-21,21),frandom(-21,21),frandom(10,31),frandom(-6,6),frandom(-4,8),frandom(2,3))
		TNT1 AAAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerEmber2",frandom(-16,16),frandom(-16,16),frandom(16,26),frandom(-1,1),frandom(-7,6),frandom(3,5))
		TNT1 AAAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerSmoke2",frandom(-4,4),frandom(-4,4),frandom(4,8),frandom(-4,6),frandom(-5,6),frandom(2,5))
		TNT1 AAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerSmoke",frandom(-4,4),frandom(-4,4),frandom(4,8),frandom(-4,6),frandom(-5,6),frandom(2,6))
		TNT1 A 0 A_SpawnItemEx ("SapphireFlashStun",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_PlaySound ("Subweapons/BoomerangFlash",0,1,0,0.70)
		TNT1 A 0 Radius_Quake(2,10,0,20,0)
		TNT1 AAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx ("FlashBoltParticle", frandom(-150,150),frandom(-150,150),frandom(-85,85), 0,0,0, 0, SXF_NOCHECKPOSITION)
		//REVS GHIJK 3
		TNT1 A 0 A_SetScale (2,2)
		BFL1 CDDEEFF 2 
		stop
	}
}


actor SapphireFlashStun : SapphireFlashBomb
{
	damage (1)
	Damagetype "Dazer"
	speed 1
	radius 2
	height 2
	states
	{
	Spawn:
		TNT1 A 0 
		TNT1 A 1 A_Explode (1,300,0,1,300)
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//=================
//====Fire Bomb====
//=================



actor SlayerFireBomb : SlayerBomb
{
	SeeSound "DoomSlayer/firebombfly"
	obituary "%o didn't duck %k's firebomb"
	states
	{
	spawn:
		DSFB A 1 A_SpawnItemEx ("ClingFireEmber",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/10.0,Frandom(-50,50)/10.0,Frandom(-50,50)/10.0,0)
		TNT1 A 0 A_SpawnItemEx ("ClingFireEmber",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/15.0,Frandom(-50,50)/15.0,Frandom(-50,50)/15.0,0)
		DSFB B 1 A_SpawnItemEx ("ClingFireEmber",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/10.0,Frandom(-50,50)/10.0,Frandom(-50,50)/10.0,0)
		TNT1 A 0 A_SpawnItemEx ("ClingFireEmber",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/15.0,Frandom(-50,50)/15.0,Frandom(-50,50)/15.0,0)
		DSFB C 1 A_SpawnItemEx ("ClingFireEmber",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/10.0,Frandom(-50,50)/10.0,Frandom(-50,50)/10.0,0)
		TNT1 A 0 A_SpawnItemEx ("ClingFireEmber",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/15.0,Frandom(-50,50)/15.0,Frandom(-50,50)/15.0,0)
		DSFB D 1 A_SpawnItemEx ("ClingFireEmber",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/10.0,Frandom(-50,50)/10.0,Frandom(-50,50)/10.0,0)
		TNT1 A 0 A_SpawnItemEx ("ClingFireEmber",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/15.0,Frandom(-50,50)/15.0,Frandom(-50,50)/15.0,0)
		DSFB E 1 A_SpawnItemEx ("ClingFireEmber",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/10.0,Frandom(-50,50)/10.0,Frandom(-50,50)/10.0,0)
		TNT1 A 0 A_SpawnItemEx ("ClingFireEmber",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/15.0,Frandom(-50,50)/15.0,Frandom(-50,50)/15.0,0)
		DSFB F 1 A_SpawnItemEx ("ClingFireEmber",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/10.0,Frandom(-50,50)/10.0,Frandom(-50,50)/10.0,0)
		TNT1 A 0 A_SpawnItemEx ("ClingFireEmber",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/15.0,Frandom(-50,50)/15.0,Frandom(-50,50)/15.0,0)
		DSFB G 1 A_SpawnItemEx ("ClingFireEmber",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/10.0,Frandom(-50,50)/10.0,Frandom(-50,50)/10.0,0)
		TNT1 A 0 A_SpawnItemEx ("ClingFireEmber",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/15.0,Frandom(-50,50)/15.0,Frandom(-50,50)/15.0,0)
		DSFB H 1 A_SpawnItemEx ("ClingFireEmber",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/10.0,Frandom(-50,50)/10.0,Frandom(-50,50)/10.0,0)
		loop
	Xdeath:
		TNT1 A 0
		TNT1 A 0 A_NoGravity
		TNT1 AA 0 A_GiveToTarget ("SlayerLifeDrain",1)
		TNT1 A 1 A_GiveToTarget ("SlayerLifeDrain",1)
		goto Death
	death:
		TNT1 A 0
		TNT1 A 0 a_stop
		TNT1 A 0 A_PlaySound ("DoomSlayer/wrathnormal",0,1,0,0.6)
		TNT1 A 0 A_RadiusGive ("SlayerBombDrainer",175,RGF_MONSTERS|RGF_CUBE,1)
		WRML B 4 bright A_Explode (128,128,1,1)
		TNT1 A 0 Radius_Quake (2,6,0,10,0)
		TNT1 AAAAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerTrail",frandom(-21,21),frandom(-21,21),frandom(10,31),frandom(-6,6),frandom(-4,8),frandom(2,3))
		TNT1 AAAAAAAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerEmber2",frandom(-16,16),frandom(-16,16),frandom(16,26),frandom(-1,1),frandom(-7,6),frandom(3,5))
		TNT1 AAAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerSmoke2",frandom(-4,4),frandom(-4,4),frandom(4,8),frandom(-4,6),frandom(-5,6),frandom(2,5))
		TNT1 AAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerSmoke",frandom(-4,4),frandom(-4,4),frandom(4,8),frandom(-4,6),frandom(-5,6),frandom(2,6))
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx ("HarmlessClingFire",0,0,0,random(-2,2),random(-2,2),random(3,6),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx ("ClingFire",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		WRML C 3 bright
		WRML EFGH 2 bright
		stop
	}
}


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//==================
//===Thunder Bomb===
//==================


actor SlayerThunderBomb : SlayerBomb
{
	SeeSound "DoomSlayer/firebombfly"
	obituary "%o was zapped by %k's thunder bomb"

	states
	{
	spawn:
		DSTB A 1
		DSTB BEF 1
	zapping:
		TNT1 AAAA 0 A_SpawnItemEx ("LanceZaps", frandom(3,12),frandom(-12,12),frandom(-12,12), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS)
		DSTB G 1
		TNT1 AAAA 0 A_SpawnItemEx ("LanceZaps", frandom(3,12),frandom(-12,12),frandom(-12,12), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_RadiusGive ("ThunderBombDamager",200,RGF_MONSTERS|RGF_CUBE,1)
		TNT1 A 0 A_PlaySound ("GeneralFX/Zapping",CHAN_VOICE)
		DSTB G 2
		TNT1 AAAA 0 A_SpawnItemEx ("LanceZaps", frandom(3,12),frandom(-12,12),frandom(-12,12), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS)
		loop
	Xdeath:
		TNT1 A 0
		TNT1 A 0 A_NoGravity
		TNT1 AAA 0 A_GiveToTarget ("SlayerLifeDrain",1)
		TNT1 A 1 A_GiveToTarget ("SlayerLifeDrain",1)
		goto Death
	Death:
		TNT1 A 0
		TNT1 A 0 A_NoGravity		
		TNT1 A 0 A_PlaySound ("DoomSlayer/wrathnormal",0,1,0,0.6)
		TNT1 A 0 A_RadiusGive ("SlayerBombDrainer",175,RGF_MONSTERS|RGF_CUBE,1)
		WRML B 3 bright A_Explode (128,128,1,1)
		WRML B 1 bright
		TNT1 A 0 A_PlaySound ("DoomSlayer/SSGfire",0)
		TNT1 A 0 Radius_Quake (2,6,0,10,0)
		TNT1 AAAAAAA 0 Bright A_SpawnItemEx("LavaLazerTrail",frandom(-21,21),frandom(-21,21),frandom(10,31),frandom(-6,6),frandom(-4,8),frandom(2,3))
		TNT1 AAAAAAA 0 Bright A_SpawnItemEx("LavaLazerEmber2",frandom(-16,16),frandom(-16,16),frandom(16,26),frandom(-1,1),frandom(-7,6),frandom(3,5))
		TNT1 AAAAAAA 0 Bright A_SpawnItemEx("LavaLazerSmoke2",frandom(-4,4),frandom(-4,4),frandom(4,8),frandom(-4,6),frandom(-5,6),frandom(2,5))
		TNT1 AAAAAAA 0 Bright A_SpawnItemEx("LavaLazerSmoke",frandom(-4,4),frandom(-4,4),frandom(4,8),frandom(-4,6),frandom(-5,6),frandom(2,6))
		TNT1 A 0 A_SetScale (2.25)
		TNT1 A 0 A_Explode (128,128,1,1)
		TNT1 A 0 Radius_Quake (3,20,0,50,0)		
		TNT1 A 0 A_PlaySound ("subweapons/thundercrack",CHAN_VOICE,0.60,0,0.70)
		RLAN CDEFGHI 2 A_RadiusGive ("ThunderBombDamager",220,RGF_MONSTERS|RGF_CUBE,1)
		TNT1 A 40
		stop		
	}
}



Actor ThunderBombDamager : custominventory
{
	+inventory.alwayspickup
	+INVENTORY.AUTOACTIVATE
	+NOEXTREMEDEATH
	states
	{
	pickup:
		TNT1 A 0
		TNT1 A 1 A_CheckFlag ("Friendly", "NoHit")
		TNT1 A 0 A_JumpIfInventory ("SpiritSafety",1,"NoHit")
		TNT1 A 0 A_JumpIfInventory ("ThunderBombSafety",1,"NoHit")
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_FaceTarget
		TNT1 A 1 A_GiveInventory ("ThunderBombFXPart1",1)
		TNT1 A 0 A_GiveToTarget ("WeakSlayerLifeDrain",1)
		TNT1 A 0 DamageThing (45)
		TNT1 A 0 A_TakeInventory ("ThunderBombSafety",1)
		stop
	NoHit:
		TNT1 A 0
		TNT1 A 1 A_TakeInventory ("ThunderBombSafety",1)
		stop
	}
}


Actor ThunderBombFXPart1 : CustomInventory
{ 
	+INVENTORY.AUTOACTIVATE
	+INVENTORY.ALWAYSPICKUP
	States 
	{ 
	Pickup: 
		TNT1 A 0 
		TNT1 A 1
		TNT1 A 0 A_ThrowGrenade ("ThunderBombFXPart2",-15,0,0)
		stop
	}
}


actor ThunderBombFXPart2
{
	projectile
	+nointeraction
	speed 10
	+BRIGHT
	scale 2
	states
	{
	spawn:	
		TNT1 A 0
		TNT1 AAAA 0 A_SpawnItemEx ("ThunderBombFX",frandom(-16,16),frandom(-16,16),frandom(-20,25),frandom(-1,1),frandom(-1,1),0,0,SXF_NOCHECKPOSITION)
		TNT1 AAA 0 A_SpawnItemEx("ThunderBombFX",frandom(-16,16),frandom(-16,16),frandom(-20,24),frandom(-1,1),frandom(-1,1),0,0,SXF_NOCHECKPOSITION)
		TNT1 AA 0 A_SpawnItemEx("ThunderBombFX",frandom(-16,16),frandom(-16,16),frandom(-20,24),frandom(-1,1),frandom(-1,1),0,0,SXF_NOCHECKPOSITION) 
		TNT1 A 2
		Stop
	}
}

actor ThunderBombFX
{
	+NOBLOCKMAP
	+NOGRAVITY
	+BRIGHT
	+CLIENTSIDEONLY
	scale 0.80
	Mass 5
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A random (1,3)
		TNT1 A 0 A_FadeOut (0.20)
		goto ZapChoice
	ZapChoice:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_Jump (100,"Flip1","Flip2","Flip3")
		TNT1 A 0 A_Jump (60,"Zapping2")
		TZP1 ABA 2
		Goto Death
	Flip1:
		TNT1 A 0 
		TNT1 A 0 A_SetScale (ScaleX * -1, ScaleY)
		TNT1 A 0 A_Jump (60,"Zapping2")
		TZP1 ABA 2 
		Goto Death
	Flip2:
		TNT1 A 0 
		TNT1 A 0 A_SetScale (ScaleX, ScaleY * -1)
		TNT1 A 0 A_Jump (60,"Zapping2")
		TZP1 ABA 2
		Goto Death
	Flip3:
		TNT1 A 0 
		TNT1 A 0 A_SetScale (ScaleX * -1, ScaleY * -1)
		TNT1 A 0 A_Jump (60,"Zapping2")
		TZP1 ABA 2 
		Goto Death
	
	Zapping2:
		TZP1 BAB 2
		Goto Death
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}

actor ThunderBombSafety : Powerup
{
	Powerup.Duration -1
}	

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//========================
//====STUN CASTER SHOT====
//========================


actor SapphireShot : Fastprojectile
{
	projectile
	+notimefreeze
	+THRUSPECIES
	+FORCEPAIN
	+FORCEXYBILLBOARD
	+LOOKALLAROUND
	species "friendly"
	DamageType "Dazer"
	height 8
	radius 5
	speed 90
	damage (10)
	decal PlasmaScorch
	scale 1.5
	states
	{
	spawn:
		MWND C 1 bright A_SpawnItem("Sapphiretrail")
		MWND D 1 bright A_SpawnItem("Sapphiretrail")
		loop
	Death:
		MWND E 3 Bright A_PlaySound ("Doomslayer/StunCasterMiss",0)
		MWND F 2 Bright
		TNT1 A 0 A_SetScale (0.80)
		MWND GHI 2 Bright
		Stop
	Xdeath:
		TNT1 A 0
		MWND E 1 bright A_PlaySound ("Doomslayer/StunCasterHit",0)
		MWND E 1 Bright 
		MWND E 1 Bright
		MWND F 2 Bright
		MWND G 3 Bright
		MWND H 2 Bright
		MWND I 3 Bright
		Stop
		
	}
}

//normal shot trails

ACTOR Sapphiretrail
{
	+NOBLOCKMAP
	+NOGRAVITY
	+bright
	+NOTELEPORT
	+CANNOTPUSH
	+NODAMAGETHRUST
	+clientsideonly
	RenderStyle add
	Alpha 0.80
	scale 0.80
	States
	{
	Spawn:
		TNT1 A 0
		MWND CD 2 
		Stop
	}
}



actor StunCasterBurst
{
	+notimefreeze
	+skyexplode
	+BRIGHT
	projectile
	+THRUSPECIES
	species "friendly"
	+FORCEXYBILLBOARD
	+SEEINVISIBLE
	+FORCEPAIN
	+DONTREFLECT
	Damagetype "Dazer"
	radius 12
	height 10
	damage (0)
	speed 30
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 1 A_Stop
		goto Death
	death:
		TNT1 A 0
		TNT1 A 0 A_Explode (1,200,0,1,200)
		TNT1 A 0 A_PlaySound ("Subweapons/BoomerangFlash",0,1,0,0.30)
		TNT1 A 0 Radius_Quake(2,10,0,20,0)
		TNT1 AAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx ("FlashBoltParticle", frandom(-85,85),frandom(-100,100),frandom(-65,65), 0,0,0, 0, SXF_NOCHECKPOSITION)
		stop
	}
}
