actor Frostman : TankArmorClass
{
	Player.ScoreIcon "FROSMUGS"
	player.startitem "BaseFlagPack", 1
	player.startitem "TankArmor"
	player.soundclass "frostmanc"
	Player.ViewHeight 53
	player.displayname "Frostman"
	player.jumpz 14
	gravity 1.2
	player.forwardmove 0.7, 0.7
	player.sidemove 0.68, 0.68
	player.startitem "UltimateAttackItem2MM8"
	player.startitem "UltSoundWatcherSpawn2"
	player.startitem "IceWaveBoss"
	player.startitem "Base28Ammo", 28
	player.startitem "BaseAltfireAmmo", 112
	player.startitem "IsFromMM8"
	player.startitem "NoHealthBar"
	player.startitem "IsHeavy"
	States
	{
		Spawn:
		AFRO A 0
		AFRO B 1 A_JumpIf(z-floorz>0, "Jumping")
		AFRO AAAAAAAAAAAA 1 A_JumpIf(z-floorz>0, "Jumping")
		AFRO A 0 A_SpawnItemEx("FrostAir",random(24,32),0,random(60,80),0,0,0,random(0,359))
		Goto Spawn+2
		
		See:
		AFRO BBBBBBCCCCCCDDDDDDEEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn+1
		
		Jumping:
		AFRO I 0 A_JumpIf(momz<1,"Falling")
		AFRO I 1 A_JumpIf(z-floorz<=0, "Land")
		loop
		
		Falling:
		AFRO J 1 A_JumpIf(z-floorz<=0, "Land")
		wait
		
		Land:
		AFRO MMMMMM 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn+2
		
		Missile:
		AFRO F 0 A_JumpIfInventory("FrostManCharge",70,"Missile2")
		AFRO FFFFFFFFFFFFFFF 1 A_JumpIf(z-floorz>0, "JumpingMissile")
		goto Spawn
		
		JumpingMissile:
		AFRO IIIIIIIIIIIIIII 1 A_JumpIf(z-floorz<=0, "Missile")
		goto Jumping
		
		Missile2:
		AFRO GGGGGGGGGG 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
		goto Spawn
		
		JumpingMissile2:
		AFRO NNNNNNNNNN 1 A_JumpIf(z-floorz<=0, "Missile")
		goto Jumping
		
		Animation1:
		AFRO XLLLLLLLL 1
		goto Spawn+2
		
		Animation2:
		AFRO KLLLLLLLL 1
		goto Spawn+2
		
		Animation3:
		AFRO O 10
		AFRO PO 4
		goto Spawn+2
		
		Animation4:
		AFRO O 6
		
		Animation5:
		AFRO Q 2
		
		Animation6:
		AFRO R 1
		loop
		
		Animation7:
		AFRO S 36
		
		Animation8:
		AFRO RQOOOOO 2
		goto Spawn+2
		
		Animation9:
		AFRO TTTUUUUU 2
		AFRO VVVWWWWW 2
		AFRO AFFFXLLLLLLLL 2
		goto Spawn+2
		
		Animation10:
		AFRO Y 3
		goto Spawn+1
		
		ClassTimeStop:
		AFRO A 0 SetPlayerProperty(0,1,4)
		AFRO A 0 ACS_Execute(528,0)
		AFRO AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
		AFRO A 0 SetPlayerProperty(0,0,4)
		Goto pain+1
		ClassPain:
		AFRO HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
		Goto Spawn+1
		
		Death.FlashBomb:
		Death.GrenademanM1:
		Death.TrioFlashBomb:
		TNT1 A 0 A_SpawnItemEx("DeadFlashedFrostMan",0,0,32,0,0,0,0,1)
		NOFX A 20 ACS_ExecuteAlways(999,0,0)
		NOFX A 1 A_CheckPlayerDone
		wait

		ClassDeath:
		TNT1 A 0 A_SpawnItemEx("DeadFrostMan",0,0,0,0,0,0,0,1)
		AFRO Z 20 ACS_ExecuteAlways(999,0,0)
		NOFX A 1 A_CheckPlayerDone
		wait
		ClassIceDeath:
		AFRO A 35
		NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
		NOFX A 1 A_CheckPlayerDone
		wait
		WeaponGetM:
		CUTM H 0 A_JumpIfInTargetInventory("IceWaveWepM",1,2)
		CUTM H 0 A_GiveToTarget("WeaponGetter")
		CUTM H 0 A_GiveToTarget("IceWaveWepM")
		goto ClassDeath
	}
}

actor DeadFlashedFrostMan
{
PROJECTILE
-NOGRAVITY
+THRUACTORS
+BOUNCEONWALLS
+NOEXPLODEFLOOR
+BOUNCEONCEILINGS
+DONTBLAST
-NOINTERACTION
Gravity 0.5
WallBounceFactor 0.0
height 32
radius 32
scale 2.5
const int OFS = 64;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TUHU A 0 A_PlaySoundEx("weapon/turbowheel","Weapon")
TNT1 A 0 A_Recoil(5)
TNT1 A 0 ThrustThingZ(0,35,0,1)
AFR2 A 2
SpawnB:
AFR2 AAAAAAAA 1 A_JumpIf(momz<=0,"Land")
TNT1 A 1 A_Jump(256,"A1","A2")
wait
A1:
TNT1 A 0 A_SpawnItemEx("FrostFlashBombExplosion",Random(-OFS,OFS),Random(-OFS,OFS),Random(0,OFS))
Goto SpawnB
A2:
TNT1 A 0 A_SpawnItemEx("FrostFlashBombExplosion2",Random(-OFS,OFS),Random(-OFS,OFS),Random(0,OFS))
Goto SpawnB

Land:
AFR2 B 2
LandB:
AFR2 CCCCCCCC 1 A_CheckFloor("Death")
TNT1 A 1 A_Jump(256,"B1","B2")
wait
B1:
TNT1 A 0 A_SpawnItemEx("FrostFlashBombExplosion",Random(-OFS,OFS),Random(-OFS,OFS),Random(0,OFS))
Goto LandB
B2:
TNT1 A 0 A_SpawnItemEx("FrostFlashBombExplosion2",Random(-OFS,OFS),Random(-OFS,OFS),Random(0,OFS))
Goto LandB

Death:
TNT1 A 0 A_PlaySoundEx("frostman/dead","Auto")
TNT1 A 0 A_PlaySoundEx("mm8/dead","Auto")
TNT1 A 0 A_SpawnItemEX("CriticalDeathSpawner",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION)
TNT1 AA 0 A_SpawnItemEx("FrostFlashBombExplosion",Random(-OFS,OFS),Random(-OFS,OFS),Random(0,OFS))
TNT1 AA 0 A_SpawnItemEx("FrostFlashBombExplosion2",Random(-OFS,OFS),Random(-OFS,OFS),Random(0,OFS))
Stop
}
}

