Actor DukePlayer : PlayerPawn
{
	Player.DisplayName "Duke"
	Player.Face "DKN"
	BloodColor "Red"
	Player.StartItem "M1911", 1
	Player.StartItem "Mighty Boot", 1
	Player.StartItem "DukeClass", 1
	Player.StartItem "Clip", 50
	Player.StartItem "DukePistolReload", 12
	Player.Soundclass "DukePlayer"
	Player.ForwardMove 0.95, 0.925
	Player.SideMove 0.95, 0.925
	Player.JumpZ 10//Default is 8
	Scale 0.725
   DamageFactor "PoisonCloud", 1.9
	DamageFactor "TimonsAxe", 0.85
	DamageFactor "Mace", 1.2
	DamageFactor "DragonClaw", 1.2
    DamageFactor "PoisonCloud", 1.1
    DamageFactor "Pistol", 1.1
    DamageFactor "ZorchPistol", 1.1
    DamageFactor "BFG", 1.1
    DamageFactor "BFGSpray", 1.1
    DamageFactor "Normal", 1.1
    DamageFactor "Zorch", 1.1
    DamageFactor "Ice", 1.1
    DamageFactor "Fire", 1.1
    DamageFactor "Slime", 1.1
    DamageFactor "Disintegrate", 1.1
    DamageFactor "Poison", 1.1
    DamageFactor "WolfenFlamethrower", 1.1
    DamageFactor "DukeDamage", 1.1
    DamageFactor "DukeExplosive", 1.1
    DamageFactor "MightyBoot", 1.1
    DamageFactor "DukeIce", 1.1
    RadiusDamageFactor 0.9
	+NOSKIN
   -DONTBLAST
	-THRUSPECIES
	Species "Player"
    Player.ColorRange 112, 127
	States
	{
	Spawn:
		DUKE AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_JumpIf(momz >> 0, "Jumping")
		TNT1 A 0 A_JumpIfInventory("DukeWaiting",15,"WaitingTooLong")
		TNT1 A 0 A_GiveInventory("DukeWaiting",1)
		Loop
	WaitingTooLong:
		DUKE A 1 //A_GiveInventory("KnuckleCrack2",1)
		DUKE A 1 //A_SelectWeapon("KnuckleCrack2")
		DUKE A 1 A_TakeInventory("DukeWaiting",15)
		goto Spawn
	See:
		DUKE A 0 A_TakeInventory("DukeWaiting",15)
		//DUKE A 0 A_TakeInventory("AFKCount",999)
		DUKE AAAABBBBCCCCDDDD 1 A_JumpIf(momz >> 0, "Jumping") 
		Loop
	Missile:
		TNT1 A 0 A_JumpIfInventory("DukeKicking",1,"Kicking")
		DUKE A 0 A_TakeInventory("DukeWaiting",15)
		DUKE EEEEEEEEEEEE 1 A_JumpIfInventory("DukeKicking",1,"Kicking")
		Goto Spawn
	Melee:
		TNT1 A 0 A_JumpIfInventory("DukeKicking",1,"Kicking")
		DUKE A 0 A_TakeInventory("DukeWaiting",15)
		DUKE FFFFFF 1 BRIGHT A_JumpIfInventory("DukeKicking",1,"Kicking")
		Goto Missile
	Kicking:
		DUKE G 6
		DUKE H 12
		DUKE A 0 A_TakeInventory("DukeKicking",9)
		DUKE G 2
		DUKE A 0 A_TakeInventory("DukeKicking",9)
		goto Spawn
	Jumping:
		DUKE O 3
		DUKE O 1 A_JumpIf(momz >> 0, "Jumping")
		goto Spawn
	Pain: 
		DUKE A 1 A_Pain
		Goto Spawn
	Death:
		DUKE I 10 A_TakeInventory("DukeKaboom",1)
		DUKE J 10 A_PlayerScream
		TNT1 A 0 ACS_ExecuteAlways(212,0,4)
		DUKE K 10 A_NoBlocking
		DUKE LM 10
		DUKE N -1
		Stop
	XDeath:
		DUKE I 5 A_TakeInventory("DukeKaboom",1)
		TNT1 A 0 A_XScream
		TNT1 A 0 A_SpawnDebris("DukeGibs1")
		TNT1 A 0 A_SpawnDebris("DukeGibs2")
		TNT1 A 0 A_SpawnDebris("DukeGibs3")
		TNT1 A 0 A_SpawnDebris("DukeGibs4")
		TNT1 A 0 A_SpawnDebris("DukeGibs5")
		TNT1 A 0 A_SpawnDebris("DukeGibs6")
		TNT1 A 0 A_PlaySound("duke/enemygib")
		TNT1 A 0 ACS_ExecuteAlways(212,0,4)
		ACLO E 5 A_NoBlocking
		ACLO E -1
		Stop
	Death.ZorchPistol:
	Death.Zorch:
		TNT1 A 0 A_TakeInventory("DukeKaboom",1)
		DUKE I 0 A_Stop
		TNT1 A 0 A_PlaySoundEx("chex/zorch","soundslot5",0,0)
		DUKE I 3 A_SpawnItem("ZorchEffectSmall")
		DUKE I 3 A_SetTranslucent(0.9,0)
		DUKE I 0 A_PlayerScream
		DUKE I 3 A_SetTranslucent(0.8,0)
		DUKE I 0 A_NoBlocking
		TNT1 A 0 ACS_ExecuteAlways(212,0,4)
		DUKE I 3 A_SetTranslucent(0.7,0)
		DUKE I 3 A_SetTranslucent(0.6,0)
		DUKE I 3 A_SetTranslucent(0.5,0)
		DUKE I 3 A_SetTranslucent(0.4,0)
		DUKE I 3 A_SetTranslucent(0.3,0)
		DUKE I 3 A_SetTranslucent(0.2,0)
		DUKE I 3 A_SetTranslucent(0.1,0)
		ACLO E 1 A_SetTranslucent(1,0)
		ACLO E -1
		stop
	CoOpModeOn:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag("THRUSPECIES",1)
    TNT1 A 0 A_ChangeFlag("DONTBLAST",1)
		DUKE A 1
		goto See
	Death.DukeDamage:
		TNT1 A 0 A_Jump(218,"Death")
		TNT1 A 0 A_GiveToTarget("DukeDMTauntDuke",1)
		goto Death
	Death.DukeExplosive:
		TNT1 A 0 A_JumpIfHealthLower(-5,"DukeGibStart")
		goto Death.DukeDamage
	DukeGibStart:
		TNT1 A 0 A_UnsetSolid
		TNT1 A 0 A_Jump(96,"XDeath")
		TNT1 A 0 A_GiveToTarget("DukeDMTauntDuke",1)
		goto XDeath
	Death.DukeIce:
		TNT1 A 0 A_Jump(218,"Ice")
		TNT1 A 0 A_GiveToTarget("DukeDMTauntDuke",1)
		goto Ice
	Ice:
	Death.HexenIce:
	Death.Ice:
		TNT1 A 0 A_TakeInventory("DukeKaboom",1)
		DUKE I 5 A_GenericFreezeDeath
		DUKE I 1 A_FreezeDeathChunks
		Wait
	}
}

actor DukeClass : Inventory { -INVBAR +INVENTORY.UNDROPPABLE Inventory.MaxAmount 1 }
actor DukeTaunted : Inventory { -INVBAR +INVENTORY.UNDROPPABLE Inventory.MaxAmount 1 }
actor DukeKicking : Inventory { -INVBAR +INVENTORY.UNDROPPABLE Inventory.MaxAmount 1 }
actor DukeReady : Inventory { -INVBAR +INVENTORY.UNDROPPABLE Inventory.MaxAmount 1 }
actor DukeWaiting : Inventory { -INVBAR +INVENTORY.UNDROPPABLE Inventory.MaxAmount 15 }
actor DukeTauntCooldown : Inventory { -INVBAR +INVENTORY.UNDROPPABLE Inventory.MaxAmount 5 }
actor DukeBossSee : Inventory { -INVBAR +INVENTORY.UNDROPPABLE Inventory.MaxAmount 1 }
actor DukeBallgag : Inventory { -INVBAR +INVENTORY.UNDROPPABLE Inventory.MaxAmount 1 }
actor DukePistolReload : Inventory { -INVBAR +INVENTORY.UNDROPPABLE inventory.maxAmount 12 }
actor DukeFreezethrowerHold : Inventory { -INVBAR +INVENTORY.UNDROPPABLE Inventory.MaxAmount 1 }
actor DukeKaboom : Inventory { -INVBAR +INVENTORY.UNDROPPABLE Inventory.MaxAmount 1 }
actor DukeDevastatorFiringSequence : Inventory { -INVBAR +INVENTORY.UNDROPPABLE Inventory.MaxAmount 1 }
actor DukeRipperFiringSequence : Inventory { -INVBAR +INVENTORY.UNDROPPABLE Inventory.MaxAmount 2 }
actor DukeFlying : Inventory { -INVBAR +INVENTORY.UNDROPPABLE Inventory.MaxAmount 1 }
actor DukeVision : Inventory { -INVBAR +INVENTORY.UNDROPPABLE Inventory.MaxAmount 1 }
actor DukeJetpackFuel : Inventory { -INVBAR +INVENTORY.UNDROPPABLE Inventory.MaxAmount 100 }
actor DukeVisionFuel : Inventory { -INVBAR +INVENTORY.UNDROPPABLE Inventory.MaxAmount 100 }
actor DukeThrownPipebomb : Inventory { -INVBAR +INVENTORY.UNDROPPABLE Inventory.MaxAmount 1 }

actor DukePortJetpack : CustomInventory
{
+INVBAR
+INVENTORY.UNDROPPABLE
Inventory.Icon ARTIJETP
+inventory.hubpower
Inventory.PickupSound "duke/itemget"
Inventory.PickupMessage "You got the Jetpack!"
Inventory.MaxAmount 1
   States
   {
   Spawn:
      DKJT A -1
      Stop
   Use:
	  TNT1 A 0 A_JumpIfInventory("PowerFlight2",1,"UseFail")
	  TNT1 A 0 A_JumpIfInventory("DukeJetpackFuel",1,"CanStartFlying")
	  TNT1 A 1 ACS_ExecuteAlways(212,0,5)
	  fail
   CanStartFlying:
      TNT1 A 0 A_JumpIfInventory("DukeFlying",1,"IsFlying")
   NotFlying:
      TNT1 A 0 A_PlaySoundEx("duke/jetpack","item",0,0)
      TNT1 A 0 A_GiveInventory("DukeFlying", 1)
	  TNT1 A 0 ThrustThingZ(0,32,0,0)
      TNT1 A 0 A_GiveInventory("DukePetjack", 1)
	  TNT1 A 1 ACS_ExecuteAlways(214,0,1)
      fail
   IsFlying:
      TNT1 A 0 A_PlaySoundEx("duke/jetpackoff","item",0,0)
      TNT1 A 1 A_TakeInventory("DukeFlying", 1)
      TNT1 A 1 A_TakeInventory("DukePetjack", 1)
	  TNT1 A 15
	  fail
   UseFail:
	  TNT1 A 0 ACS_ExecuteAlways(212,0,7)
	  fail
   }
}

actor DukePortNiVi : CustomInventory
{
+INVBAR
+INVENTORY.UNDROPPABLE
Inventory.Icon ARTINIVI
+inventory.hubpower
Inventory.PickupSound "duke/itemget"
Inventory.PickupMessage "You got the Night Vision Goggles!"
Inventory.MaxAmount 1
   States
   {
   Spawn:
      DKNV A -1
      Stop
   Use:
	  TNT1 A 0 A_JumpIfInventory("DukeVisionFuel",1,"CanStartFlying")
	  TNT1 A 0 ACS_ExecuteAlways(212,0,6)
	  fail
   CanStartFlying:
      TNT1 A 0 A_JumpIfInventory("DukeVision",1,"IsFlying")
   NotFlying:
      TNT1 A 0 A_PlaySoundEx("duke/nightvision","item",0,0)
      TNT1 A 0 A_GiveInventory("DukeVision",1)
      TNT1 A 0 A_GiveInventory("PowerLightAmp",1)
	  TNT1 A 1 ACS_ExecuteAlways(214,0,2)
      fail
   IsFlying:
      TNT1 A 0 A_PlaySoundEx("duke/nightvision","item",0,0)
      TNT1 A 1 A_TakeInventory("DukeVision", 1)
      TNT1 A 1 A_TakeInventory("PowerLightAmp", 1)
	  TNT1 A 15
	  fail
   }
}

ACTOR DukePetjack : PowerFlight
{
   Powerup.Duration 0x7FFFFFFF
   Powerup.Color "Yellow", 0.05
}

ACTOR DukeNightVision : Infrared
{
   Powerup.Duration 0x7FFFFFFF
}

