ACTOR "Explosive Shotgun" : Weapon 31006
{
    //$Category DN3D Weapons
	Weapon.SelectionOrder 27
	Weapon.BobStyle Normal
    Weapon.BobSpeed 1.4
    Weapon.BobRangeX 0.85
    Weapon.BobRangeY 0.6
    Weapon.AmmoUse 1
    Weapon.AmmoGive 8
    Weapon.AmmoType "Shotgun Ammo"
    Obituary "%o got owned by %k's explosive shotgun."
    Inventory.PickupMessage "\cnExplosive Shotgun!"
    Inventory.PickupSound "DukeNukem/PickWeapon"
    Scale 0.52
    +WEAPON.AMMO_OPTIONAL
	+WEAPON.ALT_AMMO_OPTIONAL
	+WEAPON.NOALERT
    States
    {	
	Spawn:
		TNT1 A 0		
		TNT1 A 1 A_Jump(256,"Spawn1","Spawn2")
		Stop
	Spawn1:	
        DKX2 A -1
        Stop
	Spawn2:	
        DKX2 B -1
        Stop
	Ready:
        DKXS A 1 A_WeaponReady
        DKXS A 0 A_JumpIfInventory("Waiting",15,"Knuckles")
		DKXS AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_WeaponReady
		DKXS A 0 A_GiveInventory("Waiting",1)
        Loop
	Knuckles:
        DKXS AAAAA 1 A_Lower
        DKXS A 0 A_Lower
		KNUK A 0 A_PlaySound("DukeNukem/Waiting",8)
        KNUK A 0 A_TakeInventory("Waiting",15)
        KNUK A 1 Offset(0,120) 
		KNUK A 1 Offset(0,110)
		KNUK A 1 Offset(0,100)
		KNUK A 1 Offset(0,90)
		KNUK A 1 Offset(0,80)
		KNUK A 1 Offset(0,70)
		KNUK A 1 Offset(0,60)
		KNUK A 1 Offset(0,50)
		KNUK A 1 Offset(0,40)
		KNUK AAABBB 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		KNUK C 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        KNUK C 0 A_PlaySound("Duke/KNuckles",5)
		KNUK C 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		KNUK C 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        KNUK DDDCCCBBBAAA 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)  
        KNUK A 1 Offset(0,40)
		KNUK A 1 Offset(0,50)
		KNUK A 1 Offset(0,60)
		KNUK A 1 Offset(0,70)
		KNUK A 1 Offset(0,80)
		KNUK A 1 Offset(0,90)
		KNUK A 1 Offset(0,100)
		KNUK A 1 Offset(0,110)
		KNUK A 1 Offset(0,120)
        Goto Select
    Deselect:
        DKXS AAAAA 1 A_Lower
		DKXS A 0 A_TakeInventory("Waiting",15)
        DKXS A 0 A_Lower
        Goto Deselect+4
    Select:
        DKXS A 1 A_Raise
		TNT1 A 0 A_TakeInventory("Crack Knuckles",1)
		TNT1 A 0 A_TakeInventory("CheckWeaponMightyFoot",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponPistol",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponDualPistol",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponBlackTail",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponDualBlackTail",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponDesertEagle",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponShotgun",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponSuperShotgun",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponAssaultShotgun",1)
        TNT1 A 0 A_GiveInventory("CheckWeaponExplosiveShotgun",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponChaingun",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponLMG2028",1)
		TNT1 A 0 A_TakeInventory("CheckWeaponMinigun",1)
		TNT1 A 0 A_TakeInventory("CheckWeaponExplosiveChaingun",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponRPG",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponShockCannon",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponPipeBomb",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponLaserTripBomb",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponShrinker",1)
		TNT1 A 0 A_TakeInventory("CheckWeaponShrinker2",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponExpander",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponExecutor",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponDevastator",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponLaserChaingun",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponRailgun",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponFreezethrower",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponIncinerator",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponPulsethrower",1)
		DKXS A 0 A_PlaySound("ExplosiveShotgun/Select",6)
        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 AAAAA 1 A_Raise
        DKXS AAAAAAAAAA 2 A_Raise
        Loop
    Fire:
		DKXS A 0 A_JumpIfNoAmmo("FireFail")
		DKXS A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		DKXS A 0 A_FireCustomMissile("BulletExplosiveShotgun",Random(3,-3),1,7,0,0,Random(3,-3))
		DKXS AAAAAAA 0 A_FireCustomMissile("BulletExplosiveShotgun",Random(3,-3),0,7,0,0,Random(3,-3))
		DKXS A 0 A_GunFlash
        DKXS A 0 A_AlertMonsters
        DKXS A 0 A_PlaySound("ExplosiveShotgun/Shoot",5)
		DKXZ A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        DKXS BBCDEDC 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		DKXZ B 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        DKXS FF 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        DKXS GGHHIIJJ 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        DKXS J 0 A_TakeInventory("Waiting",15)
		DKXS J 0 A_PlaySound("ExplosiveShotgun/Pump",6)
		DKXS KKL 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		DKXS M 0 A_FireCustomMissile("ShellExplosiveSpawner",0,0,26,10)
        DKXS M 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        DKXS NNMLK 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        DKXS KJJIIHHGGFF 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        DKXS AAA 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        DKXS A 0 A_Refire
        Goto Ready	
    Flash:
        DKXF A 0 A_FireCustomMissile("DukeFlashShotgun",0,0,0)
		DKXF A 0 A_Light1
		DKXF AA 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		DKXF A 0 A_FireCustomMissile("DukeFlashShotgun",0,0,0)
		DKXF A 0 A_Light2
		DKXF BB 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		DKXF B 0 A_FireCustomMissile("DukeFlashShotgun",0,0,0)
		TNT1 A 1 A_Light0
	    Goto LightDone
    AltFire:
        BOOT C 0 A_JumpIfInventory("PowerStrength",1,22)
		BOOT C 0 A_GunFlash
		BOOT C 0 ACS_ExecuteAlways(500,0,FAS_ActorKick)
		BOOT CCCCCC 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		BOOT C 0 A_CustomPunch(Random(26,30),0,0,"MightyBootPuff")
		BOOT C 0 A_TakeInventory("Waiting",15)
        BOOT DDDDD 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        BOOT CCCCC 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        BOOT C 0 A_Refire
        Goto Ready  
		BOOT C 0 ACS_ExecuteAlways(500,0,FAS_ActorKick)
		BOOT C 0 A_GunFlash
		BOOT CCCCCC 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		BOOT C 0 A_CustomPunch(10*Random(26,30),0,0,"MightyBootPuff")
		BOOT C 0 A_TakeInventory("Waiting",15)
        BOOT DDDDD 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        BOOT CCCCC 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        BOOT C 0 A_Refire
        Goto Ready	
	AltFlash:  
        DKXS AAAAAAAAAAAAAAAAA 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        Stop
	FireFail:
	    DKXS A 0 A_PlaySound("Shotgun/Fail",6)
		DKXS A 0 A_TakeInventory("Waiting",15)
		DKXS AAAAAAAAAA 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        Goto Ready	
    }
}