actor FrostFlashBombExplosion : BasicExplosion
{
+BRIGHT
Reactiontime 17
Scale 3.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
FLEX A 0 A_PlaySoundEx("weapons/mm8/flashbombexplode", "Auto")
FLEX AB 1 bright 
FLEX CD 1 bright
FLEX EE 0 A_SpawnItemEx("FlashBombFX2",Random(-16, 16),Random(-40, 40), Random(-32, 32),0,0,0,0, SXF_WEPFXCOLOR)
FLEX EF 1 bright A_SpawnItemEx("FlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360), SXF_WEPFXCOLOR)
FLEX EE 0 A_SpawnItemEx("FlashBombFX2",Random(-16, 16),Random(-40, 40), Random(-32, 32),0,0,0,0, SXF_WEPFXCOLOR)
FLEX GF 1 bright A_SpawnItemEx("FlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360), SXF_WEPFXCOLOR)
Goto Pattern1
Pattern1:
FLEX EF 1 bright A_SpawnItemEx("FlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360), SXF_WEPFXCOLOR)
FLEX E 0 A_SpawnItemEx("FlashBombFX2",Random(-16, 16),Random(-16, -40), Random(-32, 32),0,0,0,0, SXF_WEPFXCOLOR)
FLEX GF 1 bright A_SpawnItemEx("FlashBombFX2",Random(-16, 16),Random(16, 40), Random(-32, 32),0,0,0,0, SXF_WEPFXCOLOR)
FLEX G 0 A_SpawnItemEx("FlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360), SXF_WEPFXCOLOR)
Goto DamageNow
Pattern2:
FLEX EF 1 bright A_SpawnItemEx("FlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360), SXF_WEPFXCOLOR)
FLEX E 0 A_SpawnItemEx("FlashBombFX2",Random(-16, 16),Random(32, 64), Random(-32, 40),0,0,0,0, SXF_WEPFXCOLOR)
FLEX E 0 A_SpawnItemEx("FlashBombFX2",Random(-16, 16),Random(-32, -64), Random(-32, 40),0,0,0,0, SXF_WEPFXCOLOR)
FLEX EF 1 bright A_SpawnItemEx("FlashBombFX2",Random(-16, 16),Random(-40, 40), Random(-32, 32),0,0,0,0, SXF_WEPFXCOLOR)
FLEX G 0 A_SpawnItemEx("FlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360), SXF_WEPFXCOLOR)
Goto DamageNow
DamageNow:
FLEX A 0 A_JumpIfInventory("CutterFlag", 12, "Damage3")
FLEX A 0 A_JumpIfInventory("CutterFlag", 4, "Damage2")
Goto Continue
Damage2:
FLEX A 0
Goto Continue
Damage3:
FLEX A 0
Goto Continue
Continue:
FLEX G 0 A_CountDown
FLEX A 0 A_GiveInventory("CutterFlag", 1)
FLEX G 0 A_Jump(256, "Pattern1", "Pattern2")
Goto Death
Death:
FLEX A 0 A_Changeflag("NOGRAVITY", 1)
FLEX G 1 bright
TNT1 A 1 
FLEX D 1 bright
TNT1 A 1 
FLEX D 1 bright
TNT1 A 1 
FLEZ C 1 bright
stop
}
}

actor FrostFlashBombExplosion2 : FrostFlashBombExplosion
{
damagetype "GrenademanM1"
Obituary "$OB_GRENADEMAN1"
Translation "215:215=192:192"
+NOCLIP
-DONTBLAST
+DONTSPLASH
Reactiontime 17
Scale 3.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_PlaySoundEx("weapon/flashbomb", "Auto")
FLEX AB 1 bright 
FLEX CD 1 bright
FLEX EE 0 A_SpawnItemEx("GFlashBombFX2",Random(-16, 16),Random(-40, 40), Random(-32, 32),0,0,0,0,1)
FLEX EF 1 bright A_SpawnItemEx("GFlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360),1)
FLEX EE 0 A_SpawnItemEx("GFlashBombFX2",Random(-16, 16),Random(-40, 40), Random(-32, 32),0,0,0,0,1)
FLEX GF 1 bright A_SpawnItemEx("GFlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360),1)
Goto Pattern1
Pattern1:
FLEX EF 1 bright A_SpawnItemEx("GFlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360),1)
FLEX E 0 A_SpawnItemEx("GFlashBombFX2",Random(-16, 16),Random(-16, -40), Random(-32, 32),0,0,0,0,1)
FLEX GF 1 bright A_SpawnItemEx("GFlashBombFX2",Random(-16, 16),Random(16, 40), Random(-32, 32),0,0,0,0,1)
FLEX G 0 A_SpawnItemEx("GFlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360),1)
Goto DamageNow
Pattern2:
FLEX EF 1 bright A_SpawnItemEx("GFlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360),1)
FLEX E 0 A_SpawnItemEx("GFlashBombFX2",Random(-16, 16),Random(32, 64), Random(-32, 40),0,0,0,0,1)
FLEX E 0 A_SpawnItemEx("GFlashBombFX2",Random(-16, 16),Random(-32, -64), Random(-32, 40),0,0,0,0,1)
FLEX EF 1 bright A_SpawnItemEx("GFlashBombFX2",Random(-16, 16),Random(-40, 40), Random(-32, 32),0,0,0,0,1)
FLEX G 0 A_SpawnItemEx("GFlashBombFX1",0,0,0,random(-7, 7),random(-7, 7),random(-7, 7),random(0,360),1)
Goto DamageNow
DamageNow:
FLEX A 0
Goto Continue
Continue:
FLEX G 0 A_CountDown
FLEX G 0 A_Jump(256, "Pattern1", "Pattern2")
Goto Death
Death:
FLEX A 0 A_Changeflag("NOGRAVITY", 1)
FLEX G 1 bright
TNT1 A 1 
FLEX D 1 bright
TNT1 A 1 
FLEX D 1 bright
TNT1 A 1 
FLEZ C 1 bright
stop
}
}

actor DeadFrostMan : DeadTenguMan
{
meleerange 8865
States
{
Spawn:
AFRO H 0
"####" "#" 0
goto loopit

Death:
TNT1 A 0 A_PlaySoundEx("frostman/dead","Auto")
TNT1 A 0 A_PlaySoundEx("mm8/dead","Auto")
TNT1 A 2 A_SpawnItemEx("FakeDeathFXMM8",0,0,32)
stop
}
}

actor IceWaveBoss : VCBaseWeapon
{
	Weapon.AmmoType "Base28Ammo"
	Weapon.AmmoType2 "BaseAltfireAmmo"
	Weapon.ammouse 4
	Obituary "$OB_FROSTMAN1"
	States
	{
		Ready:
		TNT1 A 0
		FROH B 0 A_JumpIfInventory("BaseAltfireAmmo",28,"Ready.TF")
		FROH B 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) FROH B 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		FROH B 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) FROH B 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		FROH B 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) FROH B 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		FROH B 0 A_GiveInventory("Base28Ammo",1)
		FROH B 0 A_GiveInventory("BaseAltfireAmmo",2)
		goto Ready
		
		Ready.TF:
		FROH B 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) FROH B 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") FROH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_FrostUser1Check")==3,"User1")
		FROH B 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) FROH B 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") FROH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_FrostUser1Check")==3,"User1")
		FROH B 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) FROH B 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") FROH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)*ACS_NamedExecuteWithResult("VC_FrostUser1Check")==3,"User1")
		FROH B 0 A_GiveInventory("Base28Ammo",1)
		FROH B 0 A_GiveInventory("BaseAltfireAmmo",2)
		goto Ready
		
		Deselect:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		FROH B 1 A_Lower
		Loop
		
		Select:
		TNT1 A 0 ACS_ExecuteAlways(991,0,8865)
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		FROH B 1 A_Raise
		Loop
		
		
		User1:
		FRHP EE 1 Offset(0,46) A_JumpIfInventory("FrostWaveHit",1,"User1.B")
		FRHP EEEE 2 Offset(0,60)
		FRHP D 2 Offset(-40,60)
		TNT1 A 0 A_GiveInventory("FrostTFHandler1",1)
		
		User1.Loop:
		FRHP M 1 Offset(-80,60) A_GiveInventory("FrostTFHandler2",1)
		TNT1 A 0 A_JumpIfInventory("SuplexID",1,"ContinueShoulder")
		TNT1 A 0 A_GiveInventory("CutterFlag",1)
		TNT1 A 0 A_JumpIfInventory("CutterFlag",17,"User1.Stop")
		loop
		
		User1.B:
		TNT1 A 0 A_GiveInventory("FrostTFHandler1",1)
		
		User1.LoopB:
		FRHP M 1 Offset(-80,60) A_GiveInventory("FrostTFHandler2",1)
		TNT1 A 0 A_JumpIfInventory("SuplexID",1,"ContinueShoulder")
		TNT1 A 0 A_GiveInventory("CutterFlag",1)
		TNT1 A 0 A_JumpIfInventory("CutterFlag",17,"User1.Stop")
		loop
		
		User1.Stop:
		FROH B 0 A_Stop
		FRHP M 2 A_GiveInventory("FrostTFHandler4",1)
		FRHP D 2 Offset(-40,60)
		FRHP E 2 Offset(0,60)
		TNT1 A 10 A_WeaponReady(WRF_NOFIRE)
		FROH B 2 Offset(0,96)
		FROH B 2 Offset(0,80)
		FROH B 2 Offset(0,64)
		FROH B 2 Offset(0,48)
		goto Ready
		
		ContinueShoulder:
		TNT1 A 0 A_GiveInventory("FrostGrabHandler",1)
		TNT1 A 0 A_GiveInventory("GravityRestore")
		TNT1 A 0 SetPlayerProperty(0,1,4)
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",10)
		TNT1 A 0 A_GiveInventory("FrostHitCheck",1)
		TNT1 A 0 A_SpawnItemEx("FrostWallCheck",8,0,0,momx,momy,momz,0,8)
		TNT1 A 0 A_Recoil(-3)
		TNT1 A 0 A_JumpIfInventory("BaseCustomFlag2",1,"ShoulderSmash")
		TNT1 A 0 A_GiveInventory("CutterFlag",1)
		TNT1 A 0 A_JumpIfInventory("CutterFlag",280,"SuplexEscape")
		TNT1 A 1 A_Jumpif(CallACS("cbm_ZangiefGrab",0,angle*256/360,80)==0,"SuplexEscape")
		goto ContinueShoulder+1
		
		ShoulderSmash:
		TNT1 A 0 A_GiveInventory("FrostTFHandler3",1)
		TNT1 A 0 A_GiveInventory("UranusThrowCancelHandler",1)
		TNT1 A 0 A_GiveInventory("UranusThrowEndHandler",1)
		TNT1 AAAAAAAAAAAA 1 A_TakeInventory("BaseCustomFlag2",999)
		TNT1 A 0 A_GiveInventory("FrostShoulderCooldown",94)
		TNT1 A 0 A_SpawnItemEx("FrostCooldownWatcher")
		Goto User1.Stop+1
		
		SuplexEscape:
		TNT1 A 0 A_GiveInventory("UranusThrowCancelHandler",1)
		TNT1 A 0 A_GiveInventory("UranusThrowEndHandler",1)
		Goto User1.Stop+1
		
		
		Fire:
		FROH CCTDUEE 1
		
		Hold:
		TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
		FROH E 1 A_GiveInventory("FrostManCharge",1)
		FROH E 0 A_JumpIfInventory("FrostManCharge",35,"Hold2a")
		FROH E 0 A_Refire
		goto Fire2
		
		Hold2a:
		FROH E 1 Offset(-1,0) A_GiveInventory("FrostManCharge",1)
		FROH E 0 A_JumpIfInventory("FrostManCharge",70,"Hold3")
		FROH E 0 A_Refire("Hold2b")
		goto Fire2
		
		Hold2b:
		FROH E 1 Offset(1,0) A_GiveInventory("FrostManCharge",1)
		FROH E 0 A_JumpIfInventory("FrostManCharge",70,"Hold3")
		FROH E 0 A_Refire("Hold2a")
		goto Fire2
		
		Hold3:
		FROH E 0 A_PlaySoundEx("weapon/frostcharge","Auto")
		FROH E 0 A_SpawnItemEx("FrostChargeFX",15,0,140)
		
		Hold3a:
		FROH E 1 Offset(-2,0) A_SpawnItemEx("FrostAir",random(15,35),random(-20,20),140,random(-2,2),0,random(-3,0))
		FROH E 0 A_Refire("Hold3b")
		goto Fire2
		
		Hold3b:
		FROH E 1 Offset(2,0) A_SpawnItemEx("FrostAir",random(15,35),random(-20,20),140,random(-2,2),0,random(-3,0))
		FROH E 0 A_Refire("Hold3a")
		goto Fire2
		
		Fire2:
		TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
		FROH B 0 A_WeaponReady(WRF_NOFIRE)
		FROH B 0 A_GunFlash("Flash.LeftArmWave")
		FROH JKL 1
		FROH M 1 A_GiveInventory("FrostM1Handler",1)
		FROH N 19
		goto Ready
		
		
		Altfire:
		RATU A 0 A_JumpIfInventory("NoAltfire",1,"NoAmmo")
		TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
		FRHP M 1 A_GiveInventory("FrostManCharge2",1)
		FRHP M 0 A_JumpIfInventory("FrostManCharge2",0,"AltHold2")
		FRHP M 0 A_Refire
		
		Altfire1:
		TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
		TNT1 A 0 A_GiveInventory("NoSpeed",1)
		TNT1 A 0 A_SetGravity(0.0)
		FANB B 0 ACS_Execute(191,0,APROP_JumpZ,0,1)
		TNT1 A 0 A_Stop
		FRHP D 0 A_GiveInventory("FrostM2Handler1")
		FRHP DEEEEEEEED 1
		FRHP D 0 A_GiveInventory("FrostM2Handler2")
		FRHP ALALALAL 1 A_TakeInventory("FrostManCharge2",999)
		TNT1 A 0 A_TakeInventory("NoSpeed",999)
		TNT1 A 0 A_GiveInventory("GravityRestore")
		FANB B 0 ACS_Execute(191,0,APROP_JumpZ,14,1)
		FRHP AAAAA 1
		FROH B 1
		goto Ready
		
		AltHold2:
		FROH A 0 A_GunFlash("Flash.PunchReady")
		TNT1 A 0 A_PlaySoundEx("weapon/frostcharge","Auto")
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
		FRHP NOOOOPPQQQQ 1
		
		AltHold2a:
		FRHP R 0 ACS_NamedExecuteWithResult("VC_SetState",6)
		FRHP R 1 A_SpawnItemEx("FrostAir",random(-25,25),random(50,70),random(24,64),frandom(-0.5,0.5),frandom(-0.5,0.5),frandom(-1,-2))
		FRHP A 0 A_Refire("AltHold2b")
		goto Altfire2
		
		AltHold2b:
		FRHP U 1 ACS_NamedExecuteWithResult("VC_SetState",6)
		FRHP A 0 A_Refire("AltHold2a")
		goto Altfire2
		
		Altfire2:
		TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",7)
		FRHP S 1 A_GunFlash("Flash.PunchAway")
		FRHP S 0 A_PlaySoundEx("weapon/chargekick","Weapon")
		FRHP S 0 A_PlaySoundEx("weapon/coldfreeze","Body")
		
		Altfire2.Loop:
		TNT1 A 0 A_SpawnItemEx("FrostDust",-5,-29)
		TNT1 A 0 A_SpawnItemEx("FrostDust",-5,20)
		TNT1 A 0 A_SpawnItemEx("FrostPunchHitbox")
		FRHP T 1 A_GiveInventory("FrostAltfireMobility")//A_ChangeVelocity(25,0,momz,CVF_REPLACE|CVF_RELATIVE)
		TNT1 A 0 A_SpawnItemEx("FrostPunchHitbox")
		FRHP V 1 A_GiveInventory("FrostAltfireMobility")//A_ChangeVelocity(25,0,momz,CVF_REPLACE|CVF_RELATIVE)
		TNT1 A 0 A_GiveInventory("CutterFlag",1)
		TNT1 A 0 A_JumpIfInventory("CutterFlag",18,"Altfire2.Stop")
		loop
		
		Altfire2.Stop:
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",8)
		FRHP S 0 SetPlayerProperty(0,1,0)
		TNT1 A 0 A_TakeInventory("CutterFlag",999)
		FRHP RQPO 1 A_ClearRefire
		FRHP SSSSSS 0 A_SpawnItemEx("FrostDebris1",0,60,random(12,48),random(-12,12),random(-12,12),random(3,18))
		FRHP SSSSSS 0 A_SpawnItemEx("FrostDebris2",0,60,random(12,48),random(-12,12),random(-12,12),random(3,18))
		TNT1 A 7 A_TakeInventory("FrostManCharge2",999)
		FROH B 2 Offset(0,96) A_TakeInventory("FrostManCharge2",999)
		FROH B 2 Offset(0,80) A_TakeInventory("FrostManCharge2",999)
		FROH B 2 Offset(0,64) A_TakeInventory("FrostManCharge2",999)
		FROH B 2 Offset(0,48) A_TakeInventory("FrostManCharge2",999)
		FROH S 0 SetPlayerProperty(0,0,0)
		goto Ready
		
		
		UltimateAttack:
		TNT1 A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
		TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,69)
		TNT1 A 0 A_GiveInventory("WindUltCooldown")
		FRO2 B 0 ThrustThingZ(0,30,0,0)
		FRO2 B 1 Offset(0,36)
		FRO2 B 1 Offset(0,48)
		FRO2 B 1 Offset(0,64)
		
		Ult.Wait:
		TNT1 A 0 A_GiveInventory("WindUltCooldown")
		FRO2 B 1 A_CheckFloor("Ult.Start")
		loop
		
		Ult.Start:
		TNT1 A 0 A_GiveInventory("InvProtection",1)
		TNT1 A 0 A_ChangeFlag("INVULNERABLE",1)
		FANB B 0 ACS_Execute(191,0,APROP_JumpZ,0,1)
		TNT1 A 0 A_GiveInventory("NoPushFlag")
		TNT1 A 0 A_Stop
		FRO2 B 1 Offset(0,72) A_GiveInventory("NoSpeed")
		FRO2 B 1 Offset(0,64)
		FRO2 B 1 Offset(0,48)
		FRO2 B 1 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",9)
		FROH V 6 A_GunFlash("Flash.Ult")
		FROH V 0 A_GiveInventory("FrostUltHandler",1)
		FROH VVVVVVVVVVVVVVVVVVVV 0 A_SpawnItemEx("FrostAir",20,-40,random(0,10),random(5,20),random(-5,5),random(0,15))
		FROH JJJJJJJJJJJJJKLM 1 A_GiveInventory("WindUltCooldown")
		FROH VVVVVVVVVVVVVVVVVVVV 0 A_SpawnItemEx("FrostAir",20,40,random(0,10),random(5,20),random(-5,5),random(0,15))
		FROH N 10 A_GiveInventory("FrostUltHandler",1)
		FROH BCTDUEJKLM 1 A_GiveInventory("WindUltCooldown")
		FROH VVVVVVVVVVVVVVVVVVVV 0 A_SpawnItemEx("FrostAir",20,random(-25,25),random(0,10),random(5,20),random(-5,5),random(0,15))
		FROH N 12 A_GiveInventory("FrostUltHandler",1)
		FRO2 B 3 A_GiveInventory("WindUltCooldown")
		TNT1 A 0 A_TakeInventory("InvProtection",1)
		TNT1 A 0 A_ChangeFlag("INVULNERABLE",0)
		TNT1 A 0 A_TakeInventory("NoSpeed")
		TNT1 A 0 A_TakeInventory("NoPushFlag")
		FROH B 1 ACS_Execute(191,0,APROP_JumpZ,14,1)
		goto Ready
		
		
		Flash.LeftArmWave:
		FROH OPQRSSSSSSSSSSSSSSSSSSS 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		stop
		
		Flash.PunchReady:
		FRHP FGHI 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		
		Flash.PunchLoop:
		FRHP I 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		loop
		
		Flash.PunchAway:
		FRHP HGF 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		stop
		
		Flash.Ult:
		FROH OOOPQRSSSSSSSSSSWWWWWWWWWWWWWWWWZZZZZZOPQRSSSSSSSSSSSS 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		stop
	}
}

