ACTOR QuickGrenade
{
  Radius 11
  Height 8
  Speed 30
  Damage 3
  Projectile
  +RANDOMIZE
  -NOGRAVITY
  +BOUNCEONCEILINGS
  +BOUNCEONWALLS
  +CANBOUNCEWATER
  +BOUNCEONACTORS
  +USEBOUNCESTATE
  -NOTELEPORT
  -THRUACTORS
  Scale 0.25
  Gravity 0.8
  Alpha 0.90
  BounceType "Doom"
  BounceCount 6
  BounceFactor 0.33
  ReactionTime 23
  BounceSound "GRNDBNC"
  WallBounceSound "GRNDBNC"
  Obituary "%o held onto %k's things for a little longer than a second."
  States
  {
  Spawn:
    GREN A 2 { A_Countdown; A_SpawnItemEx("GLFlare",0,0.2*random(-10,10),0.2*random(-10,10),0,0,0,0,0,0); }
	GREN BCDEFGH 2 A_SpawnItemEx("GLFlare",0,0.2*random(-10,10),0.2*random(-10,10),0,0,0,0,0,0)
    loop
  Bounce.Actor:
  	GREN A 0 A_ScaleVelocity(0.3)
	GREN A 0 A_ChangeFlag("THRUACTORS",1)
	Goto Spawn
	Death:
      TNT1 A 0
	  TNT1 A 0 A_PlaySound("QKGNBNC")
	  TNT1 A 0 A_Jump(256, "Delay1", "Delay2")
	  Goto Delay1
   Delay1:
      GREN I 20 
	  Goto Explode
   Delay2:
      GREN J 20 
	  Goto Explode
	Explode:
	FX08 B 0
	FX08 B 0 A_PlaySoundEX("GRNDXPL",CHAN_7)
    FLCR A 0 A_ChangeFlag("NOCLIP",0)
	TNT1 A 0 A_Scream
    FLCR A 0 A_ChangeFlag("NOBLOCKMAP",0)
    TNT1 A 0 A_SetScale(0.5)
	FLCR A 0 A_AlertMonsters
	TNT1 A 0 A_SpawnItemEx("BaseFlash", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE)
	TNT1 A 0 A_ChangeFlag("NOTIMEFREEZE",0)
	FLFR M 0 bright A_SpawnItemEx("BaseBlast", 0, 0, 0, 0, 0, 2, 0, SXF_CLIENTSIDE)
	TNT1 A 0 A_SpawnItemEx ("GrenadeBoom",0,0,13,0,0,0,0,SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS,0)
    TNT1 AAAAAAAAAAA 0 A_CustomMissile("DarkSmoke",0,0,Random(0,360),2,Random(0,360))
    TNT1 A 0 
 	{
    A_SpawnItemEx ("DBEffect2",0,0,0,2,0,random(-2,2),random(0,359),SXF_CLIENTSIDE);
    A_SpawnItemEx ("DBEffect2",0,0,0,2,0,random(-3,3),random(0,359),SXF_CLIENTSIDE);
	A_SpawnItemEx ("DBEffect3",0,0,0,2,0,random(-4,4),random(0,359),SXF_CLIENTSIDE);
	A_SpawnItemEx ("DBEffect3",0,0,0,2,0,random(-4,4),random(0,359),SXF_CLIENTSIDE);
	}
    TNT1 A 0 A_CheckFloor("FloorKlutz")
	FLFR M 0 A_ChangeFlag("NOGRAVITY",1)
	TNT1 A 0 A_CustomBulletAttack(180,100,FRandom(48.0,64.0),FRandom(2.0,10.0),"DisasterKnockbackPuff")
    TNT1 AAA 0 A_SpawnItemEx ("MGExplode2",0,0,0,2,0,random(1,2),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAAA 0 A_SpawnItemEx ("MGExplode",0,0,0,2,0,random(1,3),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAA 0 A_SpawnItemEx ("MGExplode3",0,0,0,2,0,random(2,4),random(0,359),SXF_CLIENTSIDE)
	TNT1 AAAAAAAAAAAAAA 1 bright  
	{
	A_Quake(8, 6, 0, 48576, "None");
	A_SpawnItemEx("GLFire1", Random(-30, 30), Random(-30, 30), Random(20, -20), 0, 1, 2, 0, 128); 
	A_SpawnItemEx("GLFire1", random (-20, 20), random (-20, 20), Random(20, -20), 0, 1, 2, 0, 128);
    A_SpawnItemEx("DBFlare2", random (-10, 10), random (-10, 10), Random(10, -10), 0, 1, 2, 0, 128);
	}
    Stop
	}
}

Actor GrenadeBoom
{
   Radius 2
   Height 2
  +MISSILE
  +NOCLIP
  States
  {
  Spawn:
    TNT1 A 0
	TNT1 A 0 A_Explode(168,160)
	TNT1 I 0 A_RadiusThrust(150, 100, RTF_AFFECTSOURCE|RTF_THRUSTZ)
    Stop
  }
}

actor GLFlare
{
	Scale 0.08
	Alpha 0.5
	+NOGRAVITY
	States
	{
	Spawn:
	    FLCR A 0 
		FLCR A 1 Bright A_SpawnItemEx("GLFire2",0,0,0,0,0,0,0,0,0)
	    FLCR AAAAA 1 Bright A_SpawnItemEx("DBSmoke4",0,0.2*random(-10,10),0.2*random(-10,10),0,0,0,0,0,0)
		Stop
		}
}	

ACTOR GLFire1 : DisasterShotSmoke
{
    +DONTTHRUST
    +NODAMAGETHRUST
	DamageType "Fire"
	Alpha 0.9
	Scale  1.2
	States
	{
    Spawn:
    FGFR D 1 bright NoDelay A_ChangeFlag("SPRITEFLIP", random(0,1))
	FGFR EFGHIJKLMNOPQRS 1 bright { A_FadeOut(0.02,1); A_SetRoll(Roll+frandom(8,9),SPF_INTERPOLATE);}
    Stop
    }
}

ACTOR GLFire2 : GLFire1
{
	Scale  0.2
}

