actor Iceman : VCBaseClass
{
	Player.ScoreIcon "ICEMMUGS"
	player.startitem "BaseFlagPack", 1
	player.startitem "NormalArmor"
	player.soundclass "icemanc"
	Player.ViewHeight 45
	player.displayname "Iceman"
	player.jumpz 12
	player.startitem "IsFromMM1"
	player.startitem "IceSlasherBoss"
	player.startitem "Base28Ammo", 28
	player.startitem "BaseAltfireAmmo", 112
	player.startitem "UltimateAttackItem2", 1
	player.startitem "UltSoundWatcherSpawn2"
	States
	{
		Spawn:
		ICEM A 0
		ICEM B 1 A_JumpIf(z-floorz>0, "Jumping")
		ICEM A 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn+2
		
		See:
		ICEM B 0 A_Jump
		ICEM BBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn
		
		Jumping:
		ICEM K 1 A_JumpIf(z-floorz<=0, "Spawn")
		wait
		
		Animation1:
		Missile:
		ICEM FFFFF 1 A_JumpIf(z-floorz>0, "JumpingMissile")
		Missile2:
		ICEM GGGG 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
		Goto Spawn+1
		
		JumpingMissile:
		ICEM LLLLL 1 A_JumpIf(z-floorz<=0, "Missile")
		JumpingMissile2:
		ICEM MMMM 1 A_JumpIf(z-floorz<=0, "Missile2")
		Goto Jumping
		
		Animation2:
		ICEM N 40
		goto Spawn+1
		
		ClassTimeStop:
		ICEM Z 0 SetPlayerProperty(0,1,4)
		ICEM Z 0 ACS_Execute(528,0)
		ICEM AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
		ICEM Z 0 SetPlayerProperty(0,0,4)
		Goto pain+1
		ClassPain:
		ICEM HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
		Goto Spawn+1
		ClassDeath:
		ICEM ] 0 A_JumpIfInventory("IsUsingAltSkin1",1,"ClassDeath.Alt")
		ICEM ] 8 ACS_ExecuteAlways(999,0,0)
		ICEM ] 12 A_SpawnItemEx("MM1Death")
		ICEM ] 0 A_PlayerScream
		ICEM Z 0 A_SpawnItemEx("FakeDeathFXMM1",0,0,32)
		ICEM Z 1 A_CheckPlayerDone
		wait
		ClassDeath.Alt:
		TNT1 A 0 A_SpawnItemEx("DeadBFIceMan",0,0,0,0,0,0,0,1)
		ICEM Z 20 ACS_ExecuteAlways(999,0,0)
		NOFX A 1 A_CheckPlayerDone
		wait
		ClassIceDeath:
		ICEM A 35
		ICEM Z 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
		ICEM Z 1 A_CheckPlayerDone
		wait
		WeaponGetM:
		CUTM H 0 A_JumpIfInTargetInventory("IceSlasherWepM",1,2)
		CUTM H 0 A_GiveToTarget("WeaponGetter")
		CUTM H 0 A_GiveToTarget("IceSlasherWepM")
		goto ClassDeath
	}
}

actor DeadBFIceMan
{
PROJECTILE
+MISSILE
species "DeadBody"
+THRUSPECIES
+THRUACTORS
+NOGRAVITY
-NOEXPLODEFLOOR
+NOINTERACTION
scale 2.5
reactiontime 15
States
{
Spawn:
ICBF ] 0
"####" "#" 0 A_PlaySoundEx("classes/bfdeathhit","Auto")
goto Spawn2

Spawn2:
"####" "#" 14
"####" "#" 34// A_SpawnItemEx("FakeDeathFXBF")
TNT1 A 2 A_PlaySoundEx("classes/bfdeath","Auto")
stop
}
}