actor FrostManCharge : Ammo
{
	inventory.amount 1
	inventory.maxamount 70
	+INVENTORY.IGNORESKILL
}

actor FrostManCharge2 : Ammo
{
	inventory.amount 1
	inventory.maxamount 52
	+INVENTORY.IGNORESKILL
}

actor FrostChargeFX : BasicClientSide
{
-NOINTERACTION
-NOGRAVITY
gravity 0.1
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
FR8C BBBBBBBBBBBBBBBB 0 A_SpawnItemEx("FrostAir",16,0,random(-32,32),random(6,8),0,random(-7,7),random(0,359))
FR8C B 2
FR8C AAAAAAAAAAAAAAAAAAAA 1 A_FadeOut(0.05)
stop
}
}

actor FrostWave1
{
PROJECTILE
speed 20
radius 16
height 1
+THRUACTORS
+FLOORHUGGER
+DONTREFLECT
reactiontime 12
States
{
Spawn:
TNT1 A 0
loopit:
TNT1 A 0 A_SpawnItemEx("FrostWaveSpike1")
TNT1 AAAA 1 A_SpawnItemEx("IcePitFreeze")
TNT1 A 0 A_Countdown
loop
}
}

actor FrostWave2 : FrostWave1
{
speed 30
reactiontime 24
States
{
Spawn:
TNT1 A 0
loopit:
TNT1 A 0 A_SpawnItemEx("FrostWaveSpike1")
TNT1 AAA 1 A_SpawnItemEx("IcePitFreeze")
TNT1 A 0 A_Countdown
loop
}
}

