actor FreezeCrackerBoss : MegaBuster
{
Weapon.AmmoUse 2
Weapon.AmmoGive 0
Weapon.SlotNumber 1
Obituary "%o was cracked by %k's Freeze Cracker."
weapon.ammotype "MrFreezeAmmo"
inventory.pickupsound "weapon/weaponup"
+WEAPON.AMMO_OPTIONAL
+WEAPON.Alt_AMMO_OPTIONAL
Scale 2.0
States
{
Spawn:
WEA3 O 1
loop 
Ready:
MRFA A 0 ACS_ExecuteAlways(998,0,54)
MRFA A 0 A_JumpIfInventory("MrFreezeAmmo",2,"Ready2")
MRFA A 7 A_WeaponReady(WRF_NOFIRE)
MRFA A 0 A_GiveInventory("MrFreezeAmmo",1)
Goto Ready+1
Ready2:
MRFA A 0 A_JumpIfInventory("MrFreezeAmmo",28,"Ready3")
MRFA A 7 A_WeaponReady(WRF_NOSECONDARY)
MRFA A 0 A_GiveInventory("MrFreezeAmmo",1)
loop
Ready3:
MRFA A 1 A_WeaponReady
loop
Deselect:
ICEB A 0 A_TakeInventory("FreezeCrackerBoss")
ICEB A 0 A_GiveInventory("FreezeCrackerBoss")
MRFA A 1 A_SelectWeapon("FreezeCrackerBoss")
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
MRFA A 1 A_Raise
Loop
Fire:
MRFA A 0 A_JumpIfNoAmmo("NoAmmo")
MRFA B 3
Hold:
MRFA A 0 A_JumpIfNoAmmo("NoAmmo")
MRFA A 0 A_PlaySoundEx("weapon/freezecracker","Weapon")
MRFA A 0 A_SpawnItemEx("FreezeFXB",-1/*20*/,8,32,0,0,0)
MRFA A 0 A_FireCustomMissile("MrFreezeCracker",0,1,8,0)
MRFA C 17
MRFA A 0 A_Refire
MRFA B 5
Goto Ready+1
AltFire:
MRFA A 0 A_JumpIfInventory("MrFreezeAmmo",28,1)
goto NoAmmo
MRFA A 0 ACS_ExecuteAlways(648,0,1)
MRFA A 0 SetPlayerProperty(0,1,0)
MRFA BBB 1 A_SpawnItemEx("FreezeFXB1",/*-1*/20,8,32,0,0,0)
MRFA BBB 1 A_SpawnItemEx("FreezeFXB2",/*-1*/20,8,32,0,0,0)
MRFA BBB 1 A_SpawnItemEx("FreezeFXB1",/*-1*/20,8,32,0,0,0)
MRFA BBB 1 A_SpawnItemEx("FreezeFXB2",/*-1*/20,8,32,0,0,0)
MRFA BBB 1 A_SpawnItemEx("FreezeFXB1",/*-1*/20,8,32,0,0,0)
MRFA BBB 1 A_SpawnItemEx("FreezeFXB2",/*-1*/20,8,32,0,0,0)
MRFA BBB 1 A_SpawnItemEx("FreezeFXB1",/*-1*/20,8,32,0,0,0)
MRFA BBB 1 A_SpawnItemEx("FreezeFXB2",/*-1*/20,8,32,0,0,0)
MRFA BBB 1 A_SpawnItemEx("FreezeFXB1",/*-1*/20,8,32,0,0,0)
MRFA BBB 1 A_SpawnItemEx("FreezeFXB2",/*-1*/20,8,32,0,0,0)
MRFA A 0 A_PlaySoundEx("weapon/freezecracker","Weapon")
MRFA A 0 A_SpawnItemEx("FreezeFXB",-1/*20*/,8,32,0,0,0)
MRFA A 0 A_FireCustomMissile("GroundFreezeCracker",0,0,8,0)
MRFA A 0 A_TakeInventory("MrFreezeAmmo",28)
MRFA C 25
MRFA A 0 ACS_ExecuteAlways(648,0,0)
MRFA A 0 SetPlayerProperty(0,0,0)
MRFA B 10
Goto Ready+1
NoAmmo:
MRFA B 5
//MRFA A 1 ACS_Execute(979,0)
Goto Ready+1
}
}

actor MrFreezeAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 28
}

