ACTOR HQBatKiller : HQWeapon
{
   +Ammo_CheckBoth
   Inventory.PickupMessage "\c[White][ \c[DJ_Pink]20mm \"Pop-Gun\" Custom Flare Pistol\c- \c[White]]"
   Tag "20mm \"Pop-Gun\""
   Weapon.SelectionOrder 1900
   Weapon.AmmoUse1 1
   Weapon.AmmoUse2 1
   Weapon.AmmoGive2 3
   Weapon.Kickback 4
   weapon.ammotype1 "FlareLoaded"
   weapon.ammotype2 "FlareAmmo"
   Weapon.UpSound "BTKSEL"
   Inventory.PickupSound "BTKPKP"
   Weapon.SlotNumber 5
   Scale 0.25
   +NOALERT
   +NOAUTOFIRE
   obituary "%o was signaled out by %k's Pop-Gun."
   States
   {
  Spawn:
    BTKT A -1
    Stop
   Ready: 
     BTKO 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")
      BTKO A 1 A_Lower(20)
      Loop
   Select:
      TNT1 A 1
      TNT1 A 0 A_JumpIfInventory("HQBatKillerToken",1,"SelectNormal") 
      TNT1 A 0 A_Giveinventory("HarleyTalk",1)
	  TNT1 A 0 A_Giveinventory("HQBatKillerToken",1)
      TNT1 A 0 A_Playsound("HQVBTK",CHAN_VOICE)
      Goto SelectNormal
  SelectNormal:
      BTKO A 1 A_Raise(20)
      LOOP
   Fire:
    BTKO A 0 A_JumpIf(CountInv("FlareLoaded") == 0,"Reload")
	BTKO A 0 A_AlertMonsters
    BTKF B 0
 	{
	If (CountInv("BatKillerAlt") && CountInv("FlareAmmo2") > 0)
	{
	A_PlayWeaponSound("BATKALT");
	A_FireCustomMissile("BKShot4",frandom(0.0,0.0),1,5,3,FPF_NOAUTOAIM,frandom(-0.0,0.0));
	A_TakeInventory("FlareAmmo2",1);
	}
	Else
	{
	A_PlayWeaponSound("BATKFIR");
	A_FireCustomMissile("BKShot1",frandom(0.0,0.0),1,8,3,0,frandom(-0.0,0.0));
	}
	} 
	BTKF A 0 A_FireCustomMissile("ShotSpawn",0,0,6,12,0,0)
	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")
	BTKF B 1 BRIGHT A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
    BTKF C 1 BRIGHT A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
    BTKF D 4 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	NULL A 0 A_ZoomFactor(1.000)
    BTKF E 3 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	BTKF F 2 A_WeaponReady
	BTKF G 1 A_WeaponReady
	BTKO A 2
	BTKO A 0 A_Refire
    Goto Ready
   AltFire:
    BTKO A 0 A_JumpIf(CountInv("FlareLoaded") == 0,"Reload")
	BTKO A 0 
 	{
	If (CountInv("BatKillerAlt") && CountInv("FlareAmmo2") > 2)
	{
	If (CountInv("FlareLoaded") < 3) { return state("Reload"); }
	A_AlertMonsters;
	A_PlayWeaponSound("BATKAL2");
	A_FireCustomMissile("BKShot4",frandom(-5,-5),1,8,3,FPF_NOAUTOAIM,frandom(0,0));
	A_FireCustomMissile("BKShot4",frandom(0,0),1,8,3,FPF_NOAUTOAIM,frandom(5,5));
	A_FireCustomMissile("BKShot4",frandom(5,5),1,8,3,FPF_NOAUTOAIM,frandom(0,0));
	A_TakeInventory("FlareLoaded",3);
	A_TakeInventory("FlareAmmo2",3);
	}
	Else
	{
	A_AlertMonsters;
	A_PlayWeaponSound("BATKFIR");
	A_FireCustomMissile("BKShot2",frandom(0.0,0.0),0,8,3,FPF_NOAUTOAIM,frandom(-0.0,0.0));
	A_TakeInventory("FlareLoaded",1); 
	}
	return state("");
	}
	BTKF A 0 A_FireCustomMissile("ShotSpawn",0,0,6,12,0,0)
	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")
	BTKF B 1 BRIGHT A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
    BTKF C 1 BRIGHT A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
    BTKF D 4 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	NULL A 0 A_ZoomFactor(1.000)
    BTKF E 3 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	BTKF F 2 A_WeaponReady
	BTKF G 1 A_WeaponReady
	BTKO A 2
	BTKO A 0 A_Refire
    Goto Ready
     Reload:
  BTKO A 0 A_JumpIfInventory("FlareLoaded", 3, 2)
  BTKO A 0 A_JumpIfInventory("FlareAmmo", 1, "ReloadWork")
  BTKO A 1 A_WeaponReady
  Goto Inspect
	ReloadWork:
  TNT1 A 0 A_GiveInventory("SheReloads",1)
  BTKF F 1
  BTKR AB 1
  MGNR HHH 0 A_FireCustomMissile("20MMCaseSpawn",345+random(-8,8),0,7,9,0)
  BTKR COC 1
  BTKO A 0 A_PlaySoundEX("BATKOPN",CHAN_7)
  BTKR DE 2
  BTKR FGH 1
  TNT1 A 5
  BTRH ABC 1
  BTRH D 2
  BTRH D 0 A_PlaySoundEX("BATKLOA",CHAN_7)
  BTRH EF 1
  ReloadLoop:
  BTKR H 0 A_TakeInventory("FlareAmmo", 1)
  BTKR H 0 A_GiveInventory("FlareLoaded", 1)
  BTKR H 0 A_JumpIfInventory("FlareLoaded", 3, "ReloadFinish")
  BTKR H 0 A_JumpIfInventory("FlareAmmo", 1, "ReloadLoop")
  Goto ReloadFinish
  ReloadFinish:
  TNT1 A 5
  BTKR IJK 1
  BTKO A 0 A_PlayWeaponSound("BATKCLS")
  BTKR L 3
  BTKR MN 2
  TNT1 A 0 A_TakeInventory("SheReloads",99)
  Goto Ready
  Flash:
    BTKF A 3 Bright A_Light1
    BTKF A 3 Bright A_Light0
    Goto LightDone
  Zoom:
   BTKZ AC 1
   TNT1 A 0 A_Overlay (-3, "QuickMelee")
   BTKZ D 8
   BTKZ CBA 2
   Goto Ready
  User1:
   MELE A 0 A_JumpIfInventory("ThrowableAmmo",1,1)
   Goto GrenadeDry
   BTKZ AC 1
   TNT1 A 0 A_Overlay (-3, "ThrowNao")
   BTKZ D 8
   BTKZ 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
   BTKZ AC 1
   TNT1 A 0 A_Overlay (-3, "InjectorPlunge")
   BTKZ D 30
   BTKZ CBA 2
   Goto Ready
   GrenadeDry:
   BTKO A 1 ACS_NamedExecute("NoGrenades", 0)
   Goto Ready
   HealthFull:
   BTKO A 1 ACS_NamedExecute("FullHealth", 0)
   Goto Ready
   StimDry:
   BTKO A 1 ACS_NamedExecute("NoStims", 0)
   Goto Ready
   Inspect:
   BTSP A 0 A_PlayWeaponSound("MAGNSTR")
   BTSP AB 1
   Goto ReloadTwirlHold
   ReloadTwirlHold:
   BTSP C 1
   BTSP C 0 A_PlaySound("MAGNSPN",CHAN_7)
   BTSP DEFGH 1
   NULL A 0 A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_RELOAD, "ReloadTwirlHold")
   Goto ReloadTwirlFinish
   ReloadTwirlFinish:
   BTSP A 0 A_PlayWeaponSound("MAGNSTP")
   BTSP B 1
   BTKZ D 4
   BTKZ C 2
   BTKZ BA 1
   Goto Ready
  User3:
  SOCO A 0 A_JumpIfInventory("BatKillerAlt", 1, "AmmoToggle2")
  SOCO A 0 A_JumpIfInventory("FlareAmmo2", 1, "AmmoToggle1")
  Goto AmmoToggle3
  AmmoToggle1:
  BTKO A 1 A_GiveInventory("BatKillerAlt", 1)
  Goto AmmoSwapAnim
  AmmoToggle2:
  BTKO A 1 A_TakeInventory("BatKillerAlt", 99)
  Goto AmmoSwapAnim
  AmmoToggle3:
  BTKO A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_ALLOWUSER1|WRF_ALLOWUSER2|WRF_ALLOWUSER3)
  Goto Ready
  AmmoSwapAnim:
  TNT1 A 0 A_GiveInventory("SheReloads",1)
  BTKF F 1
  BTKR AB 1
  BTKR COC 1
  BTKO A 0 A_PlaySoundEX("BATKOPN",CHAN_7)
  BTKR DE 2
  BTKR FGH 1
  TNT1 A 5
  BTRH ABC 1
  BTRH D 2
  BTRH D 0 A_PlaySoundEX("BATKLOA",CHAN_7)
  BTRH EF 1
  TNT1 A 5
  BTKR IJK 1
  BTKO A 0 A_PlayWeaponSound("BATKCLS")
  BTKR L 3
  BTKR MN 2
  TNT1 A 0 A_TakeInventory("SheReloads",99)
  Goto Ready
  }
}