actor IceSlasherBoss : VCBaseWeapon
{
	Weapon.AmmoUse 1
	Weapon.AmmoGive 28
	Obituary "$OB_ICEMAN1"
	weapon.ammotype2 "BaseAltfireAmmo"
	States
	{
		Ready:
		TNT1 A 0
		ICEB A 0 A_JumpIfInventory("BaseAltfireAmmo",112,"Ready.TF")
		ICEB A 1 A_WeaponReady ICEB A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") 
		ICEB A 1 A_WeaponReady ICEB A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") 
		ICEB A 0 A_GiveInventory("Base28Ammo",1)
		ICEB A 0 A_GiveInventory("BaseAltfireAmmo",3)
		Goto Ready+1
		Ready.TF:
		TNT1 A 0
		ICEB A 1 A_WeaponReady TIMH H 0 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1") ICEB A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") 
		ICEB A 1 A_WeaponReady TIMH H 0 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1") ICEB A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") 
		ICEB A 0 A_GiveInventory("Base28Ammo",1)
		ICEB A 0 A_GiveInventory("BaseAltfireAmmo",3)
		Goto Ready+1
		Deselect:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		CUTA A 1 A_Lower
		Loop
		Select:
		TNT1 A 0
		TNT1 A 0 A_GunFlash
		TNT1 A 0 ACS_ExecuteAlways(991,0,722)
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		ICEB A 1 A_Raise
		Loop
		
		User1:
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		ICEB BC 2
		ICEB A 0 A_PlaySoundEx("weapon/iceslasher","Weapon")
		ICEB A 0 A_PlaySoundEx("weapon/iceball","Body")
		ICEB A 0 A_TakeInventory("BaseAltfireAmmo",112)
		ICEB F 0 A_GiveInventory("IceBallHandler")
		ICEB F 1 Offset(4,30)
		ICEB F 1 Offset(1,33)
		ICEB F 1 Offset(4,36)
		ICEB F 1 Offset(2,31)
		ICEB F 1 Offset(1,33)
		ICEB F 1 Offset(2,32)
		ICEB CCCBA 2 A_WeaponReady(WRF_NOFIRE)
		Goto Ready
		Fire:
		ICEB A 0 A_JumpIfNoAmmo("NoAmmo")
		ICEB AABBCCCCC 1 A_SetGravity(0.5)
		Hold:
		ICEB A 0 A_JumpIfNoAmmo("NoAmmo")
		DKC1 A 0 A_JumpIfHealthLower(50,"Hold4")
		DKC1 A 0 A_JumpIfHealthLower(75,"Hold3")
		DKC1 A 0 A_JumpIfHealthLower(90,"Hold2")
		//ICEB ABC 3
		ICEB A 0 A_PlaySoundEx("weapon/iceslasher","Weapon")
		ICEB A 0 A_GiveInventory("BaseAltfireAmmo",4)
		ICEB F 0 A_FireCustomMissile("IceSlasherFreeze",0,1,0,0)
		ICEB F 1 Offset(4,30)
		ICEB F 1 Offset(1,33)
		ICEB F 1 Offset(4,36)
		ICEB C 14 A_WeaponReady(WRF_NOFIRE)
		BOMT A 0 A_GiveInventory("BaseAltFireAmmo",4)
		ICEB C 0 A_Refire
		ICEB A 0 A_ClearRefire
		ICEB A 0 A_GiveInventory("GravityRestore")
		Goto Ready
		Hold2:
		ICEB A 0 A_JumpIfNoAmmo("NoAmmo")
		DKC1 A 0 A_JumpIfHealthLower(50,"Hold4")
		DKC1 A 0 A_JumpIfHealthLower(75,"Hold3")
		ICEB A 0 A_PlaySoundEx("weapon/iceslasher","Weapon")
		ICEB A 0 A_GiveInventory("BaseAltfireAmmo",4)
		ICEB F 0 A_FireCustomMissile("IceSlasherFreeze",0,1,0,0)
		ICEB F 1 Offset(4,30)
		ICEB F 1 Offset(1,33)
		ICEB F 1 Offset(4,36)
		ICEB C 12 A_WeaponReady(WRF_NOFIRE)
		ICEB C 0 A_Refire
		ICEB A 0 A_ClearRefire
		ICEB A 0 A_GiveInventory("GravityRestore")
		Goto Ready
		Hold3:
		ICEB A 0 A_JumpIfNoAmmo("NoAmmo")
		DKC1 A 0 A_JumpIfHealthLower(50,"Hold4")
		ICEB A 0 A_PlaySoundEx("weapon/iceslasher","Weapon")
		ICEB A 0 A_PlaySoundEx("weapon/iceslasherbf","Body")
		ICEB A 0 A_GiveInventory("BaseAltfireAmmo",4)
		ICEB F 0 A_FireCustomMissile("IceSlasher2",0,1,0,0)
		ICEB F 1 Offset(4,30)
		ICEB F 1 Offset(1,33)
		ICEB F 1 Offset(4,36)
		ICEB C 10 A_WeaponReady(WRF_NOFIRE)
		ICEB C 0 A_Refire
		ICEB A 0 A_ClearRefire
		ICEB A 0 A_GiveInventory("GravityRestore")
		Goto Ready
		Hold4:
		ICEB A 0 A_JumpIfNoAmmo("NoAmmo")
		ICEB A 0 A_PlaySoundEx("weapon/iceslasher","Weapon")
		ICEB A 0 A_PlaySoundEx("weapon/iceslasherbf","Body")
		ICEB A 0 A_GiveInventory("BaseAltfireAmmo",4)
		ICEB F 0 A_FireCustomMissile("IceSlasher2",0,1,0,0)
		ICEB F 1 Offset(4,30)
		ICEB F 1 Offset(1,33)
		ICEB F 1 Offset(4,36)
		ICEB C 6 A_WeaponReady(WRF_NOFIRE)
		ICEB C 0 A_Refire
		ICEB A 0 A_ClearRefire
		ICEB A 0 A_GiveInventory("GravityRestore")
		Goto Ready
		Altfire:
		RATU A 0 A_JumpIfInventory("NoAltfire",1,"NoAmmo")
		ICEB A 0 A_JumpIfInventory("BaseAltfireAmmo",37,"AltfireStart")
		Goto NoAmmo
		AltfireStart:
		ICEB A 1 Offset(0,44) A_FireCustomMissile("IciclePreview",0,0,0,0)
		ICEB A 0 A_Refire("AltfireStart")
		ICEB A 0 A_FireCustomMissile("IcicleMark",0,0,0,0)
		ICEB A 2 A_TakeInventory("BaseAltfireAmmo",37)
		ICEB A 0 A_ClearRefire
		ICEB A 20 A_WeaponReady(WRF_NOSECONDARY)
		Goto Ready
		UltimateAttack:
		TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,5)
		CUTA A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
		ICEB D 23
		ICEB D 1 Offset(2,32)
		ICEB D 1 Offset(1,33)
		ICEB D 1 Offset(2,31)
		ICEB D 1 Offset(2,32)
		ICEB D 1 Offset(1,33)
		ICEB D 1 Offset(2,31)
		ICEB D 1 Offset(2,32)
		ICEB D 1 Offset(1,33)
		ICEB D 1 Offset(2,31)
		ICEB D 1 Offset(4,36)
		ICEB D 1 Offset(1,33)
		ICEB D 1 Offset(4,30)
		TNT1 A 0 A_WeaponReady(WRF_NOFIRE)
		ICEB A 0 A_GiveInventory("IceUltBuildCooldownGiver",1)
		ICEB A 0 A_SpawnItemEx("IceLaserStart",0,0,20,0,0,3)
		ICEB E 0 A_PlaySoundEx("weapon/icelaser","Item")
		ICEB E 0 A_PlaySoundEx("weapon/freezecracker","Body")
		ICEB E 5 A_PlaySoundEx("weapon/icewallspawn","Weapon")
		ICEB E 0 A_StopSoundEx(CHAN_WEAPON)
		ICEB D 5
		ICEB A 2
		ICEB A 0 A_TakeInventory("UltAttackFlag",1)
		ICEB A 0 A_TakeInventory("MediumShortUltimateAmmo",200)
		goto Ready
		NoAmmo:
		ICEB A 0 A_ClearRefire
		ICEB A 0 A_GiveInventory("GravityRestore")
		ICEB A 0 A_GiveInventory("Base28Ammo",1)
		ICEB A 2 A_GiveInventory("BaseAltfireAmmo",3)
		Goto Ready
		Flash:
		TNT1 A 1 A_GiveInventory("IceSkinCheck")
		loop
	}
}