actor FrostWave3 : FrostWave1
{
speed 40
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_PlaySoundEx("weapon/icewaveloop","Body",1)
loopit:
TNT1 A 0 A_SpawnItemEx("FrostWaveSpike2")
TNT1 AA 1 A_SpawnItemEx("IcePitFreeze")
loop
}
}

actor FrostWaveSpike1
{
Obituary "$OB_FROSTMAN1"
PROJECTILE
+FLOORHUGGER
radius 32
height 64
damage(9)
scale 2.5
damagetype "FrostmanWave"
+DONTREFLECT
+DONTBLAST
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
FR8W B 0 A_PlaySoundEx("weapon/frostwavespawn","Auto")
FR8W BCDEEEEE 2 A_SpawnItemEx("IcePitFreeze")
Death:
FR8W F 2 A_PlaySoundEx("weapon/frostwavebreak","Body")
stop
}
}

actor FrostWaveSpike2 : FrostWaveSpike1
{
damage(12)
damagetype "FrostmanFreeze"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
FR8W B 0 A_PlaySoundEx("weapon/frostwavespawn","Auto")
FR8W B 0 A_SpawnItemEx("IcePitFreeze")
FR8W BBBBBBBB 0 A_SpawnItemEx("FrostAir",random(0,24),0,random(0,64),random(0,2),0,0,random(0,359))
FR8W BCDEEEEE 2 A_SpawnItemEx("FrostAir",random(0,24),0,random(0,64),random(0,2),0,0,random(0,359))
Death:
FR8W FFFFFFFF 0 A_SpawnItemEx("FrostAir",random(0,24),0,random(0,64),random(0,2),0,0,random(0,359))
FR8W F 2 A_PlaySoundEx("weapon/frostwavebreak","Body")
stop
}
}