actor MrFreezeCracker : FreezeCracker
{
States
{
Spawn:
//MRFP A 3 //Thing_ChangeTID(0,5101)
MRFP B 1
goto Spawn//+1
Death:
MRFP B 0 A_JumpIf(z-floorz<5, "Floor")
MRFP B 0 A_JumpIf(z-ceilingz==0-10, "Ceiling")
MRFP F 0 A_PlaySoundEx("weapon/freezecrackerhit","Weapon")
MMFX B 0 A_SpawnItemEx("FreezeBitB",0,0,0,28,0,0,60)
MMFX B 0 A_SpawnItemEx("FreezeBitB",0,0,0,28,0,0,-60)
MMFX B 0 A_SpawnItemEx("FreezeBitB",0,0,0,28,0,0,120)
MMFX B 0 A_SpawnItemEx("FreezeBitB",0,0,0,28,0,0,-120)
MMFX B 0 A_SpawnItemEx("FreezeBitB",0,0,0,28,0,0,180)
MMFX B 0 A_SpawnItemEx("FreezeBitB",0,0,0,28,0,0,-180)
MMFX B 0 A_SpawnItemEx("FreezeBitB",0,0,0,28,0,0,0)
stop
Floor:
//MRFP A 0 A_PlaySoundEx("weapon/blizzboss","Weapon")
MRFF A 0 A_SpawnItemEx("FloorSpike")
stop
Ceiling:
//MRFP A 0 A_PlaySoundEx("weapon/blizzboss","Weapon")
MRFF A 0 A_SpawnItemEx("CeilingSpike")
stop
}
}

actor GroundFreezeCracker : MrFreezeCracker
{
Damage (5)
+RIPPER
+SKYEXPLODE
States
{
Spawn:
MRFP A 0
MRFP A 1 A_SpawnItemEx("FreezeTrail",0,0,0,0,0,0,0)
loop
Death:
MRFP F 0 A_PlaySoundEx("weapon/centaurflash","Weapon")
//MRFP F 0 A_PlaySoundEx("weapon/freezefloor","SoundSlot5")
MRFP B 0 A_JumpIf(z-floorz<0-z+ceilingz, "Floor")
MRFP B 0 A_JumpIf(z-ceilingz<-10, 2)
MRFF A 0 A_SpawnItemEx("CeilingSpike")
MMFX B 0 A_SpawnItemEx("CeilingFreezeWave",35,0,0,14,0,0,60)
MMFX B 0 A_SpawnItemEx("CeilingFreezeWave",35,0,0,14,0,0,-60)
MMFX B 0 A_SpawnItemEx("CeilingFreezeWave",35,0,0,14,0,0,120)
MMFX B 0 A_SpawnItemEx("CeilingFreezeWave",35,0,0,14,0,0,-120)
MMFX B 0 A_SpawnItemEx("CeilingFreezeWave",35,0,0,14,0,0,180)
MMFX B 0 A_SpawnItemEx("CeilingFreezeWave",35,0,0,14,0,0,-180)
MMFX B 0 A_SpawnItemEx("CeilingFreezeWave",35,0,0,14,0,0,0)
stop
Floor:
MRFP B 0 A_JumpIf(z-floorz>=5, 2)
MRFF A 0 A_SpawnItemEx("FloorSpike")
MMFX B 0 A_SpawnItemEx("GroundFreezeWave",35,0,0,14,0,0,60)
MMFX B 0 A_SpawnItemEx("GroundFreezeWave",35,0,0,14,0,0,-60)
MMFX B 0 A_SpawnItemEx("GroundFreezeWave",35,0,0,14,0,0,120)
MMFX B 0 A_SpawnItemEx("GroundFreezeWave",35,0,0,14,0,0,-120)
MMFX B 0 A_SpawnItemEx("GroundFreezeWave",35,0,0,14,0,0,180)
MMFX B 0 A_SpawnItemEx("GroundFreezeWave",35,0,0,14,0,0,-180)
MMFX B 0 A_SpawnItemEx("GroundFreezeWave",35,0,0,14,0,0,0)
stop
}
}

actor FreezeBitB : FreezeBit
{
states
{
Spawn:
MRFP D 4
loop
}
}

actor FreezeFXB : FreezeFX
{
states
{
Spawn:
MRFP CDE 4
stop
}
}

actor GroundFreezeWave
{
damagetype "FreezeCrackerB"
PROJECTILE
+FLOORHUGGER
+RIPPER
Damage (5)
Height 10
Radius 10
Scale 2.5
reactiontime 5
States
{
Spawn:
MRFP I 0
MRFP I 10 A_PlaySoundEx("weapon/freezefloor","Weapon")
MRFP H 10 A_SpawnItemEx("FloorSpike")
MRFP H 0 A_CountDown
MRFP I 10 A_SpawnItemEx("FloorSpike")
MRFP I 0 A_CountDown
goto Spawn+2
}
}

