ACTOR "Incinerator" : Weapon 31023
{
    //$Category DN3D Weapons
	Weapon.SelectionOrder 43
    Weapon.AmmoUse 1
    Weapon.AmmoGive 25
    Weapon.AmmoType "Incinerator Ammo"
    Obituary "%o was roasted by %k's."
    Inventory.PickUpMessage "\cnIncinerator!"
    Inventory.PickupSound "DukeNukem/PickWeapon"
    Scale 0.66
    +WEAPON.AMMO_OPTIONAL
	+WEAPON.ALT_AMMO_OPTIONAL
	+WEAPON.NOALERT
    States
    {
	Spawn:
		TNT1 A 0		
		TNT1 A 1 A_Jump(256,"Spawn1","Spawn2")
		Stop
	Spawn1:	
        INCP A -1
        Stop
	Spawn2:	
        INCP B -1
        Stop
	Ready:
	    TNT1 A 0 
	    TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
        INCI G 0 A_JumpIfInventory("Waiting",15,"Knuckles")
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,"Ready2")
		INCI G 1 A_WeaponReady
		Loop
	Ready2:
	    INCI A 1 A_WeaponReady
        INCI A 0 A_JumpIfInventory("Waiting",15,"Knuckles")
		INCI ABBCCAABBCCAABBCCAABBCCAABBCC 1 A_WeaponReady
		INCI A 0 A_GiveInventory("Waiting",1)
        Loop
	Knuckles:
        INCI GGGGG 1 A_Lower
        INCI G 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:
        INCI GGGGG 1 A_Lower
        INCI G 0 A_Lower
        Goto Deselect+4
    Select:
        INCI G 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("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_GiveInventory("CheckWeaponIncinerator",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponPulsethrower",1)
		INCI G 0 A_PlaySound("Weapons/Up",6)
        INCI G 0 A_Raise
        INCI G 1 A_Raise
        INCI G 0 A_Raise
        INCI G 1 A_Raise
        INCI G 0 A_Raise
        INCI G 1 A_Raise
        INCI G 0 A_Raise
        INCI G 1 A_Raise
        INCI G 0 A_Raise
        INCI GGGGG 1 A_Raise
        INCI GGGGGGGGGG 2 A_Raise
        Loop
    Fire:
        INCI D 0 A_JumpIfNoAmmo("FireFail")
		INCI D 0 A_GunFlash
        INCI D 1 Bright OffSet(0,34) 
        INCI E 1 Bright OffSet(-2,31) A_PlayWeaponSound("Incinerator/Shoot")
        INCI F 1 Bright OffSet(1,32) A_FireCustomMissile("IncineratorAttack",1,1,8)           
        INCI D 1 Bright OffSet(2,29) A_AlertMonsters     
        INCI E 1 Bright OffSet(0,30) A_TakeInventory("Waiting",15)
		INCI F 1 Bright OffSet(0,34) 
        INCI E 1 Bright OffSet(-2,31)  
        INCI F 1 Bright OffSet(1,32) 
        INCI D 1 Bright OffSet(2,29) 
        INCI E 1 Bright OffSet(0,30) 
		INCI D 1 Bright OffSet(0,34) 
        INCI E 1 Bright OffSet(-2,31) 
        INCI F 1 Bright OffSet(1,32) 
		INCI D 1 Bright OffSet(0,34) 
        INCI E 1 Bright OffSet(-2,31) 
        INCI F 1 Bright OffSet(1,32) 
        INCI F 0 A_Refire
		INCI GGGGGGGGGG 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)  
        Goto Ready
    Flash:
        TNT1 A 1 A_FireCustomMissile("DukeFlashIncinerator1",0,0,0)
		TNT1 A 0 A_Light1   
		TNT1 A 1 A_FireCustomMissile("DukeFlashIncinerator2",0,0,0)
		TNT1 A 0 A_Light2  
		TNT1 A 1 A_FireCustomMissile("DukeFlashIncinerator1",0,0,0)
		TNT1 A 0 A_Light1  
		TNT1 A 1 A_FireCustomMissile("DukeFlashIncinerator2",0,0,0)
		TNT1 A 0 A_Light2  
		TNT1 A 1 A_FireCustomMissile("DukeFlashIncinerator1",0,0,0)
		TNT1 A 0 A_Light1  
		TNT1 A 1 A_FireCustomMissile("DukeFlashIncinerator2",0,0,0)
		TNT1 A 0 A_Light2   
		TNT1 A 1 A_FireCustomMissile("DukeFlashIncinerator1",0,0,0)
		TNT1 A 0 A_Light1  
		TNT1 A 1 A_FireCustomMissile("DukeFlashIncinerator2",0,0,0)
		TNT1 A 0 A_Light2  
		TNT1 A 1 A_FireCustomMissile("DukeFlashIncinerator1",0,0,0)
		TNT1 A 0 A_Light1  
		TNT1 A 1 A_FireCustomMissile("DukeFlashIncinerator2",0,0,0)
		TNT1 A 0 A_Light2
		TNT1 A 1 A_FireCustomMissile("DukeFlashIncinerator1",0,0,0)
		TNT1 A 0 A_Light1   
		TNT1 A 1 A_FireCustomMissile("DukeFlashIncinerator2",0,0,0)
		TNT1 A 0 A_Light2  
		TNT1 A 1 A_FireCustomMissile("DukeFlashIncinerator1",0,0,0)
		TNT1 A 0 A_Light1  
		TNT1 A 1 A_FireCustomMissile("DukeFlashIncinerator2",0,0,0)
		TNT1 A 0 A_Light2  
		TNT1 A 1 A_FireCustomMissile("DukeFlashIncinerator1",0,0,0)
		TNT1 A 0 A_Light1  
		TNT1 A 1 A_FireCustomMissile("DukeFlashIncinerator2",0,0,0)
		TNT1 A 0 A_Light0
        Stop
    AltFire:
        BOOT A 0 ACS_ExecuteAlways(522,0,FAS_ActorKick)
        BOOT C 7 A_GunFlash
        BOOT D 6 A_CustomPunch(Random(26,30),1,0,"MightyBootPuff",0)
        BOOT C 4
        BOOT C 3 A_Refire
        Goto Ready
	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:  
	    TNT1 A 0 A_JumpIfInventory("Incinerator Ammo",1,19)
        INCI GGGGGGGGGGGGGGGGGG 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        Stop
		INCI AABBCCAABBCCAABBCC 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		Stop
	FireFail:
		INCI G 0 A_PlaySound("Chaingun/Fail",6)
		INCI G 0 A_TakeInventory("Waiting",15)
		INCI GGGGGGGGGG 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        Goto Ready	
        }
}