ACTOR ExplosionSprite
{
	Renderstyle Add
	Alpha 0.5
    +NOINTERACTION
	+CLIENTSIDEONLY
	+FORCEXYBILLBOARD
	States
	{
	Spawn:
        TNT1 A 1
		TNT1 A 0 A_JumpIf(WaterLevel > 1, "Water")
		TNT1 A 0 A_Jump(255,"Spawn1","Spawn2","Spawn3","Spawn4","Spawn5")
		Goto Spawn1
	Spawn1:
		E1_A ABCDEFGH 3 Bright
		Stop
	Spawn2:
		E2_A ABCDEFGH 3 Bright
		Stop
	Spawn3:
		E3_A ABCDEFGH 3 Bright
		Stop
	Spawn4:
		E4_A ABCDEFGH 3 Bright
		Stop
	Spawn5:
		E5_A ABCDEFGH 3 Bright
        Stop
	Water:
        TNT1 A 1
	    Stop
    }
}

ACTOR DCExplosionSmall 
{
    +CLIENTSIDEONLY
	+NOINTERACTION
	States 
	{
	Spawn:
        TNT1 A 0
		TNT1 AAAA 1 A_SpawnItemEx("ExploSmall1",0.75*0.5*random(-32,32),0.75*0.5*random(-32,32),0.75*0.5*random(-32,32),0,0,0,0,32)
		TNT1 AAAA 1 A_SpawnItemEx("ExploSmall2",0,0,0,0.75*0.05*random(-30,30),0.75*0.05*random(-30,30),0.75*0.05*random(-30,30),random(0,359),32)
		TNT1 AAAA 1 A_SpawnItemEx("ExploSmall3",0,0,0,0.75*0.05*random(-15,15),0.75*0.05*random(-15,15),0.75*0.05*random(-15,15),random(0,359),32)
		TNT1 AAAA 1 A_SpawnItemEx("ExploSmall4",0,0,0,0.75*0.05*random(-7,7),0.75*0.05*random(-7,7),0.75*0.05*random(-7,7),random(0,359),32)
		TNT1 A 10
		Stop
	}
}

