ACTOR HQFunGun : HQWeapon
{
   +Ammo_CheckBoth
   Inventory.PickupMessage "\c[White][ \c[Purple]40mm GL-79 \"Fun-Gun\" Custom Launcher\c- \c[White]]"
   Tag "GL-79 \"Fun-Gun\""
   Weapon.SelectionOrder 1900
   Weapon.AmmoUse1 1
   Weapon.AmmoUse2 1
   Weapon.AmmoGive2 3
   Weapon.Kickback 4
   weapon.ammotype1 "M79Loaded"
   weapon.ammotype2 "ThumperAmmo"
   Weapon.UpSound "FUNSEL"
   Inventory.PickupSound "FUNPKP"
   Weapon.SlotNumber 3
   Scale 0.3
   +NOALERT
   +NOAUTOFIRE
   obituary "%k %o a barrel of fun."
   States
   {
  Spawn:
    FUNT A -1
    Stop
   Ready: 
     FUNO A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_ALLOWUSER1|WRF_ALLOWUSER2|WRF_ALLOWUSER3)
      Loop
   Deselect:
      NULL A 0 A_JumpIf(CountInv("HQGrabbedBarrel") == 1,"ZeroFucksGiven")
      FUNO A 1 A_Lower(20)
      Loop
   Select:
      TNT1 A 1
      TNT1 A 0 A_JumpIfInventory("HQThumperToken",1,"SelectNormal") 
      TNT1 A 0 A_Giveinventory("HarleyTalk",1)
	  TNT1 A 0 A_Giveinventory("HQThumperToken",1)
      TNT1 A 0 A_Playsound("HQVFUN",CHAN_VOICE)
      Goto SelectNormal
  SelectNormal:
      FUNO A 1 A_Raise(20)
      LOOP
   Fire:
    FUNO A 0 A_JumpIf(CountInv("M79Loaded") == 0,"Reload")
	FUNO A 0 A_PlayWeaponSound("")
	FUNO A 0 A_AlertMonsters
	SWSH CCCCCC 0
 	{
	If (CountInv("ThumperAlt") && CountInv("ThumperAmmo2") > 0)
	{
	A_PlayWeaponSound("THMPALT");
	A_FireCustomMissile("MuzzleSparks",random(-6.0,6.0),0,4,10,FPF_NOAUTOAIM,random(-6.0,6.0));
	A_FireCustomMissile("ThumpShot",frandom(-7.5,7.5),0,4,10,FPF_NOAUTOAIM,frandom(-7.5,7.5));
	A_FireCustomMissile("ThumpShot",frandom(-6.5,6.5),0,4,10,FPF_NOAUTOAIM,frandom(-6.5,6.5));
	A_FireCustomMissile("ThumpShot",frandom(-4.5,4.5),0,4,10,FPF_NOAUTOAIM,frandom(-4.5,4.5));
	A_FireCustomMissile("ThumpShot",frandom(-3.0,3.5),0,4,10,FPF_NOAUTOAIM,frandom(-3.5,3.5));
	A_FireCustomMissile("ThumpShot",frandom(-2.0,2.5),0,4,10,FPF_NOAUTOAIM,frandom(-2.5,2.5));
	A_FireCustomMissile("ThumpShot",frandom(-1.0,1.5),0,4,10,FPF_NOAUTOAIM,frandom(-1.5,1.5));
	}
	Else
	{
	A_PlayWeaponSound("THMPFIR");
	A_FireCustomMissile("FlareParticle",random(-6.0,6.0),0,4,10,FPF_NOAUTOAIM,random(-5.0,5.0));
	A_FireCustomMissile("DBShot2",frandom(-7.5,7.5),0,4,10,FPF_NOAUTOAIM,frandom(-7.5,7.5));
	A_FireCustomMissile("DBShot2",frandom(-4.5,4.5),0,4,10,FPF_NOAUTOAIM,frandom(-4.5,4.5));
	A_FireCustomMissile("DBShot2",frandom(-2.5,2.5),0,4,10,FPF_NOAUTOAIM,frandom(-2.5,2.5));
	A_FireCustomMissile("DBShot2",frandom(-1.5,1.5),0,4,10,FPF_NOAUTOAIM,frandom(-1.5,1.5));
	}
	} 
	LUGK A 0
 	{
	If (CountInv("ThumperAlt") && CountInv("ThumperAmmo2") > 0)
	{
	A_FireCustomMissile("FlammableHeater2", frandom(-3.5,3.5), 1, Random(5, 8), Random(5, 10),FPF_NOAUTOAIM,frandom(-3.5,3.5));
	A_FireCustomMissile("FlammableHeater2", frandom(-2.5,2.5), 0, Random(5, 8), Random(5, 10),FPF_NOAUTOAIM,frandom(-2.5,2.5));
	A_FireCustomMissile("FlammableHeater2", frandom(-4.5,4.5), 0, Random(5, 8), Random(5, 10),FPF_NOAUTOAIM,frandom(-4.5,4.5));
	A_FireCustomMissile("FlammableHeater2", frandom(-2.5,2.5), 0, Random(5, 8), Random(5, 10),FPF_NOAUTOAIM,frandom(-2.5,2.5));
	A_TakeInventory("ThumperAmmo2",1);
	}
	Else
	{
	A_FireCustomMissile("DBShot1",frandom(0.0,0.0),1,8,10,FPF_NOAUTOAIM,frandom(-0.0,0.0));
	}
	}
	LUGK A 0 A_FireCustomMissile("ShotSpawn",0,0,6,12,0,0)
	LUGK A 0
	{
	If(pitch>60)
		{ A_ChangeVelocity(-cos(pitch)*11,0,sin(pitch)*11,CVF_RELATIVE); }
	Else 
	{A_Recoil(9);}
	}
	FUNF AF 1 BRIGHT
	NULL A 0 A_ZoomFactor(0.975)
    NULL A 0 A_SetPitch(Pitch -1.8)
	MGNF B 0 A_Quake(8, 6, 0, 48576, "None")
    FUNF B 3
	FUNF CD 2
	NULL A 0 A_ZoomFactor(1.000)
	FUNF E 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_ALLOWZOOM|WRF_NOBOB|WRF_ALLOWUSER1|WRF_ALLOWUSER2)
	FUNO A 2 A_WeaponReady(WRF_ALLOWRELOAD|WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_ALLOWZOOM|WRF_NOBOB|WRF_ALLOWUSER1|WRF_ALLOWUSER2)
	FUNO A 0 A_JumpIfInventory("ThumperAmmo",1,"Reload")
    Goto Ready
   AltFire:
    FUNO A 0 A_JumpIfInventory("M79Loaded",1,1)
	Goto Reload
	FUNO A 0 
	FUNO A 0 A_AlertMonsters
	LUGK A 0
 	{
	If (CountInv("ThumperAlt") && CountInv("ThumperAmmo2") > 0)
	{
	A_PlayWeaponSound("THMPAL2");
	A_FireCustomMissile("BettyShot",frandom(0.0,0.0),0,8,10,0,frandom(-0.0,0.0));
	A_TakeInventory("M79Loaded",1,TIF_NOTAKEINFINITE);
	A_TakeInventory("ThumperAmmo2",1);
	}
	Else
	{
	A_PlayWeaponSound("THMPFI2");
	A_FireCustomMissile("SmokeShot",frandom(0.0,0.0),0,8,10,0,frandom(-0.0,0.0));
	A_TakeInventory("M79Loaded",1,TIF_NOTAKEINFINITE);
	}
	}
    SWSH C 0 
	LUGK A 0 A_FireCustomMissile("ShotSpawn",0,0,6,12,0,0)
	FUNF AF 1 BRIGHT
	NULL A 0 A_ZoomFactor(0.975)
    NULL A 0 A_SetPitch(Pitch -1.8)
	MGNF B 0 A_Quake(8, 6, 0, 48576, "None")
    FUNF B 3
	FUNF CD 2
	NULL A 0 A_ZoomFactor(1.000)
	FUNF E 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_ALLOWZOOM|WRF_NOBOB|WRF_ALLOWUSER1|WRF_ALLOWUSER2)
	FUNO A 2 A_WeaponReady(WRF_ALLOWRELOAD|WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_ALLOWZOOM|WRF_NOBOB|WRF_ALLOWUSER1|WRF_ALLOWUSER2)
	FUNO A 0 A_JumpIfInventory("ThumperAmmo",1,"Reload")
    Goto Ready
    Reload:
  FUNO A 0 A_JumpIfInventory("M79Loaded", 1, 2)
  FUNO A 0 A_JumpIfInventory("ThumperAmmo", 1, "ReloadWork")
  FUNO A 1 A_WeaponReady
  Goto Inspect
	ReloadWork:
  TNT1 A 0 A_GiveInventory("SheReloads",1)
  FUNR AB 1
  FUNR CD 2
  FUNR E 3
  FUNO A 0 A_PlaySoundEX("THMPUNL",CHAN_7)
  FUNR FH 1
  LUGE B 0 A_FireCustomMissile("60mmCaseSpawn",345+random(-8,8),0,0,-15,0)
  TNT1 A 5
  FUNL AB 1
  FUNL C 2
  FUNL DEF 1
  FUNO A 0 A_PlaySound("THMPREL")
  TNT1 A 5
  ReloadLoop:
  FUNR H 0 A_TakeInventory("ThumperAmmo", 1)
  FUNR H 0 A_GiveInventory("M79Loaded", 1)
  FUNR H 0 A_JumpIfInventory("M79Loaded", 1, "ReloadFinish")
  FUNR H 0 A_JumpIfInventory("ThumperAmmo", 1, "ReloadLoop")
  Goto ReloadFinish
  ReloadFinish:
  FUNR JKLMN 1
  FUNO A 0 A_PlaySoundEX("THMPDRW",CHAN_7)
  FUNR O 3
  FUNR PQR 2
  FUNR A 2
  FUNO A 1
  TNT1 A 0 A_TakeInventory("SheReloads",99)
  Goto Ready
  Flash:
    FUNF A 3 Bright A_Light1
    FUNF A 3 Bright A_Light0
    Goto LightDone
  Zoom:
   FUNZ AC 1
   TNT1 A 0 A_Overlay (-3, "QuickMelee")
   FUNZ D 8
   FUNZ CBA 2
   Goto Ready
  User1:
   MELE A 0 A_JumpIfInventory("ThrowableAmmo",1,1)
   Goto GrenadeDry
   FUNZ AC 1
   TNT1 A 0 A_Overlay (-3, "ThrowNao")
   FUNZ D 8
   FUNZ CBA 2
   Goto Ready
   User2:
   SOCH A 0 A_JumpIfInventory("StimAmmo",1,1)
   Goto StimDry
   SOCH A 0 A_JumpIfInventory("SpeedItem",1,2)
   SOCH A 0 A_JumpIfHealthLower(100, 1)
   Goto HealthFull
   FUNZ AC 1
   TNT1 A 0 A_Overlay (-3, "InjectorPlunge")
   FUNZ D 30
   FUNZ CBA 2
   Goto Ready
   GrenadeDry:
   FUNO A 1 ACS_NamedExecute("NoGrenades", 0)
   Goto Ready
   HealthFull:
   FUNO A 1 ACS_NamedExecute("FullHealth", 0)
   Goto Ready
   StimDry:
   FUNO A 1 ACS_NamedExecute("NoStims", 0)
   Goto Ready
   Inspect:
   FUNR AB 1
   FUNR CD 2
   FUNR E 3
   FUNO A 0 A_PlaySoundEX("THMPUNL",CHAN_7)
   FUNR FH 1
   Goto InspectHold
  InspectHold:
   FUNR I 5 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY)
   NULL A 0 A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_RELOAD, "InspectHold")
  Goto InspectFinish
  InspectFinish:
   FUNR KLMN 1
   FUNO A 0 A_PlaySoundEX("THMPDRW",CHAN_7)
   FUNR O 3
   FUNR PQR 2
   FUNR A 2
   FUNO A 1
   Goto Ready
  User3:
  SOCO A 0 A_JumpIfInventory("ThumperAlt", 1, "AmmoToggle2")
  SOCO A 0 A_JumpIfInventory("ThumperAmmo2", 1, "AmmoToggle1")
  Goto AmmoToggle3
  AmmoToggle1:
  FUNO A 1 A_GiveInventory("ThumperAlt", 1)
  Goto AmmoSwapAnim
  AmmoToggle2:
  FUNO A 1 A_TakeInventory("ThumperAlt", 99)
  Goto AmmoSwapAnim
  AmmoToggle3:
  FUNO A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_ALLOWUSER1|WRF_ALLOWUSER2|WRF_ALLOWUSER3)
  Goto Ready
  AmmoSwapAnim:
  FUNR AB 1
  FUNR CD 1
  FUNR E 2
  FUNO A 0 A_PlaySoundEX("THMPUNL",CHAN_7)
  FUNR FH 1
  TNT1 A 3
  FUNL AB 1
  FUNL C 2
  FUNL DEF 1
  FUNO A 0 A_PlaySound("THMPREL")
  TNT1 A 3
  FUNR JKLMN 1
  FUNO A 0 A_PlaySoundEX("THMPDRW",CHAN_7)
  FUNR O 3
  FUNR PQR 2
  FUNR A 2
  FUNO A 1
  Goto Ready
  }
}

