actor HQBaseballBat : HQWeapon replaces Fist
{
  Weapon.SelectionOrder 3700
  Inventory.PickupMessage "\c[White][ \c[Brick]\"Brooklyn Bruiser\" Baseball Bat\c- \c[White]]"
  Tag "\"Brooklyn Bruiser\""
  Weapon.Kickback 125000
  Weapon.UpSound "BATSEL"
  Inventory.PickupSound "BATPKP"
  Weapon.SlotNumber 1
  Scale 0.3
  +WEAPON.WIMPY_WEAPON
  +WEAPON.MELEEWEAPON
  +NOAUTOFIRE
  +FORCEPAIN
  +WEAPON.NOALERT
  +INVENTORY.UNDROPPABLE
  Obituary "%k gave %o a little bit of Brooklyn justice."
  States
  {
    Spawn:
    MOLY W -1
    Stop
  Ready:
    MELI A 1 A_WeaponReady(WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_ALLOWUSER1|WRF_ALLOWUSER2)
    loop
  Deselect:
    NULL A 0 A_JumpIf(CountInv("HQGrabbedBarrel") == 1,"ZeroFucksGiven")
    NULL A 0 A_JumpIf(CountInv("BatStunBall") == 1,"ZeroFucksGiven")
	MELI A 0 A_JumpIfInventory("SwingReady",1,"DeselectLower")
    MELI A 1 A_Lower(20)
    loop
  DeselectLower:
    MELA A 0 A_TakeInventory("SwingReady",99)
    MELA A 1 A_Lower(20)
    loop
  Select: 
    TNT1 A 1
	TNT1 A 0 A_TakeInventory("BatStunBall",99)
	TNT1 A 0 A_TakeInventory("ComboPoints",99)
    MELA A 0 A_TakeInventory("SwingHold",99)
    MELA A 0 A_TakeInventory("SwingReady",99)
	TNT1 A 0 A_TakeInventory("SwingReady2",99)
	TNT1 A 0 A_TakeInventory("SwingReady3",99)
    TNT1 A 0 A_JumpIfInventory("HQBatToken",1,"SelectNormal") 
    TNT1 A 0 A_Giveinventory("HQBatToken",1)
    TNT1 A 0 A_Giveinventory("HarleyTalk",1)
	TNT1 A 0 A_Playsound("HQVBAT",CHAN_VOICE)
    Goto SelectNormal
  SelectNormal:
    MELI A 1 A_Raise(20)
    loop
  Fire:
    MELE A 0 A_JumpIfInventory("ComboPoints",2,"Fire3")
    MELE A 0 A_JumpIfInventory("SwingHold",1,"Hold")
    MELE A 0 A_JumpIfInventory("SwingReady3",1,"Fire4")
    MELE A 0 A_JumpIfInventory("SwingReady2",1,"Fire5")
    MELE A 0 A_JumpIfInventory("SwingReady",1,"QuickSwing")
	MELI B 1
	MELI C 1
	MELI D 1
	MELI E 1
	TNT1 A 1 A_GiveInventory("SwingHold",1)
	TNT1 A 1 A_GiveInventory("SwingReady",1)
    Goto Fire4
  QuickSwing:
    MELE A 0 A_JumpIfInventory("SwingHold",1,"Hold")
	MELA CE 1
	TNT1 A 1 A_GiveInventory("SwingHold",1)
    Goto Fire1
  Hold:
    MELE A 0 A_JumpIfInventory("SwingSwap",1,"Fire2")
	Goto Fire1
  Fire1:
    MELE A 1 A_PlayWeaponSound("BATSWN")
    MELE B 1 
	MELE C 1 
    MELE D 1  A_CustomPunch (random(4,8),0,0,"BatHit",128)
    MELE E 1 
	MELE F 1 A_GiveInventory("ComboPoints",1)
	MELE G 1 A_GiveInventory("SwingSwap",1)
	TNT1 A 1
	TNT1 A 9 A_WeaponReady
	TNT1 A 0 A_TakeInventory("ComboPoints",99)
	TNT1 A 0 A_TakeInventory("SwingReady2",99)
	TNT1 A 0 A_TakeInventory("SwingReady3",99)
	MELE J 0 A_ReFire("Hold")
	Goto Redraw
  Fire2:
    MERE A 1 A_PlayWeaponSound("BATSWN")
    MERE B 1
	MERE C 1
    MERE D 1 A_CustomPunch (random(4,8),0,0,"BatHit",128)
    MERE E 1
	MERE F 1 A_GiveInventory("ComboPoints",1)
	MERE G 1 A_TakeInventory("SwingSwap",99)
	TNT1 A 1
	TNT1 A 9 A_WeaponReady
	TNT1 A 0 A_TakeInventory("ComboPoints",99)
	TNT1 A 0 A_TakeInventory("SwingReady2",99)
	TNT1 A 0 A_TakeInventory("SwingReady3",99)
	MELE J 0 A_ReFire("Hold")
	Goto Redraw
  Fire3:
    MEUE FD 1
	MEUE A 2
	MEUE B 1 A_PlayWeaponSound("BATSWN")
	MEUE CD 1
    MEUE E 1 A_CustomPunch (random(8,20),0,0,"BatHit",128)
   	MEUE F 1 A_TakeInventory("ComboPoints",99)
	MEUE G 1 A_TakeInventory("SwingSwap",99)
	TNT1 A 1
	TNT1 A 9 A_WeaponReady
	TNT1 A 1 A_TakeInventory("ComboPoints",99)
	TNT1 A 0 A_TakeInventory("SwingReady2",99)
	TNT1 A 0 A_TakeInventory("SwingReady3",99)
	MELE J 0 A_ReFire("Hold")
	Goto Redraw
  Fire4:
	TNT1 A 0 A_GiveInventory("SwingReady",1)
 	TNT1 A 0 A_TakeInventory("SwingReady3",99)
    MELF A 1 A_PlayWeaponSound("BATSWN")
    MELF B 1 
	MELF C 1 
    MELF D 1  A_CustomPunch (random(10,15),0,0,"BatHit",128)
    MELF E 1 
	MELF F 1 A_GiveInventory("ComboPoints",1)
	MELF G 1 A_TakeInventory("SwingSwap",99)
	MELF HI 1
	TNT1 A 1
	TNT1 A 9 A_WeaponReady
	TNT1 A 0 A_TakeInventory("ComboPoints",99)
	TNT1 A 0 A_TakeInventory("SwingReady2",99)
	MELE J 0 A_ReFire("Hold")
	Goto Redraw
  Fire5:
    MELE B 1 A_PlayWeaponSound("BATSWN")
	MELE C 1
	MELE D 1 A_CustomPunch (random(5,10),0,0,"BatHit",128)
    MELE E 1 
	MELE F 1 A_GiveInventory("ComboPoints",1)
	MELE G 1 A_GiveInventory("SwingSwap",1)
	TNT1 A 1
	TNT1 A 9 A_WeaponReady
	TNT1 A 0 A_TakeInventory("ComboPoints",99)
	TNT1 A 0 A_TakeInventory("SwingReady2",99)
	TNT1 A 0 A_TakeInventory("SwingReady3",99)
	MELE J 0 A_ReFire("Hold")
	Goto Redraw
	Redraw:
	TNT1 A 1 A_TakeInventory("SwingHold",99)
	MELA CBA 1
	Goto BigFire
	BigFire:
	MELA A 35 A_WeaponReady(WRF_ALLOWZOOM|WRF_ALLOWUSER1|WRF_ALLOWUSER2|WRF_ALLOWRELOAD)
	Goto Reholster
	Reholster:
	TNT1 A 0 A_GiveInventory("SheReloads",1)
	MELR A 1 A_GiveInventory("SwingReady2",1)
	MELR BCDEO 1 A_WeaponReady(WRF_NOSWITCH|WRF_NOSECONDARY)
	TNT1 A 5 A_WeaponReady(WRF_NOSWITCH|WRF_NOSECONDARY)
	MELR FGHIJKL 1
	MELR L 0 A_TakeInventory("SwingReady",99)
	MELR L 0 A_TakeInventory("SwingReady2",99)
	MELR L 0 A_GiveInventory("SwingReady3",1)
	MELR MN 1 A_WeaponReady(WRF_NOSWITCH|WRF_NOSECONDARY)
	MELR L 0 A_TakeInventory("SwingReady3",99)
	TNT1 A 0 A_TakeInventory("SheReloads",99)
	Goto Ready
	AltFire:
    MELE A 0 A_JumpIfInventory("SwingReady",1,"QuickAltSwing")
    MELE A 0 A_JumpIfInventory("WrapCooldownTimer",1,"Ready")
	MELI B 1
	MELI D 1
	TNT1 A 1 A_GiveInventory("SwingReady",1)
    Goto AltFireFinish
  QuickAltSwing:
    MELE A 0 A_JumpIfInventory("WrapCooldownTimer",1,"BigFire")
	MELA CE 1
	TNT1 A 1
    Goto AltFireFinish
	AltFireFinish:
	MELS A 0 A_PlayWeaponSound("BATSW2")
	MELS AC 1
	MELS A 0 A_GiveInventory("BatStunBall",1)
	MELS A 0 A_GiveInventory("WrapCooldown",1)
    MELS A 0 A_FireCustomMissile("PinCaseSpawn",345+random(-8,8),0,-7,-9,0)
	MELS D 1 A_FireCustomMissile("StunWrap",0,0,0,0,FPF_NOAUTOAIM)
	MELS EFG 1
	TNT1 A 9 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY)
	Goto Redraw
	Reload:
    MELE A 0 A_JumpIfInventory("SwingReady",1,"QuickTaunt")
	TNT1 A 0 A_GiveInventory("SheReloads",1)
	MELR NMLKJIHGF 1
	TNT1 A 5
	MELR OEDCBA 1
	Goto QuickTaunt
	QuickTaunt:
	TNT1 A 0 A_GiveInventory("SheReloads",1)
	MELA A 1 A_GiveInventory("SwingHold",1)
	MELA B 1 A_GiveInventory("SwingReady",1)
	MELA CD 1
    TNT1 A 0 A_Jump(100,"Impolite")
   Goto Polite
   Polite:
    TNT1 A 0 A_Overlay (-3, "Taunt")
    MELA D 35
   Goto QuickTauntFinish
   Impolite:
    TNT1 A 0 A_Overlay (-3, "TauntFU")
    MELA D 35
   Goto QuickTauntFinish
    QuickTauntFinish:
	MELA DCBA 1
	TNT1 A 0 A_TakeInventory("SheReloads",99)
	Goto BigFire
  Zoom:
   MELE A 0 A_JumpIfInventory("SwingReady",1,"ZoomReady")
   MELI AC 1
   TNT1 A 0 A_Overlay (-3, "QuickMelee")
   MELI D 6
   MELI CBA 2
   Goto Ready
  ZoomReady:
   MELA AC 1
   TNT1 A 0 A_Overlay (-3, "QuickMelee")
   MELA D 6
   MELA CBA 2
   Goto BigFire
  User1:
   MELE A 0 A_JumpIfInventory("SwingReady",1,"User1Ready")
   MELE A 0 A_JumpIfInventory("ThrowableAmmo",1,1)
   Goto GrenadeDry1
   MELI ACE 1 
   TNT1 A 1
   TNT1 A 0 A_GiveInventory("SwingReady",1)
   TNT1 A 0 A_Overlay (-3, "ThrowNao2")
   TNT1 A 10
   MELA CBA 2
   Goto BigFire
  User1Ready:
   MELE A 0 A_JumpIfInventory("ThrowableAmmo",1,1)
   Goto GrenadeDry2
   MELA ACE 1
   MELA E 1
   TNT1 A 0 A_Overlay (-3, "ThrowNao")
   MELA E 10
   MELA DCBA 2
   Goto BigFire
  User2:
   MELE A 0 A_JumpIfInventory("SwingReady",1,"User2Ready")
   SOCH A 0 A_JumpIfInventory("StimAmmo",1,1)
   Goto StimDry1
   SOCH A 0 A_JumpIfHealthLower(100, 1)
   Goto HealthFull1
   MELI ACE 1 
   TNT1 A 1
   TNT1 A 0 A_GiveInventory("SwingReady",1)
   TNT1 A 0 A_Overlay (-3, "InjectorPlunge")
   TNT1 A 30
   MELA CBA 2
   Goto BigFire
  User2Ready:
   SOCH A 0 A_JumpIfInventory("StimAmmo",1,1)
   Goto StimDry2
   SOCH A 0 A_JumpIfHealthLower(100, 1)
   Goto HealthFull2
   MELA ACE 1
   MELA E 1
   TNT1 A 0 A_Overlay (-3, "InjectorPlunge")
   MELA E 30
   MELA DCBA 2
   Goto BigFire
   GrenadeDry1:
   MELI A 1 ACS_NamedExecute("NoGrenades", 0)
   Goto Ready
   HealthFull1:
   MELI A 1 ACS_NamedExecute("FullHealth", 0)
   Goto Ready
   StimDry1:
   MELI A 1 ACS_NamedExecute("NoStims", 0)
   Goto Ready
   GrenadeDry2:
   MELA A 1 ACS_NamedExecute("NoGrenades", 0)
   Goto BigFire
   HealthFull2:
   MELA A 1 ACS_NamedExecute("FullHealth", 0)
   Goto BigFire
   StimDry2:
   MELA A 1 ACS_NamedExecute("NoStims", 0)
   Goto BigFire
}
}

