actor FreezeSpliceWep_NormalBar : NormalBar{args 197,60}
actor FreezeSpliceWep_ScriptBar : ScriptBar{}
actor FreezeSpliceWep : BaseMM8BDMWep 
{
Weapon.AmmoUse 2
Weapon.AmmoGive 32
Weapon.SlotNumber 2
Inventory.Pickupmessage "$PU_FREEZESPLICE"
Obituary "$OB_FREEZESPLICE"
Tag "$TAG_FREEZESPLICE"
weapon.ammotype "FreezeSpliceAmmo"
inventory.icon "FSPLICON"
States
{
SpawnLoop:
FSPL Z -1
loop
Ready:
FSPL A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_FREEZESPLICE)
FSPL A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
FSPL A 0 
goto DeselectSwap
Select:
FSPL A 0 
goto SelectSwap
Fire:
FSPL A 0 A_JumpIfNoAmmo("NoAmmo")
FSPL A 1
FSPL A 0 A_Refire("Hold")
Goto FireR
Altfire:
FSPL A 0 A_JumpIfInventory("Vile_ClassAltfire", 1, "ClassAltfire")
FSPL A 0 A_JumpIf(CallACS("Vile_class_altfire"), "ClassAltfire")
FSPL A 1 A_JumpIfInventory("MM8BDMPlayer", 1, 1)
wait
FSPL A 0 A_JumpIfNoAmmo("NoAmmo")
FSPL A 0 A_JumpIfInventory("FreezeSpliceAmmo", 2, "FireA")
goto NoAmmo
FireR:
FSPL A 0 A_PlaySoundEx("weapon/freezecracker","Weapon")
FSPL A 0 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FREEZESPLICE,TCLR_NONE)
FSPL A 0 A_FireCustomMissile("FreezeSpliceCracker",0,1,8,0)
FSPL A 1 A_TakeInventory("WeaponCharge",999)
FSPL BC 6
FSPL A 1
FSPL A 0 A_Refire
goto Ready+1
FireA:
FSPL A 0 A_PlaySoundEx("weapon/freezecracker","Weapon")
FSPL A 0 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FREEZESPLICE,TCLR_NONE)
FSPL A 0 A_FireCustomMissile("FreezeSpliceCracker",0,1,8,0)
FSPL A 1 A_TakeInventory("WeaponCharge",999)
FSPL BC 6
FSPL A 1
FSPL A 0 A_Refire
goto Ready+1
Fire2:
FSPL A 0 A_PlaySoundEx("weapon/freezecracker","Weapon")
FSPL A 0 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FREEZESPLICE,TCLR_NONE)
FSPL A 0 A_FireCustomMissile("FreezeSpliceCracker",0,1,8,0)
FSPL A 1 A_TakeInventory("WeaponCharge",999)
FSPL BC 6
FSPL A 1
FSPL A 0 A_Refire
goto Ready+1
Fire3:
FSPL A 0 A_JumpIfInventory("FreezeSpliceAmmo", 8, "Fire3r")
goto Fire2
Fire3r:
FSPL A 0 A_TakeInventory("WeaponCharge",999)
FSPL A 0 A_PlaySoundEx("weapon/freezecracker","Weapon")
FSPL A 0 A_PlaySoundEx("weapon/freezesplice","Weapon")
FSPL A 0 A_TakeInventory("FreezeSpliceAmmo",8,TIF_NOTAKEINFINITE)
FSPL A 0 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FREEZESPLICE,TCLR_NONE)
FSPL A 0 A_FireCustomMissile("ChargedFreezeSpliceShot",0,0,8,0)
FSP0 ABCDEF 2
FSPL A 9
FSPL A 0 A_Refire
goto Ready+1
Charge1:
FSPL A 0 A_JumpIfInventory("WeaponCharge",35,"Charge2Start")
FSPL D 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FREEZESPLICECHARGE1,TCLR_CHARGE1)
FSPL D 0 A_Refire("Charge1.a")
Goto Fire2
Charge1.a:
FSPL A 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FREEZESPLICE,TCLR_NONE)
FSPL A 0 A_GiveInventory("WeaponCharge", 1 + CallACS("core_checkrune", RUNE_RAGE))
FSPL D 0 A_Refire("Charge1")
Goto Fire2
Charge2Start:
FSPL A 0 A_GunFlash("Sound.BusterCharge", GFF_NOEXTCHANGE)
Goto Charge2
Charge2:
FSPL A 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FREEZESPLICE,TCLR_CHARGE2)
FSPL D 0 A_Refire("Charge2.a")
Goto Fire3
Charge2.a:
FSPL E 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FREEZESPLICECHARGE2,TCLR_CHARGE3)
FSPL D 0 A_Refire("Charge2.b")
Goto Fire3
Charge2.b:
FSPL F 1 ACS_NamedExecuteWithResult("core_chargecolor", COLOR_FREEZESPLICECHARGE3,TCLR_NONE)
FSPL A 0 A_JumpIfInventory("WeaponCharge", 35, 2)
FSPL A 0 A_GiveInventory("WeaponCharge", 1 + CallACS("core_checkrune", RUNE_RAGE))
"####" "#" 0 A_JumpIfInventory("IsBot", 1, "BotFire")
FSPL A 0 A_Refire("Charge2")
Goto Fire3
BotFire:
"####" "#" 0 A_Jump(16, "Fire3")
"####" "#" 0 A_Refire("Charge2")
Goto Fire3