ACTOR M79Loaded : Ammo
{
   +IGNORESKILL
   Inventory.Amount 0
   Inventory.MaxAmount 1
   Ammo.BackpackAmount 0
   Ammo.BackpackMaxAmount 1
}

ACTOR DBShot1
{
  Radius 5
  Height 5
  Speed 75
  Damage (10)
  DamageType Fire
  Projectile
  +RANDOMIZE
  Alpha 0.7
  RenderStyle Add
  Decal "DoomImpScorch"
  Scale 0.2
  -NOINTERACTION
  +FORCEPAIN
  +NOBOSSRIP
  +NOGRAVITY
  +PUFFGETSOWNER
  +HITTRACER
  ProjectileKickback 300
  obituary "%o gave %k a barrel of fun."
  States
  {  
  Spawn:
	TNT1 A 1 A_CheckProximity("SpawnNone","PlayerPawn",65,1,CPXF_ANCESTOR)
	BLS1 A 0 A_ChangeFlag("NOTIMEFREEZE",0)
    BRBL AA 1 bright A_SpawnItemEx("DBFlare3",0,0.2*random(-10,10),0.2*random(-10,10),0,0,0,0,0,0)
	BRBL AAA 1 bright { A_Explode(38,60,0); A_SpawnItemEx("DBSmoke5",0,0.2*random(-10,10),0.2*random(-10,10),0,0,0,0,0,0); }
	BRBL A 0 A_ChangeFlag("SOLID",0)
	BRBL A 0 A_ChangeFlag("NOCLIP",0)
	BRBL A 0 A_ChangeVelocity(0,0,0,CVF_REPLACE)
	Goto StopNow
  StopNow:
	FLFR A 0 A_SpawnItemEx("DBVEffect",0,0,0,20,0,0,0,SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS|SXF_TRANSFERPITCH)
    Stop
  SpawnNone:
	TNT1 A 1 
	Goto Spawn
	Death:
	Crash:
	TNT1 A 0 A_CheckFlag("NOBLOOD","StopNow",AAPTR_TRACER)
    TNT1 AAAAAA 0 A_CustomMissile("FlareParticle2", 0, 0, random(0,360), 2, random(-90,90))
    TNT1 A 0 
	{
    A_SpawnItemEx ("DBEffect5",0,0,0,2,0,random(-2,2),random(0,359),SXF_CLIENTSIDE);
    A_SpawnItemEx ("DBEffect5",0,0,0,2,0,random(-3,3),random(0,359),SXF_CLIENTSIDE);
	A_SpawnItemEx ("DBEffect4",0,0,0,2,0,random(-4,4),random(0,359),SXF_CLIENTSIDE);
	A_SpawnItemEx ("DBEffect4",0,0,0,2,0,random(-4,4),random(0,359),SXF_CLIENTSIDE);
	}
	TNT1 B 1 A_Quake(4,10,0,3200,"none")
    TNT1 I 0 bright A_Explode(128,160,0)
	TNT1 AAAAAAAAAA 1 bright  
	{
	A_SpawnItemEx("DBFire1", Random(-30, 30), Random(-30, 30), Random(20, -20), 0, 1, 2, SXF_NOCHECKPOSITION, 128); 
	A_SpawnItemEx("DBFire2", random (-20, 20), random (-20, 20), Random(20, -20), 0, 1, 2, SXF_NOCHECKPOSITION, 128);
    A_SpawnItemEx("DBFlare2", random (-10, 10), random (-10, 10), Random(10, -10), 0, 1, 2, SXF_NOCHECKPOSITION, 128);
	}
    TNT1 A 0 A_CustomMissile("DBEffect2",22,0,(random(0,360)),CMF_AIMDIRECTION)
	TNT1 AAAAAAAAAA 1 bright  
	{
	A_SpawnItemEx("DBFire1", Random(-30, 30), Random(-30, 30), Random(20, -20), 0, 1, 2, SXF_NOCHECKPOSITION, 128); 
	A_SpawnItemEx("DBFire2", random (-20, 20), random (-20, 20), Random(20, -20), 0, 1, 2, SXF_NOCHECKPOSITION, 128);
    A_SpawnItemEx("DBFlare2", random (-10, 10), random (-10, 10), Random(10, -10), 0, 1, 2, SXF_NOCHECKPOSITION, 128);
	}
    TNT1 A 0 A_CustomMissile("DBEffect3",22,0,(random(0,360)),CMF_AIMDIRECTION)
	TNT1 AAAAAAAAAA 1 bright  
	{
	A_SpawnItemEx("DBFire1", Random(-30, 30), Random(-30, 30), Random(20, -20), 0, 1, 2, SXF_NOCHECKPOSITION, 128); 
	A_SpawnItemEx("DBFire2", random (-20, 20), random (-20, 20), Random(20, -20), 0, 1, 2, SXF_NOCHECKPOSITION, 128);
    A_SpawnItemEx("DBFlare2", random (-10, 10), random (-10, 10), Random(10, -10), 0, 1, 2, SXF_NOCHECKPOSITION, 128);
	}
    TNT1 A 0 A_CustomMissile("DBEffect2",22,0,(random(0,360)),CMF_AIMDIRECTION)
	TNT1 AAAAAAAAAA 1 bright  
	{
	A_SpawnItemEx("DBFire1", Random(-30, 30), Random(-30, 30), Random(20, -20), 0, 1, 2, SXF_NOCHECKPOSITION, 128); 
	A_SpawnItemEx("DBFire2", random (-20, 20), random (-20, 20), Random(20, -20), 0, 1, 2, SXF_NOCHECKPOSITION, 128);
    A_SpawnItemEx("DBFlare2", random (-10, 10), random (-10, 10), Random(10, -10), 0, 1, 2, SXF_NOCHECKPOSITION, 128);
	}
    TNT1 A 0 A_CustomMissile("DBEffect3",22,0,(random(0,360)),CMF_AIMDIRECTION)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 bright  
	{
	A_SpawnItemEx("DBFire1", Random(-30, 30), Random(-30, 30), Random(20, -20), 0, 1, 2, SXF_NOCHECKPOSITION, 128); 
	A_SpawnItemEx("DBFire2", random (-20, 20), random (-20, 20), Random(20, -20), 0, 1, 2, SXF_NOCHECKPOSITION, 128);
    A_SpawnItemEx("DBFlare2", random (-10, 10), random (-10, 10), Random(10, -10), 0, 1, 2, SXF_NOCHECKPOSITION, 128);
	}
   Stop
	XDeath:
	TNT1 A 0 A_JumpIfHealthLower(300,"StopNow", AAPTR_TRACER)
	TNT1 A 0 
	{
    A_SpawnItemEx ("DBEffect5",0,0,0,2,0,random(-2,2),random(0,359),SXF_CLIENTSIDE);
    A_SpawnItemEx ("DBEffect5",0,0,0,2,0,random(-3,3),random(0,359),SXF_CLIENTSIDE);
	A_SpawnItemEx ("DBEffect4",0,0,0,2,0,random(-4,4),random(0,359),SXF_CLIENTSIDE);
	A_SpawnItemEx ("DBEffect4",0,0,0,2,0,random(-4,4),random(0,359),SXF_CLIENTSIDE);
	}
	TNT1 B 5
    TNT1 A 0 A_CustomMissile("DBEffect5",22,0,(random(0,360)),CMF_AIMDIRECTION)
    Stop
   }
 }
 