actor DukeBossKillTaunt : CustomInventory
{
-INVBAR
+INVENTORY.UNDROPPABLE
+INVENTORY.AUTOACTIVATE
Inventory.maxamount 2
States
{
Pickup:
Use:
TNT1 A 0 A_JumpIfInventory("DukeTauntCooldown",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 0 A_PlaySoundEx("duke/bosskill","soundslot7",0,0)
TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
TNT1 A 0 ACS_ExecuteAlways(205)
UseStop:
TNT1 A 15
stop
}
}

actor DukeDMTaunt1 : CustomInventory
{
-INVBAR
+INVENTORY.UNDROPPABLE
+INVENTORY.AUTOACTIVATE
Inventory.maxamount 2
States
{
Pickup:
Use:
TNT1 A 0 A_JumpIfInventory("DukeTauntCooldown",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 0 A_PlaySoundEx("duke/mpkill","soundslot7",0,0)
TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
TNT1 A 0 ACS_ExecuteAlways(205)
UseStop:
TNT1 A 15
stop
}
}

actor DukeDMTauntDuke : CustomInventory
{
-INVBAR
+INVENTORY.UNDROPPABLE
+INVENTORY.AUTOACTIVATE
Inventory.maxamount 2
States
{
Pickup:
Use:
TNT1 A 0 A_JumpIfInventory("CoopModeOn",1,"UseStop")
TNT1 A 0 A_JumpIfInventory("SPModeOn",1,"UseStop")
TNT1 A 0 A_JumpIfInventory("DukeTauntCooldown",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 0 A_PlaySoundEx("duke/fragduke","soundslot7",0,0)
TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
TNT1 A 0 ACS_ExecuteAlways(205)
UseStop:
TNT1 A 15
stop
}
}

actor DukeDMTauntDoomguy : CustomInventory
{
-INVBAR
+INVENTORY.UNDROPPABLE
+INVENTORY.AUTOACTIVATE
Inventory.maxamount 2
States
{
Pickup:
Use:
TNT1 A 0 A_JumpIfInventory("DukeTauntCooldown",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 0 A_PlaySoundEx("duke/mpkilldoom","soundslot7",0,0)
TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
TNT1 A 0 ACS_ExecuteAlways(205)
UseStop:
TNT1 A 15
stop
}
}

actor DukeBossSightTaunt : CustomInventory
{
-INVBAR
+INVENTORY.UNDROPPABLE
+INVENTORY.AUTOACTIVATE
Inventory.maxamount 2
States
{
Pickup:
Use:
TNT1 AAAAAAAAAA 1 A_JumpIfInventory("DukeClass",1,"ActuallyDuke")
TNT1 AAAAAAAAAA 1 A_JumpIfInventory("DukeClass",1,"ActuallyDuke")
stop
ActuallyDuke:
TNT1 A 0 A_JumpIfInventory("DukeTauntCooldown",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 0 A_PlaySoundEx("duke/bosssee","soundslot7",0,0)
TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
TNT1 A 0 ACS_ExecuteAlways(205)
UseStop:
TNT1 A 15
stop
}
}

actor DukeKillTaunt : CustomInventory
{
-INVBAR
+INVENTORY.UNDROPPABLE
+INVENTORY.AUTOACTIVATE
Inventory.maxamount 2
States
{
Pickup:
Use:
TNT1 A 0 A_JumpIfInventory("DukeTauntCooldown",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 0 A_PlaySoundEx("duke/killtaunt","soundslot7",0,0)
TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
TNT1 A 0 ACS_ExecuteAlways(205)
UseStop:
TNT1 A 15
stop
}
}

actor DukeBootTaunt : CustomInventory
{
-INVBAR
+INVENTORY.UNDROPPABLE
+INVENTORY.AUTOACTIVATE
Inventory.maxamount 2
States
{
Pickup:
Use:
TNT1 A 0 A_JumpIfInventory("DukeTauntCooldown",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 0 A_PlaySoundEx("duke/bootkill","soundslot7",0,0)
TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
TNT1 A 0 ACS_ExecuteAlways(205)
UseStop:
TNT1 A 15
stop
}
}

actor DukeGibTaunt : CustomInventory
{
-INVBAR
+INVENTORY.UNDROPPABLE
+INVENTORY.AUTOACTIVATE
Inventory.maxamount 2
States
{
Pickup:
Use:
TNT1 A 0 A_JumpIfInventory("DukeTauntCooldown",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 20 A_JumpIfInventory("DukeBallgag",1,"UseStop")
TNT1 A 0 A_PlaySoundEx("duke/gibkill","soundslot7",0,0)
TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
TNT1 A 0 ACS_ExecuteAlways(205)
UseStop:
TNT1 A 15
stop
}
}

// Weapons

actor Pipebombs : Weapon
{
	Weapon.SlotNumber 1
	Weapon.SelectionOrder 2200
	Weapon.AmmoUse 1
	Weapon.AmmoGive 5
	Weapon.AmmoType "RocketAmmo"
	//Obituary "%k gave %o the pipe."
	Inventory.Pickupmessage "You got the Pipebombs!"
	Inventory.PickupSound "duke/itemget"
	scale 0.5
	+NOALERT
	+INVENTORY.UNDROPPABLE
	+WEAPON.AMMO_OPTIONAL
	+WEAPON.EXPLOSIVE
	States
	{
	Spawn:
		WPBM A -1
		Stop
	Ready:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt")
		TNT1 A 0 A_JumpIfInventory("DukeWaiting",15,"WaitingTaunt")
		TNT1 A 0 A_JumpIfInventory("DukeThrownPipebomb",1,"Ready2")
		DKPB A 1 A_WeaponReady
		Loop
	Ready2:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt")
		TNT1 A 0 A_JumpIfInventory("DukeWaiting",15,"WaitingTaunt")
		DKPB O 1 A_WeaponReady
		Loop
	Deselect:
		TNT1 A 0 A_JumpIfInventory("DukeThrownPipebomb",1,"Deselect2")
		TNT1 A 0 A_TakeInventory("DukeThrownPipebomb",1)
		DKPB AAAA 1 A_Lower
		TNT1 A 0 A_TakeInventory("DukeThrownPipebomb",1)
		DKPB A 0 A_Lower
		DKPB A 1 A_Lower
		TNT1 A 0 A_TakeInventory("DukeThrownPipebomb",1)
		DKPB A 0 A_Lower
		DKPB A 1 A_Lower
		TNT1 A 0 A_TakeInventory("DukeThrownPipebomb",1)
		DKPB A 0 A_Lower
		DKPB A 1 A_Lower
		TNT1 A 0 A_TakeInventory("DukeThrownPipebomb",1)
		DKPB A 0 A_Lower
		DKPB A 1 A_Lower
		TNT1 A 0 A_TakeInventory("DukeThrownPipebomb",1)
		DKPB A 0 A_Lower
		DKPB A 0 A_Lower
		DKPB A 1 A_Lower
		DKPB A 0 A_Lower
		DKPB A 0 A_Lower
		DKPB A 1 A_Lower
		DKPB A 0 A_Lower
		DKPB A 0 A_Lower
		DKPB A 1 A_Lower
		loop
	Deselect2:
		TNT1 A 0 A_TakeInventory("DukeThrownPipebomb",1)
		DKPB OOOO 1 A_Lower
		TNT1 A 0 A_TakeInventory("DukeThrownPipebomb",1)
		DKPB A 0 A_Lower
		DKPB O 1 A_Lower
		TNT1 A 0 A_TakeInventory("DukeThrownPipebomb",1)
		DKPB A 0 A_Lower
		DKPB O 1 A_Lower
		TNT1 A 0 A_TakeInventory("DukeThrownPipebomb",1)
		DKPB A 0 A_Lower
		DKPB O 1 A_Lower
		TNT1 A 0 A_TakeInventory("DukeThrownPipebomb",1)
		DKPB A 0 A_Lower
		DKPB O 1 A_Lower
		DKPB A 0 A_Lower
		DKPB A 0 A_Lower
		DKPB O 1 A_Lower
		DKPB A 0 A_Lower
		DKPB A 0 A_Lower
		DKPB O 1 A_Lower
		DKPB A 0 A_Lower
		DKPB A 0 A_Lower
		DKPB O 1 A_Lower
		loop
	Select:
		DKPB A 1 A_Raise
		DKPB A 0 A_Raise
		DKPB A 0 A_Raise
		DKPB A 1 A_Raise
		DKPB A 0 A_Raise
		DKPB A 1 A_Raise
		DKPB A 0 A_Raise
		DKPB A 1 A_Raise
		DKPB A 0 A_Raise
		DKPB A 1 A_Raise
		DKPB A 0 A_Raise
		DKPB AAAAAA 1 A_Raise
		Loop
	Select2:
		DKPB O 1 A_Raise
		DKPB A 0 A_Raise
		DKPB A 0 A_Raise
		DKPB O 1 A_Raise
		DKPB A 0 A_Raise
		DKPB O 1 A_Raise
		DKPB A 0 A_Raise
		DKPB O 1 A_Raise
		DKPB A 0 A_Raise
		DKPB O 1 A_Raise
		DKPB A 0 A_Raise
		DKPB OOOOOO 1 A_Raise
		Loop
	Fire:
		TNT1 A 0 A_JumpIfInventory("CoopModeOn",1,"CoopFire")
		TNT1 A 0 A_JumpIfInventory("DukeThrownPipebomb",1,"Fire2")
		TNT1 A 0 A_JumpIfNoAmmo("Nothing")
		DKPB AABCDEE 1//A_WeaponReady(12)
		TNT1 A 2//A_WeaponReady(12)
		DKPB FFGHII 1//A_WeaponReady(12)
		TNT1 A 0 A_FireCustomMissile("DukePipebomb",0,1,2,0,2,15)
		TNT1 A 0 A_GiveInventory("DukeThrownPipebomb",1)
		DKPB J 2//A_WeaponReady(12)
		DKPB JKLMNN 1//A_WeaponReady(12)
		TNT1 A 2
		TNT1 AAAAAAAAAA 0 A_Lower
		goto Select2
	Nothing:
		DKPB A 1
		DKPB A 0 A_SelectWeapon("M1911")
		goto Deselect
	CoopFire:
		TNT1 A 0 A_JumpIfInventory("DukeThrownPipebomb",1,"Fire2")
		TNT1 A 0 A_JumpIfNoAmmo("Nothing")
		DKPB AABCDEE 1//A_WeaponReady(12)
		TNT1 A 2//A_WeaponReady(12)
		DKPB FFGHII 1//A_WeaponReady(12)
		TNT1 A 0 A_FireCustomMissile("DukePipebombCoop",0,1,2,0,2,15)
		TNT1 A 0 A_GiveInventory("DukeThrownPipebomb",1)
		DKPB J 2//A_WeaponReady(12)
		DKPB JKLMNN 1//A_WeaponReady(12)
		TNT1 A 2
		TNT1 AAAAAAAAAA 0 A_Lower
		goto Select2
	Fire2:
		DKPB O 1//A_WeaponReady(12)
		DKPB PQ 1//A_WeaponReady(12)
		TNT1 A 0 A_GiveInventory("DukeKaboom",1)
		DKPB Q 1//A_WeaponReady(12)
		DKPB PO 1//A_WeaponReady(12)
		DKPB O 6//A_WeaponReady(12)
		TNT1 A 0 A_TakeInventory("DukeThrownPipebomb",1)
		TNT1 A 0 A_TakeInventory("DukeKaboom",1)
		DKPB OOOO 1 A_Lower
		DKPB A 0 A_Lower
		DKPB O 1 A_Lower
		DKPB A 0 A_Lower
		DKPB O 1 A_Lower
		DKPB A 0 A_Lower
		DKPB O 1 A_Lower
		DKPB A 0 A_Lower
		DKPB O 1 A_Lower
		DKPB A 0 A_Lower
		DKPB A 0 A_Lower
		//DKPB O 1 A_Lower
		//DKPB A 0 A_Lower
		//DKPB A 0 A_Lower
		//DKPB O 1 A_Lower
		//TNT1 AA 0 A_Lower
		goto Select
	AltFire:
		TNT1 A 0 A_GiveInventory("DukeKicking",1)
		TNT1 A 0 ACS_ExecuteAlways(212,0,3)
		TNT1 A 0 A_GunFlash
		DKBT C 6//A_WeaponReady(12)
		TNT1 A 0 A_FireCustomMissile("DukeKickAttack")
		DKBT D 9//A_WeaponReady(12)
		DKBT C 3//A_WeaponReady(12)
		TNT1 A 0 A_Refire
		TNT1 A 0 A_TakeInventory("DukeKicking",9)
		DKBT C 1//A_WeaponReady(12)
		goto Ready
	AltFlash:
		TNT1 A 0 A_JumpIfInventory("DukeThrownPipebomb",1,"AltFlash2")
		DKPB A 20
		stop
	AltFlash2:
		DKPB O 20
		stop
		
	IntroTaunt:
		DKPB AAAA 1 A_Lower
		DKPB A 0 A_Lower
		DKPB A 1 A_Lower
		DKPB A 0 A_Lower
		DKPB A 1 A_Lower
		DKPB A 0 A_Lower
		DKPB A 1 A_Lower
		DKPB A 0 A_Lower
		DKPB A 1 A_Lower
		DKPB A 0 A_Lower
		DKPB A 0 A_Lower
	IntroTaunt1:
		TNT1 AAAAAAAAAAAAA 0 A_Raise
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/introtaunt","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
	IntroTaunt2:
		KNUX A 3
		KNUX B 3
	IntroTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
		
	WaitingTaunt:
		TNT1 A 0 A_JumpIfInventory("DukeThrownPipebomb",1,"WaitingTauntB")
		DKPB AAAA 1 A_Lower
		DKPB A 0 A_Lower
		DKPB A 1 A_Lower
		DKPB A 0 A_Lower
		DKPB A 1 A_Lower
		DKPB A 0 A_Lower
		DKPB A 1 A_Lower
		DKPB A 0 A_Lower
		DKPB A 1 A_Lower
		DKPB A 0 A_Lower
		DKPB A 0 A_Lower
		goto WaitingTaunt1
	WaitingTauntB:
		DKPB OOOO 1 A_Lower
		DKPB A 0 A_Lower
		DKPB O 1 A_Lower
		DKPB A 0 A_Lower
		DKPB O 1 A_Lower
		DKPB A 0 A_Lower
		DKPB O 1 A_Lower
		DKPB A 0 A_Lower
		DKPB O 1 A_Lower
		DKPB A 0 A_Lower
		DKPB A 0 A_Lower
	WaitingTaunt1:
		TNT1 AAAAAAAAAAAAA 0 A_Raise
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/waitingtoolong","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3 A_TakeInventory("DukeThrownPipebomb",99)
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
	WaitingTaunt2:
		KNUX A 3
		KNUX B 3
	WaitingTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3 A_TakeInventory("DukeThrownPipebomb",99)
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
		
	}
}

ACTOR DukePipebomb
{
   SeeSound "duke/pipebomb"
   DamageType "DukeExplosive"
   Speed 16
   Radius 10
   Height 8
    Health 5
   Obituary "%k gave %o the pipe."
   Gravity 0.8
   BounceFactor 0.7
   BounceCount 3
   Scale 0.2
   PROJECTILE
   +NOBLOOD
   +SHOOTABLE
   -NOBLOCKMAP
   -NOLIFTDROP
   -NOGRAVITY
   -NOTELEPORT
   +MOVEWITHSECTOR
   +BOUNCEONACTORS
   +DOOMBOUNCE
   -EXPLODEONWATER
   +CANBOUNCEWATER
   +FORCERADIUSDMG
   +THRUGHOST
   States
   {
   Spawn:
      PBOM AA 1 A_JumpIfInTargetInventory ("DukeKaboom",1,"Death")
      PBOM BB 1 A_JumpIfInTargetInventory ("DukeKaboom",1,"Death")
      Loop
   Death:
      TNT1 A 0 A_ChangeFlag("SHOOTABLE",1) //for r3827 compatibility
      TNT1 A 0 A_PlaySound("duke/pipebomb")
      TNT1 A 0 A_Jump(256,"Death1","Death2")
   Death1:
      TNT1 A 0 A_ChangeFlag("SHOOTABLE",1)
      TNT1 A 0 A_JumpIfHealthLower(0,"Explode")
      TNT1 A 0 A_JumpIfInTargetInventory ("DukeKaboom",1,"Explode")
      PBOM A 1 A_Gravity
      Loop
   Death2:
      TNT1 A 0 A_ChangeFlag("SHOOTABLE",1)
      TNT1 A 0 A_JumpIfHealthLower(0,"Explode")
      TNT1 A 0 A_JumpIfInTargetInventory ("DukeKaboom",1,"Explode")
      PBOM B 1 A_Gravity
      Loop
   Explode:
      TNT1 A 0 A_ChangeFlag("SHOOTABLE",0) //This must be cleared when we get here so double explosions don't happen!
      TNT1 A 0 A_NoBlocking
      TNT1 A 0 A_AlertMonsters
      TNT1 A 0 A_PlaySoundEx("duke/explosion","Weapon",0,1)
      TNT1 AAAAAAA 0 A_SpawnItemEx("PipebombFrag",random(-1,1),random(-1,1),random(26,56),random(-2,2),random(-2,2),random(5,15))//A_SpawnDebris("PipebombFrag")
      TNT1 A 1 A_SpawnItemEx("RPGExplosion",0,0,3,0,0,0,0,0)//A_SpawnItem("RPGExplosion")
      TNT1 A 1 A_Explode((140),147) // Pipebombs have 1.5 the radius of the rockets.
      Stop
   }
}

ACTOR DukePipebombCoop : DukePipebomb { +THRUSPECIES Species "Player" }

ACTOR PipebombFrag
{   
    Health 4
    Speed 2
    Mass 0
	BounceFactor 0.45
	BounceCount 4
	+MISSILE
	+DOOMBOUNCE
	+FLOORCLIP
	+DONTSPLASH
	+CLIENTSIDEONLY
	+MOVEWITHSECTOR
    +BOUNCEONACTORS
	+NOTELEPORT
	+NOTARGET
    //Scale 0.75
    States
	{
	Spawn:
		PBMF ABCD 3
		Loop
	Death:
		TNT1 A 0 A_Jump(256,"Death1","Death2","Death3","Death4")
	Death1:
		PBMF A 1000
		Stop
	Death2:
		PBMF B 1000
		Stop
	Death3:
		PBMF C 1000
		Stop
	Death4:
		PBMF D 1000
		Stop
	}
}

Actor "Mighty Boot" : Weapon
{
	Weapon.SlotNumber 0
	Weapon.SelectionOrder 3700
	+MELEEWEAPON
	+NOALERT
	+WIMPY_WEAPON
	+INVENTORY.UNDROPPABLE
	states
	{
	Select:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt1")
		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
	Ready:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt")
		TNT1 A 0 A_JumpIfInventory("DukeWaiting",15,"WaitingTaunt")
		TNT1 A 1 A_WeaponReady
		loop
	Fire:
		TNT1 A 0 A_GiveInventory("DukeKicking",1)
		DKBT A 5//A_WeaponReady(12)
		TNT1 A 0 A_FireCustomMissile("DukeKickAttack")
		DKBT B 7//A_WeaponReady(12)
		DKBT A 3//A_WeaponReady(12)
		TNT1 A 0 A_Refire
		TNT1 A 0 A_TakeInventory("DukeKicking",9)
		DKBT A 1//A_WeaponReady(12)
		goto Ready
	AltFire:
		TNT1 A 0 A_GiveInventory("DukeKicking",1)
		TNT1 A 0 ACS_ExecuteAlways(212,0,3)
		DKBT C 6//A_WeaponReady(12)
		TNT1 A 0 A_FireCustomMissile("DukeKickAttack")
		DKBT D 9//A_WeaponReady(12)
		DKBT C 3//A_WeaponReady(12)
		TNT1 A 0 A_Refire
		TNT1 A 0 A_TakeInventory("DukeKicking",9)
		DKBT C 1//A_WeaponReady(12)
		goto Ready
		
	IntroTaunt:
	IntroTaunt1:
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/introtaunt","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		//KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
	IntroTaunt2:
		KNUX A 3
		KNUX B 3
	IntroTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		//KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
		
	WaitingTaunt:
	WaitingTaunt1:
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/waitingtoolong","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		//KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
	WaitingTaunt2:
		KNUX A 3
		KNUX B 3
	WaitingTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		//KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
  }
}

ACTOR DukeBootPuff : BulletPuff
{
	Radius 1
	Height 1
    Alpha 1
    Scale 0.45
    VSpeed 1.15
	Speed 0
	+MISSILE
	-SOLID
	+NOCLIP
	+CLIENTSIDEONLY
	+NOINTERACTION
    States
    {
    Spawn:
		  //TNT1 A 1 A_PlaySound("doomguy/wallpunch2")
		  DKPF ABCD 4
		  Stop
    }
}

ACTOR DukeBulletPuff : BulletPuff
{
	Alpha 1
	DamageType "DukeDamage"
    Scale 0.55
    VSpeed 0
	-SOLID
    States
    {
    Spawn:
		  TNT1 A 0 A_Jump(224,2)
		  TNT1 A 0 A_PlaySound("duke/bulletricochet")
		  TNT1 A 1
		  DKPF EFGH 3 BRIGHT
		  Stop
    }
}

ACTOR DukeBulletPuff2 : BulletPuff
{
	Alpha 1
	DamageType "DukeDamage"
    Scale 0.55
    VSpeed 0
	-SOLID
    States
    {
    Spawn:
		  TNT1 A 0 A_Jump(224,2)
		  TNT1 A 0 A_PlaySound("duke/bulletricochet")
		  TNT1 A 1 A_SpawnItem("DukeBootPuff")
		  DKPF EFGH 3 BRIGHT
		  Stop
    }
}

ACTOR DukeRocketPuff : DukeBootPuff
{
	VSpeed 1
	SeeSound ""
	+CLIENTSIDEONLY
	States
    {
    Spawn:
		TNT1 A 2
		DKPF ABCD 4
		Stop
    }
}

ACTOR DukeKickAttack : FastProjectile
{
	Radius 6
	Height 6
	DamageType "MightyBoot"
	Projectile
    Damage (10)
    Speed 25
	Obituary "%k put %o out with a snap kick."
	SeeSound "none"
	DeathSound "none"
	Decal "none"
   +NOTIMEFREEZE
	States
	{
	Spawn:
		TNT1 A 1
        TNT1 A 1
		Stop
	Death:
	Crash:
		TNT1 A 1 A_Stop
		TNT1 A 0 A_PlaySoundEx("doomguy/wallpunch2","body",0,0)
		TNT1 A 1 A_SpawnItem("DukeBootPuff")
		Stop
	XDeath:
		TNT1 A 1 A_Stop
		TNT1 A 0 A_PlaySoundEx("duke/kickhit","body",0,0)
		stop
	}
}

ACTOR DukePistolBullet : FastProjectile
{
   Damage (6)
   Radius 1
   Height 1
   Speed 300
   Projectile
   Obituary "%k made %o suck on his M1911."
   DamageType "DukeDamage"
   Renderstyle "Normal"
   +BLOODSPLATTER
   +NOTIMEFREEZE
   Alpha 1.0
   Decal Bulletchip
   States
   {
   Spawn:
     TNT1 A 1
     loop
   Death:
     TNT1 A 1 A_SpawnItem("DukeBulletPuff")
     TNT1 A 1 A_SpawnItem("DukeBootPuff")
     stop
   XDeath:
     TNT1 A 1
	 stop
   }
}

ACTOR DukePistolBulletCoop : DukePistolBullet
{
+THRUSPECIES
   +NOTIMEFREEZE
Species "Player"
}

ACTOR DukeShotgunBullet : DukePistolBullet
{
+THRUGHOST
   +NOTIMEFREEZE
Obituary "%k deemed %o a threat."
Damage (10)
}

ACTOR DukeShotgunBulletCoop : DukePistolBullet
{
Obituary "%k deemed %o a threat."
Damage (10)
+THRUGHOST
+THRUSPECIES
   +NOTIMEFREEZE
Species "Player"
}

ACTOR DukeRipperBullet : DukePistolBullet
{
+THRUGHOST
   +NOTIMEFREEZE
Obituary "%k ripped %o a new one."
Damage (15)// Original was (9)
}

ACTOR DukeRipperBulletCoop : DukePistolBullet
{
Obituary "%k ripped %o a new one."
Damage (15)
+THRUGHOST
+THRUSPECIES
   +NOTIMEFREEZE
Species "Player"
}

ACTOR DukeExplosiveShotgunBullet : FastProjectile
{
   Damage (6)
   Radius 1
   Height 1
   Speed 300
   Projectile
   Obituary "%k pulverized %o with a spray of explosions."
   DamageType "DukeExplosive"
   Renderstyle "Normal"
   +BLOODSPLATTER
   +NOTIMEFREEZE
   Renderstyle Add
   Alpha 0.9
   Scale 0.55
   Decal DoomImpScorch
   +FORCERADIUSDMG
   States
   {
   Spawn:
     TNT1 A 1
     loop
   XDeath:
   Death:
     TNT1 A 1 A_PlaySound("duke/xshotgunxplod")
	 TNT1 A 0 A_Explode((30),64) // Seven x 25 = 175 damage. 175+42=217. Seven x 35 = 245 damage. 245+42 = 287 damage total.
	 TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("ExplosiveFireSpark",0,0,Random(-200,200),2,Random(-200,200))//TNT1 AAAAAA 0 A_SpawnDebris("ExplosiveFireSpark")
     DKSX ABCDEF 2
	 DKSX GHIJKL 1
     stop
   }
}

ACTOR DukeExplosiveShotgunBulletCoop : DukeExplosiveShotgunBullet
{
+THRUSPECIES
   +NOTIMEFREEZE
Species "Player"
}

ACTOR DukeExplosiveShotgunBulletDM : DukeExplosiveShotgunBullet
{
   +NOTIMEFREEZE
States
{
   XDeath:
   Death:
     TNT1 A 1 A_PlaySound("duke/xshotgunxplod")
	 TNT1 A 0 A_Explode((20),32) // Seven x 20 = 140 damage. 140+42=182.
	 TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("ExplosiveFireSpark",0,0,Random(-200,200),2,Random(-200,200))//TNT1 AAAAAA 0 A_SpawnDebris("ExplosiveFireSpark")
     DKSX ABCDEF 2
	 DKSX GHIJKL 1
     stop
   }
}

ACTOR ExplosiveFireSpark
{
  health 5
  radius 1
  height 1
  Speed 10
  Scale 0.2
  Gravity 0.7
  PROJECTILE
  +NOBLOCKMAP
  +DONTSPLASH
  +RANDOMIZE
  -NOGRAVITY
  -SOLID
  +WINDTHRUST
  +CLIENTSIDEONLY
	States
	{
	Spawn:
		DXSK A 1 BRIGHT A_FadeOut(0.01)
		loop
	}
}

ACTOR M1911 : Weapon
{
	Weapon.SlotNumber 1
	Weapon.SelectionOrder 1900
	//Obituary "%k made %o suck on his M1911."
	DamageType "DukeDamage"
	+WEAPON.WIMPY_WEAPON
	+NOALERT
	+INVENTORY.UNDROPPABLE
	Inventory.Pickupmessage "You got the M1911 Pistol!"
	Inventory.PickupSound "duke/weaponget"
	Weapon.UpSound "duke/m1911up"
	States
	{
	Ready:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt")
		TNT1 A 0 A_JumpIfInventory("DukeWaiting",15,"WaitingTaunt")
		DKPS A 0 A_JumpIfInventory("DukePistolReload",12,"Reload")
		DKPS A 1 A_WeaponReady
		Loop
	Deselect:
		DKPS AAAA 1 A_Lower
		DKPS A 0 A_Lower
		DKPS A 1 A_Lower
		DKPS A 0 A_Lower
		DKPS A 1 A_Lower
		DKPS A 0 A_Lower
		DKPS A 1 A_Lower
		DKPS A 0 A_Lower
		DKPS A 1 A_Lower
		DKPS A 0 A_Lower
		DKPS A 0 A_Lower
		DKPS A 1 A_Lower
		DKPS A 0 A_Lower
		DKPS A 0 A_Lower
		DKPS A 1 A_Lower
		DKPS A 0 A_Lower
		DKPS A 0 A_Lower
		DKPS A 1 A_Lower
		loop
	Select:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt1")
		DKPS A 1 A_Raise
		DKPS A 0 A_Raise
		DKPS A 0 A_Raise
		DKPS A 1 A_Raise
		DKPS A 0 A_Raise
		DKPS A 1 A_Raise
		DKPS A 0 A_Raise
		DKPS A 1 A_Raise
		DKPS A 0 A_Raise
		DKPS A 1 A_Raise
		DKPS A 0 A_Raise
		DKPS AAAAAA 1 A_Raise
		Loop
	Fire:
		TNT1 A 0 A_JumpIfInventory("DukePistolReload",12,"Reload")
		TNT1 A 0 A_JumpIfInventory("CoopModeOn",1,"CoopFire")
		TNT1 A 0 A_JumpIfTargetInLos("AccurateFire")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		DKPS A 1//A_WeaponReady(12)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_PlayWeaponSound("duke/m1911")
		TNT1 A 0 A_FireCustomMissile("DukePistolBullet",random(-2,2),1,0,1,1,random(-1,1))
		TNT1 A 0 A_FireCustomMissile("ShellCasingSpawner",0,0,5)
		DKPS BC 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_GiveInventory("DukePistolReload",1)
		DKPS AAA 1//A_WeaponReady(12)
		Goto Ready
	AccurateFire:
		TNT1 A 0 A_JumpIfInventory("DukePistolReload",12,"Reload")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		DKPS A 1//A_WeaponReady(12)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_PlayWeaponSound("duke/m1911")
		TNT1 A 0 A_FireCustomMissile("DukePistolBullet",0,1,0,1)
		TNT1 A 0 A_FireCustomMissile("ShellCasingSpawner",0,0,5)
		DKPS BC 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_GiveInventory("DukePistolReload",1)
		DKPS AAA 1//A_WeaponReady(12)
		Goto Ready
	CoopFire:
		TNT1 A 0 A_JumpIfInventory("DukePistolReload",12,"Reload")
		TNT1 A 0 A_JumpIfTargetInLos("AccurateFireCoop")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		DKPS A 1//A_WeaponReady(12)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_PlayWeaponSound("duke/m1911")
		TNT1 A 0 A_FireCustomMissile("DukePistolBulletCoop",random(-2,2),1,0,1,1,random(-1,1))
		TNT1 A 0 A_FireCustomMissile("ShellCasingSpawner",0,0,5)
		DKPS BC 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_GiveInventory("DukePistolReload",1)
		DKPS AAA 1//A_WeaponReady(12)
		Goto Ready
	AccurateFireCoop:
		TNT1 A 0 A_JumpIfInventory("DukePistolReload",12,"Reload")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		DKPS A 1//A_WeaponReady(12)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_PlayWeaponSound("duke/m1911")
		TNT1 A 0 A_FireCustomMissile("DukePistolBulletCoop",0,1,0,1)
		TNT1 A 0 A_FireCustomMissile("ShellCasingSpawner",0,0,5)
		DKPS BC 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_GiveInventory("DukePistolReload",1)
		DKPS AAA 1//A_WeaponReady(12)
		Goto Ready
	Flash:
		TNT1 A 1 A_Light1
		TNT1 A 1 A_Light0
		stop
	Reload:
		TNT1 A 0 A_TakeInventory("DukePistolReload",12)
		TNT1 A 0 A_PlayWeaponSound("duke/m1911reload")
		DKPS D 3 //A_WeaponReady(12)
		DKPS E 4 //A_WeaponReady(12)
		DKPS F 8 //A_WeaponReady(12)
		TNT1 A 0 A_TakeInventory("DukePistolReload",12)
		DKPS GH 3 //A_WeaponReady(12)
		DKPS ID 2 //A_WeaponReady(12)
		DKPS A 2 //A_WeaponReady(12)
		TNT1 A 0 A_ResetReloadCounter
		DKPS A 0 A_ReFire
		Goto Ready
	AltFire:
		TNT1 A 0 A_GiveInventory("DukeKicking",1)
		TNT1 A 0 ACS_ExecuteAlways(212,0,3)
		TNT1 A 0 A_GunFlash
		DKBT C 6//A_WeaponReady(12)
		TNT1 A 0 A_FireCustomMissile("DukeKickAttack")
		DKBT D 9//A_WeaponReady(12)
		DKBT C 3//A_WeaponReady(12)
		TNT1 A 0 A_Refire
		TNT1 A 0 A_TakeInventory("DukeKicking",9)
		DKBT C 1//A_WeaponReady(12)
		goto Ready
	AltFlash:  
		DKPS A 20
		stop
		
	IntroTaunt:
		DKPS AAAA 1 A_Lower
		DKPS A 0 A_Lower
		DKPS A 1 A_Lower
		DKPS A 0 A_Lower
		DKPS A 1 A_Lower
		DKPS A 0 A_Lower
		DKPS A 1 A_Lower
		DKPS A 0 A_Lower
		DKPS A 1 A_Lower
		DKPS A 0 A_Lower
		DKPS A 0 A_Lower
	IntroTaunt1:
		TNT1 AAAAAAAAAAAAA 0 A_Raise
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/introtaunt","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		TNT1 A 0 A_PlayWeaponSound("duke/m1911up")
		goto Select
	IntroTaunt2:
		KNUX A 3
		KNUX B 3
	IntroTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		TNT1 A 0 A_PlayWeaponSound("duke/m1911up")
		goto Select
		
	WaitingTaunt:
		DKPS AAAA 1 A_Lower
		DKPS A 0 A_Lower
		DKPS A 1 A_Lower
		DKPS A 0 A_Lower
		DKPS A 1 A_Lower
		DKPS A 0 A_Lower
		DKPS A 1 A_Lower
		DKPS A 0 A_Lower
		DKPS A 1 A_Lower
		DKPS A 0 A_Lower
		DKPS A 0 A_Lower
	WaitingTaunt1:
		TNT1 AAAAAAAAAAAAA 0 A_Raise
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/waitingtoolong","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		TNT1 A 0 A_PlayWeaponSound("duke/m1911up")
		goto Select
	WaitingTaunt2:
		KNUX A 3
		KNUX B 3
	WaitingTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		TNT1 A 0 A_PlayWeaponSound("duke/m1911up")
		goto Select
		
  }
}

ACTOR ShellCasingSpawner : FastProjectile
{
	Radius 6
	Height 6
	Projectile
    Damage 0
    Speed 5
	SeeSound "none"
	DeathSound "none"
	Decal "none"
	+CLIENTSIDEONLY
	States
	{
	Spawn:
		TNT1 A 1
        TNT1 A 1 A_SpawnItemEx("DukeCasing1",0,3,4,random(3,5),0,random(-1,3),random(85,90),0)
		Stop
	}
}

ACTOR ShellCasingSpawner2 : FastProjectile
{
	Radius 6
	Height 6
	Projectile
    Damage 0
    Speed 5
	SeeSound "none"
	DeathSound "none"
	Decal "none"
	+CLIENTSIDEONLY
	States
	{
	Spawn:
		TNT1 A 1
        TNT1 A 1 A_SpawnItemEx("DukeCasing2",0,3,4,random(1,3),0,random(-1,1),random(85,90),0)
		Stop
	}
}

ACTOR ShellCasingSpawner3 : FastProjectile
{
	Radius 6
	Height 6
	Projectile
    Damage 0
    Speed 5
	SeeSound "none"
	DeathSound "none"
	Decal "none"
	+CLIENTSIDEONLY
	States
	{
	Spawn:
		TNT1 A 1
        TNT1 A 1 A_SpawnItemEx("DukeCasing1",0,-3,4,random(1,3),0,random(1,2),random(-85,-90),0)
		Stop
	}
}

ACTOR DukeCasing1
{
	Speed 1
	Scale 0.07
	Gravity 0.8
	-SOLID
	+MISSILE
    +MOVEWITHSECTOR
    +CLIENTSIDEONLY
    +NOBLOCKMAP
    +NOTELEPORT
	States
	{
	Spawn:
		TNT1 A 0 A_Jump(256,"Spawn1","Spawn2")
		TNT1 A 1
		loop
	Spawn1:
		PISX A -1 BRIGHT
		Stop
	Spawn2:
		PISX B -1 BRIGHT
		Stop
	Death:
		TNT1 A 1
		Stop
    }
}

ACTOR "  Shotgun  " : Weapon
{
	Weapon.SlotNumber 2
	Weapon.SelectionOrder 400
	Weapon.AmmoUse 1
	Weapon.AmmoGive 10
	Weapon.AmmoType "Shell"
	DamageType "DukeDamage"
	+NOALERT
	+INVENTORY.UNDROPPABLE
	//Obituary "%k deemed %o a threat."
	Inventory.Pickupmessage "You got the Shotgun!"
	Inventory.PickupSound "duke/mosspump2"
	Weapon.UpSound "duke/mosspump2"
	Scale 0.5
	States
	{
	Spawn:
		SHTP A -1
		Stop
	Ready:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt")
		TNT1 A 0 A_JumpIfInventory("DukeWaiting",15,"WaitingTaunt")
		DKSG A 1 A_WeaponReady
		Loop
	Deselect:
		DKSG AAAA 1 A_Lower
		DKSG A 0 A_Lower
		DKSG A 1 A_Lower
		DKSG A 0 A_Lower
		DKSG A 1 A_Lower
		DKSG A 0 A_Lower
		DKSG A 1 A_Lower
		DKSG A 0 A_Lower
		DKSG A 1 A_Lower
		DKSG A 0 A_Lower
		DKSG A 0 A_Lower
		DKSG A 1 A_Lower
		DKSG A 0 A_Lower
		DKSG A 0 A_Lower
		DKSG A 1 A_Lower
		DKSG A 0 A_Lower
		DKSG A 0 A_Lower
		DKSG A 1 A_Lower
		loop
	Select:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt1")
		DKSG A 1 A_Raise
		DKSG A 0 A_Raise
		DKSG A 0 A_Raise
		DKSG A 1 A_Raise
		DKSG A 0 A_Raise
		DKSG A 1 A_Raise
		DKSG A 0 A_Raise
		DKSG A 1 A_Raise
		DKSG A 0 A_Raise
		DKSG A 1 A_Raise
		DKSG A 0 A_Raise
		DKSG AAAAAA 1 A_Raise
		Loop
	Fire:
		TNT1 A 0 A_JumpIfInventory("CoopModeOn",1,"CoopFire")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		DKSH A 0 A_FireCustomMissile("DukeShotgunBullet",random(-3.25,3.25),1,0,1,1,random(-2.5,2.5))
		DKSH AAAAAA 0 A_FireCustomMissile("DukeShotgunBullet",random(-3.25,3.25),0,0,1,1,random(-2.5,2.5)) //A_FireBullets(4,2.5,7,5,"DukeBulletPuff")
		DKSH A 0 A_GunFlash
		TNT1 A 0 A_AlertMonsters
		DKSH A 0 A_PlayWeaponSound("duke/mossberg")
		DKSH ABCDA 2 BRIGHT//A_WeaponReady(12)
		DKSH A 2//A_WeaponReady(12)
		DKSH A 0 A_CheckReload
		DKSG BC 4//A_WeaponReady(12)
		DKSG D 0 A_PlaySound("duke/mosspump")
		DKSG DE 4//A_WeaponReady(12)
		TNT1 A 0 A_FireCustomMissile("ShellCasingSpawner2",0,0,2)
		DKSG E 1//A_WeaponReady(12)
		DKSG D 3//A_WeaponReady(12)
		DKSG C 3//A_WeaponReady(12)
		TNT1 A 0 A_Refire
		Goto Ready
	CoopFire:
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		DKSH A 0 A_FireCustomMissile("DukeShotgunBulletCoop",random(-3.25,3.25),1,0,1,1,random(-2.5,2.5))
		DKSH AAAAAA 0 A_FireCustomMissile("DukeShotgunBulletCoop",random(-3.25,3.25),0,0,1,1,random(-2.5,2.5)) //A_FireBullets(4,2.5,7,5,"DukeBulletPuff")
		DKSH A 0 A_GunFlash
		TNT1 A 0 A_AlertMonsters
		DKSH A 0 A_PlayWeaponSound("duke/mossberg")
		DKSH ABCDA 2 BRIGHT//A_WeaponReady(12)
		DKSH A 2//A_WeaponReady(12)
		DKSH A 0 A_CheckReload
		DKSG BC 4//A_WeaponReady(12)
		DKSG E 0 A_PlaySound("duke/mosspump")
		DKSG DE 4//A_WeaponReady(12)
		TNT1 A 0 A_FireCustomMissile("ShellCasingSpawner2",0,0,2)
		DKSG E 1//A_WeaponReady(12)
		DKSG D 3//A_WeaponReady(12)
		DKSG C 3//A_WeaponReady(12)
		TNT1 A 0 A_Refire
		Goto Ready
	Flash:
		TNT1 A 1 A_Light1
		TNT1 A 0
		TNT1 A 1 A_Light0
		stop
	AltFire:
		TNT1 A 0 A_GiveInventory("DukeKicking",1)
		TNT1 A 0 ACS_ExecuteAlways(212,0,3)
		TNT1 A 0 A_GunFlash
		DKBT C 6//A_WeaponReady(12)
		TNT1 A 0 A_FireCustomMissile("DukeKickAttack")
		DKBT D 9//A_WeaponReady(12)
		DKBT C 3//A_WeaponReady(12)
		TNT1 A 0 A_Refire
		TNT1 A 0 A_TakeInventory("DukeKicking",9)
		DKBT C 1//A_WeaponReady(12)
		goto Ready
	AltFlash:  
		DKSG A 20
		stop
		
	IntroTaunt:
		DKSG AAAA 1 A_Lower
		DKSG A 0 A_Lower
		DKSG A 1 A_Lower
		DKSG A 0 A_Lower
		DKSG A 1 A_Lower
		DKSG A 0 A_Lower
		DKSG A 1 A_Lower
		DKSG A 0 A_Lower
		DKSG A 1 A_Lower
		DKSG A 0 A_Lower
		DKSG A 0 A_Lower
	IntroTaunt1:
		TNT1 AAAAAAAAAAAAA 0 A_Raise
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/introtaunt","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		TNT1 A 0 A_PlayWeaponSound("duke/mosspump2")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
	IntroTaunt2:
		KNUX A 3
		KNUX B 3
	IntroTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		TNT1 A 0 A_PlayWeaponSound("duke/mosspump2")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
		
	WaitingTaunt:
		DKSG AAAA 1 A_Lower
		DKSG A 0 A_Lower
		DKSG A 1 A_Lower
		DKSG A 0 A_Lower
		DKSG A 1 A_Lower
		DKSG A 0 A_Lower
		DKSG A 1 A_Lower
		DKSG A 0 A_Lower
		DKSG A 1 A_Lower
		DKSG A 0 A_Lower
		DKSG A 0 A_Lower
	WaitingTaunt1:
		TNT1 AAAAAAAAAAAAA 0 A_Raise
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/waitingtoolong","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/mosspump2")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
	WaitingTaunt2:
		KNUX A 3
		KNUX B 3
	WaitingTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/mosspump2")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
		
	}
}

ACTOR DukeCasing2
{
	Speed 1
	Scale 0.075
	Height 1
	Radius 0
	Gravity 0.8
	-SOLID
	+MISSILE
    +MOVEWITHSECTOR
    +CLIENTSIDEONLY
    +NOBLOCKMAP
    +NOTELEPORT
	States
	{
	Spawn:
		SHTX A -1 BRIGHT
		Loop
	Death:
		SHTX B 0
		Stop
    }
}

ACTOR "Explosive Shotgun" : Weapon
{
	Weapon.SlotNumber 3
	Weapon.SelectionOrder 1300
	Weapon.AmmoUse 1
	Weapon.AmmoGive 15
	Weapon.AmmoType "RocketAmmo"
	DamageType "DukeExplosive"
	+NOALERT
	+WEAPON.EXPLOSIVE
	+INVENTORY.UNDROPPABLE
    //Obituary "%k pulverized %o with a spray of explosions."
	Inventory.Pickupmessage "You got the Explosive Shotgun!"
	Inventory.PickupSound "duke/xshotgunpump"
	Weapon.UpSound "duke/xshotgunpump"
	Scale 0.4
	States
	{
	Spawn:
		DXSP A -1
		Stop
	Ready:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt")
		TNT1 A 0 A_JumpIfInventory("DukeWaiting",15,"WaitingTaunt")
		DKXS A 1 A_WeaponReady
		Loop
	Deselect:
		DKXS AAAA 1 A_Lower
		DKXS A 0 A_Lower
		DKXS A 1 A_Lower
		DKXS A 0 A_Lower
		DKXS A 1 A_Lower
		DKXS A 0 A_Lower
		DKXS A 1 A_Lower
		DKXS A 0 A_Lower
		DKXS A 1 A_Lower
		DKXS A 0 A_Lower
		DKXS A 0 A_Lower
		DKXS A 1 A_Lower
		DKXS A 0 A_Lower
		DKXS A 0 A_Lower
		DKXS A 1 A_Lower
		DKXS A 0 A_Lower
		DKXS A 0 A_Lower
		DKXS A 1 A_Lower
		loop
	Select:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt1")
		DKXS A 1 A_Raise
		DKXS A 0 A_Raise
		DKXS A 0 A_Raise
		DKXS A 1 A_Raise
		DKXS A 0 A_Raise
		DKXS A 1 A_Raise
		DKXS A 0 A_Raise
		DKXS A 1 A_Raise
		DKXS A 0 A_Raise
		DKXS A 1 A_Raise
		DKXS A 0 A_Raise
		DKXS AAAAAA 1 A_Raise
		Loop
	Fire:
		TNT1 A 0 A_JumpIfInventory("SPModeOn",1,"SPFire")
		TNT1 A 0 A_JumpIfInventory("CoopModeOn",1,"CoopFire")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		DKXS A 0 A_FireCustomMissile("DukeExplosiveShotgunBulletDM",random(-9,9),1,0,1,1,random(-4,4))
		DKXS AAAAAA 0 A_FireCustomMissile("DukeExplosiveShotgunBulletDM",random(-9,9),0,0,1,1,random(-4,4)) //A_FireBullets(4,2.5,7,5,"DukeBulletPuff")
		DKXS A 0 A_GunFlash
		TNT1 A 0 A_AlertMonsters
		DKXS A 0 A_PlayWeaponSound("duke/xshotgunfire")
		DKXS ABCDEF 2 BRIGHT//A_WeaponReady(12)
		DKXS F 3//A_WeaponReady(12)
		DKXS A 0 A_CheckReload
		DKXS GHI 2//A_WeaponReady(12)
		DKXS JK 3//A_WeaponReady(12)
		DKXS K 1//A_WeaponReady(12)
		DKXS E 0 A_PlaySound("duke/xshotgunpump")
		DKXS LMN 2//A_WeaponReady(12)
		TNT1 A 0 A_FireCustomMissile("ShellCasingSpawner2",0,0,5)
		DKXS NMLK 2//A_WeaponReady(12)
		DKXS KKJIHGF 1//A_WeaponReady(12)
		DKXS A 1//A_WeaponReady(12) // Super shotgun takes 51 tics (62 if not held) to fire.
		TNT1 A 0 A_Refire // This takes 49 tics to fire.
		Goto Ready
	SPFire:
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		DKXS A 0 A_FireCustomMissile("DukeExplosiveShotgunBullet",random(-9,9),1,0,1,1,random(-4,4))
		DKXS AAAAAA 0 A_FireCustomMissile("DukeExplosiveShotgunBullet",random(-9,9),0,0,1,1,random(-4,4)) //A_FireBullets(4,2.5,7,5,"DukeBulletPuff")
		DKXS A 0 A_GunFlash
		TNT1 A 0 A_AlertMonsters
		DKXS A 0 A_PlayWeaponSound("duke/xshotgunfire")
		DKXS ABCDEF 2 BRIGHT//A_WeaponReady(12)
		DKXS F 3//A_WeaponReady(12)
		DKXS A 0 A_CheckReload
		DKXS GHI 2//A_WeaponReady(12)
		DKXS JK 3//A_WeaponReady(12)
		DKXS K 1//A_WeaponReady(12)
		DKXS E 0 A_PlaySound("duke/xshotgunpump")
		DKXS LMN 2//A_WeaponReady(12)
		TNT1 A 0 A_FireCustomMissile("ShellCasingSpawner2",0,0,5)
		DKXS NMLK 2//A_WeaponReady(12)
		DKXS KKJIHGF 1//A_WeaponReady(12)
		DKXS A 1//A_WeaponReady(12)
		TNT1 A 0 A_Refire
		Goto Ready
	CoopFire:
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		DKXS A 0 A_FireCustomMissile("DukeExplosiveShotgunBulletCoop",random(-9,9),1,0,1,1,random(-4,4))
		DKXS AAAAAA 0 A_FireCustomMissile("DukeExplosiveShotgunBulletCoop",random(-9,9),0,0,1,1,random(-4,4)) //A_FireBullets(4,2.5,7,5,"DukeBulletPuff")
		DKXS A 0 A_GunFlash
		TNT1 A 0 A_AlertMonsters
		DKXS A 0 A_PlayWeaponSound("duke/xshotgunfire")
		DKXS ABCDEF 2 BRIGHT//A_WeaponReady(12)
		DKXS F 3//A_WeaponReady(12)
		DKXS A 0 A_CheckReload
		DKXS GHI 2//A_WeaponReady(12)
		DKXS JK 3//A_WeaponReady(12)
		DKXS K 1//A_WeaponReady(12)
		DKXS E 0 A_PlaySound("duke/xshotgunpump")
		DKXS LMN 2//A_WeaponReady(12)
		TNT1 A 0 A_FireCustomMissile("ShellCasingSpawner2",0,0,5)
		DKXS NMLK 2//A_WeaponReady(12)
		DKXS KKJIHGF 1//A_WeaponReady(12)
		DKXS A 1//A_WeaponReady(12)
		TNT1 A 0 A_Refire
		Goto Ready
	Flash:
		TNT1 A 1 A_Light1
		TNT1 A 0
		TNT1 A 1 A_Light0
		stop
	AltFire:
		TNT1 A 0 A_GiveInventory("DukeKicking",1)
		TNT1 A 0 ACS_ExecuteAlways(212,0,3)
		TNT1 A 0 A_GunFlash
		DKBT C 6//A_WeaponReady(12)
		TNT1 A 0 A_FireCustomMissile("DukeKickAttack")
		DKBT D 9//A_WeaponReady(12)
		DKBT C 3//A_WeaponReady(12)
		TNT1 A 0 A_Refire
		TNT1 A 0 A_TakeInventory("DukeKicking",9)
		DKBT C 1//A_WeaponReady(12)
		goto Ready
	AltFlash:  
		DKXS A 20
		stop
		
	IntroTaunt:
		DKXS AAAA 1 A_Lower
		DKXS A 0 A_Lower
		DKXS A 1 A_Lower
		DKXS A 0 A_Lower
		DKXS A 1 A_Lower
		DKXS A 0 A_Lower
		DKXS A 1 A_Lower
		DKXS A 0 A_Lower
		DKXS A 1 A_Lower
		DKXS A 0 A_Lower
		DKXS A 0 A_Lower
	IntroTaunt1:
		TNT1 AAAAAAAAAAAAA 0 A_Raise
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/introtaunt","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		TNT1 A 0 A_PlayWeaponSound("duke/xshotgunpump")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
	IntroTaunt2:
		KNUX A 3
		KNUX B 3
	IntroTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		TNT1 A 0 A_PlayWeaponSound("duke/xshotgunpump")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
		
	WaitingTaunt:
		DKXS AAAA 1 A_Lower
		DKXS A 0 A_Lower
		DKXS A 1 A_Lower
		DKXS A 0 A_Lower
		DKXS A 1 A_Lower
		DKXS A 0 A_Lower
		DKXS A 1 A_Lower
		DKXS A 0 A_Lower
		DKXS A 1 A_Lower
		DKXS A 0 A_Lower
		DKXS A 0 A_Lower
	WaitingTaunt1:
		TNT1 AAAAAAAAAAAAA 0 A_Raise
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/waitingtoolong","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/xshotgunpump")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
	WaitingTaunt2:
		KNUX A 3
		KNUX B 3
	WaitingTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/xshotgunpump")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
		
	}
}

actor "Chaingun Cannon" : Weapon replaces Chaingun
{
	Weapon.SlotNumber 4
	Weapon.SelectionOrder 700
	Weapon.AmmoUse 1
	Weapon.AmmoGive 50
	Weapon.AmmoType "Clip"
	//Obituary "%k ripped %o apart with bullets."
	Inventory.Pickupmessage "You got the Ripper Chaingun Cannon!"
	Inventory.PickupSound "duke/weaponget"
	weapon.upsound "duke/weaponget"
	scale 0.7
	+NOALERT
	+INVENTORY.UNDROPPABLE
	States
	{
	Spawn:
		CHGP A -1
		Stop
	Ready:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt")
		TNT1 A 0 A_JumpIfInventory("DukeWaiting",15,"WaitingTaunt")
		DKCH A 1 A_WeaponReady
		Loop
	Deselect:
		DKCH AAAA 1 A_Lower
		DKCH A 0 A_Lower
		DKCH A 1 A_Lower
		DKCH A 0 A_Lower
		DKCH A 1 A_Lower
		DKCH A 0 A_Lower
		DKCH A 1 A_Lower
		DKCH A 0 A_Lower
		DKCH A 1 A_Lower
		DKCH A 0 A_Lower
		DKCH A 0 A_Lower
		DKCH A 1 A_Lower
		DKCH A 0 A_Lower
		DKCH A 0 A_Lower
		DKCH A 1 A_Lower
		DKCH A 0 A_Lower
		DKCH A 0 A_Lower
		DKCH A 1 A_Lower
		loop
	Select:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt1")
		DKCH A 1 A_Raise
		DKCH A 0 A_Raise
		DKCH A 0 A_Raise
		DKCH A 1 A_Raise
		DKCH A 0 A_Raise
		DKCH A 1 A_Raise
		DKCH A 0 A_Raise
		DKCH A 1 A_Raise
		DKCH A 0 A_Raise
		DKCH A 1 A_Raise
		DKCH A 0 A_Raise
		DKCH AAAAAA 1 A_Raise
		Loop
	Fire:
		TNT1 A 0 A_JumpIfInventory("DukeRipperFiringSequence",2,"FireRight")
		TNT1 A 0 A_JumpIfInventory("DukeRipperFiringSequence",1,"FireMiddle")
	FireLeft:
		TNT1 A 0 A_JumpIfInventory("CoopModeOn",1,"CoopFireLeft")
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_FireCustomMissile("DukeRipperBullet",random(-5,5),1,0,1,1,random(-2,2))//A_FireBullets (6, 1, -1, 5, "BulletPuff")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/chaingun")
		TNT1 A 0 A_FireCustomMissile("ShellCasingSpawner3",0,0,6)
		DKCH BBCD 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_GiveInventory("DukeRipperFiringSequence",1)
		TNT1 A 0 A_Refire
		DKCH K 2//A_WeaponReady(12)
		Goto Ready
	FireMiddle:
		TNT1 A 0 A_JumpIfInventory("CoopModeOn",1,"CoopFireMiddle")
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_FireCustomMissile("DukeRipperBullet",random(-5,5),1,0,1,1,random(-2,2))//A_FireBullets (6, 1, -1, 5, "BulletPuff")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/chaingun")
		TNT1 A 0 A_FireCustomMissile("ShellCasingSpawner3",0,0,6)
		DKCH EEFG 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_GiveInventory("DukeRipperFiringSequence",1)
		TNT1 A 0 A_Refire
		DKCH K 2//A_WeaponReady(12)
		Goto Ready
	FireRight:
		TNT1 A 0 A_JumpIfInventory("CoopModeOn",1,"CoopFireRight")
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_FireCustomMissile("DukeRipperBullet",random(-5,5),1,0,1,1,random(-2,2))//A_FireBullets (6, 1, -1, 5, "BulletPuff")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/chaingun")
		TNT1 A 0 A_FireCustomMissile("ShellCasingSpawner3",0,0,6)
		DKCH HHIJ 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_TakeInventory("DukeRipperFiringSequence",9)
		TNT1 A 0 A_Refire
		DKCH K 2//A_WeaponReady(12)
		Goto Ready
	CoopFireLeft:
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_FireCustomMissile("DukeRipperBulletCoop",random(-5,5),1,0,1,1,random(-2,2))//A_FireBullets (6, 1, -1, 5, "BulletPuff")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/chaingun")
		TNT1 A 0 A_FireCustomMissile("ShellCasingSpawner3",0,0,6)
		DKCH BBCD 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_GiveInventory("DukeRipperFiringSequence",1)
		TNT1 A 0 A_Refire
		DKCH K 2//A_WeaponReady(12)
		Goto Ready
	CoopFireMiddle:
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_FireCustomMissile("DukeRipperBulletCoop",random(-5,5),1,0,1,1,random(-2,2))//A_FireBullets (6, 1, -1, 5, "BulletPuff")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/chaingun")
		TNT1 A 0 A_FireCustomMissile("ShellCasingSpawner3",0,0,6)
		DKCH EEFG 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_GiveInventory("DukeRipperFiringSequence",1)
		TNT1 A 0 A_Refire
		DKCH K 2//A_WeaponReady(12)
		Goto Ready
	CoopFireRight:
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_FireCustomMissile("DukeRipperBulletCoop",random(-5,5),1,0,1,1,random(-2,2))//A_FireBullets (6, 1, -1, 5, "BulletPuff")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/chaingun")
		TNT1 A 0 A_FireCustomMissile("ShellCasingSpawner3",0,0,6)
		DKCH HHIJ 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_TakeInventory("DukeRipperFiringSequence",9)
		TNT1 A 0 A_Refire
		DKCH K 2//A_WeaponReady(12)
		Goto Ready
	AltFire:
		TNT1 A 0 A_GiveInventory("DukeKicking",1)
		TNT1 A 0 ACS_ExecuteAlways(212,0,3)
		TNT1 A 0 A_GunFlash
		DKBT C 6//A_WeaponReady(12)
		TNT1 A 0 A_FireCustomMissile("DukeKickAttack")
		DKBT D 9//A_WeaponReady(12)
		DKBT C 3//A_WeaponReady(12)
		TNT1 A 0 A_Refire
		TNT1 A 0 A_TakeInventory("DukeKicking",9)
		DKBT C 1//A_WeaponReady(12)
		goto Ready
	AltFlash:  
		DKCH A 20
		stop
		
	IntroTaunt:
		DKCH AAAA 1 A_Lower
		DKCH A 0 A_Lower
		DKCH A 1 A_Lower
		DKCH A 0 A_Lower
		DKCH A 1 A_Lower
		DKCH A 0 A_Lower
		DKCH A 1 A_Lower
		DKCH A 0 A_Lower
		DKCH A 1 A_Lower
		DKCH A 0 A_Lower
		DKCH A 0 A_Lower
	IntroTaunt1:
		TNT1 AAAAAAAAAAAAA 0 A_Raise
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/introtaunt","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		TNT1 A 0 A_PlayWeaponSound("duke/weaponget")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
	IntroTaunt2:
		KNUX A 3
		KNUX B 3
	IntroTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		TNT1 A 0 A_PlayWeaponSound("duke/weaponget")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
		
	WaitingTaunt:
		DKCH AAAA 1 A_Lower
		DKCH A 0 A_Lower
		DKCH A 1 A_Lower
		DKCH A 0 A_Lower
		DKCH A 1 A_Lower
		DKCH A 0 A_Lower
		DKCH A 1 A_Lower
		DKCH A 0 A_Lower
		DKCH A 1 A_Lower
		DKCH A 0 A_Lower
		DKCH A 0 A_Lower
	WaitingTaunt1:
		TNT1 AAAAAAAAAAAAA 0 A_Raise
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/waitingtoolong","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/weaponget")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
	WaitingTaunt2:
		KNUX A 3
		KNUX B 3
	WaitingTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/weaponget")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
		
	}
}

ACTOR RPG : Weapon
{
	Weapon.SlotNumber 5
	Weapon.SelectionOrder 2500
	Weapon.AmmoUse 1
	Weapon.AmmoGive 5
	Weapon.AmmoType "RocketAmmo"
	//Obituary "%k sent %o home in a box."
	Inventory.Pickupmessage "You got the RPG!"
	Inventory.PickupSound "duke/weaponget"
	Weapon.upsound "duke/weaponget"
	Scale 0.75
	+NOALERT
	+WEAPON.EXPLOSIVE
	+INVENTORY.UNDROPPABLE
	States
	{
	Spawn:
		DRPG A -1
		Stop
	Ready:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt")
		TNT1 A 0 A_JumpIfInventory("DukeWaiting",15,"WaitingTaunt")
		DKRL A 1 A_WeaponReady
		Loop
	Deselect:
		DKRL AAAA 1 A_Lower
		DKRL A 0 A_Lower
		DKRL A 1 A_Lower
		DKRL A 0 A_Lower
		DKRL A 1 A_Lower
		DKRL A 0 A_Lower
		DKRL A 1 A_Lower
		DKRL A 0 A_Lower
		DKRL A 1 A_Lower
		DKRL A 0 A_Lower
		DKRL A 0 A_Lower
		DKRL A 1 A_Lower
		DKRL A 0 A_Lower
		DKRL A 0 A_Lower
		DKRL A 1 A_Lower
		DKRL A 0 A_Lower
		DKRL A 0 A_Lower
		DKRL A 1 A_Lower
		loop
	Select:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt1")
		DKRL A 1 A_Raise
		DKRL A 0 A_Raise
		DKRL A 0 A_Raise
		DKRL A 1 A_Raise
		DKRL A 0 A_Raise
		DKRL A 1 A_Raise
		DKRL A 0 A_Raise
		DKRL A 1 A_Raise
		DKRL A 0 A_Raise
		DKRL A 1 A_Raise
		DKRL A 0 A_Raise
		DKRL AAAAAA 1 A_Raise
		Loop
	Fire:
		TNT1 A 0 A_JumpIfInventory("CoopModeOn",1,"CoopFire")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/rocketfire")
		TNT1 A 0 A_FireCustomMissile("DukeRocket",0,1,4,2)
		TNT1 A 0 A_AlertMonsters
		DKRL B 2 BRIGHT//A_WeaponReady(12)
		DKRL CD 1 BRIGHT//A_WeaponReady(12)
		DKRL EFG 1//A_WeaponReady(12)
		DKRL H 2//A_WeaponReady(12)
		DKRL IJKLMNOP 1//A_WeaponReady(12)
		DKRL Q 2//A_WeaponReady(12)
		DKRL PONML 1//A_WeaponReady(12)
		TNT1 A 0 A_Refire
		Goto Ready
	CoopFire:
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/rocketfire")
		TNT1 A 0 A_FireCustomMissile("DukeRocketCoop",0,1,4,2)
		TNT1 A 0 A_AlertMonsters
		DKRL B 2 BRIGHT//A_WeaponReady(12)
		DKRL CD 1 BRIGHT//A_WeaponReady(12)
		DKRL EFG 1//A_WeaponReady(12)
		DKRL H 2//A_WeaponReady(12)
		DKRL IJKLMNOP 1//A_WeaponReady(12)
		DKRL Q 2//A_WeaponReady(12)
		DKRL PONML 1//A_WeaponReady(12)
		TNT1 A 0 A_Refire
		Goto Ready
	AltFire:
		TNT1 A 0 A_GiveInventory("DukeKicking",1)
		TNT1 A 0 ACS_ExecuteAlways(212,0,3)
		TNT1 A 0 A_GunFlash
		DKBT C 6//A_WeaponReady(12)
		TNT1 A 0 A_FireCustomMissile("DukeKickAttack")
		DKBT D 9//A_WeaponReady(12)
		DKBT C 3//A_WeaponReady(12)
		TNT1 A 0 A_Refire
		TNT1 A 0 A_TakeInventory("DukeKicking",9)
		DKBT C 1//A_WeaponReady(12)
		goto Ready
	AltFlash:  
		DKRL A 20
		stop
		
	IntroTaunt:
		DKRL AAAA 1 A_Lower
		DKRL A 0 A_Lower
		DKRL A 1 A_Lower
		DKRL A 0 A_Lower
		DKRL A 1 A_Lower
		DKRL A 0 A_Lower
		DKRL A 1 A_Lower
		DKRL A 0 A_Lower
		DKRL A 1 A_Lower
		DKRL A 0 A_Lower
		DKRL A 0 A_Lower
	IntroTaunt1:
		TNT1 AAAAAAAAAAAAA 0 A_Raise
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/introtaunt","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		TNT1 A 0 A_PlayWeaponSound("duke/weaponget")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
	IntroTaunt2:
		KNUX A 3
		KNUX B 3
	IntroTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		TNT1 A 0 A_PlayWeaponSound("duke/weaponget")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
		
	WaitingTaunt:
		DKRL AAAA 1 A_Lower
		DKRL A 0 A_Lower
		DKRL A 1 A_Lower
		DKRL A 0 A_Lower
		DKRL A 1 A_Lower
		DKRL A 0 A_Lower
		DKRL A 1 A_Lower
		DKRL A 0 A_Lower
		DKRL A 1 A_Lower
		DKRL A 0 A_Lower
		DKRL A 0 A_Lower
	WaitingTaunt1:
		TNT1 AAAAAAAAAAAAA 0 A_Raise
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/waitingtoolong","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/weaponget")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
	WaitingTaunt2:
		KNUX A 3
		KNUX B 3
	WaitingTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/weaponget")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
		
	}
}

actor DukeRocket
{
	Radius 12
	Height 8
	Speed 30
	Damage (80)
	Projectile
	Obituary "%k sent %o home in a box."
	Scale 0.4
	Decal Scorch
	DamageType "DukeExplosive"
	+FORCERADIUSDMG
	States
	{
	Spawn:
		RPGX A 1 BRIGHT A_SpawnItem("DukeRocketPuff")
		loop
	Death:
		TNT1 A 0 A_Explode((140),98)
		TNT1 A 0 A_PlaySoundEx("duke/explosion","Weapon",0,1)
		TNT1 A 1 A_SpawnItem("RPGExplosion")
		Stop
	}
}

Actor DukeRocketCoop : DukeRocket { +THRUSPECIES Species "Player" }

actor RPGExplosion
{
	Speed 0
	-SOLID
	+NOCLIP
	//+CLIENTSIDEONLY - Enabling this makes it not spawn in online games. Da fuck?
    +NOBLOCKMAP
    +NOTELEPORT
    +NOGRAVITY
	PROJECTILE
	Scale 0.7
	States
	{
	Spawn:
		RPGX BCDEFGHIJKLMNOPQRSTUV 2 BRIGHT
		Stop
	}
}

actor DevastatorExplosion : RPGExplosion { Scale 0.1 +CLIENTSIDEONLY } // ...But this can be clientsided with no problems. WAT.

actor Freezethrower : Weapon
{
	Weapon.SlotNumber 6
	Weapon.SelectionOrder 100
	Weapon.AmmoUse 1
	Weapon.AmmoGive 25
	Weapon.AmmoType "Cell"
	//Obituary "%k threw %o on the freezer."
	Inventory.Pickupmessage "You got the Freezethrower!"
	Inventory.PickupSound "duke/weaponget"
	Weapon.upsound "duke/weaponget"
	Scale 0.75
	+NOALERT
	+INVENTORY.UNDROPPABLE
	States
	{
	Spawn:
		FRZP A -1
		Stop
	Ready:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt")
		TNT1 A 0 A_JumpIfInventory("DukeWaiting",15,"WaitingTaunt")
		FRZG A 1 A_WeaponReady
		Loop
	Deselect:
		FRZG AAAA 1 A_Lower
		FRZG A 0 A_Lower
		FRZG A 1 A_Lower
		FRZG A 0 A_Lower
		FRZG A 1 A_Lower
		FRZG A 0 A_Lower
		FRZG A 1 A_Lower
		FRZG A 0 A_Lower
		FRZG A 1 A_Lower
		FRZG A 0 A_Lower
		FRZG A 0 A_Lower
		FRZG A 1 A_Lower
		FRZG A 0 A_Lower
		FRZG A 0 A_Lower
		FRZG A 1 A_Lower
		FRZG A 0 A_Lower
		FRZG A 0 A_Lower
		FRZG A 1 A_Lower
		loop
	Select:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt1")
		FRZG A 1 A_Raise
		FRZG A 0 A_Raise
		FRZG A 0 A_Raise
		FRZG A 1 A_Raise
		FRZG A 0 A_Raise
		FRZG A 1 A_Raise
		FRZG A 0 A_Raise
		FRZG A 1 A_Raise
		FRZG A 0 A_Raise
		FRZG A 1 A_Raise
		FRZG A 0 A_Raise
		FRZG AAAAAA 1 A_Raise
		Loop
	Fire:
		TNT1 A 0 A_JumpIfInventory("CoopModeOn",1,"CoopFire")
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_PlayWeaponSound("duke/freezeshot")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_AlertMonsters
		FRZG D 1 bright offset(0, 32)
		FRZG C 1 bright offset(-1, 31) A_FireCustomMissile("FreezethrowerBolt",0,1,5,1)
		FRZG B 1 bright offset(1, 30)
		FRZG D 1 bright offset(0, 29)
		FRZG C 1 bright offset(1, 30)
		FRZG A 0 A_Refire
		Goto Ready
	Hold:
		TNT1 A 0 A_JumpIfInventory("DukeFreezethrowerHold",1,"Hold2")
		TNT1 A 0 A_JumpIfInventory("CoopModeOn",1,"CoopHold")
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_PlayWeaponSound("duke/freezeshot")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_AlertMonsters
		FRZG B 1 bright offset(0, 32)
		FRZG D 1 bright offset(-1, 31) A_FireCustomMissile("FreezethrowerBolt",0,1,5,1)
		FRZG C 1 bright offset(1, 30)
		FRZG B 1 bright offset(0, 29)
		FRZG D 1 bright offset(1, 30)
		TNT1 A 0 A_GiveInventory("DukeFreezethrowerHold",1)
		TNT1 A 0 A_Refire
		TNT1 A 0 A_TakeInventory("DukeFreezethrowerHold",1)
		TNT1 A 0 A_ClearRefire
		Goto Ready
	Hold2:
		TNT1 A 0 A_JumpIfInventory("CoopModeOn",1,"CoopHold2")
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_PlayWeaponSound("duke/freezeshot")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_AlertMonsters
		FRZG C 1 bright offset(0, 32)
		FRZG B 1 bright offset(-1, 31) A_FireCustomMissile("FreezethrowerBolt",0,1,5,1)
		FRZG D 1 bright offset(1, 30)
		FRZG C 1 bright offset(0, 29)
		FRZG B 1 bright offset(1, 30)
		TNT1 A 0 A_TakeInventory("DukeFreezethrowerHold",1)
		TNT1 A 0 A_ClearRefire
		Goto Ready
	CoopFire:
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_PlayWeaponSound("duke/freezeshot")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_AlertMonsters
		FRZG D 1 bright offset(0, 32)
		FRZG C 1 bright offset(-1, 31) A_FireCustomMissile("FreezethrowerBoltCoop",0,1,5,1)
		FRZG B 1 bright offset(1, 30)
		FRZG D 1 bright offset(0, 29)
		FRZG C 1 bright offset(1, 30)
		FRZG A 0 A_Refire
		Goto Ready
	CoopHold:
		TNT1 A 0 A_JumpIfInventory("DukeFreezethrowerHold",1,"CoopHold2")
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_PlayWeaponSound("duke/freezeshot")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_AlertMonsters
		FRZG B 1 bright offset(0, 32)
		FRZG D 1 bright offset(-1, 31) A_FireCustomMissile("FreezethrowerBoltCoop",0,1,5,1)
		FRZG C 1 bright offset(1, 30)
		FRZG B 1 bright offset(0, 29)
		FRZG D 1 bright offset(1, 30)
		TNT1 A 0 A_GiveInventory("DukeFreezethrowerHold",1)
		TNT1 A 0 A_Refire
		TNT1 A 0 A_TakeInventory("DukeFreezethrowerHold",1)
		TNT1 A 0 A_ClearRefire
		Goto Ready
	CoopHold2:
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_PlayWeaponSound("duke/freezeshot")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_AlertMonsters
		FRZG C 1 bright offset(0, 32)
		FRZG B 1 bright offset(-1, 31) A_FireCustomMissile("FreezethrowerBoltCoop",0,1,5,1)
		FRZG D 1 bright offset(1, 30)
		FRZG C 1 bright offset(0, 29)
		FRZG B 1 bright offset(1, 30)
		TNT1 A 0 A_TakeInventory("DukeFreezethrowerHold",1)
		TNT1 A 0 A_ClearRefire
		Goto Ready
	Flash:
		TNT1 A 1 A_Light1
		TNT1 A 2
		TNT1 A 1 A_Light0
		stop
	AltFire:
		TNT1 A 0 A_GiveInventory("DukeKicking",1)
		TNT1 A 0 ACS_ExecuteAlways(212,0,3)
		TNT1 A 0 A_GunFlash
		DKBT C 6//A_WeaponReady(12)
		TNT1 A 0 A_FireCustomMissile("DukeKickAttack")
		DKBT D 9//A_WeaponReady(12)
		DKBT C 3//A_WeaponReady(12)
		TNT1 A 0 A_Refire
		TNT1 A 0 A_TakeInventory("DukeKicking",9)
		DKBT C 1//A_WeaponReady(12)
		goto Ready
	AltFlash:  
		FRZG A 20
		stop
		
	IntroTaunt:
		FRZG AAAA 1 A_Lower
		FRZG A 0 A_Lower
		FRZG A 1 A_Lower
		FRZG A 0 A_Lower
		FRZG A 1 A_Lower
		FRZG A 0 A_Lower
		FRZG A 1 A_Lower
		FRZG A 0 A_Lower
		FRZG A 1 A_Lower
		FRZG A 0 A_Lower
		FRZG A 0 A_Lower
	IntroTaunt1:
		TNT1 AAAAAAAAAAAAA 0 A_Raise
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/introtaunt","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		TNT1 A 0 A_PlayWeaponSound("duke/weaponget")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
	IntroTaunt2:
		KNUX A 3
		KNUX B 3
	IntroTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		TNT1 A 0 A_PlayWeaponSound("duke/weaponget")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
		
	WaitingTaunt:
		FRZG AAAA 1 A_Lower
		FRZG A 0 A_Lower
		FRZG A 1 A_Lower
		FRZG A 0 A_Lower
		FRZG A 1 A_Lower
		FRZG A 0 A_Lower
		FRZG A 1 A_Lower
		FRZG A 0 A_Lower
		FRZG A 1 A_Lower
		FRZG A 0 A_Lower
		FRZG A 0 A_Lower
	WaitingTaunt1:
		TNT1 AAAAAAAAAAAAA 0 A_Raise
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/waitingtoolong","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/weaponget")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
	WaitingTaunt2:
		KNUX A 3
		KNUX B 3
	WaitingTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/weaponget")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
		
	}
}

ACTOR FreezethrowerBolt
{
  Radius 13
  Height 9
  Speed 35
  Damage (22)//Original was 20.
  DamageType "DukeIce"
  Projectile
  Obituary "%k threw %o on the freezer."
  Scale 0.14
  Alpha 0.95
  RenderStyle Add
  +HEXENBOUNCE
  BounceCount 3
  States
  {
  Spawn:
    FRZX AAABBBCCC 1 bright A_Explode(3,1,1)
    loop
  Death:
    FRZX A 1
    FRZX A 10 A_SpawnItem("FreezethrowerDeath")
    stop
  Crash:
  XDeath:
    TNT1 A 10
    stop
  }
}

ACTOR FreezethrowerBoltCoop : FreezethrowerBolt { +THRUSPECIES Species "Player" }

ACTOR FreezethrowerDeath
{
	Speed 0
	-SOLID
	+NOCLIP
	+CLIENTSIDEONLY
    +NOBLOCKMAP
    +NOTELEPORT
    +NOGRAVITY
	PROJECTILE
	RenderStyle Add
	scale 0.5
	States
	{
	Spawn:
		TNT1 A 1
		FRZX D 2 Bright
		FRZX EFGHI 2 Bright
		Stop
	}
}

ACTOR FreezethrowerWeakness : PowerProtection
{
DamageFactor "MightyBoot", 10.0
}

actor Devastator : Weapon
{
  Weapon.SelectionOrder 2800
  Weapon.SlotNumber 7
  Weapon.AmmoUse 2
  Weapon.AmmoGive 30 // Originally 15, increased because of the double ammo usage.
  Weapon.AmmoType "Cell"
  //Obituary "%k devastated %o."
  Inventory.Pickupmessage "You got the Devastator!"
  Inventory.PickupSound "duke/weaponget"
  Weapon.UpSound "duke/weaponget"
  Scale 0.9
  +NOALERT
  +INVENTORY.UNDROPPABLE
  States
  {
  Spawn:
		DEVP A -1
		Stop
  Ready:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt")
		TNT1 A 0 A_JumpIfInventory("DukeWaiting",15,"WaitingTaunt")
		DDEV A 1 A_WeaponReady
		Loop
  Deselect:
		DDEV AAAA 1 A_Lower
		DDEV A 0 A_Lower
		DDEV A 1 A_Lower
		DDEV A 0 A_Lower
		DDEV A 1 A_Lower
		DDEV A 0 A_Lower
		DDEV A 1 A_Lower
		DDEV A 0 A_Lower
		DDEV A 1 A_Lower
		DDEV A 0 A_Lower
		DDEV A 0 A_Lower
		DDEV A 1 A_Lower
		DDEV A 0 A_Lower
		DDEV A 0 A_Lower
		DDEV A 1 A_Lower
		DDEV A 0 A_Lower
		DDEV A 0 A_Lower
		DDEV A 1 A_Lower
		loop
  Select:
		TNT1 A 0 A_JumpIfInventory("DukeReady",1,"IntroTaunt1")
		DDEV A 1 A_Raise
		DDEV A 0 A_Raise
		DDEV A 0 A_Raise
		DDEV A 1 A_Raise
		DDEV A 0 A_Raise
		DDEV A 1 A_Raise
		DDEV A 0 A_Raise
		DDEV A 1 A_Raise
		DDEV A 0 A_Raise
		DDEV A 1 A_Raise
		DDEV A 0 A_Raise
		DDEV AAAAAA 1 A_Raise
		Loop
  Fire:
  FireRight:
		TNT1 A 0 A_JumpIfInventory("CoopModeOn",1,"CoopFireRight")
		TNT1 A 0 A_JumpIfInventory("DukeDevastatorFiringSequence",1,"FireLeft")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_GiveInventory("DukeDevastatorFiringSequence",1)
		DDEV H 1//A_WeaponReady(12)
		TNT1 A 0 A_PlaySound("duke/freezeshot")
		TNT1 A 0 A_PlayWeaponSound("duke/rocketfire")
		TNT1 A 0 A_FireCustomMissile("DukeDevastatorRocket",random(-3,3),1,5,0,1,random(-1,1))
		DDEV I 2//A_WeaponReady(12)
		DDEV J 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_PlaySound("duke/freezeshot")
		TNT1 A 0 A_PlayWeaponSound("duke/rocketfire")
		TNT1 A 0 A_FireCustomMissile("DukeDevastatorRocket",random(-3,3),1,6,2,1,random(-1,1))
		DDEV J 1 BRIGHT//A_WeaponReady(12)
		DDEV KLMA 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_ReFire
		Goto Ready
  FireLeft:
		TNT1 A 0 A_JumpIfInventory("CoopModeOn",1,"CoopFireLeft")
		TNT1 A 0 A_TakeInventory("DukeDevastatorFiringSequence",1)
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_AlertMonsters
		DDEV B 1//A_WeaponReady(12)
		TNT1 A 0 A_PlaySound("duke/freezeshot")
		TNT1 A 0 A_PlayWeaponSound("duke/rocketfire")
		TNT1 A 0 A_FireCustomMissile("DukeDevastatorRocket",random(-3,3),1,-5,0,1,random(-1,1))
		DDEV C 2//A_WeaponReady(12)
		DDEV D 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_PlaySound("duke/freezeshot")
		TNT1 A 0 A_PlayWeaponSound("duke/rocketfire")
		TNT1 A 0 A_FireCustomMissile("DukeDevastatorRocket",random(-3,3),1,-6,2,1,random(-1,1))
		DDEV D 1 BRIGHT//A_WeaponReady(12)
		DDEV EFGA 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_ReFire
		Goto Ready
  CoopFireRight:
		TNT1 A 0 A_JumpIfInventory("DukeDevastatorFiringSequence",1,"CoopFireLeft")
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_GiveInventory("DukeDevastatorFiringSequence",1)
		DDEV H 1//A_WeaponReady(12)
		TNT1 A 0 A_PlaySound("duke/freezeshot")
		TNT1 A 0 A_PlayWeaponSound("duke/rocketfire")
		TNT1 A 0 A_FireCustomMissile("DukeDevastatorRocketCoop",random(-3,3),1,5,0,1,random(-1,1))
		DDEV I 2//A_WeaponReady(12)
		DDEV J 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_PlaySound("duke/freezeshot")
		TNT1 A 0 A_PlayWeaponSound("duke/rocketfire")
		TNT1 A 0 A_FireCustomMissile("DukeDevastatorRocketCoop",random(-3,3),1,6,2,1,random(-1,1))
		DDEV J 1 BRIGHT//A_WeaponReady(12)
		DDEV KLMA 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_ReFire
		Goto Ready
  CoopFireLeft:
		TNT1 A 0 A_TakeInventory("DukeDevastatorFiringSequence",1)
		TNT1 A 0 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_AlertMonsters
		DDEV B 1//A_WeaponReady(12)
		TNT1 A 0 A_PlaySound("duke/freezeshot")
		TNT1 A 0 A_PlayWeaponSound("duke/rocketfire")
		TNT1 A 0 A_FireCustomMissile("DukeDevastatorRocketCoop",random(-3,3),1,-5,0,1,random(-1,1))
		DDEV C 2//A_WeaponReady(12)
		DDEV D 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_PlaySound("duke/freezeshot")
		TNT1 A 0 A_PlayWeaponSound("duke/rocketfire")
		TNT1 A 0 A_FireCustomMissile("DukeDevastatorRocketCoop",random(-3,3),1,-6,2,1,random(-1,1))
		DDEV D 1 BRIGHT//A_WeaponReady(12)
		DDEV EFGA 1 BRIGHT//A_WeaponReady(12)
		TNT1 A 0 A_ReFire
		Goto Ready
  AltFire:
		TNT1 A 0 A_GiveInventory("DukeKicking",1)
		TNT1 A 0 ACS_ExecuteAlways(212,0,3)
		TNT1 A 0 A_GunFlash
		DKBT C 6//A_WeaponReady(12)
		TNT1 A 0 A_FireCustomMissile("DukeKickAttack")
		DKBT D 9//A_WeaponReady(12)
		DKBT C 3//A_WeaponReady(12)
		TNT1 A 0 A_Refire
		TNT1 A 0 A_TakeInventory("DukeKicking",9)
		DKBT C 1//A_WeaponReady(12)
		goto Ready
  AltFlash:  
		DDEV A 20
		stop
		
	IntroTaunt:
		DDEV AAAA 1 A_Lower
		DDEV A 0 A_Lower
		DDEV A 1 A_Lower
		DDEV A 0 A_Lower
		DDEV A 1 A_Lower
		DDEV A 0 A_Lower
		DDEV A 1 A_Lower
		DDEV A 0 A_Lower
		DDEV A 1 A_Lower
		DDEV A 0 A_Lower
		DDEV A 0 A_Lower
	IntroTaunt1:
		TNT1 AAAAAAAAAAAAA 0 A_Raise
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/introtaunt","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		TNT1 A 0 A_PlayWeaponSound("duke/weaponget")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
	IntroTaunt2:
		KNUX A 3
		KNUX B 3
	IntroTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeReady",1)
		TNT1 A 0 A_PlayWeaponSound("duke/weaponget")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
		
	WaitingTaunt:
		DDEV AAAA 1 A_Lower
		DDEV A 0 A_Lower
		DDEV A 1 A_Lower
		DDEV A 0 A_Lower
		DDEV A 1 A_Lower
		DDEV A 0 A_Lower
		DDEV A 1 A_Lower
		DDEV A 0 A_Lower
		DDEV A 1 A_Lower
		DDEV A 0 A_Lower
		DDEV A 0 A_Lower
	WaitingTaunt1:
		TNT1 AAAAAAAAAAAAA 0 A_Raise
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt2")
		KNUX A 3
		KNUX B 3
		TNT1 A 0 A_JumpIfInventory("DukeBallgag",1,"IntroTaunt3")
		TNT1 A 0 A_PlaySoundEX("duke/waitingtoolong","SoundSlot7",0,0)
		KNUX C 3
		TNT1 A 0 A_GiveInventory("DukeTauntCooldown",5)
		TNT1 A 0 ACS_ExecuteAlways(205)
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/weaponget")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
	WaitingTaunt2:
		KNUX A 3
		KNUX B 3
	WaitingTaunt3:
		KNUX C 3
		KNUX D 3 A_PlayWeaponSound("duke/knuckles")
		KNUX C 3
		KNUX B 3
		KNUX A 3 A_TakeInventory("DukeWaiting",15)
		TNT1 A 0 A_PlayWeaponSound("duke/weaponget")
		KNUX AAAAAAAAAAAAAA 0 A_Lower
		goto Select
		
  }
}

actor DukeDevastatorRocket
{
	Radius 3
	Height 2
	Speed 30
	Damage (38)
	Projectile
	Obituary "%k devastated %o."
	Scale 0.2
	Decal DoomImpScorch
	DamageType "DukeExplosive"
	+FORCERADIUSDMG
	States
	{
	Spawn:
		RPGX A 1 BRIGHT
		loop
	Death:
		TNT1 A 0 A_Explode((35),24)
		TNT1 A 0 A_PlaySoundEx("duke/explosion","Weapon",0,1)
		TNT1 A 1 A_SpawnItem("DevastatorExplosion")
		Stop
	}
}

Actor DukeDevastatorRocketCoop : DukeDevastatorRocket { +THRUSPECIES Species "Player" }

// Gibs for enemies

actor DukeGibs1
{
  Radius 1
  Height 1
  Speed 0
  Projectile
  -NOGRAVITY
  -SOLID
  +MOVEWITHSECTOR
  +CLIENTSIDEONLY
  +NOBLOCKMAP
  +NOTELEPORT
  Gravity 0.65
  Health 2
  scale 0.5
  States
  {
  Spawn:
    DKG1 ABCD 5
    loop
  Death:
	TNT1 A 0 A_Gravity
    DKG1 E 1000
    stop
  }
}

actor DukeGibs2 : DukeGibs1
{
  Health 2
  States
  {
  Spawn:
    DKG2 ABCD 5
    loop
  Death:
	TNT1 A 0 A_Gravity
    DKG2 E 1000
    stop
  }
}

actor DukeGibs3 : DukeGibs1
{
  Health 4
  States
  {
  Spawn:
    DKG3 ABCD 5
    loop
  Death:
	TNT1 A 0 A_Gravity
    DKG3 E 1000
    stop
  }
}
actor DukeGibs4 : DukeGibs1
{
  States
  {
  Spawn:
    DKG4 ABCD 5
    loop
  Death:
	TNT1 A 0 A_Gravity
    DKG4 E 1000
    stop
  }
}

actor DukeGibs5 : DukeGibs1
{
  Health 2
  States
  {
  Spawn:
    DKG5 ABCD 5
    loop
  Death:
	TNT1 A 0 A_Gravity
    DKG5 E 1000
    stop
  }
}

actor DukeGibs6 : DukeGibs1
{
  Health 7
  States
  {
  Spawn:
    DKG6 AB 5
    loop
  Death:
    DKG6 CDEFGH 5 A_Gravity
	DKG6 H 1000
    stop
  }
}