Hold:
FSPL A 0 A_JumpIfInventory("FreezeSpliceAmmo", 1, "Hold2")
goto NoAmmo
Hold2:
FSPL A 0 A_JumpIfInventory("WeaponCharge",18,"Charge")
FSPL A 1 A_GiveInventory("WeaponCharge", 1 + CallACS("core_checkrune", RUNE_RAGE))
FSPL A 0 A_Refire
Goto FireR
Charge:
FSPL A 0 A_JumpIfInventory("WeaponCharge",19,"Charge1")
FSPL A 0 A_PlaySoundEx("weapon/coilstart","Weapon")
Goto Charge1
NoAmmo:
FSPL A 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
ClassAltfire:
FSPL A 0 
goto Super::Altfire
}
}


actor FreezeSpliceAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 32
+INVENTORY.IGNORESKILL
}

actor FreezeSpliceCracker : BasicProjectile
{
PROJECTILE
damagetype "FreezeSplice"
Obituary "$OB_FREEZESPLICE"
+SKYEXPLODE
damage (CallACS("vile_cbm_damage",19))
Radius 10
Height 10
speed 32
scale 2.5
States
{
Spawn:
FSPC C 0
FSPC C 0 A_SpawnItemEx("FreezeFX")
FSPC C 4 
FSPC D 4 A_SpawnItemEx("FreezeCrackerFX", -8, Random(-22, 22), random(-20, 20))
Goto Spawn+2
Death:
TNT1 A 0 A_SpawnItemEx("IcePitFreeze")
TNT1 A 0 A_JumpIf(z-floorz<5,"Floor")
TNT1 A 0 A_JumpIf(z-ceilingz==0-10,"Ceiling")
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,60,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,-60,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,120,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,-120,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,0,1)
TNT1 A 1 A_PlaySoundEx("weapon/freezecrackerhit","Weapon")
stop
Floor:
TNT1 A 0 A_PlaySoundEx("weapon/freezesplice","Weapon")
TNT1 A 0 A_SpawnItemEx("SpliceFreezeFloorSpike",0,0,0,0,0,0,0,1)
stop
Ceiling:
TNT1 A 0 A_SpawnItemEx("SpliceFreezeCeilingSpike1",0,0,0,0,0,0,0,1)
stop
XDeath:
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitFX",random(-2,2),0,random(2,5),frandom(-2,2),random(-6,-9),frandom(1,6),0,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitFX",random(-2,2),0,random(4,7),frandom(-2,2),random(-2,-5),frandom(2,6.5),0,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitFX",random(-2,2),0,random(6,9),frandom(-2,2),random(-1,1),frandom(3,7),0,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitFX",random(-2,2),0,random(6,7),frandom(-2,2),random(2,5),frandom(2,6.5),0,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitFX",random(-2,2),0,random(2,5),frandom(-2,2),random(6,9),frandom(1,6),0,1)
TNT1 A 1 A_SpawnItemEx("IcePitFreeze")
stop
}
}