ACTOR DBVEffect
{
  RenderStyle Add
  +NOGRAVITY
  +NOBLOCKMAP
  +NOTIMEFREEZE
  +ROLLSPRITE
  +ROLLCENTER
  +NOCLIP
  Scale 0.9
  Alpha 0.67
  DamageType Fire
  DeathSound "STGLAHIT"
  Decal "DoomImpScorch"
  States
  {
  Spawn:
    TNT1 A 0
  Death:
    FLCR A 0 A_ChangeFlag("NOCLIP",0)
    TNT1 A 0
 	{
    A_SpawnItemEx ("DBEffect5",0,0,0,2,0,random(-2,2),random(0,359),SXF_CLIENTSIDE);
    A_SpawnItemEx ("DBEffect5",0,0,0,2,0,random(-3,3),random(0,359),SXF_CLIENTSIDE);
	}
	TNT1 AAA 1 
 	{
	A_Explode(128,160,0);
	A_SpawnItemEx ("DBEffect4",0,0,0,2,0,random(-4,4),random(0,359),SXF_CLIENTSIDE);
	A_SpawnItemEx ("DBEffect4",0,0,0,2,0,random(-4,4),random(0,359),SXF_CLIENTSIDE);
	}
	BRBL A 0 A_ChangeFlag("SOLID",0)
	BRBL A 0 A_ChangeFlag("NOCLIP",1)
	TNT1 B 10 A_Quake(1,40,0,3200,"none")
   Stop
   }
  }
  
 
