Actor CrackKnuckles : Weapon
{
  +CHEATNOTWEAPON
  +UNDROPPABLE
  +UNTOSSABLE
  Tag " "
  states
  {
  Select:
    TNT1 A 0 A_Raise
    loop
  Deselect:
    TNT1 A 1 A_Lower
    loop
  Ready:
    KNUK AB 3
    KNUK C 3 A_PlayWeaponSound("duke/knuckles")
    KNUK DCBA 3
    TNT1 A 35 A_TakeInventory("CrackKnuckles",1)
    stop
  Spawn:
    TNT1 A 35
    Stop  
  Fire:
    TNT1 A 35
    Stop  
  }
}

Actor NothingWeapon : Weapon replaces Beak
{
  Weapon.SelectionOrder 10000
 Weapon.YAdjust 15
  Tag " "
  states
  {
  Select:
    FIST A 1 A_Raise
    loop
  Deselect:
    FIST A 1 A_Lower
    loop
  Ready:
    FIST A 0 A_JumpIfInventory("DukeRunning",1,2)
    FIST A 1 A_WeaponReady
    loop
    FIST BCDEFGA 1 A_WeaponReady
    loop 
  Fire:
    FIST BCDEFGA 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
    goto Ready
  }
}

Actor DefaultDukeWeapon : ZWeapon
{
  States
  {
  Check:
    TNT1 A 0 A_JumpIfHealthLower(1,3)
    TNT1 A 0 A_JumpIfInventory("Kicking",1,"DoKick")
    TNT1 A 1
    Loop
    TNT1 A 1
    Stop
  Ready:
    TNT1 A 0 A_Overlay (-5, "Check")
    TNT1 A 0 A_OverlayFlags(-5,PSPF_ADDBOB|PSPF_ADDWEAPON,false)
    TNT1 A 0 A_OverlayOffset(-5,0,32)
    TNT1 A 1 A_Jump(256,"RReady")
    Stop
  RReady:
    TNT1 A 0 A_JumpIfInventory("TossPipeBomb",1,"TossPipeBomb")
    TNT1 A 0 A_JumpIfInventory("TossTripBomb",1,"TossTripBomb")
    TNT1 A 1 A_Jump(256,"RReady2")
    Stop
  DoKick:
    BOOT A 0 ACS_ExecuteAlways(522,0,FAS_ActorKick)
    BOOT C 7
    TNT1 A 0 A_JumpIfInventory("SteroidsActive",1,3)
    BOOT D 6 A_CustomPunch(FAS_DukeKickDamage,1,0,"MightyBootPuff",0)
    TNT1 A 0 A_Jump(256,2)
    BOOT D 6 A_CustomPunch(FAS_DukeKickDamage*4,1,0,"MightyBootPuff",0)
    BOOT C 4 A_GiveInventory("Attacking",1)
    BOOT C 3
    goto Check
  Select:
    "####" "#" 1 A_Raise
    "####" "#" 0 A_Raise
    loop
  Deselect:
    "####" "#" 1 A_Lower
    "####" "#" 0 A_Lower
    loop
  Fire:
    TNT1 A 1
    TNT1 A 0 A_Jump(256, "Ready")
    loop
  TossPipeBomb:
    TNT1 A 0 A_TakeInventory("TossPipeBomb", 1)
    TNT1 A 0 A_JumpIfInventory("PipebombAmmo", 1, 1)
    Goto RReady
    PBMG A 1 offset(12,42)
    PBMG A 1 offset(16,46)
    PBMG A 1 offset(20,50)
    PBMG A 1 offset(24,54)
    PBMG A 1 offset(28,58)
    PBMG A 1 offset(36,66)
    PBMG B 1 offset(44,74)
    PBMG B 1 offset(52,82)
    PBMG B 1 offset(62,92)
    PBMG B 1 offset(60,90)
    PBMG B 1 offset(40,70)
    TNT1 A 0 A_FireCustomMissile("TimedPipebomb",0,0,0,0,0,0)
    TNT1 A 0 A_TakeInventory("PipebombAmmo", 1)
    TNT1 A 0 A_TakeInventory("Waiting",10)
    PBMG C 1 offset(30,60)
    PBMG C 1 offset(10,40)
    PBMG C 1 offset(0,40)
    PBMG C 1 offset(0,60)
    PBMG C 1 offset(0,80)
    PBMG C 1 offset(0,100)
    PBMG C 1 offset(0,110)
    TNT1 A 5
    TNT1 A 0 A_TakeInventory("TossPipeBomb", 1)
    Goto RReady
  TossTripBomb:
    TNT1 A 0 A_TakeInventory("TossTripBomb", 1)
    TNT1 A 0 A_JumpIfInventory("LaserTripAmmo", 1, 1)
    Goto RReady
    TNT1 A 0 A_OverlayFlags(-4,PSPF_RENDERSTYLE,true)
    TNT1 A 0 A_OverlayRenderstyle(-4,STYLE_None)
    TRIP A 1 OffSet(0,120)
    TRIP A 1 OffSet(0,100)
    TRIP A 1 OffSet(0,80)
    TRIP A 1 OffSet(0,60)
    TRIP A 1 OffSet(0,40) 
    TRIP A 1 OffSet(0,15)  
    TRIP A 0 A_FireCustomMissile("ThrownMineTripBomb",0,0,0,0)
    TNT1 A 0 A_TakeInventory("LaserTripAmmo", 1)
    TRIP A 0 A_TakeInventory("Waiting",10)
    TRIP BBB 1
    TRIP C 1 OffSet(0,25)
    TRIP C 1 OffSet(0,30)
    TRIP C 1 OffSet(0,35)
    TRIP C 1 OffSet(0,40)
    TRIP C 1 OffSet(0,60)
    TRIP C 1 OffSet(0,80)
    TRIP C 1 OffSet(0,100)
    TRIP C 1 OffSet(0,110)
    TNT1 A 5
    TNT1 A 0 A_OverlayRenderstyle(-4,STYLE_Normal)
    TNT1 A 0 A_OverlayFlags(-4,PSPF_RENDERSTYLE,false)
    TNT1 A 0 A_TakeInventory("TossTripBomb", 1)
    Goto RReady
  }
}