actor ChargedFreezeSpliceShot : BasicProjectile
{
PROJECTILE
Obituary "$OB_FREEZESPLICE"
damagetype "FreezeSplice"
+SKYEXPLODE
+HEXENBOUNCE
Bouncefactor 1.0
Wallbouncefactor 1.0
+BOUNCEONWALLS
+RIPPER
-BOUNCEONFLOORS
-BOUNCEONCEILINGS
damage (CallACS("vile_cbm_damage",6))
Radius 10
//Bouncecount 10
Height 10
Reactiontime 20
speed 32
scale 2.5
States
{
Spawn:
FSPC C 0
FSPC C 0 A_SpawnItemEx("FreezeFX")
FSPC C 4 
FSPC D 4 A_SpawnItemEx("FreezeCrackerFX", -8, Random(-22, 22), random(-20, 20))
FSPC CCCCDDDD 1 A_SpawnItemEx("SpliceCrackerAfterImage", 0, 0, 0)
FSPC D 0 A_GiveInventory("WeaponCharge",1)
FSPC D 0 A_JumpIfInventory("WeaponCharge",20,"Spawn2")
Goto Spawn+4
Spawn2:
FSPC C 0 A_ChangeFlag("NOGRAVITY",0)
FSPC CCCCDDDD 1 A_SpawnItemEx("SpliceCrackerAfterImage", 0, 0, 0)
loop
Death:
TNT1 A 0 A_JumpIf(z-floorz<5,"Floor")
TNT1 A 0 A_JumpIf(z-ceilingz==0-10,"Ceiling")
stop
Floor:
TNT1 A 0 A_PlaySoundEx("weapon/centaurflash","Item")
TNT1 A 0 A_PlaySoundEx("weapon/freezesplice2","Weapon")
TNT1 A 0 A_SpawnItemEx("SpliceFreezeFloorSpike",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave",35,0,0,14,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave",35,0,0,14,0,0,60,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave",35,0,0,14,0,0,-60,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave",35,0,0,14,0,0,120,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave",35,0,0,14,0,0,-120,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave",35,0,0,14,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,30,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,90,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,150,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,210,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,270,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,330,1)
stop
Ceiling:
TNT1 A 0 A_PlaySoundEx("weapon/centaurflash","Item")
TNT1 A 0 A_PlaySoundEx("weapon/freezesplice2","Weapon")
TNT1 A 0 A_SpawnItemEx("SpliceFreezeCeilingSpike2",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWaveCeiling",35,0,0,14,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWaveCeiling",35,0,0,14,0,0,60,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWaveCeiling",35,0,0,14,0,0,-60,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWaveCeiling",35,0,0,14,0,0,120,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWaveCeiling",35,0,0,14,0,0,-120,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWaveCeiling",35,0,0,14,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,30,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,90,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,150,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,210,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,270,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,330,1)
stop
XDeath:
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,random(0,360),1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,random(0,360),1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,random(0,360),1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,random(0,360),1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,0,1)

TNT1 A 1
stop
}
}
actor SpliceCrackerAfterImage : BasicGraphicEffect
{
+NOINTERACTION
-SOLID
scale 2.5
Translation "0:255=197:197"
states
{
	SpawnFrame:
	FSPC DDDDCCCC 1 A_FadeOut(0.05)
	loop
}
}