ACTOR DBShot2
{
  Radius 5
  Height 5
  Speed 75
  Damage (10)
  DamageType Fire
  Projectile
  +RANDOMIZE
  +FORCEPAIN
  +NOGRAVITY
  -NOINTERACTION
  Alpha 0.7
  RenderStyle Add
  Decal "DoomImpScorch"
  Scale 0.1
  ProjectileKickback 300
  obituary "%o gave %k a barrel of fun."
  States
  {  
  Spawn:
	TNT1 A 1 A_CheckProximity("SpawnNone","PlayerPawn",65,1,CPXF_ANCESTOR)
    BRBL AAA 1 bright A_SpawnItemEx("DBFlare3",0,0.2*random(-10,10),0.2*random(-10,10),0,0,0,0,0,0)
	BRBL A 0 A_ChangeFlag("SOLID",0)
	BRBL A 0 A_ChangeFlag("NOCLIP",0)
	BRBL A 0 A_ChangeFlag("NOINTERACTION",0)
	BRBL A 0 A_ChangeVelocity(0,0,0,CVF_REPLACE)
	FWFX A 0 
	{
    A_SpawnItemEx ("DBEffect4",0,0,0,2,0,random(-2,2),random(0,359),SXF_CLIENTSIDE);
    A_SpawnItemEx ("DBEffect4",0,0,0,2,0,random(-3,3),random(0,359),SXF_CLIENTSIDE);
	A_SpawnItemEx ("DBEffect4",0,0,0,2,0,random(-4,4),random(0,359),SXF_CLIENTSIDE);
	}
    FWFX ABBCCDD 1 Bright { A_SetScale(ScaleX+FRandom(0.01,0.05),ScaleY+FRandom(0.01,0.05)); }
    FLCR A 0 A_ChangeFlag("NOTIMEFREEZE",0)
    FWFX EEEFFFGGG 1 Bright { A_FadeOut(0.025,TRUE); A_SetScale(ScaleX+FRandom(0.01,0.05),ScaleY+FRandom(0.01,0.05)); }
	FWFX GGGG 1 { A_FadeOut(0.055,TRUE); A_SetScale(ScaleX+0.0125,ScaleY+0.0125); }
    Stop
  SpawnNone:
	TNT1 A 1 
	Goto Spawn
  Death:
  Crash:
    VORX A 0
    CFIR AA 0 A_CustomMissile("FlareParticle2", 0, 0, random(0,360), 2, random(-90,90))
	Goto XDeath
   XDeath:
	FWFX A 0 
	{
	A_SpawnItemEx ("DBEffect4",0,0,0,2,0,random(-4,4),random(0,359),SXF_CLIENTSIDE);
	}
    FWFX ABBCCDD 1 Bright { A_SetScale(ScaleX+FRandom(0.025,0.05),ScaleY+FRandom(0.025,0.05)); }
    FLCR A 0 A_ChangeFlag("NOTIMEFREEZE",0)
    FWFX EEEFFFGGG 1 Bright { A_FadeOut(0.025,TRUE); A_SetScale(ScaleX+FRandom(0.015,0.03),ScaleY+FRandom(0.015,0.03)); }
	FWFX GGGG 1 { A_FadeOut(0.055,TRUE); A_SetScale(ScaleX+0.0125,ScaleY+0.0125); }
    stop
  }
}