ACTOR FlareLoaded : Ammo
{
   +IGNORESKILL
   Inventory.Amount 0
   Inventory.MaxAmount 3
   Ammo.BackpackAmount 0
   Ammo.BackpackMaxAmount 3
}

actor BKPTrail
{
	+THRUACTORS
	+CLIENTSIDEONLY
	+NOBLOCKMAP
	+NOGRAVITY
	Renderstyle Add
	Scale 0.5
	Alpha 0.99
	States
	{
	Spawn:
	    BLS1 A 2 Bright
		Stop
		}
}	

actor BKPTrail1
{
	+THRUACTORS
	+CLIENTSIDEONLY
	+NOBLOCKMAP
	+NOGRAVITY
	Renderstyle Add
	Scale 0.5
	Alpha 0.99
	States
	{
	Spawn:
	    BLS1 A 2 Bright
		Stop
		}
}	

actor BKPTrail2 : BKPTrail1
{
	Alpha 0.8
	States
	{
	Spawn:
	    BLS1 B 2 Bright
		Stop
		}
}	

actor BKPTrail3 : BKPTrail1
{
	Alpha 0.6
	States
	{
	Spawn:
	    BLS1 C 2 Bright
		Stop
		}
}	

actor BKPTrail4 : BKPTrail1
{
	Alpha 0.4
	States
	{
	Spawn:
	    BLS1 D 2 Bright
		Stop
		}
}	