ACTOR ExploSmall1 : ExplosionSprite 
{
    Scale 0.7
}
	
ACTOR ExploSmall2 : ExplosionSprite 
{
    Scale 0.5
}

ACTOR ExploSmall3 : ExplosionSprite 
{
    Scale 0.3
}

ACTOR ExploSmall4 : ExplosionSprite 
{
    Scale 0.1
}

ACTOR BulletExplosiveShotgun
{
	Radius 5
	Height 5
	Damage (20)
	Speed 80
	Projectile
	Scale 0.20
	RenderStyle	Add
	DeathSound "ExplosiveShotgun/Explode"
	Obituary "%o got owned by %k's explosive shotgun."
	DamageType "Damage_ExplosiveShotgun"
	Decal "ExplosiveShotgunLightning"
	+FORCERADIUSDMG
	+BLOODSPLATTER
	+THRUGHOST
	States
	{
	Spawn:
        TRAC A 1 Bright
		Loop 
	Death:
        TNT1 A 0 
		TNT1 A 0 A_SetScale(0.95,0.95)
		TNT1 A 1 A_Jump(256,"Puff1","Puff2","Puff3","Puff4","Puff5")
	Puff1:
	    TNT1 A 0 
		TNT1 A 0 A_SpawnItemEx("DCExplosionSmall",0,0,0,Random(-6,6),0,Random(-2,6),Random(0,360),0,16)
		TNT1 A 0 A_Explode(Random(15,18),78)
		E1_A ABCDEFGH 3 Bright
        Stop
	Puff2:
	    TNT1 A 0 
		TNT1 A 0 A_SpawnItemEx("DCExplosionSmall",0,0,0,Random(-6,6),0,Random(-2,6),Random(0,360),0,16)
		TNT1 A 0 A_Explode(Random(15,18),78)
		E2_A ABCDEFGH 3 Bright
        Stop
	Puff3:
	    TNT1 A 0 
		TNT1 A 0 A_SpawnItemEx("DCExplosionSmall",0,0,0,Random(-6,6),0,Random(-2,6),Random(0,360),0,16)
		TNT1 A 0 A_Explode(Random(15,18),78)
		E3_A ABCDEFGH 3 Bright
        Stop
	Puff4:
	    TNT1 A 0 
		TNT1 A 0 A_SpawnItemEx("DCExplosionSmall",0,0,0,Random(-6,6),0,Random(-2,6),Random(0,360),0,16)
		TNT1 A 0 A_Explode(Random(15,18),78)
		E4_A ABCDEFGH 3 Bright
        Stop
	Puff5:
	    TNT1 A 0 
		TNT1 A 0 A_SpawnItemEx("DCExplosionSmall",0,0,0,Random(-6,6),0,Random(-2,6),Random(0,360),0,16)
		TNT1 A 0 A_Explode(Random(15,18),78)
		E5_A ABCDEFGH 3 Bright
        Stop
    }
}