ACTOR "LMG 2028" : Weapon 31009
{
    //$Category DN3D Weapons
	Weapon.SelectionOrder 29
	Weapon.BobStyle Normal
    Weapon.BobSpeed 1.4
    Weapon.BobRangeX 0.85
    Weapon.BobRangeY 0.6
    Weapon.AmmoUse 1
    Weapon.AmmoGive 50
    Weapon.AmmoType "Chaingun Ammo"
    Obituary "%o was riddled with bullets by %k's LMG 2028."
    Inventory.PickupMessage "\cnLMG 2028!"
    Inventory.PickupSound "DukeNukem/PickWeapon"
    Scale 0.675
    +WEAPON.AMMO_OPTIONAL
	+WEAPON.ALT_AMMO_OPTIONAL
	+WEAPON.NOALERT
    States
    {
	Spawn:
		TNT1 A 0		
		TNT1 A 1 A_Jump(256,"Spawn1","Spawn2")
		Stop
	Spawn1:	
        LMPP A -1
        Stop
	Spawn2:	
        LMPP B -1
        Stop
    Ready:
	    LMLP A 1 A_WeaponReady
        LMLP A 0 A_JumpIfInventory("Waiting",15,"Knuckles")
		LMLP AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_WeaponReady
		LMLP A 0 A_GiveInventory("Waiting",1)
        Loop
	Knuckles:
        LMLP AAAAA 1 A_Lower
        LMLP 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:
        LMLP AAAAA 1 A_Lower
		LMLP A 0 A_TakeInventory("Waiting",15)
        LMLP A 0 A_Lower
        Goto Deselect+4
    Select:
        LMLP A 1 A_Raise
		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_TakeInventory("CheckWeaponExplosiveShotgun",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponChaingun",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponMinigun",1)
        TNT1 A 0 A_GiveInventory("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)
		LMLP A 0 A_PlaySound("LMG/Up",6)
        LMLP A 0 A_Raise
        LMLP A 1 A_Raise
        LMLP A 0 A_Raise
        LMLP A 1 A_Raise
        LMLP A 0 A_Raise
        LMLP A 1 A_Raise
        LMLP A 0 A_Raise
        LMLP A 1 A_Raise
        LMLP A 0 A_Raise
        LMLP AAAAA 1 A_Raise
        LMLP AAAAAAAAAA 2 A_Raise
        Loop
    Fire:
		LML1 A 0 A_JumpIfNoAmmo("FireFail")
		LML1 A 0 A_JumpIfInventory("CoopModeB1",1,"Fire2")
		LML1 A 0 A_GunFlash
        LML1 A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		LML1 A 0 A_PlaySound("LMG/Shoot",5)
		LML1 B 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		LML1 B 0 A_FireCustomMissile("LMGBullet",0,1,6,3)
		LML1 B 0 A_TakeInventory("Waiting",15)
		LML1 C 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		LMLP C 0 A_GiveInventory("CoopModeB1",1)
		LMLP C 0 A_GiveInventory("NewFlashD1",1)
		LMLP C 0 A_AlertMonsters
        LMLP A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		LMLP A 0 A_AlertMonsters
        Goto Ready
    Fire2:
	    LML1 A 0 A_GunFlash
        LML2 A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		LML2 A 0 A_PlaySound("LMG/Shoot",5)
		LML2 B 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		LML2 B 0 A_FireCustomMissile("LMGBullet",0,1,12,3)
		LML2 B 0 A_TakeInventory("Waiting",15)
		LML2 C 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
	    LMLP C 0 A_TakeInventory("CoopModeB1",1)
		LMLP C 0 A_TakeInventory("NewFlashD1",1)
		LMLP C 0 A_AlertMonsters
        LMLP A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        Goto Ready
	Flash:
	   	LMF1 A 0 A_JumpIfInventory("NewFlashD1",1,12)
		LMF1 A 0 A_Light1
		LMF1 A 0 A_FireCustomMissile("DukeFlashChaingunCannon",0,0,0)
		LMF1 A 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		LMF1 A 0 A_Light2
		LMF1 A 0 A_FireCustomMissile("DukeFlashChaingunCannon",0,0,0)
		LMF1 B 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		LMF1 B 0 A_Light1
		LMF1 B 0 A_FireCustomMissile("DukeFlashChaingunCannon",0,0,0)
        LMF1 C 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 1 A_Light0 
        Goto LightDone	
		LMF2 A 0 
		LMF2 A 0 A_Light1 
		LMF2 A 0 A_FireCustomMissile("DukeFlashChaingunCannon",0,0,0)
		LMF2 A 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		LMF2 A 0 A_Light2
		LMF2 A 0 A_FireCustomMissile("DukeFlashChaingunCannon",0,0,0)
		LMF2 B 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)  
		LMF2 B 0 A_Light1
		LMF2 B 0 A_FireCustomMissile("DukeFlashChaingunCannon",0,0,0)
        LMF2 C 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		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:  
        LMLP AAAAAAAAAAAAAAAAA 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        Stop
	FireFail:
	    LMLP A 0 A_PlaySound("Chaingun/Fail",6)
		LMLP A 0 A_TakeInventory("Waiting",15)
		LMLP AAAAAAAAAA 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        Goto Ready	
    }
}

ACTOR LMGBullet
{
	Radius 2
	Height 3
	Damage (Random(19,18))
	Scale 0.15
	Alpha 0.80
	Speed 60
	DamageType "Damage_LMGBullet"
	DeathSound "LMG/Projectile"
	Obituary "%o was riddled with bullets by %k's LMG 2028."
	RenderStyle	Add
	Decal "DukeBullet"
	Projectile
	+BLOODSPLATTER
	+THRUGHOST
	States
	{
	Spawn:
        TRAC A 1 Bright
		Loop
	Death:
	    TNT1 A 1 A_Jump(256,"Death1","Death2")
		Stop
	Death1:
	    FX57 A 0 A_SetScale(0.8,0.8)
		FX57 AA 0 A_CustomMissile("LMGProjectileParticle",0,0,Random(0,360),2,Random(0,360))
        FX57 ABCDEFGHIJ 1 Bright
        Stop
    Death2:
	    FX58 A 0 A_SetScale(0.8,0.8)
		FX58 AA 0 A_CustomMissile("LMGProjectileParticle",0,0,Random(0,360),2,Random(0,360))
	    FX58 ABCDEFGHIJ 1 Bright
        Stop
    }
}

ACTOR LMGProjectileParticle
{
    Height 0
    Radius 0
    Mass 0
    +MISSILE
    +NOBLOCKMAP
    -NOGRAVITY
    +DOOMBOUNCE
	+MOVEWITHSECTOR
    +FORCEXYBILLBOARD
    BounceFactor 0.2
    Gravity 0.7
    RenderStyle Add
    Scale 0.020
    Speed 8
    States
    {
    Spawn:
    Death:
        LENY BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 2 Bright A_FadeOut(0.04)
        Stop
    }
}

ACTOR NewFlashD1 : Inventory
{
    Inventory.Amount 0
    Inventory.MaxAmount 1
}

ACTOR CoopModeB1 : Inventory
{
    Inventory.Amount 0
    Inventory.MaxAmount 1
}