ACTOR TauntPuff
{
	Radius 5
	Height 1
	Damagetype "Taunt"
	Renderstyle Add
	Damage 0
    Projectile
	+NOGRAVITY
	+DontSplash
	+ForceRadiusDmg
	+DontFall
	+FORCEPAIN
	+CAUSEPAIN
	+DONTTHRUST
	+PUFFONACTORS
	+HITTRACER
	+PUFFGETSOWNER
	+BLOODLESSIMPACT
	States
	{
	Spawn:
	TNT1 A 1
	Stop
        Death:
		TNT1 A 1
		Stop
}
}

actor ShieldPart
{
  Radius 64
  Height 96
  Scale 0.1
  RenderStyle None
  Alpha 0.25
  Bloodtype "ShieldHit"
  +SHOOTABLE
  +NOGRAVITY
  +NOTELEPORT
  +NODAMAGE
  +DONTRIP
  +NOBLOODDECALS
  +FLOORCLIP
  +REFLECTIVE
  +GHOST
  States
  {
  Spawn:
    SHLF B 1 bright
    stop
  Death:
    TNT1 A 2
    stop
  }
}
Actor ComboPoints : QuinnBoolean { Inventory.MaxAmount 2 }
Actor SwingHold : QuinnBoolean { Inventory.MaxAmount 1 }
Actor SwingSwap : QuinnBoolean { Inventory.MaxAmount 1 }
Actor SwingReady : QuinnBoolean { Inventory.MaxAmount 1 }
Actor SwingReady2 : QuinnBoolean { Inventory.MaxAmount 1 }
Actor SwingReady3 : QuinnBoolean { Inventory.MaxAmount 1 }
Actor BatStunBall : QuinnBoolean { Inventory.MaxAmount 1 }