actor CeilingFreezeWave : GroundFreezeWave
{
damagetype "FCrack"
-FLOORHUGGER
+CEILINGHUGGER
reactiontime 4
States
{
Spawn:
MRFP I 0
MRFP I 10 A_PlaySoundEx("weapon/freezefloor","Weapon")
MRFP H 10 A_SpawnItemEx("CeilingSpike")
MRFP H 0 A_CountDown
MRFP I 10 A_SpawnItemEx("CeilingSpike")
MRFP I 0 A_CountDown
goto Spawn+2
}
}

actor FreezeFXB1 : FreezeFXB
{
states
{
Spawn:
MRFP F 0
MRFP F 1
stop
}
}

actor FreezeFXB2 : FreezeFXB
{
states
{
Spawn:
MRFP G 0
MRFP G 1
stop
}
}

/*
actor FreezeBitter : FreezeBitB
{
-NOGRAVITY
}
*/

actor Floorspike
{
PROJECTILE
+FLOORHUGGER
Radius 9
Height 9
scale 2.5
damage (25)
damagetype "FCrack"
speed 26
states
{
Spawn:
MRFP A 0
MRFP A 0 A_PlaySoundEx("weapon/blizzboss","Weapon")
MRFF ABC 4
MRFF C 5 //A_Explode(5,15,0)
MRFF C 5 //A_Explode(5,15,0)
MRFF C 5 //A_Explode(5,15,0)
MRFF C 5 //A_Explode(5,15,0)
MRFF C 5 //A_Explode(5,15,0)
MRFF C 5 //A_Explode(5,15,0)
MRFF C 5 //A_Explode(5,15,0)
MRFF C 5 //A_Explode(5,15,0)
MRFF C 5 //A_Explode(5,15,0)
MRFF C 5 //A_Explode(5,15,0)
MRFF C 5 //A_Explode(5,15,0)
MRFF C 5 //A_Explode(5,15,0)
MRFF C 5 //A_Explode(5,15,0)
MRFF C 5 //A_Explode(5,15,0)
MRFF CBA 4
stop
}
}

actor Ceilingspike : Floorspike
{
-FLOORHUGGER
+NOGRAVITY
states
{
Spawn:
MRFC A 0
MRFC A 0 A_PlaySoundEx("weapon/blizzboss","Weapon")
MRFC ABC 4
MRFC C 0 ThrustThingZ(0,-7,0,1)
MRFC C 1
goto Spawn+4
Death:
//MMFX B 0 A_PlaySoundEx("weapon/centaurflash","Weapon")
MMFX B 0 A_PlaySoundEx("weapon/freezecrackerhit","Weapon")
MMFX B 0 A_SpawnItemEx("FreezeBitB",0,0,0,28,0,0,60)
MMFX B 0 A_SpawnItemEx("FreezeBitB",0,0,0,28,0,0,-60)
MMFX B 0 A_SpawnItemEx("FreezeBitB",0,0,0,28,0,0,120)
MMFX B 0 A_SpawnItemEx("FreezeBitB",0,0,0,28,0,0,-120)
MMFX B 0 A_SpawnItemEx("FreezeBitB",0,0,0,28,0,0,180)
MMFX B 0 A_SpawnItemEx("FreezeBitB",0,0,0,28,0,0,-180)
MMFX B 0 A_SpawnItemEx("FreezeBitB",0,0,0,28,0,0,0)
stop
}
}

actor GroundIce
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
reactiontime 60
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag",998,"Death")
TNT1 A 1 A_GiveToTarget("GroundIceStop",1)
TNT1 A 0 A_CountDown
loop
Death:
TNT1 A 1
stop
}
}

actor GroundIceStop : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 0
stop
Pickup:
TNT1 A 0 A_Stop
TNT1 A 0 A_SpawnItemEx("GroundIceFX")
stop
}
}

actor GroundIceFX
{
scale 2.5
- SOLID
+NOGRAVITY
+CLIENTSIDEONLY
States
{
Spawn:
MRFF D 0
MRFF D 1
stop
}
}

actor FreezeTrail
{
+NOINTERACTION
+NOGRAVITY
+CLIENTSIDEONLY
//+FORCEXYBILLBOARD
-SOLID
scale 2.5
height 0
radius 0
RenderStyle "Translucent"
Alpha 0.75
States
{
Spawn:
MRFP A 6
stop
}
}