actor FrostmanWaveProtect : PowerProtection
{
Powerup.Duration 2
DamageFactor "FrostmanWave", 0.0
DamageFactor "FrostmanFreeze", 0.0
}

actor FrostM1Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/icewavespawn","Weapon")
TNT1 A 0 A_JumpIfInventory("FrostManCharge",70,"Pickup3")
TNT1 A 0 A_JumpIfInventory("FrostManCharge",35,"Pickup2")
TNT1 A 0 A_FireCustomMissile("FrostWave1",0,1,-18,0)
TNT1 A 0 A_FireCustomMissile("FrostWave1",0,0,18,0)
TNT1 A 0 A_TakeInventory("FrostManCharge",999)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
stop

Pickup2:
TNT1 A 0 A_FireCustomMissile("FrostWave2",0,1,-18,0)
TNT1 A 0 A_FireCustomMissile("FrostWave2",0,0,18,0)
TNT1 A 0 A_TakeInventory("FrostManCharge",999)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
stop

Pickup3:
TNT1 A 0 A_FireCustomMissile("FrostWave3",0,1,-18,0)
TNT1 A 0 A_FireCustomMissile("FrostWave3",0,0,18,0)
TNT1 A 0 A_PlaySoundEx("weapon/blizzardbowl","Body")
TNT1 A 0 A_Quake(4,15,0,100)
TNT1 A 0 A_TakeInventory("FrostManCharge",999)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
stop
}
}

actor FrostAir : BasicClientSide
{
-NOINTERACTION
-NOGRAVITY
gravity 0.2
alpha 0.9
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
FR9F A 5
FR9F BBBCCC 1 A_FadeOut(0.14)
stop
}
}

actor FrostFreezeFX : BasicClientSide
{
PROJECTILE
-CLIENTSIDEONLY
+NOINTERACTION
+NOCLIP
scale 0.0
renderstyle add
var int User_PosX;
var int User_PosZ;
var int User_Angle;
reactiontime 31
bouncefactor 0.9
bouncecount 5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetUserVar(User_PosX,random(20,24))
TNT1 A 0 A_SetUserVar(User_PosZ,random(0,64))
TNT1 A 0 A_SetUserVar(User_Angle,random(0,359))
TNT1 A 0 A_Jump(256,"S_1","S_2","S_3","S_4")
S_1:
FR8B D 0 A_SetScale(scalex+0.5,scaley+0.5)
FR8B D 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B D 0 A_SetScale(scalex+0.5,scaley+0.5)
FR8B D 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B D 0 A_SetScale(scalex+0.5,scaley+0.5)
FR8B D 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B D 0 A_SetScale(scalex+0.5,scaley+0.5)
FR8B D 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B D 0 A_SetScale(scalex+0.5,scaley+0.5)
S_1b:
FR8B D 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
FR8B D 0 A_JumpIfInTargetInventory("HitByFrostShoulder2",1,"Death2")
FR8B D 0 A_JumpIfInTargetInventory("HitByFrostShoulder1",1,"S_1b")
FR8D D 0 A_Countdown
goto S_1b
S_2:
FR8B E 0 A_SetScale(scalex+0.5,scaley+0.5)
FR8B E 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B E 0 A_SetScale(scalex+0.5,scaley+0.5)
FR8B E 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B E 0 A_SetScale(scalex+0.5,scaley+0.5)
FR8B E 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B E 0 A_SetScale(scalex+0.5,scaley+0.5)
FR8B E 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B E 0 A_SetScale(scalex+0.5,scaley+0.5)
S_2b:
FR8B E 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
FR8B E 0 A_JumpIfInTargetInventory("HitByFrostShoulder2",1,"Death2")
FR8B E 0 A_JumpIfInTargetInventory("HitByFrostShoulder1",1,"S_2b")
FR8D E 0 A_Countdown
goto S_2b
S_3:
FR8B F 0 A_SetScale(scalex+0.5,scaley+0.5)
FR8B F 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B F 0 A_SetScale(scalex+0.5,scaley+0.5)
FR8B F 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B F 0 A_SetScale(scalex+0.5,scaley+0.5)
FR8B F 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B F 0 A_SetScale(scalex+0.5,scaley+0.5)
FR8B F 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B F 0 A_SetScale(scalex+0.5,scaley+0.5)
S_3b:
FR8B F 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
FR8B F 0 A_JumpIfInTargetInventory("HitByFrostShoulder2",1,"Death2")
FR8B F 0 A_JumpIfInTargetInventory("HitByFrostShoulder1",1,"S_3b")
FR8D F 0 A_Countdown
goto S_3b
S_4:
FR8B G 0 A_SetScale(scalex+0.5,scaley+0.5)
FR8B G 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B G 0 A_SetScale(scalex+0.5,scaley+0.5)
FR8B G 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B G 0 A_SetScale(scalex+0.5,scaley+0.5)
FR8B G 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B G 0 A_SetScale(scalex+0.5,scaley+0.5)
FR8B G 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B G 0 A_SetScale(scalex+0.5,scaley+0.5)
S_4b:
FR8B G 1 A_Warp(AAPTR_TARGET,User_PosX,0,User_PosZ,User_Angle,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE|WARPF_ABSOLUTEANGLE)
FR8B G 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
FR8B G 0 A_JumpIfInTargetInventory("HitByFrostShoulder2",1,"Death2")
FR8B G 0 A_JumpIfInTargetInventory("HitByFrostShoulder1",1,"S_4b")
FR8D G 0 A_Countdown
goto S_4b
Death2:
"####" "#" 0 A_ChangeFlag("NOCLIP",0)
"####" "#" 0 A_ChangeFlag("NOINTERACTION",0)
"####" "#" 0 A_ChangeFlag("NOGRAVITY",0)
"####" "#" 70 A_ChangeVelocity(random(-20,20),random(-20,20),random(-4,18))
Death:
TNT1 A 0
stop
}
}