Actor StunWrap
{
  Radius 2
  Height 2
  Speed 20
  Damage 0
  Projectile
  Gravity 0.5
  Scale 0.15
  Var Int User_StunTimer;
  +BOUNCEONWALLS
  -NOGRAVITY
  +FORCEPAIN
  +HITTRACER
  States
  {
  Spawn:
    WRAP AB 1 A_SpawnItemEx("GLFlare",0,0.2*random(-10,10),0.2*random(-10,10),0,0,0,0,0,0)
    Loop
  Death:
    TNT1 A 0 A_CheckFloor("Death.Floor")
    Stop
  Crash:
  XDeath:
    TNT1 A 0 A_CheckFlag("ISMONSTER",1,AAPTR_TRACER)
	Goto DieNow
	FX08 B 0 A_PlaySoundEX("WRAPHIT",CHAN_7)
    TNT1 A 0 A_ChangeFlag("NOGRAVITY",1)
    TNT1 AAAAA 0 A_CustomMissile("BKSmoke",22,0,(random(0,360)),CMF_AIMDIRECTION)
	CFIR AAAAAAAAAAAA 0 A_CustomMissile("GrenadeConfetti", 0, 0, random(0,360), 2, random(-90,90))
    FLFR MMM 0 bright { A_FadeOut(0.05,1); A_CustomMissile ("WrapExplode2", 0, 0, random (0, 360), 2, random (-60, 60));}
    FLFR MMMM 0 bright { A_FadeOut(0.05,1); A_CustomMissile ("WrapExplode", 0, 0, random (0, 360), 2, random (-80, 80));}
    FLFR MM 0 bright { A_FadeOut(0.05,1); A_CustomMissile ("WrapExplode3", 0, 0, random (0, 360), 2, random (-90, 90));}
	XDeathLoop:
    TNT1 A 0 A_JumpIf((User_StunTimer == 160),"DieNow")
    TNT1 A 1
    {
      A_GiveInventory("FlightlessBird",1,AAPTR_TRACER);
      A_SpawnProjectile("StunStun",0,0,0,CMF_TRACKOWNER|CMF_CHECKTARGETDEAD,0,AAPTR_TRACER);
      A_SpawnItemEx("WrapPart1",7,0,0,0,0,0,0);
      //A_SpawnItemEx("WrapPart1",5,0,0,0,0,0,45);
      A_SpawnItemEx("WrapPart2",6,0,0,0,0,0,90);
      //A_SpawnItemEx("WrapPart1",5,0,0,0,0,0,135);
      A_SpawnItemEx("WrapPart1",7,0,0,0,0,0,180);
      //A_SpawnItemEx("WrapPart1",5,0,0,0,0,0,225);
      A_SpawnItemEx("WrapPart2",6,0,0,0,0,0,270);
      //A_SpawnItemEx("WrapPart1",5,0,0,0,0,0,315);
      A_Warp(AAPTR_TRACER,0,0,32,0,WARPF_NOCHECKPOSITION);
	  A_SetUserVar("User_StunTimer",User_StunTimer+1);
	  Return A_JumpIfHealthLower (1, "DieNow", AAPTR_TRACER);
    }
    Loop
	DieNow:
	FX08 B 0 A_PlaySoundEX("WRAPSTP",CHAN_7)
    TNT1 A 0 A_TakeInventory("FlightlessBird",99,AAPTR_TRACER)
    FLFR MMM 0 bright { A_FadeOut(0.05,1); A_CustomMissile ("WrapExplode2", 0, 0, random (0, 360), 2, random (-60, 60));}
    FLFR MMMM 0 bright { A_FadeOut(0.05,1); A_CustomMissile ("WrapExplode", 0, 0, random (0, 360), 2, random (-80, 80));}
    FLFR MM 0 bright { A_FadeOut(0.05,1); A_CustomMissile ("WrapExplode3", 0, 0, random (0, 360), 2, random (-90, 90));}
	CFIR AAAAAAAAAAAA 0 A_CustomMissile("GrenadeConfetti", 0, 0, random(0,360), 2, random(-90,90))
    Stop
	Death.Floor:
	FX08 B 0 A_PlaySoundEX("WRAPMIS",CHAN_7)
    TNT1 AAAAA 0 A_CustomMissile("BKSmoke",22,0,(random(0,360)),CMF_AIMDIRECTION)
	CFIR AAAAAAAAAAAA 0 A_CustomMissile("GrenadeConfetti", 0, 0, random(0,360), 2, random(-90,90))
    FLFR MMM 0 bright { A_FadeOut(0.05,1); A_CustomMissile ("WrapExplode2", 0, 0, random (0, 360), 2, random (-60, 60));}
    FLFR MMMM 0 bright { A_FadeOut(0.05,1); A_CustomMissile ("WrapExplode", 0, 0, random (0, 360), 2, random (-80, 80));}
    FLFR MM 0 bright { A_FadeOut(0.05,1); A_CustomMissile ("WrapExplode3", 0, 0, random (0, 360), 2, random (-90, 90));}
    Stop
  }
}