ACTOR IncineratorAttack
{
	Radius 6
	Height 6
	Speed 20
	Obituary "%o was roasted by %k's."
	Damage (Random(72,85))
	DamageType "Fire"
	DeathSound "Incinerator/Explode"
	RenderStyle Add
	Scale 0.50
	Decal "Scorch"
	Projectile
	+NOGRAVITY
	+THRUGHOST
	+FORCERADIUSDMG
	States
	{
	Spawn:
	    TNT1 A 0
	    TNT1 A 0 A_JumpIF(WaterLevel>1,"Death2")
		TNT1 A 0 A_Changeflag("NOGRAVITY",0)
	    TNT1 A 0 A_Changeflag("LOWGRAVITY",7)
		BLHD AB 1 Bright A_SpawnItemEx("IncineratorAttackTrail",0,0,1)
		Loop
	Death:
        INFP A 1 Bright A_Explode(64,32)
		INFP AAAAAA 0 A_CustomMissile("IncineratorAttackFX",0,0,FRandom(0,360),2,FRandom(0,360))
		INFP BCDEFGHIJKLMNOP 1 Bright 
		Stop
	Death2:
		INFP A 1 Bright A_Stop
		INFP AAAAAA 0 A_CustomMissile("IncineratorAttackFX",0,0,FRandom(0,360),2,FRandom(0,360))
		INFP BCDEFGHIJKLMNOP 1 Bright
		Stop
	    }
}

ACTOR IncineratorAttackFX
{
    Speed 1.7
    Damage 0
    Renderstyle Add
    Alpha 0.60
    Projectile
    +NOBLOCKMAP
    +NOTELEPORT
    +DONTSPLASH
    +NOGRAVITY
    +MISSILE
    +FORCEXYBILLBOARD
    +CLIENTSIDEONLY
    +NOINTERACTION
    +NOCLIP
    Scale 1.28
    States
    {
    Spawn:
	    RIR3 ABCDEFGHIJKLMNOP 1 Bright 
	    Stop
	    }
}

ACTOR IncineratorAttackTrail 
{   
	Radius 1
    Height 1
	Projectile
	RenderStyle Add
	Scale 0.65
	+NOGRAVITY
    +DONTSPLASH
    +CLIENTSIDEONLY
	States
    {
    Spawn:
        TNT1 A 2
		RIR3 KLMNOP 1 Bright 
        Stop
	Death:
	    TNT1 A 1
		Stop
        }
}

ACTOR DukeFlashIncinerator1
{
    Speed 1
    Radius 1
    Height 1
    Damage 0
    Projectile
    +NOCLIP
	+NOTIMEFREEZE
    States
    {
    Spawn:
        TNT1 A 0 
		TNT1 A 1
        Stop
    }
}

ACTOR DukeFlashIncinerator2
{
    Speed 1
    Radius 1
    Height 1
    Damage 0
    Projectile
    +NOCLIP
	+NOTIMEFREEZE
    States
    {
    Spawn:
        TNT1 A 0 
		TNT1 A 1
        Stop
    }
}