actor IciclePreview : FastProjectile
{
	PROJECTILE
	+SKYEXPLODE
	+NOEXPLODEFLOOR
	+THRUACTORS
	+DONTBLAST
	+DONTSPLASH
	damage (0)
	speed 400
	radius 16
	height 16
	states
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		TNT1 A 1
		Death:
		TNT1 A 0 A_SpawnItemEx("IcicleFXHelper",0,0,0,0,0,0)
		TNT1 A 1
		stop
	}
}

actor IcicleFXHelper : BasicHelper
{
+CLIENTSIDEONLY
States
{
Spawn:
TNT1 A 0
TNT1 A 5 A_JumpIf(CallACS("GVH_IsTargetClient")==1,"Spawn2")
goto Death
Spawn2:
TNT1 A 0 A_SpawnItemEx("IcicleFX",0,0,0,0,0,-1000)
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
stop
Death:
TNT1 A 0
stop
}
}

actor IcicleFX
{
	+SKYEXPLODE
	+NOEXPLODEFLOOR
	+NOTARGETSWITCH
	+DONTBLAST
	PROJECTILE
	scale 2.5
	radius 5
	height 5
	Renderstyle Translucent
	Alpha 0.6
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
		IICE A 2
		stop
	}
}

actor IcicleMark : FastProjectile
{
	PROJECTILE
	+SKYEXPLODE
	+NOEXPLODEFLOOR
	+THRUACTORS
	+DONTBLAST
	+DONTREFLECT
	damage (0)
	speed 800
	radius 16
	height 16
	States
	{
		Spawn:
		TNT1 A 1
		TNT1 A 0 A_SpawnItemEx("IcicleSpawner",0,0,0,0,0,300)
		stop
		Death:
		TNT1 A 0 A_SpawnItemEx("IcicleSpawner",-48,0,0,0,0,300)
		stop
	}
}