actor FlightlessBird : CustomInventory
{
  states
  {
  Pickup:
	TNT1 A 0 ThrustThingZ (0, -20, 0, 0)
    stop
  }
}

Actor WrapPart1
{
  Scale 0.5
  +NOGRAVITY
  +NOBLOCKMAP
  States
  {
  Spawn:
    WRAP C 1 NoDelay A_JumpIfInventory("FlightlessBird",1,"Die",AAPTR_TRACER)
	WRAP C 1
    Stop
  Die:
    TNT1 A 0
	Stop
  }
}

Actor WrapPart2
{
  Scale 0.45
  +NOGRAVITY
  +NOBLOCKMAP
  States
  {
  Spawn:
    WRAP C 1 NoDelay A_JumpIfInventory("FlightlessBird",1,"Die",AAPTR_TRACER)
	WRAP C 1
    Stop
  Die:
    TNT1 A 0
	Stop
  }
}

Actor StunStun
{
  Radius 8
  Height 8
  Speed 60
  Damage 0
  Projectile
  +FORCEPAIN
  +CAUSEPAIN
  +BLOODLESSIMPACT
  DamageType "Stasis"
  States
  {
  Spawn:
    TNT1 A 1
    Loop
  Death:
    TNT1 A 1
    Stop
  }
}