actor FrostFreezeWatcher
{
PROJECTILE
+NOINTERACTION
-DONTBLAST
Scale 3.0
reactiontime 35
states
{
Spawn:
TNT1 A 1 A_GiveToTarget("MovementFrozen3",1)
TNT1 A 0 A_JumpIfInTargetInventory("HitByFrostShoulder1",1,"Death2")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 0 A_TakeFromTarget("FreezeVision")
TNT1 A 0 A_TakeFromTarget("FrostFreezeFlag",1)
TNT1 AAA 1 A_GiveToTarget("MovementReturnFailsafe",1)
Death2:
TNT1 A 0
stop
}
}

actor FrostFreezeFlag : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor HitByFrostShoulder1 : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor HitByFrostShoulder2 : Powerup
{
Powerup.Duration 17
}

actor FrostWaveHit : Powerup
{
Powerup.Duration 35
}

actor FrostM2Handler1 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
TNT1 A 0 A_Jump(26,"Pickup2")
TNT1 A 0 A_SpawnItemEx("FrostBlockFX",40,0,400)
stop

Pickup2:
TNT1 A 0 A_GiveInventory("VC_Timer",1)
TNT1 A 0 A_SpawnItemEx("FrostBlockFX2",40,0,400)
stop
}
}

actor FrostM2Handler2 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/frostpunch","Body")
TNT1 A 0 A_TakeInventory("FrostManCharge2",999)
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",28)
TNT1 A 0 A_JumpIfInventory("VC_Timer",1,"Pickup2")
TNT1 A 0 A_FireCustomMissile("FrostManBlock",0,0,0,-16)
stop

Pickup2:
TNT1 A 0 A_FireCustomMissile("FrostManBlock2",0,0,0,-16)
TNT1 A 0 A_TakeInventory("VC_Timer",999)
stop
}
}

actor FrostManBlock
{
Obituary "$OB_FROSTMAN2"
PROJECTILE
scale 2.5
radius 24
height 56
speed 50
damage(23)
+NOEXPLODEFLOOR
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
FR8B B 1 A_CheckFloor("Slide")
goto Spawn+3

Slide:
"####" B 0 A_ChangeVelocity(30,0,0,CVF_RELATIVE|CVF_REPLACE)
"####" B 0 A_ChangeFlag("BOUNCEONCEILINGS",1)
"####" B 0 A_ChangeFlag("NOGRAVITY",0)

loopit:
"####" B 1 A_SpawnItemEx("IcePitFreeze")
loop

Death:
"####" C 0 A_SpawnItemEx("IcePitFreeze")
"####" C 2 A_ChangeFlag("NOGRAVITY",1)
TNT1 AAAAAA 0 A_SpawnItemEx("FrostDebris1",32,0,random(0,32),random(7,16),0,random(7,21),random(0,359))
TNT1 AAAAAA 0 A_SpawnItemEx("FrostDebris2",32,0,random(0,32),random(7,16),0,random(7,21),random(0,359))
TNT1 A 0 A_PlaySoundEx("weapon/icewavebreak","Body")
TNT1 A 2 A_PlaySound("crystalman/break","Auto",0.3)
stop
}
}

actor FrostManBlock2 : FrostManBlock
{
Obituary "$OB_FROSTMAN5"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
FR8M B 1 A_CheckFloor("Slide")
goto Spawn+3
}
}

actor FrostDebris1
{
+MISSILE
+THRUACTORS
scale 2.5
bouncetype Doom
bouncefactor 0.9
bouncecount 3
+USEBOUNCESTATE
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_Jump(256,"S_1","S_2","S_3","S_4")
goto S_1
S_1:
TNT1 A 1 A_GiveInventory("WeaponCharge",1)
FR8B D 1
loop
S_2:
TNT1 A 1 A_GiveInventory("CutterFlag",1)
FR8B E 1
loop
S_3:
TNT1 A 1 A_GiveInventory("VC_Timer",1)
FR8B F 1
loop
S_4:
TNT1 A 1 A_GiveInventory("DrillFlag",1)
FR8B G 1
loop
Bounce:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"StopIt")
TNT1 A 0 A_GiveInventory("BaseCustomFlag1",1)
TNT1 A 0 A_JumpIfInventory("WeaponCharge",1,"S_1")
TNT1 A 0 A_JumpIfInventory("CutterFlag",1,"S_2")
TNT1 A 0 A_JumpIfInventory("VC_Timer",1,"S_3")
TNT1 A 0 A_JumpIfInventory("DrillFlag",1,"S_4")
goto S_1
StopIt:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
TNT1 A 0 A_JumpIfInventory("WeaponCharge",1,"Death1")
TNT1 A 0 A_JumpIfInventory("CutterFlag",1,"Death2")
TNT1 A 0 A_JumpIfInventory("VC_Timer",1,"Death3")
TNT1 A 0 A_JumpIfInventory("DrillFlag",1,"Death4")
Death1:
FR8B DZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZDZ 1 ThrustThingZ(0,6,1,1)
stop
Death2:
FR8B EZEZEZEZEZEZEZEZEZEZEZEZEZEZEZEZEZEZEZEZ 1 ThrustThingZ(0,6,1,1)
stop
Death3:
FR8B FZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZFZ 1 ThrustThingZ(0,6,1,1)
stop
Death4:
FR8B GZGZGZGZGZGZGZGZGZGZGZGZGZGZGZGZGZGZGZGZ 1 ThrustThingZ(0,6,1,1)
stop
Death:
TNT1 A 0
stop
}
}