actor FreezeSpliceCrackerFloor : FreezeSpliceCracker
{
damagetype "FreezeSplice"
Obituary "$OB_FREEZESPLICE"
+RIPPER
Damage (CallACS("vile_cbm_damage",7))
States
{
Death:
TNT1 A 0 A_PlaySoundEx("weapon/centaurflash","Item")
TNT1 A 0 A_PlaySoundEx("weapon/freezesplice2","Weapon")
TNT1 A 0 A_SpawnItemEx("SpliceFreezeFloorSpike",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave",35,0,0,14,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave",35,0,0,14,0,0,60,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave",35,0,0,14,0,0,-60,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave",35,0,0,14,0,0,120,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave",35,0,0,14,0,0,-120,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave",35,0,0,14,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,30,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,90,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,150,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,210,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,270,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2",35,0,0,14,0,0,330,1)
TNT1 A 1
stop
}
}

actor FreezeSpliceCrackerCeiling : FreezeSpliceCracker
{
damagetype "FreezeSplice"
Obituary "$OB_FREEZESPLICE"
+RIPPER
Damage (CallACS("vile_cbm_damage",7))
States
{
Death:
TNT1 A 0 A_PlaySoundEx("weapon/centaurflash","Item")
TNT1 A 0 A_PlaySoundEx("weapon/freezesplice2","Weapon")
TNT1 A 0 A_SpawnItemEx("SpliceFreezeCeilingSpike2",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWaveCeiling",35,0,0,14,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWaveCeiling",35,0,0,14,0,0,60,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWaveCeiling",35,0,0,14,0,0,-60,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWaveCeiling",35,0,0,14,0,0,120,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWaveCeiling",35,0,0,14,0,0,-120,1)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWaveCeiling",35,0,0,14,0,0,180,1)
TNT1 A 1
stop
}
}

actor FreezeSpliceBit : BasicProjectile
{
PROJECTILE
+THRUACTORS
Obituary "$OB_FREEZESPLICE"
Radius 6
Height 6
scale 2.5
damage (CallACS("vile_cbm_damage",8))
damagetype "FreezeSpliceBit"
speed 28
states
{
Spawn:
FSPC H 3
FSPC H 0 A_ChangeFlag(THRUACTORS, false)
FSPC H 4
wait
}
}

actor FreezeSpliceBitFX : BasicGraphicEffect
{
-NOGRAVITY
-NOINTERACTION
height 4
radius 4
Speed 15
States
{
SpawnFrame:
TNT1 A 0
TNT1 A 0 A_Jump(256,1,2,3)
FSPC H 30
stop
FSPC I 30
stop
FSPC J 30
stop
}
}


actor SpliceFreezeFloorSpike : BasicProjectile
{
PROJECTILE
damagetype "FreezeSplice"
+DONTBLAST
Obituary "$OB_FREEZESPLICE"
+FLOORHUGGER
damage (CallACS("vile_cbm_damage",11))
Radius 9
Height 9
speed 26
scale 2.5
reactiontime 130
states
{
Spawn:
FSPC K 4 A_PlaySoundEx("weapon/freezesplice","Weapon")
FSPC K 1 A_Countdown 
goto Spawn+1
Death:
FSPC K 1 A_FadeOut(0.1)
loop
}
}

actor SpliceFreezeCeilingSpike1 : SpliceFreezeFloorSpike
{
-DONTBLAST
-FLOORHUGGER
+NOGRAVITY
Obituary "$OB_FREEZESPLICE"
damage (CallACS("vile_cbm_damage",13))
states
{
Spawn:
FSPC E 0
FSPC E 4 A_PlaySoundEx("weapon/freezesplice","Weapon")
FSPC F 4
FSPC G 12 
FSPC G 0 A_ChangeFlag("NOGRAVITY",0)
FSPC G 1
wait
Death:
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,60,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,-60,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,120,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,-120,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBit",0,0,0,28,0,0,0,1)
TNT1 A 1 A_PlaySoundEx("weapon/freezecrackerhit","Weapon")
stop
XDeath:
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitFX",random(-2,2),0,random(2,5),frandom(-2,2),random(-6,-9),frandom(1,6),0,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitFX",random(-2,2),0,random(4,7),frandom(-2,2),random(-2,-5),frandom(2,6.5),0,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitFX",random(-2,2),0,random(6,9),frandom(-2,2),random(-1,1),frandom(3,7),0,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitFX",random(-2,2),0,random(6,7),frandom(-2,2),random(2,5),frandom(2,6.5),0,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitFX",random(-2,2),0,random(2,5),frandom(-2,2),random(6,9),frandom(1,6),0,1)
TNT1 A 1
stop
}
}

actor SpliceFreezeCeilingSpike2 : SpliceFreezeFloorSpike
{
-DONTBLAST
-FLOORHUGGER
+NOGRAVITY
Obituary "$OB_FREEZESPLICE"
damage (CallACS("vile_cbm_damage",13))
states
{
Spawn:
FSPC E 0
FSPC E 4 A_PlaySoundEx("weapon/freezesplice","Weapon")
FSPC F 4
FSPC G 12 
FSPC G 0 A_ChangeFlag("NOGRAVITY",0)
FSPC G 1
wait
Death:
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitC",0,0,0,28,0,0,60,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitC",0,0,0,28,0,0,-60,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitC",0,0,0,28,0,0,120,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitC",0,0,0,28,0,0,-120,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitC",0,0,0,28,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitC",0,0,0,28,0,0,0,1)
TNT1 A 1 A_PlaySoundEx("weapon/freezecrackerhit","Weapon")
stop
XDeath:
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitFX",random(-2,2),0,random(2,5),frandom(-2,2),random(-6,-9),frandom(1,6),0,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitFX",random(-2,2),0,random(4,7),frandom(-2,2),random(-2,-5),frandom(2,6.5),0,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitFX",random(-2,2),0,random(6,9),frandom(-2,2),random(-1,1),frandom(3,7),0,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitFX",random(-2,2),0,random(6,7),frandom(-2,2),random(2,5),frandom(2,6.5),0,1)
TNT1 A 0 A_SpawnItemEx("FreezeSpliceBitFX",random(-2,2),0,random(2,5),frandom(-2,2),random(6,9),frandom(1,6),0,1)
TNT1 A 1
stop
}
}