ACTOR WrapCooldownTimer: Powerup
{
	Powerup.Duration -30
}

ACTOR WrapCooldown : PowerupGiver
{
	Powerup.Type "WrapCooldownTimer"
	Inventory.MaxAmount 1
	+AUTOACTIVATE
}

ACTOR Confetti1
{
  Radius 11
  Height 8
  Speed 35
  Damage(0)
  Projectile
  +RANDOMIZE
  +BLOODLESSIMPACT
  +NOGRAVITY
  -NOBLOCKMAP
  +THRUACTORS
  +NOCLIP
  -MOVEWITHSECTOR
  +THRUSPECIES
  +FORCEXYBILLBOARD
  Species "Confetti"
  Scale 0.5
  Gravity 0.2
  Obituary "%k committed a terrible crime. %o saw it."
  States
  {
  Spawn:
    CON3 AB 1 
	TNT1 A 0 A_ChangeFlag("NOCLIP",0) 
    CON3 CD 1 bright
  Spawn2:
    CON3 ABCD 1 bright
	CON3 A 0 A_Jump(120,"Death")
    loop
  Death:
  Crash:
  XDeath:
  Death.Ceiling:
      SHR2 A 0
      SHR2 A 0 A_ChangeFlag("NOGRAVITY",0)
      SHR2 A 0 A_ChangeFlag("NOBLOCKMAP",1)
      SHR2 A 0 A_ChangeFlag("THRUACTORS",1)
      SHR2 A 0 A_ChangeFlag("MOVEWITHSECTOR",1)
      SHR2 A 0 A_SetSpeed(1)
	  SHR2 A 0 A_Stop
	  Goto Wave
  Wave:
      CON3 E 5 bright
      CON3 F 5 bright
      CON3 G 5 bright
	  CON3 G 0 A_CheckFloor("Land")
	  Loop
  Land:
	  CON3 F 0
	  CON3 F 350
      CON3 F 3  A_SetTranslucent(0.8, 0)
      CON3 F 3  A_SetTranslucent(0.6, 0)
      CON3 F 3  A_SetTranslucent(0.4, 0)
      CON3 F 3  A_SetTranslucent(0.2, 0)      
      Stop
  }
}