actor FrostDebris2 : FrostDebris1
{
States
{
S_1:
FR8B D 1 A_GiveInventory("WeaponCharge",1)
TNT1 A 1
loop
S_2:
FR8B E 1 A_GiveInventory("CutterFlag",1)
TNT1 A 1
loop
S_3:
FR8B F 1 A_GiveInventory("VC_Timer",1)
TNT1 A 1
loop
S_4:
FR8B G 1 A_GiveInventory("DrillFlag",1)
TNT1 A 1
loop
}
}

actor FrostBlockFX : BasicClientSide
{
var int User_PosZ;
reactiontime 11
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
FR8B B 0 A_SetUserVar(User_PosZ,330)
goto loopit

loopit:
"####" "#" 0 A_SetUserVar(User_PosZ,User_PosZ-30)
"####" "#" 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
"####" "#" 1 A_Warp(AAPTR_TARGET,60,0,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
"####" "#" 0 A_Countdown
loop

Death:
TNT1 A 0
stop
}
}

actor FrostBlockFX2 : FrostBlockFX
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
FR8M B 0 A_SetUserVar(User_PosZ,300)
goto loopit
}
}

actor FrostUltHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("MediumShortUltimateAmmo",67)
TNT1 A 0 A_SpawnItemEx("FrostPoundHitbox",64)
TNT1 A 0 A_SpawnItemEx("FrostBlockLine",0,-36,0,45,0,0)
TNT1 A 0 A_SpawnItemEx("FrostBlockLine",0,36,0,45,0,0)
TNT1 A 0 A_Quake(5,13,0,400)
TNT1 A 0 A_PlaySound("misc/bigstomp","Weapon",10.0)
TNT1 A 0 A_TakeInventory("UltAttackFlag")
stop
}
}

actor FrostBlockLine
{
PROJECTILE
speed 20
radius 26
height 58
+THRUACTORS
+FLOORHUGGER
+DONTREFLECT
States
{
Spawn:
TNT1 A 0
TNT1 AAAAAAAAAAAAA 2 A_SpawnItemEx("FrostBlockChecker",0,0,0,0,0,120)
stop
}
}

actor FrostBlockChecker : FrostBlockLine
{
+SKYEXPLODE
-FLOORHUGGER
States
{
Spawn:
TNT1 A 2
Death:
TNT1 A 0 A_Jump(64,"Death2")
TNT1 A 0 A_SpawnItemEx("FrostDropBlock")
stop
Death2:
TNT1 A 0 A_SpawnItemEx("FrostDropBlock2")
stop
}
}

actor FrostDropBlock : FrostManBlock
{
Obituary "$OB_FROSTMAN4"
-NOEXPLODEFLOOR
-NOGRAVITY
+DONTREFLECT
gravity 1.4
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
FR8B B 1 A_GiveToTarget("WindUltCooldown")
FR8B B 1 A_CheckFloor("Death")
goto Spawn+2
}
}

actor FrostDropBlock2 : FrostDropBlock
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
FR8M B 1 A_GiveToTarget("WindUltCooldown")
FR8M B 1 A_CheckFloor("Death")
goto Spawn+2
}
}

actor FrostPoundHitbox : BasicExplosion
{
Obituary "$OB_FROSTMAN4"
damagetype "FrostUlt"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(60,64,0,0,64)
stop
}
}

actor FrostShoulderCheck
{
+MISSILE
+NOBLOCKMAP
+NOGRAVITY
+NOEXPLODEFLOOR
+DONTBLAST
+DONTREFLECT
+HITTRACER
+THRUGHOST
height 32
radius 32
scale 1.0
renderstyle none
states
{
Spawn:
TNT1 A 0
GUTS A 1
stop
Crash:
XDeath:
TNT1 A 0 A_ChangeFlag("THRUACTORS",1)
TNT1 A 0 A_CheckFlag("FLOORHUGGER","DeathK",8)
TNT1 A 0 A_CheckFlag("INVULNERABLE","DeathK",8)
TNT1 A 0 A_JumpIfInventory("NoPushFlag",1,"DeathK",8)
TNT1 A 0 A_JumpIfInventory("HSHSuctionFlag",1,"DeathK",8)
TNT1 A 0 A_JumpIfInTargetInventory("SuplexID",1,"DeathI")
TNT1 A 0 A_JumpIfInventory("IsPerformingSuplex",1,"DeathJ",8)
TERR A 1 A_JumpIf(ACS_NamedExecuteWithResult("cbm_istracerplayer")==1,"DeathCheck2")
stop
DeathCheck2:
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(975,1)==1,"DeathCheck3")
goto GiveSuplex
DeathCheck3:
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(143,ACS_ExecuteWithResult(147,0),1) == ACS_ExecuteWithResult(143,ACS_ExecuteWithResult(147,1),1),"DeathL")
goto GiveSuplex
GiveSuplex:
TNT1 A 0 A_ChangeFlag("THRUACTORS",1)
TNT1 A 0 A_CheckFlag("FLOORHUGGER","DeathK",8)
/*TNT1 A 0 A_JumpIfInventory("FrostFreezeFlag",1,"GiveSuplexNext",8)
goto DeathI
GiveSuplexNext:*/
TNT1 A 0 A_JumpIfInTargetInventory("SuplexID",1,"DeathI")
TNT1 A 0 A_JumpIfInventory("IsPerformingSuplex",1,"DeathJ",8)
TNT1 A 0 A_GiveToTarget("IsPerformingSuplex",1)
TNT1 A 0 A_GiveToTarget("UranusIsGrabbing",1)
TNT1 A 0 A_GiveToTarget("SuplexID",(ACS_ExecuteWithResult(147,1)-1000)+1)
TNT1 A 0 A_GiveToTarget("NoPushFlag",1)
//TNT1 A 0 A_PlaySoundEx("weapon/iceslasher","Auto")
TNT1 A 0 A_GiveInventory("HitByFrostShoulder1",1,8)
TNT1 A 0 A_GiveInventory("MovementFrozenGrab",1,8)
VENU A 1 //A_GiveInventory("TempPitProtect_P",1,8)
Carry:
TNT1 A 0 //A_GiveInventory("TempPitProtect_P",1,8)
TNT1 A 0 A_GiveInventory("MovementFrozenGrab",1,8)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
ICEM B 1 //A_GiveInventory("TempPitProtect_P",1,8)
ICEM B 0 A_JumpIfInTargetInventory("UranusThrowConfirm",1,"StopCarry2")
ICEM B 0 A_JumpIfInTargetInventory("UranusGrabCancel",1,"StopCarryTerrain")
ICEM B 1 A_JumpIfInTargetInventory("UranusIsGrabbing",1,"Carry")
StopCarry:
ICEM B 1 A_JumpIfInTargetInventory("UranusThrowConfirm",1,"StopCarry2")
ICEM B 1 A_JumpIfInTargetInventory("UranusThrowConfirm",1,"StopCarry2")
ICEM B 1 A_JumpIfInTargetInventory("UranusThrowConfirm",1,"StopCarry2")
ICEM B 1 A_JumpIfInTargetInventory("UranusThrowConfirm",1,"StopCarry2")
goto StopCarryTerrain
StopCarry2:
TNT1 A 0 A_TakeFromTarget("IsPerformingSuplex",999)
HSHZ A 0 A_GiveInventory("UranusMovementReturnWatcherSpawn",1,8)
HSHZ A 1 //A_GiveInventory("TempPitProtect_P",1,8)
stop
StopCarryTerrain:
TNT1 A 0 A_TakeFromTarget("IsPerformingSuplex",999)
HSHZ A 0 //A_GiveInventory("TempPitProtect_P",1,8)
TNT1 A 0 A_GiveInventory("HitByFrostShoulder2",1,8)
TOAM AAA 1 A_GiveInventory("MovementReturnFailSafe",1,8)
TNT1 A 0 A_GiveInventory("FrostUnfreeze",1,8)
stop
DeathI:
GEMI A 1 //A_LOG("FAILED, CAN'T GRAB SOMEONE BEING GRABBED!")
stop
DeathJ:
MERC A 1 //A_LOG("FAILED, CAN'T GRAB SOMEONE GRABBING!")
stop
DeathK:
MERC A 1 //A_LOG("FAILED, CAN'T GRAB SOMEONE DIGGING!")
stop
DeathL:
MERC A 1 //A_LOG("FAILED, CAN'T GRAB ALLIES!")
stop
Death:
TNT1 A 0 A_GiveInventory("HitByFrostShoulder2",1,8)
TOAM AAA 1 A_GiveInventory("MovementReturnFailSafe",1,8)
TNT1 A 0 A_GiveInventory("FrostUnfreeze",1,8)
stop
}
}