actor BKPTrail5 : BKPTrail1
{
	Alpha 0.3
	States
	{
	Spawn:
	    BLS1 E 2 Bright
		Stop
		}
}	

actor BKP2Trail1 : BKPTrail1
{
    Scale 0.7
	States
	{
	Spawn:
	    BLS2 A 2 Bright
		Stop
		}
}	

actor BKP2Trail2 : BKP2Trail1
{
	Alpha 0.8
	States
	{
	Spawn:
	    BLS2 B 2 Bright
		Stop
		}
}	

actor BKP2Trail3 : BKP2Trail1
{
	Alpha 0.6
	States
	{
	Spawn:
	    BLS2 C 2 Bright
		Stop
		}
}	

actor BKP2Trail4 : BKP2Trail1
{
	Alpha 0.4
	States
	{
	Spawn:
	    BLS2 D 2 Bright
		Stop
		}
}	

actor BKP2Trail5 : BKP2Trail1
{
	Alpha 0.3
	States
	{
	Spawn:
	    BLS2 E 2 Bright
		Stop
		}
}	

ACTOR BKShot1
{
  Radius 3
  Height 3
  Speed 45
  Damage 20
  DamageType Fire
  Projectile
  +RANDOMIZE
  Alpha 0.7
  RenderStyle Add
  Decal "DoomImpScorch"
  Scale 0.5
  obituary "%o was bored and gauged to death by %k's Pop-Gun."
  States
  {  
  Spawn:
	TNT1 A 0 NoDelay A_CheckProximity("SpawnNone","PlayerPawn",65,1,CPXF_ANCESTOR)
    TNT1 A 1 bright
	{
	A_SpawnItemEx("BKPTrail1", (3 *momx)/-35.0, -(3 *momy)/-35.0, 2+(3 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail1", (6 *momx)/-35.0, -(6 *momy)/-35.0, 2+(6 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail2", (9*momx)/-35.0, -(9*momy)/-35.0, 2+(9*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail2", (12*momx)/-35.0, -(12*momy)/-35.0, 2+(12*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail3", (15*momx)/-35.0, -(15*momy)/-35.0, 2+(15*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail3", (18*momx)/-35.0, -(18*momy)/-35.0, 2+(18*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail4", (21*momx)/-35.0, -(21*momy)/-35.0, 2+(21*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail4", (24*momx)/-35.0, -(24*momy)/-35.0, 2+(24*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail5", (27*momx)/-35.0, -(27*momy)/-35.0, 2+(27*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("BKPTrail5", (30*momx)/-35.0, -(30*momy)/-35.0, 2+(30*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	}
	loop
  SpawnNone:
	TNT1 A 1 
	Goto Spawn
  Death:
 	TNT1 A 0 A_SpawnItemEx("BKEffect",0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	TNT1 D 1 BRIGHT A_Explode(120,120)
    TNT1 EEEEEEEEEEE 1 A_Quake(10,8,0,3200,"none")
	XP80 D 0 A_CheckFloor("DeathRest")
	TNT1 E 0
    stop
	DeathRest:
	TNT1 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 1 A_SpawnItemEx("SmolDarkSmoke",random(-8,8),3+random(-3,3),random(0,46),0,1,2,0,SXF_NOCHECKPOSITION,0)
	TNT1 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 3 A_SpawnItemEx("SmolDarkSmoke",random(-8,8),3+random(-3,3),random(0,46),0,1,2,0,SXF_NOCHECKPOSITION,0)
    Stop
  }
}

ACTOR BKShot2
{
  Radius 3
  Height 3
  Speed 45
  Damage (3)
  DamageType Fire
  +HITTRACER
  Projectile
  +RANDOMIZE
  -NOGRAVITY
  Gravity 0.5
  Alpha 0.7
  RenderStyle Add
  Decal "DoomImpScorch"
  Scale 0.5
  Var Int User_StickyTimer;
  Var Int User_StickyAdded;
  obituary "%o was bored and gauged to death by %k's Pop-Gun."
  States
  {  
  Spawn:
	TNT1 A 0 NoDelay A_CheckProximity("SpawnNone","PlayerPawn",65,1,CPXF_ANCESTOR)
    TNT1 A 1 bright 	
	{
	A_SpawnItemEx("BKPTrail1", (3 *momx)/-35.0, -(3 *momy)/-35.0, 2+(3 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail1", (6 *momx)/-35.0, -(6 *momy)/-35.0, 2+(6 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail2", (9*momx)/-35.0, -(9*momy)/-35.0, 2+(9*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail2", (12*momx)/-35.0, -(12*momy)/-35.0, 2+(12*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail3", (15*momx)/-35.0, -(15*momy)/-35.0, 2+(15*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail3", (18*momx)/-35.0, -(18*momy)/-35.0, 2+(18*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail4", (21*momx)/-35.0, -(21*momy)/-35.0, 2+(21*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail4", (24*momx)/-35.0, -(24*momy)/-35.0, 2+(24*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail5", (27*momx)/-35.0, -(27*momy)/-35.0, 2+(27*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("BKPTrail5", (30*momx)/-35.0, -(30*momy)/-35.0, 2+(30*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("DBSmoke4",0,0.2*random(-10,10),0.2*random(-10,10),0,0,0,0,0,0);
    A_SpawnItemEx("DBSmoke4",0,0.2*random(-10,10),0.2*random(-10,10),0,0,0,0,0,0);
	}
	loop
  SpawnNone:
	TNT1 A 1 
	Goto Spawn
  Death:
    BLS1 A 0 A_ChangeFlag("NOGRAVITY",1)
	FX08 B 0 A_PlaySoundEX("ROKTSZL","SoundSlot6")
	TNT1 A 0 A_SetUserVar("User_StickyAdded",User_StickyAdded+1)
	TNT1 A 0 A_JumpIfHealthLower(120,"GotstaTerrify", AAPTR_TRACER)
	Goto StickyBatLoop1
  GotstaTerrify:
    TNT1 A 0 A_GiveInventory("BitchMaker",1)
	Goto StickyBatLoop1
  StickyBatLoop1:
	TNT1 A 0 A_JumpIf((User_StickyTimer == 20),"StickyBat1Finish")
	BLS1 ABCDE 1 BRIGHT 
	{ 
	A_Warp(AAPTR_TRACER,0,0,32,0,WARPF_NOCHECKPOSITION); 
	A_SpawnItemEx("DBSmoke4",0,0.2*random(-10,10),0.2*random(-10,10),0,0,0,0,0,0); 
    A_SpawnItemEx ("DBSmoke4",0,0,0,2,0,random(-2,2),random(0,359),SXF_CLIENTSIDE);
    A_SpawnItemEx ("DBSmoke4",0,0,0,2,0,random(-3,3),random(0,359),SXF_CLIENTSIDE);
	A_SpawnItemEx ("DBSmoke4",0,0,0,2,0,random(-4,4),random(0,359),SXF_CLIENTSIDE);
	A_SpawnItemEx("DisasterShotSmoke",random(-8,8),3+random(-3,3),random(0,46),0,1,2,0,0,0); 
	Return A_JumpIfHealthLower (1, "DieNOW", AAPTR_TRACER); 
	}
	TNT1 A 0 A_SetUserVar("User_StickyTimer",User_StickyTimer+1)
	Loop
	StickyBat1Finish:
	FX08 B 0 A_PlaySoundEX("ROKTFZL","SoundSlot6")
	StickyBatLoop2:
	TNT1 A 0 A_JumpIf((User_StickyTimer == 33),"DieFR")
	TNT1 A 1 BRIGHT 
	{ 
	A_Warp(AAPTR_TRACER,0,0,32,0,WARPF_NOCHECKPOSITION); 
	A_SpawnItemEx("DBSmoke4",0,0.2*random(-10,10),0.2*random(-10,10),0,0,0,0,0,0); 
    A_SpawnItemEx ("DBSmoke4",0,0,0,2,0,random(-2,2),random(0,359),SXF_CLIENTSIDE);
    A_SpawnItemEx ("DBSmoke4",0,0,0,2,0,random(-3,3),random(0,359),SXF_CLIENTSIDE);
	A_SpawnItemEx ("DBSmoke4",0,0,0,2,0,random(-4,4),random(0,359),SXF_CLIENTSIDE);
	A_SpawnItemEx("DisasterShotSmoke",random(-8,8),3+random(-3,3),random(0,46),0,1,2,0,0,0); 
    A_SetUserVar("User_StickyTimer",User_StickyTimer+1);
	Return A_JumpIfHealthLower (1, "DieNOW", AAPTR_TRACER); 
	}
	Loop
  DieNOW:
 	TNT1 A 0 A_JumpIf((User_StickyAdded == 1),"DieFunny")
 	Goto DieFR
    stop
	DieFunny:
	FX08 B 0 A_StopSoundEX("SoundSlot6")
	FX08 B 0 A_PlaySound("PUMPXPL")
	TNT1 A 0 A_SpawnItemEx("BKFlash", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE)
	TNT1 A 0 bright A_CustomMissile("BKShot5", 24, 0, random(0,360), 2, random(-20, 90))
	Stop
  DieFR:
	FX08 B 0 A_StopSoundEX("SoundSlot6")
 	TNT1 A 0 A_SpawnItemEx("BKEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	TNT1 D 1 BRIGHT A_Explode(120,120)
    TNT1 EEEEEEEEEEE 1 A_Quake(10,8,0,3200,"none")
	TNT1 E 0 A_TakeInventory("BatKillerStuck",99,AAPTR_TRACER)
	XP80 D 0 A_CheckFloor("DeathRest")
    stop
  }
}

ACTOR BKShot3 : BKShot1
{
  Radius 3
  Height 3
  Gravity 0.8
  Speed 5
  -NOGRAVITY
  States
  {  
  Spawn:
	TNT1 A 0 NoDelay A_CheckProximity("SpawnNone","PlayerPawn",65,1,CPXF_ANCESTOR)
    TNT1 A 1 bright
	{
	A_SpawnItemEx("BKPTrail1", (3 *momx)/-35.0, -(3 *momy)/-35.0, 2+(3 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail1", (6 *momx)/-35.0, -(6 *momy)/-35.0, 2+(6 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail2", (9*momx)/-35.0, -(9*momy)/-35.0, 2+(9*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail2", (12*momx)/-35.0, -(12*momy)/-35.0, 2+(12*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail3", (15*momx)/-35.0, -(15*momy)/-35.0, 2+(15*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail3", (18*momx)/-35.0, -(18*momy)/-35.0, 2+(18*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail4", (21*momx)/-35.0, -(21*momy)/-35.0, 2+(21*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail4", (24*momx)/-35.0, -(24*momy)/-35.0, 2+(24*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail5", (27*momx)/-35.0, -(27*momy)/-35.0, 2+(27*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("BKPTrail5", (30*momx)/-35.0, -(30*momy)/-35.0, 2+(30*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	}
	loop
  SpawnNone:
	TNT1 A 1 
	Goto Spawn
  Death:
 	TNT1 A 0 A_SpawnItemEx("BKEffect2",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	TNT1 D 1 BRIGHT A_Explode(120,120)
    TNT1 EEEEEEEEEEE 1 A_Quake(10,8,0,3200,"none")
	XP80 D 0 A_CheckFloor("DeathRest")
	TNT1 E 0
    stop
	DeathRest:
	TNT1 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 1 A_SpawnItemEx("SmolDarkSmoke",random(-8,8),3+random(-3,3),random(0,46),0,1,2,0,0,0)
	TNT1 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 3 A_SpawnItemEx("SmolDarkSmoke",random(-8,8),3+random(-3,3),random(0,46),0,1,2,0,0,0)
    Stop
  }
}

ACTOR BKShot4
{
  Radius 3
  Height 3
  Speed 45
  Damage 20
  DamageType Fire
  Projectile
  +RANDOMIZE
  -NOGRAVITY
  Gravity 0.6
  BounceType "Doom"
  BounceCount 2
  Alpha 0.7
  RenderStyle Add
  Decal "DoomImpScorch"
  Scale 0.5
  obituary "%o was bored and gauged to death by %k's Pop-Gun."
  States
  {  
  Spawn:
	TNT1 A 0 NoDelay A_CheckProximity("SpawnNone","PlayerPawn",65,1,CPXF_ANCESTOR)
    TNT1 AAAAAAAAAAAAAAAAAAAAAA 1 bright 	
	{
	A_SpawnItemEx("BKP2Trail1", (3 *momx)/-35.0, -(3 *momy)/-35.0, 2+(3 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKP2Trail1", (6 *momx)/-35.0, -(6 *momy)/-35.0, 2+(6 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKP2Trail2", (9*momx)/-35.0, -(9*momy)/-35.0, 2+(9*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKP2Trail2", (12*momx)/-35.0, -(12*momy)/-35.0, 2+(12*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKP2Trail3", (15*momx)/-35.0, -(15*momy)/-35.0, 2+(15*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKP2Trail3", (18*momx)/-35.0, -(18*momy)/-35.0, 2+(18*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKP2Trail4", (21*momx)/-35.0, -(21*momy)/-35.0, 2+(21*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKP2Trail4", (24*momx)/-35.0, -(24*momy)/-35.0, 2+(24*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKP2Trail5", (27*momx)/-35.0, -(27*momy)/-35.0, 2+(27*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("BKP2Trail5", (30*momx)/-35.0, -(30*momy)/-35.0, 2+(30*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	}
	TNT1 A 0 A_SpawnItemEx("BKEffect2",0,0,0,0,0,0,0)
	NULL A 0 A_SpawnItemEx("BKShot3",0,0,0,40,-5,0,0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
	NULL A 0 A_SpawnItemEx("BKShot3",0,0,0,40,0,-5,0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
	NULL A 0 A_SpawnItemEx("BKShot3",0,0,0,40,0,0,0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
	NULL A 0 A_SpawnItemEx("BKShot3",0,0,0,40,5,0,0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
	NULL A 0 A_SpawnItemEx("BKShot3",0,0,0,40,0,5,0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
	Stop
  SpawnNone:
	TNT1 A 1 
	Goto Spawn
  Death:
 	TNT1 A 0 A_SpawnItemEx("BKEffect2",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	TNT1 AAAAA 0 bright A_CustomMissile("BKShot3", 24, 0, random(0,360), 2, random(-20, 90))
	TNT1 D 1 BRIGHT A_Explode(120,120)
    TNT1 EEEEEEEEEEE 1 A_Quake(10,8,0,3200,"none")
	XP80 D 0 A_CheckFloor("DeathRest")
	TNT1 E 0
    stop
	DeathRest:
	TNT1 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 1 A_SpawnItemEx("SmolDarkSmoke",random(-8,8),3+random(-3,3),random(0,46),0,1,2,0,0,0)
	TNT1 EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 3 A_SpawnItemEx("SmolDarkSmoke",random(-8,8),3+random(-3,3),random(0,46),0,1,2,0,0,0)
    Stop
  }
}

Actor BKShot5 : BKShot1
{ 
+THRUACTORS 
-NOGRAVITY
 Gravity 0.8
 Speed 5
States
{
  Spawn:
	TNT1 A 0 NoDelay A_CheckProximity("SpawnNone","PlayerPawn",65,1,CPXF_ANCESTOR)
    TNT1 A 1 bright 	
	{
	A_SpawnItemEx("BKPTrail1", (3 *momx)/-35.0, -(3 *momy)/-35.0, 2+(3 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail1", (6 *momx)/-35.0, -(6 *momy)/-35.0, 2+(6 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail2", (9*momx)/-35.0, -(9*momy)/-35.0, 2+(9*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail2", (12*momx)/-35.0, -(12*momy)/-35.0, 2+(12*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail3", (15*momx)/-35.0, -(15*momy)/-35.0, 2+(15*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail3", (18*momx)/-35.0, -(18*momy)/-35.0, 2+(18*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail4", (21*momx)/-35.0, -(21*momy)/-35.0, 2+(21*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail4", (24*momx)/-35.0, -(24*momy)/-35.0, 2+(24*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
    A_SpawnItemEx("BKPTrail5", (27*momx)/-35.0, -(27*momy)/-35.0, 2+(27*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("BKPTrail5", (30*momx)/-35.0, -(30*momy)/-35.0, 2+(30*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);
	A_SpawnItemEx("DBSmoke4",0,0.2*random(-10,10),0.2*random(-10,10),0,0,0,0,0,0);
    A_SpawnItemEx("DBSmoke4",0,0.2*random(-10,10),0.2*random(-10,10),0,0,0,0,0,0);
	}
	loop
    }
}

ACTOR BKEffect
{
  RenderStyle Add
  +NOGRAVITY
  +NOBLOCKMAP
  +NOTIMEFREEZE
  +ROLLSPRITE
  +ROLLCENTER
  +NOCLIP
  Scale 0.9
  Alpha 0.67
  DamageType "Explosion"
  DeathSound "STGLAHIT"
  Decal "Scorch"
  States
  {
  Spawn:
    TNT1 A 0
  Death:
    FLCR A 0 A_ChangeFlag("NOCLIP",0)
	FX08 B 0 A_PlaySound("BATKXPL")
    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("BKFlash", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE)
	TNT1 A 0 A_ChangeFlag("NOTIMEFREEZE",0)
    TNT1 AAAAAA 0 A_CustomMissile("BKSmoke",0,0,Random(0,360),2,Random(0,360))
    TNT1 A 0 A_CheckFloor("FloorKlutz")
    TNT1 AAA 0 A_SpawnItemEx ("BKExplode2",0,0,0,2,0,random(-1,1),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAAAA 0 A_SpawnItemEx ("BKExplode",0,0,0,2,0,random(-2,2),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAA 0 A_SpawnItemEx ("BKExplode3",0,0,0,2,0,random(-3,3),random(0,359),SXF_CLIENTSIDE)
    TNT1 EEEEE 1 A_Quake(15,18,0,1500,"none")
    Stop
 	FloorKlutz:
	TNT1 A 0 bright A_SpawnItemEx("STBlast", 0, 0, 0, 0, 0, 2, 0, SXF_CLIENTSIDE)
    TNT1 AAA 0 A_SpawnItemEx ("BKExplode2",0,0,0,2,0,random(1,2),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAAAA 0 A_SpawnItemEx ("BKExplode",0,0,0,2,0,random(1,3),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAA 0 A_SpawnItemEx ("BKExplode3",0,0,0,2,0,random(2,4),random(0,359),SXF_CLIENTSIDE)
    TNT1 EEEEE 1 A_Quake(15,18,0,1500,"none")
    Stop
   }
  }
  
 ACTOR BKEffect2
{
  RenderStyle Add
  +NOGRAVITY
  +NOBLOCKMAP
  +NOTIMEFREEZE
  +ROLLSPRITE
  +ROLLCENTER
  +NOCLIP
  Scale 0.9
  Alpha 0.67
  DamageType "Explosion"
  DeathSound "STGLAHIT"
  Decal "Scorch"
  States
  {
  Spawn:
    TNT1 A 0
  Death:
    FLCR A 0 A_ChangeFlag("NOCLIP",0)
	FX08 B 0 A_PlaySound("BATKXPL")
    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("BKFlash", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE)
	TNT1 A 0 A_ChangeFlag("NOTIMEFREEZE",0)
    TNT1 AAAAAA 0 A_CustomMissile("BKSmoke",0,0,Random(0,360),2,Random(0,360))
    TNT1 A 0 A_CheckFloor("FloorKlutz")
    TNT1 AAA 0 A_SpawnItemEx ("SlugHPExplode2",0,0,0,2,0,random(-1,1),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAAAA 0 A_SpawnItemEx ("SlugHPExplode",0,0,0,2,0,random(-2,2),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAA 0 A_SpawnItemEx ("SlugHPExplode3",0,0,0,2,0,random(-3,3),random(0,359),SXF_CLIENTSIDE)
    TNT1 EEEEE 1 A_Quake(15,18,0,500,"none")
    Stop
 	FloorKlutz:
    TNT1 AAA 0 A_SpawnItemEx ("SlugHPExplode2",0,0,0,2,0,random(1,2),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAAAA 0 A_SpawnItemEx ("SlugHPExplode",0,0,0,2,0,random(1,3),random(0,359),SXF_CLIENTSIDE)
    TNT1 AAA 0 A_SpawnItemEx ("SlugHPExplode3",0,0,0,2,0,random(2,4),random(0,359),SXF_CLIENTSIDE)
    TNT1 EEEEE 1 A_Quake(15,18,0,500,"none")
    Stop
   }
  }

actor BitchMaker : CustomInventory
{
  states
  {
  Pickup:
	TNT1 A 0 A_ChangeFlag("FRIGHTENED",1)
    stop
  }
}

ACTOR BatKillerAlt : QuinnBoolean { Inventory.MaxAmount 1 }
ACTOR BatKillerStuck : QuinnBoolean { Inventory.MaxAmount 2 }