actor HQMallet : HQWeapon
{
  Weapon.SelectionOrder 3700
  Inventory.PickupMessage "\c[White][ \c[Brick]\"Beatrice\" Custom Carnival Mallet\c- \c[White]]"
  Tag "\"Beatrice\""
  Weapon.Kickback 125000
  Weapon.UpSound "SLDSEL"
  Inventory.PickupSound "SLDPKP"
  Weapon.SlotNumber 1
  Scale 0.4
  +WEAPON.WIMPY_WEAPON
  +WEAPON.MELEEWEAPON
  +CHEATNOTWEAPON
  +NOAUTOAIM
  +NOAUTOFIRE
  +FORCEPAIN
  +WEAPON.NOALERT
  Obituary "%k squashed the beef with %o, with a big mallet."
  States
  {
    Spawn:
    MALI F -1
    Stop
  Ready:
    MALI A 1 A_WeaponReady(WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_ALLOWUSER1|WRF_ALLOWUSER2)
    loop
  Deselect:
    NULL A 0 A_JumpIf(CountInv("HQGrabbedBarrel") == 1,"ZeroFucksGiven")
    MALI A 1 A_Lower(20)
    loop
  Select: 
      TNT1 A 1
      TNT1 A 0 A_JumpIfInventory("HQMalletToken",1,"SelectNormal") 
      TNT1 A 0 A_Giveinventory("HarleyTalk",1)
	  TNT1 A 0 A_Giveinventory("HQMalletToken",1)
      TNT1 A 0 A_Playsound("HQVMAL",CHAN_VOICE)
      Goto SelectNormal
  SelectNormal:
    MALI A 1 A_Raise(20)
    loop
  Fire:
	MALI B 1
	MALI D 1
	TNT1 A 4
    Goto Hold
  Hold:
    MALI A 0 A_JumpIfInventory("MalletSwap2",1,"Fire2")
	Goto Fire1
  Fire1:
    MALE A 1 A_PlayWeaponSound("MALTSWN")
    MALE B 1 
	MGNF B 0 A_Quake(8, 6, 0, 48576, "None")
	MALE C 1 A_FireBullets(20.5,-3.0,-1,15,"MalletPuff3",FBF_EXPLICITANGLE,180)
	TNT1 A 0 A_FireBullets(10.5,-3.0,-1,25,"MalletPuff3",FBF_EXPLICITANGLE,180)
    MALE D 1 A_FireBullets(0,-3.0,-1,45,"MalletPuff",FBF_EXPLICITANGLE,180)
	TNT1 A 0 A_FireBullets(-10.5,-3.0,-1,25,"MalletPuff3",FBF_EXPLICITANGLE,180)
    MALE E 1 A_FireBullets(-20.5,-3.0,-1,15,"MalletPuff3",FBF_EXPLICITANGLE,180)
	MALE FG 1 A_SetAngle(Angle +4.000,SPF_INTERPOLATE)
	TNT1 AA 1 A_SetAngle(Angle +4.000,SPF_INTERPOLATE)
	TNT1 A 1 A_GiveInventory("MalletSwap2",1)
	TNT1 A 10
	MALE J 0 A_ReFire("Hold")
	Goto Redraw
  Fire2:
    MARE A 1 A_PlayWeaponSound("MALTSWN")
    MARE B 1
	MGNF B 0 A_Quake(8, 6, 0, 48576, "None")
	MARE C 1 A_FireBullets(-20.5,-3.0,-1,15,"MalletPuff3",FBF_EXPLICITANGLE,180)
	TNT1 A 0 A_FireBullets(-10.5,-3.0,-1,25,"MalletPuff3",FBF_EXPLICITANGLE,180)
    MARE D 1 A_FireBullets(0,-3.0,-1,45,"MalletPuff",FBF_EXPLICITANGLE,180)
	TNT1 A 0 A_FireBullets(10.5,-3.0,-1,25,"MalletPuff3",FBF_EXPLICITANGLE,180)
    MARE E 1 A_FireBullets(20.5,-3.0,-1,15,"MalletPuff3",FBF_EXPLICITANGLE,180)
	MARE FG 1 A_SetAngle(Angle -4.000,SPF_INTERPOLATE)
	TNT1 AA 1 A_SetAngle(Angle -4.000,SPF_INTERPOLATE)
	TNT1 A 1 A_TakeInventory("MalletSwap2",99)
	TNT1 A 10
	MALE J 0 A_ReFire("Hold")
	Goto Redraw
	Redraw:
	TNT1 A 1 A_TakeInventory("MalletSwap2",99)
	MALI EDCBA 1
	Goto Ready
  AltFire:
	MALI BC 1
	MALI DE 1
	TNT1 A 5
	MALU HGFEDCB 1
	HAMU A 0 A_Refire("AltHold")
	HAMU A 5
	Goto AltFireDrop2
  AltHold:
    HAMU A 0 A_ZoomFactor(0.900)
    HAMU A 0 A_GiveInventory("BeaSpeed",1)
	HAMU A 0 A_PlaySound("SerumTalk",CHAN_VOICE)
	Goto AltHold1
 AltHold1:
    HAMU AI 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	HAMU A 0 A_GiveInventory("MalletCharge",1)
	HAMU A 0 A_Refire("AltHold2")
	Goto AltFireDrop
  AltHold2:
    HAMU AJ 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	HAMU A 0 A_GiveInventory("MalletCharge",1)
	HAMU A 0 A_Refire("AltHold3")
	Goto AltFireDrop
  AltHold3:
    HAMU AK 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	HAMU A 0 A_GiveInventory("MalletCharge",1)
	HAMU A 0 A_Refire("AltHold4")
	Goto AltFireDrop
  AltHold4:
    HAMU AL 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY|WRF_NOSWITCH)
	HAMU A 0 A_GiveInventory("MalletCharge",1)
	HAMU A 0 A_Refire("AltHold1")
	Goto AltFireDrop
	AltFireDrop:
	BATT G 0 A_PlayWeaponSound("MALTSWN")
	MALU B 1
	MGNF B 0 A_Quake(10, 8, 0, 48576, "None")
	MALU D 1
	MALU FH 1
	MALU F 0 A_GiveInventory("HarleyTalk",1)
	TNT1 A 0 A_JumpIfInventory("MalletCharge", 20, "DropDamage5")
	TNT1 A 0 A_JumpIfInventory("MalletCharge", 15, "DropDamage4")
	TNT1 A 0 A_JumpIfInventory("MalletCharge", 10, "DropDamage3")
	TNT1 A 0 A_JumpIfInventory("MalletCharge", 5, "DropDamage2")
	Goto DropDamage1
	DropDamage1:
    MGNF B 0 A_FireBullets(0,-1.0,-1,25,"MalletPuff",FBF_EXPLICITANGLE|FBF_NORANDOMPUFFZ,160)
	Goto AltDropFinish
	DropDamage2:
    MGNF B 0 A_FireBullets(0,-1.0,-1,50,"MalletPuff",FBF_EXPLICITANGLE|FBF_NORANDOMPUFFZ,160)
	Goto AltDropFinish
	DropDamage3:
    MGNF B 0 A_FireBullets(0,-1.0,-1,75,"MalletPuff",FBF_EXPLICITANGLE|FBF_NORANDOMPUFFZ,160)
	Goto AltDropFinish
	DropDamage4:
    MGNF B 0 A_FireBullets(0,-1.0,-1,100,"MalletPuff2",FBF_EXPLICITANGLE|FBF_NORANDOMPUFFZ,160)
	Goto AltDropFinish
	DropDamage5:
    MGNF B 0 A_FireBullets(0,-1.0,-1,125,"MalletPuff2",FBF_EXPLICITANGLE|FBF_NORANDOMPUFFZ,160)
	Goto AltDropFinish
	AltDropFinish:
	TNT1 A 5
	HAMU A 0 A_ZoomFactor(1.000)
	HAMU A 0 A_TakeInventory("BeaSpeed",99)
	HAMU A 0 A_TakeInventory("MalletCharge",99)
	TNT1 A 15 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY)
	Goto Redraw
	AltFireDrop2:
	HAMU A 0 A_PlaySound("MalletDrop",CHAN_VOICE)
	BATT G 0 A_PlayWeaponSound("MALTSWN")
	MALU B 1
	MGNF B 0 A_Quake(10, 8, 0, 48576, "None")
	MALU D 1
	MALU FH 1
	MALU F 0 A_GiveInventory("HarleyTalk",1)
    MGNF B 0 A_FireBullets(0,-1.0,-1,25,"MalletPuff",FBF_EXPLICITANGLE|FBF_NORANDOMPUFFZ,160)
	Goto AltDropFinish
  Zoom:
   MALI AC 1
   TNT1 A 0 A_Overlay (-3, "QuickMelee")
   MALI D 6
   MALI CBA 2
   Goto Ready
  User1:
   MELE A 0 A_JumpIfInventory("ThrowableAmmo",1,1)
   Goto GrenadeDry
   MALI AC 1
   TNT1 A 0 A_Overlay (-3, "ThrowNao")
   MALI D 6
   MALI 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
   MALI AC 1
   TNT1 A 0 A_Overlay (-3, "InjectorPlunge")
   MALI D 30
   MALI CBA 2
   Goto Ready
   GrenadeDry:
   MALI A 1 ACS_NamedExecute("NoGrenades", 0)
   Goto Ready
   HealthFull:
   MALI A 1 ACS_NamedExecute("FullHealth", 0)
   Goto Ready
   StimDry:
   MALI A 1 ACS_NamedExecute("NoStims", 0)
   Goto Ready
   Reload:
   TNT1 A 0 A_GiveInventory("SheReloads",1)
   MALI ABC 1
   TNT1 A 0 A_Jump(100,"Impolite")
   Goto Polite
   Polite:
   TNT1 A 0 A_Overlay (-3, "Taunt2")
   MALI D 35
   Goto ReloadFinish
   Impolite:
   TNT1 A 0 A_Overlay (-3, "TauntFU2")
   MALI D 35
   Goto ReloadFinish
   ReloadFinish:
   MALI CBA 1
   TNT1 A 0 A_TakeInventory("SheReloads",99)
   Goto Ready
}
}

Actor MalletSwap2 : QuinnBoolean { Inventory.MaxAmount 1 }
Actor MalletCharge : QuinnBoolean { Inventory.MaxAmount 20 }

ACTOR BeaSpeed : PowerSpeed
{
	Powerup.Duration 0x7FFFFFFF 
	Powerup.Strength 4
}