ACTOR GrenadeConfetti : Confetti1
{
  Speed 15
  States
  {
  Spawn:
    CON3 AB 1 
	TNT1 A 0 A_ChangeFlag("NOCLIP",0) 
    CON3 CD 1 bright
	CON3 A 0 A_Jump(120,"Death")
    loop
  }
}

ACTOR WrapExplode
{
	-SPRITEFLIP
	+ROLLSPRITE
	+INTERPOLATEANGLES
	+NOBLOCKMAP
	+NOCLIP
	+DOOMBOUNCE
	+FLOORCLIP
	+MISSILE
	+NOGRAVITY
	+NOINTERACTION
	Speed 2
	Scale  1.2
	Radius 0
	Height 0
	RenderStyle Add
	Alpha  0.500
    States
    {
    Spawn:
    FGFR A 1 bright 
	FGFR A 1 bright A_ChangeFlag("SPRITEFLIP", random(0,1))
    FGFR BCDEFGHIJKLMNOPQRST 1 Bright { A_FadeOut(0.01,1); A_SetRoll(Roll+frandom(0, 2),SPF_INTERPOLATE); }
    stop
    }
}

ACTOR WrapExplode2 : WrapExplode
{
	Speed 2
	Scale  1.5
}

ACTOR WrapExplode3 : WrapExplode
{
	Speed 2
	Scale  2.5
}