actor FreezeSpliceBitC : BasicProjectile
{
PROJECTILE
+THRUACTORS
Obituary "$OB_FREEZESPLICE"
Radius 6
Height 6
scale 2.5
damage (CallACS("vile_cbm_damage",8))
damagetype "FreezeSpliceBit"
speed 28
states
{
Spawn:
FSPC H 3
FSPC H 0 A_ChangeFlag(THRUACTORS, false)
FSPC H 4
stop
}
}

actor SpliceFreezeWave : BasicProjectile
{
PROJECTILE
damagetype "FreezeSplice"
Obituary "$OB_FREEZESPLICE"
+FLOORHUGGER
+RIPPER
+THRUGHOST
//+HEXENBOUNCE
//WallBounceFactor 1.0
//Bouncecount 3
Reactiontime 5
Damage (CallACS("vile_cbm_damage",3))
Height 10
Radius 10
Scale 2.5
SPEED 14
States
{
Spawn:
FSPC A 0
FSPC AA 1 A_GiveInventory("SpliceFreezeWave_P2",1)
FSPC A 0 A_PlaySoundEx("weapon/freezesplice","Weapon")
FSPC B 0 A_SpawnItemEx("SpliceFreezeFloorSpike",0,0,0,0,0,0,0,1)
FSPC A 0 A_Countdown
FSPC BB 1 A_GiveInventory("SpliceFreezeWave_P1",1)
FSPC A 0 A_PlaySoundEx("weapon/freezesplice","Weapon")
FSPC A 0 A_SpawnItemEx("SpliceFreezeFloorSpike",0,0,0,0,0,0,0,1)
FSPC A 0 A_Countdown
loop
}
}

actor SpliceFreezeWave2 : SpliceFreezeWave
{
Obituary "$OB_FREEZESPLICE"
-FLOORHUGGER
Renderstyle "Translucent"
Alpha 0.6
States
{
Spawn:
FSPC U 0
FSPC BBBBBBBBBB 1 A_GiveInventory("SpliceFreezeWave_P2",1)
FSPC AAAAAAAAAA 1 A_GiveInventory("SpliceFreezeWave_P1",1)
stop
}
}


actor SpliceFreezeWave_P1 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ThrustThing(angle*256/360,0)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave1fx",0,0,0,0,0,0,0,1)
stop
}
}
actor SpliceFreezeWave_P2 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ThrustThing(angle*256/360,0)
TNT1 A 0 A_SpawnItemEx("SpliceFreezeWave2fx",0,0,0,0,0,0,0,1)
stop
}
}


actor SpliceFreezeWave1fx : BasicGraphicEffect
{
+CLIENTSIDEONLY
+NOINTERACTION
+NOGRAVITY
-SOLID
radius 2
height 2
scale 2.5
RenderStyle "Translucent"
Alpha 0.6
states
{
SpawnFrame:
TNT1 A 0
FSPC BBBBBB 1 A_Fadeout
stop
}
}
actor SpliceFreezeWave2fx : BasicGraphicEffect
{
+CLIENTSIDEONLY
+NOINTERACTION
+NOGRAVITY
-SOLID
radius 2
height 2
scale 2.5
states
{
SpawnFrame:
TNT1 A 0
FSPC AAAAAA 1 A_Fadeout 
stop
}
}

actor SpliceFreezeWaveCeiling : SpliceFreezeWave
{
-FLOORHUGGER
+CEILINGHUGGER
Obituary "$OB_FREEZESPLICE"
reactiontime 5
States
{
Spawn:
FSPC A 0
FSPC AAAA 1 A_GiveInventory("SpliceFreezeWave_P2",1)
FSPC A 0 A_PlaySoundEx("weapon/freezesplice","Weapon")
FSPC B 0 A_SpawnItemEx("SpliceFreezeCeilingSpike2",0,0,0,0,0,0,0,1)
FSPC A 0 A_Countdown
FSPC BBBB 1 A_GiveInventory("SpliceFreezeWave_P1",1)
FSPC A 0 A_PlaySoundEx("weapon/freezesplice","Weapon")
FSPC A 0 A_SpawnItemEx("SpliceFreezeCeilingSpike2",0,0,0,0,0,0,0,1)
FSPC A 0 A_Countdown
loop
}
}

actor SpliceFreezeWaveCeiling2 : SpliceFreezeWaveCeiling
{
Renderstyle "Translucent"
Obituary "$OB_FREEZESPLICE"
Alpha 0.6
States
{
Spawn:
FSPC U 0
FSPC BBBBBBBBBB 1 A_GiveInventory("SpliceFreezeWave_P2",1)
FSPC AAAAAAAAAA 1 A_GiveInventory("SpliceFreezeWave_P1",1)
stop
}
}
