actor HQSledgehammer : HQWeapon
{
  Weapon.SelectionOrder 3700
  Inventory.PickupMessage "\c[White][ \c[Brick]\"Hot-Wire\" Electric Sledgehammer\c- \c[White]]"
  Tag "\"Hot-Wire\""
  Weapon.Kickback 125000
  Weapon.UpSound "SLDSEL"
  Inventory.PickupSound "SLDPKP"
  Weapon.SlotNumber 1
  Scale 0.4
  +WEAPON.WIMPY_WEAPON
  +WEAPON.MELEEWEAPON
  +NOAUTOAIM
  +NOAUTOFIRE
  +FORCEPAIN
  +WEAPON.NOALERT
  Obituary "%k had %o twisting and shouting with the Sledgehammer."
  States
  {
    Spawn:
    HAMR W -1
    Stop
  Ready:
    HAMI 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("SledgeSmash") == 1,"ZeroFucksGiven")
    HAMI A 1 A_Lower(20)
    loop
  Select: 
      TNT1 A 1
	  TNT1 A 0 A_TakeInventory("SledgeSmash",99)
      TNT1 A 0 A_JumpIfInventory("HQSledgehammerToken",1,"SelectNormal") 
      TNT1 A 0 A_Giveinventory("HarleyTalk",1)
	  TNT1 A 0 A_Giveinventory("HQSledgehammerToken",1)
      TNT1 A 0 A_Playsound("HQVSLD",CHAN_VOICE)
      Goto SelectNormal
  SelectNormal:
    HAMI A 1 A_Raise(20)
    loop
  Fire:
	HAMI B 1
	HAMI D 1
	TNT1 A 4
    Goto Hold
  Hold:
    HAMI A 0 A_JumpIfInventory("MalletSwap",1,"Fire2")
	Goto Fire1
  Fire1:
    MELE A 0 A_JumpIfInventory("HammerSlamCooldownTimer",1,"FireChargeless1")
    HALE A 1 A_PlayWeaponSound("SLDSWN")
    HALE B 1 
	MGNF B 0 A_Quake(8, 6, 0, 48576, "None")
	HALE C 1 
    HALE D 1 A_FireBullets(0,-3.0,-1,5*4,"TaserPuff",FBF_EXPLICITANGLE,130)
	Goto Fire1Rest
  FireChargeless1:
    HALE A 1 A_PlayWeaponSound("SLESWN")
    HALE B 1 
	MGNF B 0 A_Quake(8, 6, 0, 48576, "None")
	HALE C 1 
    HALE D 1 A_FireBullets(0,-2.5,-1,5*4,"SledgeHammerPuff",FBF_EXPLICITANGLE,130)
	Goto Fire1Rest
  Fire1Rest:
    HALE EFG 1 A_SetAngle(Angle +4.000,SPF_INTERPOLATE)
	TNT1 AA 1 A_SetAngle(Angle +4.000,SPF_INTERPOLATE)
	TNT1 A 1 A_GiveInventory("MalletSwap",1)
	TNT1 A 10
	HALE J 0 A_ReFire("Hold")
	Goto Redraw
  Fire2:
    MELE A 0 A_JumpIfInventory("HammerSlamCooldownTimer",1,"FireChargeless2")
    HARE A 1 A_PlayWeaponSound("SLDSWN")
    HARE B 1
	MGNF B 0 A_Quake(8, 6, 0, 48576, "None")
	HARE C 1
    HARE D 1 A_FireBullets(0,-3.0,-1,random(25, 35),"TaserPuff",FBF_EXPLICITANGLE|FBF_NORANDOMPUFFZ,130)
	Goto Fire2Rest
  FireChargeless2:
    HARE A 1 A_PlayWeaponSound("SLESWN")
    HARE B 1
	MGNF B 0 A_Quake(8, 6, 0, 48576, "None")
	HARE C 1
    HARE D 1 A_FireBullets(0,-3.0,-1,random(25, 35),"SledgeHammerPuff",FBF_EXPLICITANGLE|FBF_NORANDOMPUFFZ,130)
	Goto Fire2Rest
  Fire2Rest:
    HARE EFG 1 A_SetAngle(Angle -4.000,SPF_INTERPOLATE)
	TNT1 AA 1 A_SetAngle(Angle -4.000,SPF_INTERPOLATE)
	TNT1 A 1 A_TakeInventory("MalletSwap",99)
	TNT1 A 10
	HALE J 0 A_ReFire("Hold")
	Goto Redraw
	Redraw:
	TNT1 A 1 A_TakeInventory("MalletSwap",99)
	HAMI FEDCBA 1
	Goto Ready
  AltFire:
	HAMI BC 1
	HAMI DE 1
	TNT1 A 5
	HAMU HGFEDCBA 1
	HAMU A 5
	HAMU A 0 A_Refire("AltHold1")
    Goto AltSweep
  AltHold1:
    HAMU AI 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	HAMU A 0 A_Refire("AltHold2")
	Goto AltFireDrop
  AltHold2:
    HAMU AJ 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	HAMU A 0 A_Refire("AltHold3")
	Goto AltFireDrop
  AltHold3:
    HAMU AK 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	HAMU A 0 A_Refire("AltHold4")
	Goto AltFireDrop
  AltHold4:
    HAMU AL 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	HAMU A 0 A_Refire("AltHold1")
	Goto AltFireDrop
	AltFireDrop:
    MELE A 0 A_JumpIfInventory("HammerSlamCooldownTimer",1,"AltFireChargeless")
	BATT G 0 A_PlayWeaponSound("SLDSW2")
	HAMU B 1
	MGNF B 0 A_Quake(10, 8, 0, 48576, "None")
	HAMU D 1
	HAMU F 1
	TNT1 A 0 A_JumpIf(momZ > 0, "AltFreeFall")
	TNT1 A 0 A_JumpIf(momZ < 0, "AltFreeFall")
	Goto AltDropFinish
	AltFreeFall:
	HAMU H 0 A_ScaleVelocity(0.0)
	HAMU H 1 ThrustThingZ (0, -250, 0, 0)
	TNT1 A 0 A_JumpIf(momZ > 0, "AltFreeFall")
	TNT1 A 0 A_JumpIf(momZ < 0, "AltFreeFall")
	Goto AltDropFinish
	AltDropFinish:
	MGNF A 0 A_GiveInventory("HammerSlamCooldown",1)
    MGNF B 0 A_CustomPunch (random(65, 75),0,0,"none",130)
	MGNF B 0 A_Quake(10, 10, 0, 48576, "None")
	TNT1 A 0 A_FireCustomMissile("HammerBlast",0,0,0,-11)
    TNT1 A 0 A_Blast(0,255,255,20.0) //A_RadiusThrust(1500,300,RTF_NOIMPACTDAMAGE|RTF_NOTMISSILE)
	TNT1 A 0 A_RadiusGive("ShockGiber",250,RGF_MONSTERS)
	TNT1 A 0 A_PlaySoundEX("SLDHI2",CHAN_7)
	TNT1 A 5
	TNT1 A 0 A_GiveInventory("SledgeSmash",1)
	TNT1 A 15 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY)
	Goto Redraw
	AltSweep:
    MELE A 0 A_JumpIfInventory("HammerSlamCooldownTimer",1,"AltFireChargeless")
	BATT G 0 A_PlayWeaponSound("SLESWN")
	HAMU B 1
	MGNF B 0 A_Quake(10, 8, 0, 48576, "None")
	HAMU D 1
	HAMU FH 1
    MGNF B 0 A_FireBullets(0,-1.0,-1,random(65, 75),"TaserPuff",FBF_EXPLICITANGLE|FBF_NORANDOMPUFFZ,160)
	TNT1 A 5
	TNT1 A 0 A_GiveInventory("SledgeSmash",1)
	TNT1 A 15 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY)
	Goto Redraw
	AltFireChargeless:
	BATT G 0 A_PlayWeaponSound("SLESWN")
	HAMU B 1
	MGNF B 0 A_Quake(10, 8, 0, 48576, "None")
	HAMU D 1
	HAMU FH 1
    MGNF B 0 A_FireBullets(0,-1.0,-1,random(65, 75),"SledgeHammerPuff",FBF_EXPLICITANGLE|FBF_NORANDOMPUFFZ,160)
	TNT1 A 5
	TNT1 A 0 A_GiveInventory("SledgeSmash",1)
	TNT1 A 15 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY)
	Goto Redraw
  Zoom:
   HAMI AC 1
   TNT1 A 0 A_Overlay (-3, "QuickMelee")
   HAMI D 6
   HAMI CBA 2
   Goto Ready
  User1:
   MELE A 0 A_JumpIfInventory("ThrowableAmmo",1,1)
   Goto GrenadeDry
   HAMI AC 1
   TNT1 A 0 A_Overlay (-3, "ThrowNao")
   HAMI D 6
   HAMI 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
   HAMI AC 1
   TNT1 A 0 A_Overlay (-3, "InjectorPlunge")
   HAMI D 30
   HAMI CBA 2
   Goto Ready
   GrenadeDry:
   HAMI A 1 ACS_NamedExecute("NoGrenades", 0)
   Goto Ready
   HealthFull:
   HAMI A 1 ACS_NamedExecute("FullHealth", 0)
   Goto Ready
   StimDry:
   HAMI A 1 ACS_NamedExecute("NoStims", 0)
   Goto Ready
   Reload:
   TNT1 A 0 A_GiveInventory("SheReloads",1)
   HAMI ABC 1
   TNT1 A 0 A_Jump(100,"Impolite")
   Goto Polite
   Polite:
   TNT1 A 0 A_Overlay (-3, "Taunt2")
   HAMI D 35
   Goto ReloadFinish
   Impolite:
   TNT1 A 0 A_Overlay (-3, "TauntFU2")
   HAMI D 35
   Goto ReloadFinish
   ReloadFinish:
   HAMI CBA 1
   TNT1 A 0 A_TakeInventory("SheReloads",99)
   Goto Ready
}
}