actor IcicleSpawner
{
	PROJECTILE
	+RIPPER
	-DONTBLAST
	+SKYEXPLODE
	+DONTREFLECT
	radius 1
	height 8
	Scale 2.5
	States
	{
		Spawn:
		//TNT1 AA 1 ThrustThingZ(0,600,0,0)
		TNT1 AA 0 A_JumpIf(z-ceilingz==0-10, "Death")
		TNT1 A 0 A_SpawnItemEx("Icicle",0,0,0,0,0,-36,0)
		stop
		XDeath:
		TNT1 A 0 A_SpawnItemEx("Icicle",0,0,0,0,0,-36,0)
		stop
		Death:
		TNT1 A 0 A_SpawnItemEx("Icicle",0,0,0,0,0,-36,0)
		Stop
	}
}

actor Icicle
{
	Obituary "$OB_ICEMAN2"
	PROJECTILE
	Radius 48
	Height 4
	scale 3.0
	damagetype "Iceman"
	damage (23)
	speed 0
	-DONTBLAST
	+NOCLIP
	-NOGRAVITY
	+DONTREFLECT
	States
	{
		Spawn:
		IICE A 0
		TNT1 A 0 A_GiveInventory("ProjectileCode",1)
		IICE A 2
		IICE A 0 A_ChangeFlag("NOCLIP",0)
		loopit:
		IICE ABCD 3 A_CheckFloor("Death")
		loop
		Death:
		TNT1 A 0 A_SpawnItemEx("IcePitFreeze")
		TNT1 A 0 A_Stop
		TNT1 AAAAAAAAAA 0 A_SpawnItemEx("IcicleBreakBit2",random(0,16),random(0,16),random(0,56),random(-15,15),random(-15,15),random(5,15),random(0,360))
		TNT1 A 0 A_PlaySoundEx("weapon/centaurflash","Body")
		TNT1 A 2 A_PlaySoundEx("weapon/icewavebreak", "Weapon")
		stop
		
		XDeath:
		Crash:
		TNT1 A 0 A_SpawnItemEx("IcePitFreeze")
		TNT1 A 0 A_Stop
		TNT1 AAAAAAAAAA 0 A_SpawnItemEx("IcicleBreakBit",random(0,16),random(0,16),random(0,56),random(-15,15),random(-15,15),random(5,15),random(0,360))
		TNT1 A 0 A_PlaySoundEx("weapon/centaurflash","Body")
		TNT1 A 2 A_PlaySoundEx("weapon/icewavebreak", "Weapon")
		stop
	}
}

