ACTOR "Freezethrower" : Weapon 31022
{
    //$Category DN3D Weapons
	Weapon.SelectionOrder 42
    Weapon.AmmoUse 1
    Weapon.AmmoGive 25
    Weapon.AmmoType "Freezer Ammo"
    Obituary "%o was chilled out by %k's Freezer."
	Inventory.PickupMessage "\cnFreezethrower!"
    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:	
        FRZP A -1
        Stop
	Spawn2:	
        2RZP A -1
        Stop
	Ready:
	    FRZG A 1 A_WeaponReady
        FRZG A 0 A_JumpIfInventory("Waiting",15,"Knuckles")
		FRZG AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_WeaponReady
		FRZG A 0 A_GiveInventory("Waiting",1)
        Loop
	Knuckles:
        FRZG AAAAA 1 A_Lower
        FRZG 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:
        FRZG AAAAA 1 A_Lower
        FRZG A 0 A_Lower
        Goto Deselect+4
    Select:
        FRZG 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("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_GiveInventory("CheckWeaponFreezethrower",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponIncinerator",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponPulsethrower",1)
		FRZG A 0 A_PlaySound("Weapons/Up",6)
        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 AAAAA 1 A_Raise
        FRZG AAAAAAAAAA 2 A_Raise
        Loop
    Fire:
        FRZG B 0 A_JumpIfNoAmmo("FireFail")
		FRZG B 0 A_GunFlash
        FRZG B 1 Bright OffSet(0,34) A_PlaySound("Freezer/Shoot",5)
        FRZG C 1 Bright OffSet(-2,31) A_FireCustomMissile("FreezerAttack",1,1,8)
        FRZG D 1 Bright OffSet(1,32) A_AlertMonsters          
        FRZG B 1 Bright OffSet(2,29) 
        FRZG C 1 Bright OffSet(0,30)
        FRZG C 0 A_TakeInventory("Waiting",15)
		FRZG A 0 A_Refire
        FRZG AAAAA 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)  
        Goto Ready
    Flash:
        TNT1 A 1 A_FireCustomMissile("DukeFlashShock1",0,0,0)
		TNT1 A 0 A_Light1   
		TNT1 A 1 A_FireCustomMissile("DukeFlashShock2",0,0,0)
		TNT1 A 0 A_Light2  
		TNT1 A 1 A_FireCustomMissile("DukeFlashShock1",0,0,0)
		TNT1 A 0 A_Light2  
		TNT1 A 1 A_FireCustomMissile("DukeFlashShock2",0,0,0)
		TNT1 A 0 A_Light1  
		TNT1 A 1 A_FireCustomMissile("DukeFlashShock1",0,0,0)
		TNT1 A 0 A_Light0
        Stop
    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:  
        FRZG AAAAAAAAAAAAAAAAA 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        Stop
	FireFail:
		FRZG A 0 A_PlaySound("Chaingun/Fail",6)
		FRZG A 0 A_TakeInventory("Waiting",15)
		FRZG AAAAAAAAAA 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        Goto Ready	
        }
}

ACTOR FreezerAttack
{
    Radius 5
    Height 5
    Speed 40
    Damage (80)
    Projectile
    Obituary "%o was chilled out by %k's Freezer."
    Scale 0.15
	DeathSound "Freezer/Explode"
    DamageType "Ice"
    BounceFactor 1.0
    BounceCount 50
    ReactionTime 8
	+BLOODLESSIMPACT
	+CANBOUNCEWATER
	+THRUGHOST
    +DOOMBOUNCE
    States
    {
    Spawn:
		FRZX AAA 1 Bright A_Explode(8,10) 
		FRZX BBB 1 Bright A_Explode(8,10) 
		FRZX CCC 1 Bright A_Explode(8,10) 
		FRZX A 0 A_Countdown
        Loop
    Death:
	    FRZX A 0 A_Explode(40,34) 
		FRZX AAAAAAAAAAAAAAAA 0 A_CustomMissile("FreezerParticle",0,0,Random(0,360),2,Random(0,360))	
        FRZX A 0 A_SpawnItem("FreezerEffect",-1)
        Stop
        }
}

ACTOR FreezerEffect
{
    RenderStyle Add
    Scale 0.5
    +NOBLOCKMAP
	+NOINTERACTION
    +NOTELEPORT
    +NOGRAVITY
    States
    {
    Spawn:
        BTEL A 0 
		BTEL ABCDEF 2 Bright 
        Stop
        }
}

ACTOR FreezerParticle
{
    Speed 2.5
    Height 1
    Radius 1
    BounceFactor 0.2
    Gravity 0.8
    Scale 0.03
    RenderStyle Add
    +MISSILE
    -NOGRAVITY
    +LOWGRAVITY
	+MOVEWITHSECTOR
    +BOUNCEONACTORS
    +NOTELEPORT
    +FORCEXYBILLBOARD
	+ALLOWPARTICLES
  	+PUFFONACTORS
    +NOBLOCKMAP
    +CLIENTSIDEONLY
    States
    {
    Spawn:
        LENB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 2 Bright A_FadeOut(0.04)
        Stop
        }
}