Actor MightyBoot : DefaultDukeWeapon
{
  Weapon.SelectionOrder 23
  Weapon.KickBack 50
  Obituary "%k gave %o the mighty boot!"
  attacksound "duke/kick"
  +NOALERT
  +WIMPY_WEAPON
  +UNDROPPABLE
  +UNTOSSABLE
  Tag " "
  states
  {
  Select:
    TNT1 A 1 A_Raise
    TNT1 A 0 A_Raise
    TNT1 A 0 A_Raise
    loop
  Deselect:
    TNT1 A 1 A_Lower
    TNT1 A 0 A_Lower
    TNT1 A 0 A_Lower
    loop
  RReady2:
    TNT1 A 1 A_WeaponReady
    goto RReady
  Spawn:
    TNT1 A 1
    Stop  
  Fire:
    BOOT A 0 ACS_ExecuteAlways(522,0,FAS_ActorKick)
    BOOT A 7
    TNT1 A 0 A_JumpIfInventory("SteroidsActive",1,3)
    BOOT B 6 A_CustomPunch(FAS_DukeKickDamage,1,0,"MightyBootPuff",0)
    TNT1 A 0 A_Jump(256,2)
    BOOT B 6 A_CustomPunch(FAS_DukeKickDamage*4,1,0,"MightyBootPuff",0)
    BOOT A 4
    BOOT A 3 A_Refire
    goto RReady
  }
}

Actor DukeMoneyTaunt : Weapon
{
  +CHEATNOTWEAPON
  +UNDROPPABLE
  +UNTOSSABLE
  Tag " "
  states
  {
  Select:
    TNT1 A 0 A_Raise
    loop
  Deselect:
    TNT1 A 1 A_Lower
    loop
  Ready:
    DMON X 1 offset(0,35)
    DMON X 1 offset(0,29)
    DMON X 1 offset(0,23)
    DMON X 1 offset(0,17)
    DMON X 8
    DMON Y 11
    DMON Y 1 offset(0,17)
    DMON Y 1 offset(0,23)
    DMON Y 1 offset(0,29)
    DMON Y 1 offset(0,35)
    TNT1 A 35 A_TakeInventory("DukeMoneyTaunt",1)
    stop
  Spawn:
    TNT1 A 35
    Stop  
  Fire:
    TNT1 A 35
    Stop  
  }
}

actor MonsterAlert
{
  PROJECTILE
  speed 1
  radius 1
  height 1
  damage 0
  states
  {
  Spawn:
    TNT1 A 5
    TNT1 A 5 {A_AlertMonsters; A_AlertMonsters(0,AMF_TARGETNONPLAYER);}
    stop
  }
}