actor IcicleBreakBit
{
	var int user_dmg;
	Obituary "$OB_ICEMAN2"
	scale 2.5
	PROJECTILE
	-NOGRAVITY
	Height 4
	Radius 4
	+DOOMBOUNCE
	bouncefactor 0.7
	bouncecount 8
	damage (0 + user_dmg)
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 0 A_GiveInventory("ProjectileCode",1)
		TNT1 A 0 A_Jump(256,"Spawn1", "Spawn2", "Spawn3", "Spawn4")
		stop
		
		Spawn1:
		FROB D 2
		FROB D 0 A_SetUserVar("user_dmg",7)
		loop
		
		Spawn2:
		FROB E 2
		FROB D 0 A_SetUserVar("user_dmg",7)
		loop
		
		Spawn3:
		FROB F 2
		FROB D 0 A_SetUserVar("user_dmg",7)
		loop
		
		Spawn4:
		FROB G 2
		FROB D 0 A_SetUserVar("user_dmg",7)
		loop
		
		Death:
		TNT1 A 0 A_SpawnItemEx("IcePitFreeze")
		stop
	}
}

Actor IcicleBreakBit2 : IcicleBreakBit
{
	damage (7)
}
actor IceSlasher2
{
	Obituary "$OB_ICEMAN1"
	Translation "10:140=197:197"
	PROJECTILE
	Radius 10
	Height 8
	scale 2.5
	damagetype "Iceman"
	damage (7)
	+RIPPER
	speed 30
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		ICES JKL 3 A_SpawnItemEx("IceSlasherFX",random(-6,0),random(-6,6),random(-6,6),0,0,0,0,1)
		Goto Spawn+2
		
		Death:
		TNT1 A 0 A_SpawnItemEx("IcePitFreeze")
		stop
	}
}

actor IceSlasherFreeze : IceSlasher2
{
	damagetype "IcemanSlasher"
	damage (15)
	speed 40
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		ICES GHI 3
		Goto Spawn+2
	}
}

actor IcemanSlasherProtect : PowerProtection
{
	powerup.duration 14
	DamageFactor "IcemanSlasher", 0.0
}

actor IceLaserStart
{
	Obituary "$OB_ICEMAN3"
	PROJECTILE
	+DONTREFLECT
	+FORCEXYBILLBOARD
	+RIPPER
	Speed 5
	Damage (5)
	radius 5
	height 5
	scale 2.5
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 1 A_SpawnItemEx("IceLaser",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM)
		stop
	}
}