actor FrostUnfreeze : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("FreezeVision",1)
TNT1 A 0 A_TakeInventory("FrostFreezeFlag",1)
TNT1 A 0 A_TakeInventory("HitByFrostShoulder1",1)
stop
}
}

actor FrostTFHandler1 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ThrustThingZ(0,0,0,0)
TNT1 A 0 A_GiveInventory("NoSpeed",1)
TNT1 A 0 A_SetGravity(0.0)
FANB B 0 ACS_Execute(191,0,APROP_JumpZ,0,1)
TNT1 A 0 A_PlaySoundEx("weapon/kickcharge","Weapon")
HAZH D 0 A_TakeInventory("UnSolid",1)
HAZH D 0 A_ChangeFlag("SOLID",0)
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",28)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",10)
stop
}
}

actor FrostTFHandler2 : BaseMovement//CustomInventory
{
States
{
itTimeGo://Pickup:
TNT1 A 0 SetPlayerProperty(0,1,4)
TNT1 A 0 A_ChangeVelocity(20,0,momz,CVF_REPLACE|CVF_RELATIVE)
TNT1 A 0 A_SpawnItemEx("FrostShoulderCheck",8,0,0,momx,momy,momz,0,8)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",10)
stop
}
}

actor FrostTFHandler3 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("BaseCustomFlag2",999)
TNT1 A 0 A_TakeInventory("CutterFlag",999)
TNT1 A 0 A_TakeInventory("UranusIsGrabbing",999)
TNT1 A 0 A_Recoil(70)
TNT1 A 0 A_Quake(4,17,0,100)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",10)
TNT1 A 0 A_PlaySoundEx("misc/quake","Auto")
TNT1 A 0 A_JumpIfInventory("FrostWaveHit",1,"Pickup2")
TNT1 A 0 A_SpawnItemEx("FrostSmashHitbox")
stop

Pickup2:
TNT1 A 0 A_PlaySoundEx("weapon/icewavebreak","Body")
TNT1 A 0 A_PlaySound("crystalman/break","Auto",0.3)
TNT1 A 0 A_SpawnItemEx("FrostSmashHitbox2")
stop
}
}

actor FrostTFHandler4 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("NoSpeed",999)
TNT1 A 0 A_GiveInventory("GravityRestore")
FANB B 0 ACS_Execute(191,0,APROP_JumpZ,14,1)
TNT1 A 0 A_SpawnItemEx("ReSolidifier")
TNT1 A 0 A_TakeInventory("CutterFlag",999)
FROH B 0 SetPlayerProperty(0,0,4)
TNT1 A 0 A_TakeInventory("FrostWaveHit",999)
stop
}
}

actor FrostWallCheck
{
PROJECTILE
radius 32
height 32
+THRUACTORS
+NOEXPLODEFLOOR
States
{
Spawn:
TNT1 A 1
stop
Death:
TNT1 A 0 A_GiveToTarget("BaseCustomFlag2",1)
XDeath:
TNT1 A 0
stop
}
}

actor FrostSmashHitbox : BasicExplosion
{
Obituary "$OB_FROSTMAN6"
damagetype "FrostSmash"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(25,100,0,0,100)
stop
}
}

actor FrostSmashHitbox2 : FrostSmashHitbox
{
damagetype "FrostSmash2"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(40,100,0,0,100)
stop
}
}

actor FrostDust : BasicClientSide
{
renderstyle translucent
alpha 0.8
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_CheckFloor("Spawn2")
stop
Spawn2:
6SMO ABC 2
stop
}
}

actor FrostPunchHitbox : BasicExplosion
{
Obituary "$OB_FROSTMAN3"
damagetype "FrostPunch"
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("IcePitFreeze")
TNT1 A 1 A_Explode(37,40,0,0,40)
stop
}
}

actor FrostPunchProtect : PowerProtection
{
Powerup.Duration 40
DamageFactor "FrostPunch", 0.0
}

actor FrostHitCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("FrostWaveHit",1,"Pickup2")
stop

Pickup2:
TNT1 A 0 A_GiveInventory("FrostWaveHit",1)
stop
}
}

actor FrostCooldownWatcher
{
PROJECTILE
+NOINTERACTION
-DONTBLAST
reactiontime 94
states
{
Spawn:
TNT1 A 0
TNT1 A 1 A_TakeFromTarget("FrostShoulderCooldown",1)
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 0
stop
}
}

actor FrostShoulderCooldown : Inventory
{
inventory.amount 1
inventory.maxamount 94
}

actor FrostGrabHandler : CustomInventory //Same as Uranus but no pit protect. -Fr3ak
{
States
{
Pickup:
TNT1 A 0 ACS_NamedExecuteAlways("cbm_ZangiefStartGrab",0,CallACS("cbm_ZangiefCountInv",2)+999)
TNT1 A 0 A_GiveInventory("UranusIsLunging")
TNT1 A 0 A_GiveInventory("IsPerformingSuplex")
TNT1 A 0 A_TakeInventory("UranusIsLunging",999)
stop
}
}

actor FrostAltfireMobility : BaseMovement
{
states
{
itTimeGo:
TNT1 A 0 A_ChangeVelocity(CallACS("VC_XYMob",25),0,momz,CVF_RELATIVE|CVF_REPLACE)
stop
}
}