//Ze barrel, shamelessly stolen and modified from Xaser and Prophet's work. God bless 'em both, and curse me for eternity!
ACTOR PopBarrel : ExplosiveBarrel replaces ExplosiveBarrel
{
  States
  {
  Spawn:
    BAR1 ABCDEFGHIJKLM 1 A_SpawnItemEx("BarrelParticle",frandom(10.0,-10.0),frandom(10.0,-10.0),26+frandom(2.0,-2.0),frandom(0.4,-0.4),frandom(0.4,-0.4),frandom(2.2,0.4),frandom(0.0,360.0),SXF_CLIENTSIDE,164)
    Loop
  Death:
	BEXP ABC 4 Bright
	TNT1 A 0 A_RadiusGive("GumpopItem",128,RGF_MONSTERS,1)
	TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("BarrelParts",0,0,0,random(2,3),0,random(6,9),random(0,360),160,0) 
    TNT1 A 0 A_SpawnItemEx("Gumpop_Impact",0,0,20,0,0,0,SXF_CLIENTSIDE,0)
	TNT1 A 0 A_PlaySound("Barrel/Exp")
	TNT1 A 0 A_NoBlocking
	TNT1 A 0 A_SpawnItemEx("Pop_Explosion",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS,0)
	//TNT1 A 0 A_SpawnItemEx("Pop_Explosion",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS,0)
	TNT1 A 0 A_SpawnItemEx("BarrelShell",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
	TNT1 A 1050 A_BarrelDestroy
    	TNT1 A 5 A_Respawn
   	Wait
  }
}

ACTOR Pop_Explosion
{
  DamageType Acid
  +NOINTERACTION
  +NOGRAVITY
  +FORCERADIUSDMG
  Obituary "%o shouldn't touch that darned thing."
  States
  {
  Spawn:
  TNT1 A 1 NoDelay A_Explode(100,128)
  Stop
  }
}

ACTOR BarrelParts
{
   Radius 6
   Height 4
   Scale 0.3
   PROJECTILE
   -NOGRAVITY
   +FLOORCLIP
   BounceType Hexen
   BounceCount 6
   Scale 0.75
   States
   {
   Spawn:
      BARF A 0 A_Jump(128,1,2,3,4,5,6,7)
      BARF ABCDEFGHIJ 2
      Loop
   Death:
      TNT1 A 0 A_SpawnItemEx("BarrelShard",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
      Stop
   }
}

ACTOR BarrelShard
{
   -NOGRAVITY
   +FLOORCLIP
   States
   {
   Spawn:
      BARF A 0 NoDelay A_Jump(256,"A","B","C","D","E","F","G","H","I","J")
   A:
      BARF A 0
      Goto Borf
   B:
      BARF B 0
      Goto Borf
   C:
      BARF C 0
      Goto Borf
   D:
      BARF D 0
      Goto Borf
   E:
      BARF E 0
      Goto Borf
   F:
      BARF F 0
      Goto Borf
   G:
      BARF G 0
      Goto Borf
   H:
      BARF H 0
      Goto Borf
   I:
      BARF I 0
      Goto Borf
   J:
      BARF J 0
   Borf:
      "####" "#" 210 A_CheckSight("Fadying")
      Loop
   Fadying:
      "####" "#" 1 A_FadeOut(0.1)
	  Wait
   }
}

ACTOR BarrelShell
{
	+FLOORCLIP
	-NOGRAVITY
	States
	{
	Spawn:
      		BARR Y 0
			"####" "#" 210 A_CheckSight("Fadying")
			Loop
	Fadying:
			"####" "#" 1 A_FadeOut(0.1)
			Wait
	}
}