actor IceLaser
{
	Obituary "$OB_ICEMAN3"
	PROJECTILE
	+DONTREFLECT
	+FORCEXYBILLBOARD
	+RIPPER
	+SKYEXPLODE
	damagetype "Iceman"
	Damage (5)
	radius 20
	height 1
	scale 2.5
	speed 0
	ReactionTime 17
	States
	{
		Spawn:
		KINP E 0
		TNT1 A 0 A_GiveInventory("ProjectileCode",1)
		KINP E 0 A_ScaleVelocity(10.0)
		KINP E 1
		Continue:
		TNT1 A 0 A_SpawnItemEx("IceLaserTrail",-16,-16,0,momx/2,momy/2,momz/2,0,SXF_ABSOLUTEMOMENTUM)
		TNT1 A 0 A_SpawnItemEx("IceLaserTrail",-16,16,0,momx/2,momy/2,momz/2,0,SXF_ABSOLUTEMOMENTUM)
		TNT1 A 0 A_SpawnItemEx("IceLaserTrail",-16,0,0,momx/2,momy/2,momz/2,0,SXF_ABSOLUTEMOMENTUM)
		TNT1 A 0 A_SpawnItemEx("IceLaserTrail",0,-16,0,momx/2,momy/2,momz/2,0,SXF_ABSOLUTEMOMENTUM)
		TNT1 A 0 A_SpawnItemEx("IceLaserTrail",0,16,0,momx/2,momy/2,momz/2,0,SXF_ABSOLUTEMOMENTUM)
		TNT1 A 0 A_SpawnItemEx("IceLaserTrail",16,-16,0,momx/2,momy/2,momz/2,0,SXF_ABSOLUTEMOMENTUM)
		TNT1 A 0 A_SpawnItemEx("IceLaserTrail",16,16,0,momx/2,momy/2,momz/2,0,SXF_ABSOLUTEMOMENTUM)
		TNT1 A 0 A_SpawnItemEx("IceLaserTrail",16,0,0,momx/2,momy/2,momz/2,0,SXF_ABSOLUTEMOMENTUM)
		KINP E 1 A_SpawnItemEx("IceLaserTrail",0,0,0,momx/2,momy/2,momz/2,0,SXF_ABSOLUTEMOMENTUM)
		KINP E 0 A_Countdown
		loop
		Death:
		TNT1 A 0 A_SpawnItemEx("IcePitFreeze")
		TNT1 A 0 A_SpawnItemEx("SnowCloud",0,0,0,5,0,0,0)
		TNT1 A 0 A_SpawnItemEx("SnowCloud",0,0,0,5,0,0,72)
		TNT1 A 0 A_SpawnItemEx("SnowCloud",0,0,0,5,0,0,144)
		TNT1 A 0 A_SpawnItemEx("SnowCloud",0,0,0,5,0,0,216)
		TNT1 A 0 A_SpawnItemEx("SnowCloud",0,0,0,5,0,0,288)
		stop
	}
}

actor IceLaserTrail
{
	+DONTREFLECT
	+NOINTERACTION
	+CLIENTSIDEONLY
	+FORCEXYBILLBOARD
	speed 5
	Scale 2.5
	States
	{
		Spawn:
		KINP E 0
		TNT1 A 0 A_GiveInventory("ProjectileCode",1)
		KINP EEEEEEEEEE 1 A_FadeOut(0.1)
		stop
	}
}

actor SnowCloud
{
	PROJECTILE
	+THRUACTORS
	+HEXENBOUNCE
	Radius 1
	Height 1
	Scale 2.5
	Speed 0
	Damage (0)
	damagetype "Iceman"
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 0 A_GiveInventory("ProjectileCode",1)
		ICLD A 0 A_PlaySoundEx("weapon/iceult","Body")
		ICLD ABCDEFG 3 A_SpawnItemEx("IcePitFreeze")
		ICLD EFGEFGEFG 3 A_SpawnItemEx("IcePitFreeze")
		ICLD E 0 A_SpawnItemEx("SnowCloud2",0,0,0,10,0,0)
		stop
	}
}

actor SnowCloud2
{
	PROJECTILE
	+THRUACTORS
	+HEXENBOUNCE
	-ALLOWBOUNCEONACTORS
	+CANBOUNCEWATER
	-SKYEXPLODE
	WALLBOUNCEFACTOR 1
	BOUNCEFACTOR 1
	Radius 1
	Height 1
	reactiontime 20
	Scale 2.5
	Speed 0
	Damage (0)
	damagetype "Iceman"
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 0 A_GiveInventory("ProjectileCode",1)
		ICLD EEEFFFGGG 1 A_SpawnItemEx("IceManSnowflake",0,0,-32,random(-10,10),random(-10,10),random(-1,0))
		ICLD E 0 A_CountDown 
		loop
		Death:
		ICLD GFEDCBA 3 A_Stop
		stop
	}
}

actor IceManSnowFlake
{
	Obituary "$OB_ICEMAN4"
	PROJECTILE
	-NOGRAVITY
	+DOOMBOUNCE
	-BOUNCEONFLOORS
	bouncefactor 0.9
	alpha 0.7
	renderstyle add
	Radius 32
	Height 32
	Scale 2.5
	Speed 0
	gravity 0.1
	Damage (18)
	damagetype "Iceman"
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 0 A_GiveInventory("ProjectileCode",1)
		ICLD H 1 A_CheckFloor("Death")
		Goto Spawn+2
		Death:
		TNT1 A 0 A_SpawnItemEx("IcePitFreeze")
		stop
	}
}