ACTOR ThumpShot
{
  Radius 11
  Height 8
  Speed 40
  Damage(random(5,15))
  Projectile
  +RANDOMIZE
  +DoomBounce
  -BLOODLESSIMPACT
  -NOGRAVITY
  +BOUNCEONCEILINGS
  -MOVEWITHSECTOR
  +FORCEXYBILLBOARD
  +SKYEXPLODE
  +FORCEPAIN
  bouncecount 6 
  Scale 0.25
  Gravity 0.15
  BounceSound "THMPBNC"
  WallBounceSound "THMPBNC"
  DeathSound "THMPBNC"
  Decal "DisasterBulletChip"
  DamageType "SSG"
  Obituary "%k committed a terrible crime. %o saw it."
  States
  {
  Spawn:
    TNT1 AA 1
	THS1 CD 1 bright
  Spawn2:
    THS1 ABCD 1 bright
	{
	A_SpawnItemEx("FlakTrail1", (3 *momx)/-35.0, -(3 *momy)/-35.0, 2+(3 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("FlakTrail1", (6 *momx)/-35.0, -(6 *momy)/-35.0, 2+(6 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("FlakTrail1", (9 *momx)/-35.0, -(9 *momy)/-35.0, 2+(9 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("FlakTrail2", (12*momx)/-35.0, -(12*momy)/-35.0, 2+(12*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("FlakTrail2", (15*momx)/-35.0, -(15*momy)/-35.0, 2+(15*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("FlakTrail2", (18*momx)/-35.0, -(18*momy)/-35.0, 2+(18*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("FlakTrail3", (21*momx)/-35.0, -(21*momy)/-35.0, 2+(21*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("FlakTrail3", (24*momx)/-35.0, -(24*momy)/-35.0, 2+(24*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("FlakTrail3", (27*momx)/-35.0, -(27*momy)/-35.0, 2+(27*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail4", (30*momx)/-35.0, -(30*momy)/-35.0, 2+(30*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail4", (33*momx)/-35.0, -(33*momy)/-35.0, 2+(33*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail4", (36*momx)/-35.0, -(36*momy)/-35.0, 2+(36*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail5", (39*momx)/-35.0, -(39*momy)/-35.0, 2+(39*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail5", (42*momx)/-35.0, -(42*momy)/-35.0, 2+(42*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail5", (45*momx)/-35.0, -(45*momy)/-35.0, 2+(45*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail6", (48*momx)/-35.0, -(48*momy)/-35.0, 2+(48*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail6", (51*momx)/-35.0, -(51*momy)/-35.0, 2+(51*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail6", (54*momx)/-35.0, -(54*momy)/-35.0, 2+(54*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	}
    loop
  Death:
  Crash:
    FLFR A 0 A_SpawnItemEx("HQShotSparks",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
    Stop
  XDeath:
    TNT1 A 0 A_SpawnItemEx("HQShotSparks",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	Stop
  }
}

ACTOR ThumpShot2: ThumpShot
{
Damage(random(10,20))
Speed 15
Gravity 0.9
-NOGRAVITY
  States
  {
  Spawn:
    THS1 ABCD 1 bright
	{
	A_SpawnItemEx("FlakTrail1", (3 *momx)/-35.0, -(3 *momy)/-35.0, 2+(3 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("FlakTrail1", (6 *momx)/-35.0, -(6 *momy)/-35.0, 2+(6 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("FlakTrail1", (9 *momx)/-35.0, -(9 *momy)/-35.0, 2+(9 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("FlakTrail2", (12*momx)/-35.0, -(12*momy)/-35.0, 2+(12*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("FlakTrail2", (15*momx)/-35.0, -(15*momy)/-35.0, 2+(15*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("FlakTrail2", (18*momx)/-35.0, -(18*momy)/-35.0, 2+(18*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("FlakTrail3", (21*momx)/-35.0, -(21*momy)/-35.0, 2+(21*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("FlakTrail3", (24*momx)/-35.0, -(24*momy)/-35.0, 2+(24*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("FlakTrail3", (27*momx)/-35.0, -(27*momy)/-35.0, 2+(27*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail4", (30*momx)/-35.0, -(30*momy)/-35.0, 2+(30*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail4", (33*momx)/-35.0, -(33*momy)/-35.0, 2+(33*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail4", (36*momx)/-35.0, -(36*momy)/-35.0, 2+(36*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail5", (39*momx)/-35.0, -(39*momy)/-35.0, 2+(39*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail5", (42*momx)/-35.0, -(42*momy)/-35.0, 2+(42*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail5", (45*momx)/-35.0, -(45*momy)/-35.0, 2+(45*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail6", (48*momx)/-35.0, -(48*momy)/-35.0, 2+(48*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail6", (51*momx)/-35.0, -(51*momy)/-35.0, 2+(51*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("FlakTrail6", (54*momx)/-35.0, -(54*momy)/-35.0, 2+(54*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	}
	loop
  Death:
  Crash:
    FLFR A 0 A_SpawnItemEx("HQShotSparks",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
    Stop
  XDeath:
    TNT1 A 0
	Stop
  }
}

ACTOR FlammableHeater2 : DisasterShotSmoke
{
    Speed 20
    Alpha 0.9
	Scale  0.5
	States
	{
    Spawn:
    TNT1 A 1 bright 
	TNT1 A 1 bright A_ChangeFlag("SPRITEFLIP", random(0,1))
    FCG2 ABCDEFGHI 1 Bright { A_FadeOut(0.01,1); A_SetRoll(Roll+frandom(0, 2),SPF_INTERPOLATE); }
	FCG4 JKLMNOPQRST 1 Bright { A_FadeOut(0.01,1); A_SetRoll(Roll+frandom(0, 2),SPF_INTERPOLATE); }
    stop
    }
}

ACTOR SmokeShot
{
	Radius 4
	Height 4
	Speed 35
	Damage (1)
	Projectile
	-NOGRAVITY
	+RANDOMIZE
	-GRENADETRAIL
	+THRUGHOST
	+CANBOUNCEWATER
	+USEBOUNCESTATE
	+BOUNCEONACTORS
	+HITTRACER
	+NOEXTREMEDEATH
	-THRUACTORS
	BounceType Doom
    BounceFactor 0.50
	Gravity 0.55
	BounceSound "ARWP/WAI/BN1"
	Obituary 	"$OB_GRENADE"
	SeeSound 	"None"
	DeathSound 	"None"
	Species 	"Player" 
	Decal		"None"
	Scale 		0.4
	var int user_smokeshellflight;
	var int user_smokeshelltimer;
	States
	{
	Spawn:
		TNT1 A 0 A_SetUserVar("user_smokeshellflight",user_smokeshellflight+1)
	    MGGL B 0 A_CheckFloor("Landed")
		MGGL B 1 A_SpawnItemEx("FGTrailSmoke",0,0.2*random(-10,10),0.2*random(-10,10),0,0,0,0,0,0)
	    TNT1 A 0 A_JumpIf(user_smokeshellflight == 50,"SmokeOut")
	    Loop
	Landed:
		TNT1 A 0 A_SetUserVar("user_smokeshellflight",user_smokeshellflight+1)
		TNT1 A 0 A_SetAngle(Angle+15)
		MGGL B 1 A_CustomMissile("FGTrailSmoke2",9,0,FRandom(-128,-128),SXF_NOCHECKPOSITION|CMF_AIMDIRECTION|CMF_OFFSETPITCH,random(1,64),AAPTR_TRACER)
	    TNT1 A 0 A_JumpIf(user_smokeshellflight == 50,"SmokeOut")
	    Goto Spawn
	Bounce.Actor:
        MGGL BBBBB 0 A_CustomMissile("FGImpactSmoke", 0, 0, random (0, 360), 2, random (-80, 80))
		MGGL B 0 A_ChangeFlag("THRUACTORS",1)
		MGGL B 0 A_ScaleVelocity(0.2)
		Goto SmokeOut
	SmokeOut:
		TNT1 A 0 A_JumpIfInventory("FunSmokedToken",1,"SmokeLoop")
		MGGL B 1 A_PlaySound("FunStart",6,0.8,0)
		TNT1 A 0 A_GiveInventory("FunSmokedToken",1)
	SmokeLoop:
		TNT1 A 0 A_JumpIf(user_smokeshelltimer == 140,6) //250
		MGGL B 1 A_CustomMissile("FunSmoke",9,0,FRandom(-128,-128),SXF_NOCHECKPOSITION|CMF_AIMDIRECTION|CMF_OFFSETPITCH,random(1,64),AAPTR_TRACER)
		TNT1 A 0 A_PlaySound("FunHiss",1,0.75,1)
		TNT1 A 0 A_SetAngle(Angle+15)
		TNT1 A 0 A_SetUserVar("user_smokeshelltimer",user_smokeshelltimer+1)
		Loop
		TNT1 A 0 A_StopSound(1)
		TNT1 A 0 A_PlaySound("FunHissEnd",CHAN_BODY,0.75,0)
		Goto DoneSmoking
	DoneSmoking:
		MGGL B 650
		TNT1 A 0 A_TakeInventory("FunSmokedToken",999)
	    MGGL BBBBBBBBBBBBBBBBBBBBB 1 A_FadeOut( 0.05 )
        MGGL B 1 A_FadeOut( 1 )
	    MGGL B -1
		Stop
		Death:
		TNT1 A 0
		Goto SmokeOut
	}
}

ACTOR FunSmoke
{ 
	Radius 2
	Height 2
	Speed 6
	VSpeed 0.3
	Projectile
	+MISSILE
	-SOLID
	+SHOOTABLE
	+BLOODLESSIMPACT
	+NOBOSSRIP
	+THRUACTORS
	+NOBLOCKMAP
	+NOGRAVITY
	+NOTONAUTOMAP
	+FORCEXYBILLBOARD
	+NOTELEPORT
	+WINDTHRUST
	+BOUNCEONCEILINGS
	+BOUNCEONFLOORS
	+BOUNCEONWALLS
	+HITTRACER
	+DONTSPLASH
	+ROLLSPRITE
	+ROLLCENTER
	+INTERPOLATEANGLES
	BounceFactor 0.7
	WallBounceFactor 0.7
	BounceType Doom
	Gravity 0.9
	Renderstyle Add
	Species "Player"
	Alpha 0.35
	Scale 0.01
	var int user_smoketimer;
	States 
	{ 
	Spawn: 
        FGKN A 1 A_ChangeFlag("SPRITEFLIP", random(0,1))
		FGSM BBCCDDEEFFGGH 1 { A_SetRoll(Roll+frandom(1,2),SPF_INTERPOLATE); A_SetScale(ScaleX+0.015,ScaleY+0.015); }
		FGSM HIIJJKK 1 { A_SetRoll(Roll+frandom(1,2),SPF_INTERPOLATE); A_SetScale(ScaleX+0.015,ScaleY+0.015); A_ScaleVelocity(0.95); }
		TNT1 C 0 Thing_ChangeTID(0,666)
		FGSM LLMMBBC 1 { A_SetRoll(Roll+frandom(2,3),SPF_INTERPOLATE); A_SetScale(ScaleX+0.015,ScaleY+0.015); A_ScaleVelocity(0.9); }
		Goto SmokeTime
	SmokeTime:
		TNT1 A 0 A_JumpIf(user_smoketimer == 20,"Death") //40
		TNT1 A 0 A_RadiusGive("FunSmokeIllusion",256,RGF_MONSTERS)
		FGSM BBCCDDEEFFGGHHIIJJKKLLMM 1 { A_SetRoll(Roll+frandom(2,3),SPF_INTERPOLATE); A_SetScale(ScaleX+0.002,ScaleY+0.002); }
		TNT1 A 0 A_RadiusGive("FunSmokeIllusion",256,RGF_MONSTERS)
		TNT1 A 0 A_SetUserVar("user_smoketimer",user_smoketimer+1)
		Loop
	Death:
		FGSM BBCCDDEEFFGGHHIIJJKKLLMM 1 { A_SetRoll(Roll+FRandom(2,3),SPF_INTERPOLATE); A_SetScale(ScaleX+0.002,ScaleY+0.002); A_FadeOut(0.01,FTF_REMOVE); }
		Stop
	}
}

ACTOR FunSmokeIllusion : CustomInventory //From amv2k9's decoy script
{
	+ALWAYSPICKUP
	States
	{
	Pickup:
		TNT1 A 0 A_JumpIf(TIDtohate==666,"End")
		TNT1 A 0 Thing_Hate(0,666,3)
	End:
		TNT1 A 0
		Stop
	}
}

ACTOR FunSmokedToken : Inventory 
{
	+IGNORESKILL
	-INVENTORY.INVBAR
	+INVENTORY.UNDROPPABLE
	Inventory.MaxAmount 1
}

ACTOR BettyShot
{
  Radius 11
  Height 8
  Speed 50
  Damage 3
  Projectile
  +RANDOMIZE
  -NOGRAVITY
  +BOUNCEONACTORS
  +USEBOUNCESTATE
  Scale 0.25
  Gravity 0.8
  Alpha 0.90
  Obituary "%k passed %o a hot potato."
  States
  {
  Spawn:
    BETT O 1 A_SpawnItemEx("FGTrailSmoke",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:
    MGGL BBBBB 0 A_CustomMissile("FGImpactSmoke", 0, 0, random (0, 360), 2, random (-80, 80))
    FX08 B 0 A_SpawnItemEx("BettyLaid",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS|SXF_ORIGINATOR)
	Stop
	}
}


ACTOR BettyLaid
{
  Health 15
  Radius 16
  Height 16
  MaxTargetRange 48
  Painchance   "Melee", 256
  DamageFactor "Melee", 0.1
  Painchance   "Kick", 256
  DamageFactor "Kick", 0.1
  Painchance   "Bat", 256
  DamageFactor "Bat", 0.1
  Scale 0.25
  +DONTTHRUST
  +SHOOTABLE
  +NOBLOOD
  -THRUACTORS
  +DONTGIB
  +FRIENDLY
  +THRUSPECIES
  States
  {
  Spawn:
	BETT C 0 NoDelay ThrustThingZ(0,35,0,0)
    TNT1 A 0 ThrustThing(angle*256/360+128, -5, 0, 0)
	BETT CDEFGHIJ 2 A_SpawnItemEx("FGTrailSmoke",0,0.2*random(-10,10),0.2*random(-10,10),0,0,0,0,0,0)
	RPGX A 0 A_PlaySoundEx ("BETYARM", CHAN_6)
    BETT A 1 Thing_ChangeTID(0,666)
	Goto Spawn2
  Spawn2:
    BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
	TNT1 A 0 A_Jump(150,"Decoying1","Decoying2","Decoying3" )
	Loop
  Decoying1:
	BETT A 1 A_PlaySoundEx ("PISSFIR", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	BETT A 1 A_PlaySoundEx ("PISSFIR", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	TNT1 A 0 A_Jump(150,"Spawn2")
	BETT A 1 A_PlaySoundEx ("PISSFIR", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	BETT A 1 A_PlaySoundEx ("PISSFIR", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	TNT1 A 0 A_Jump(150,"Spawn2")
	BETT A 1 A_PlaySoundEx ("PISSFIR", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	BETT A 1 A_PlaySoundEx ("PISSFIR", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	TNT1 A 0 A_Jump(150,"TauntEm")
	Goto Spawn2
  Decoying2:
	BETT A 1 A_PlaySoundEx ("BTRFIR", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	BETT A 1 A_PlaySoundEx ("BTRFIR", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	TNT1 A 0 A_Jump(150,"Spawn2")
	BETT A 1 A_PlaySoundEx ("BTRFIR", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	BETT A 1 A_PlaySoundEx ("BTRFIR", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	TNT1 A 0 A_Jump(150,"Spawn2")
	BETT A 1 A_PlaySoundEx ("BTRFIR", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	BETT A 1 A_PlaySoundEx ("BTRFIR", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	TNT1 A 0 A_Jump(150,"TauntEm")
	Goto Spawn2
  Decoying2:
	BETT A 1 A_PlaySoundEx ("PUMPFIR", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	BETT A 1 A_PlaySoundEx ("PUMPPMP", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	TNT1 A 0 A_Jump(150,"Spawn2")
	BETT A 1 A_PlaySoundEx ("PUMPFIR", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	BETT A 1 A_PlaySoundEx ("PUMPPMP", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	TNT1 A 0 A_Jump(150,"Spawn2")
	BETT A 1 A_PlaySoundEx ("PUMPFIR", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	BETT A 1 A_PlaySoundEx ("PUMPPMP", CHAN_6)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	TNT1 A 0 A_Jump(150,"TauntEm")
	Goto Spawn2
	TauntEm:
	BETT A 1 A_PlaySoundEx ("HarleyTalk2", CHAN_7)
	BETT A 5 A_RadiusGive("FunSmokeIllusion",550,RGF_MONSTERS)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	Goto Spawn2
  Death:
 	MISL A 0 A_AlertMonsters
 	MISL A 0 A_ChangeFlag ("THRUACTORS",1)
    MGGL BBBBB 0 A_SpawnItemEx ("FGImpactSmoke2",0,0,0,2,0,random(1,2),random(0,359),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	BETT B 1 A_PlaySoundEx ("KILL159", CHAN_7)
	RPGX A 0 A_PlaySoundEx ("BETYSPR", CHAN_6)
    BETT BK 2 ThrustThingZ(0,23,0,0)
	BETT LMN 2
    Goto Explode
  Explode:
	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
	PTNT I 0 A_RadiusThrust(150, 100, RTF_AFFECTSOURCE|RTF_THRUSTZ)
	TNT1 A 0 A_SpawnItemEx ("GrenadeBoom",0,0,13,0,0,0,0,SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS,0)
	FLFR M 0 bright A_SpawnItemEx("BaseBlast", 0, 0, 0, 0, 0, 2, 0, SXF_CLIENTSIDE)
    TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 bright A_CustomMissile("ThumpShot2", 24, 0, random(0,360), 2, random(-90, 90))
    TNT1 AAAAAAAAAAA 0 A_CustomMissile("DarkSmoke",0,0,Random(0,360),2,Random(0,360))
	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")
    TNT1 A 0 A_CustomMissile("DBEffect2",22,0,(random(0,360)),CMF_AIMDIRECTION)
    TNT1 A 0 A_CustomMissile("DBEffect3",22,0,(random(0,360)),CMF_AIMDIRECTION)
	FLFR M 0 A_ChangeFlag("NOGRAVITY",1)
    FLFR MMM 0 bright { A_FadeOut(0.05,1); A_CustomMissile ("MGExplode2", 0, 0, random (0, 360), 2, random (-60, 60));}
    FLFR MMMM 0 bright { A_FadeOut(0.05,1); A_CustomMissile ("MGExplode", 0, 0, random (0, 360), 2, random (-80, 80));}
    FLFR MM 0 bright { A_FadeOut(0.05,1); A_CustomMissile ("MGExplode3", 0, 0, random (0, 360), 2, random (-90, 90));}
	TNT1 A 0 A_CustomMissile("DBEffect2",22,0,(random(0,360)),CMF_AIMDIRECTION)
    TNT1 A 0 A_CustomMissile("DBEffect3",22,0,(random(0,360)),CMF_AIMDIRECTION)
	TNT1 AAAAAAAAAAAAAA 1 bright A_Quake(8, 6, 0, 48576, "None")
    Stop
	}
}

Actor ThumperAlt : QuinnBoolean { Inventory.MaxAmount 1 }

actor FlakTrail1
{
	+THRUACTORS
	+CLIENTSIDEONLY
	+NOBLOCKMAP
	+NOGRAVITY
	Renderstyle Add
	Scale 0.08
	Alpha 0.99
	States
	{
	Spawn:
	    FCG4 J 2 Bright
		Stop
		}
}	

actor FlakTrail2 : FlakTrail1
{
	Alpha 0.9
	States
	{
	Spawn:
	    FCG4 K 2 Bright
		Stop
		}
}	

actor FlakTrail3 : FlakTrail1
{
	Alpha 0.7
	States
	{
	Spawn:
	    FCG4 L 2 Bright
		Stop
		}
}	

actor FlakTrail4 : FlakTrail1
{
	Alpha 0.5
	States
	{
	Spawn:
	    FCG4 M 2 Bright
		Stop
		}
}	

actor FlakTrail5 : FlakTrail1
{
	Alpha 0.3
	States
	{
	Spawn:
	    FCG4 N 2 Bright
		Stop
		}
}	

actor FlakTrail6 : FlakTrail1
{
	Alpha 0.1
	States
	{
	Spawn:
	    FCG4 O 2 Bright
		Stop
		}
}	