ACTOR HammerBlast
{
  +THRUACTORS
  var int user_theta;
  States
  {
  Spawn:
	TNT1 A 0 A_CustomMissile("HammerWave",0,0,user_theta,CMF_AIMDIRECTION)
	TNT1 A 0 A_SetUserVar("user_theta",user_theta+1)
	TNT1 A 0 A_JumpIf(user_theta==360,"XDeathEnd")
	Loop
	XDeathEnd:
    TNT1 A 0
    stop
  }
}

Actor HammerWave
{
  Radius 2
  Height 4
  Speed 36
  Damage 0
  +THRUACTORS
  +DONTSPLASH
  +NOCLIP
  +NOBLOCKMAP
  +DONTSPLASH
  +DROPOFF
  -NoGravity
  PROJECTILE
  RenderStyle Add
  DamageType "Melee"
  Alpha  0.5
  Scale 1.3
  SeeSound "Toaster/Loop"
  DeathSound "Flamethrower/Hit"
  States
  {
  Spawn:
    NULL A 1 A_SetTranslucent(0.30)
    SMKN A 1 A_ChangeFlag("SPRITEFLIP", random(0,1))
	SMKN CEG 1 { A_SpawnItemEx("TaserDebris",random(-15,15),random(-15,15),random(-15,15),random(-1,1),random(-3,3),random(0,1)); A_FadeOut(0.001,1); A_SetRoll(Roll+frandom(8,25),SPF_INTERPOLATE); }
	SMKN IKMOQ 1 { A_FadeOut(0.001,1); A_SetRoll(Roll+frandom(8,25),SPF_INTERPOLATE); }
	TNT1 A 0
	Stop
  }
}

Actor MalletSwap : QuinnBoolean { Inventory.MaxAmount 1 }
Actor SledgeSmash : QuinnBoolean { Inventory.MaxAmount 1 }

ACTOR HammerSlamCooldownTimer: Powerup
{
	Powerup.Duration -60
}

ACTOR HammerSlamCooldown : PowerupGiver
{
	Powerup.Type "HammerSlamCooldownTimer"
	Inventory.MaxAmount 1
	+AUTOACTIVATE
}