actor IceUltBuildCooldownGiver : UltBuildCooldownGiver
{
	Powerup.Duration 350
}

actor IceBall1
{
	Obituary "$OB_ICEMAN5"
	PROJECTILE
	Radius 12
	Height 12
	scale 2.5
	damagetype "IcemanThird1"
	damage (19)
	speed 60
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		ICTF AAABBB 1 A_SpawnItemEx("IceBallFX",0,0,0,0,0,0,0,1)
		Goto Spawn+2
		
		Death:
		TNT1 A 0 A_SpawnItemEx("IcePitFreeze")
		stop
	}
}

actor IceBall2 : IceBall1
{
damagetype "IcemanThird2"
}

actor IceBall3 : IceBall1
{
damagetype "IcemanThird3"
}

actor IceBall4 : IceBall1
{
damagetype "IcemanThird4"
}

actor IceBallFX : BasicClientSide
{
renderstyle translucent
alpha 0.3
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1
ICTF DDDD 1 A_SpawnItemEx("IceBallFX2",Random(-16, 16),random(-16, 16),random(-16, 16),0,0,0,0,1)
stop
}
}

actor IceBallFX2 : BasicClientSide
{
-NOINTERACTION
-NOGRAVITY
+NOEXPLODEFLOOR
gravity 0.4
States
{
Spawn:
ICTF E 13
ICTF FFFFFGGGGGHHHHH 1 A_FadeOut(0.06)
stop
}
}

actor IceSlasherFX : BasicClientSide
{
renderstyle add
alpha 0.7
States
{
Spawn:
ICTF EFGH 4
stop
}
}

actor IceBallHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfHealthLower(50,"Pickup4")
TNT1 A 0 A_JumpIfHealthLower(75,"Pickup3")
TNT1 A 0 A_JumpIfHealthLower(99,"Pickup2")
TNT1 A 0 A_FireCustomMissile("IceBall1")
stop

Pickup2:
TNT1 A 0 A_FireCustomMissile("IceBall2")
stop

Pickup3:
TNT1 A 0 A_FireCustomMissile("IceBall3")
stop

Pickup4:
TNT1 A 0 A_FireCustomMissile("IceBall4")
stop
}
}

actor IceManFrozen1
{
PROJECTILE
+NOINTERACTION
-DONTBLAST
Scale 3.0
reactiontime 1
states
{
Spawn:
ICTF C 1 A_GiveToTarget("MovementFrozen3",1)
ICTF C 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
ICTF C 0 A_Countdown
ICTF C 0 A_GiveToTarget("BubbleTrapProtection",1)
loop
Death:
ICTF C 0 A_TakeFromTarget("FreezeVision")
ICTF C 0 A_GiveToTarget("StunImmunity")
ICTF C 0 A_GiveToTarget("MovementReturnFailsafe",1)
ICTF CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 0 A_SpawnItemEx("IceBallFX2",random(8,48),0,random(0,120),random(4,11),0,random(1,9),random(0,359))
TNT1 A 2 A_PlaySoundEx("crystalman/break","Body")
stop
}
}

actor IceManFrozen2 : IceManFrozen1
{
reactiontime 35
}

actor IceManFrozen3 : IceManFrozen1
{
reactiontime 70
}

actor IceManFrozen4 : IceManFrozen1
{
reactiontime 105
}

actor IcemanPrisonProtect1 : PowerProtection
{
	powerup.duration 35
	DamageFactor "Iceman", 0.5
	DamageFactor "IcemanSlasher", 0.5
}

actor IcemanPrisonProtect2 : IcemanPrisonProtect1
{
	powerup.duration 70
}

actor IcemanPrisonProtect3 : IcemanPrisonProtect1
{
	powerup.duration 105
}

actor IceSkinCheck : SkinChecker
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(CallACS("GC_GetSkinNum")==134,"AltSkin1")
goto NormalSkin
}
}