Actor IceMeeleePuff
{
Height 3
Radius 3
RENDERSTYLE ADD
ALPHA 0.3
Scale 0.5
+NOGRAVITY
+NOBLOCKMAP
+THRUGHOST
+ALWAYSPUFF
+PUFFONACTORS
DamageType "Ice"
DeathSound "weapons/buzz"
States
	{
	Spawn:
		PLSS NOPQRSTUVWXYZ 2 Bright
		Stop
	Crash:
		TNT1 A 1 Bright
		Stop
	}
}

ACTOR FreezerBallBase
{
PROJECTILE
Height 16
Radius 16
Speed 15
Alpha 0.95
Scale 0.7
RENDERSTYLE Translucent
Alpha 0.85
Damage 1000
+RIPPER
+THRUGHOST
+BLOODLESSIMPACT
+FORCERADIUSDMG
+EXTREMEDEATH
+NODAMAGETHRUST
+SKYEXPLODE
+FORCEXYBILLBOARD
+DONTHARMSPECIES
+THRUSPECIES
+MTHRUSPECIES
DamageType "Ice"
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_PlaySound("devastator/fly",CHAN_VOICE,1.0,1)
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGBolt",0,0,random(0,360),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(0,360))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeLiteShot",0,0,random(0,360),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(0,360))
		ICBL A 1 Bright A_SpawnItemEx("ProjectileTrailParticleBlue",random(-12,12),random(-12,12),random(-12,12),random(-2,2),random(-2,2),random(-2,2),random(-20,20),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("FreezeBFGLightning",random(-6,6),random(-6,6),random(-6,6),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ICBL A 1 Bright A_CustomMissile("PlayerFreezeBFGProjectileAttack",random(-8,8),random(-10,10),0,CMF_AIMDIRECTION|CMF_TRACKOWNER)
		TNT1 A 0 Bright A_CustomMissile("FreezeBFGTrail",0,0,0,CMF_AIMDIRECTION)
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGFlame",0,0,random(-16,16),CMF_TRACKOWNER|CMF_OFFSETPITCH,random(-8,8))
		TNT1 A 0 Bright A_Explode(32,450,0,0)
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGBolt",0,0,random(0,360),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(0,360))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeLiteShot",0,0,random(0,360),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(0,360))
		ICBL B 1 Bright A_SpawnItemEx("ProjectileTrailParticleBlue",random(-12,12),random(-12,12),random(-12,12),random(-2,2),random(-2,2),random(-2,2),random(-20,20),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("FreezeBFGLightning2",random(-6,6),random(-6,6),random(-6,6),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ICBL B 1 Bright A_CustomMissile("PlayerFreezeBFGProjectileAttack",random(-8,8),random(-10,10),0,CMF_AIMDIRECTION|CMF_TRACKOWNER)
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGFlame",0,0,random(-16,16),CMF_TRACKOWNER|CMF_OFFSETPITCH,random(-8,8))
		TNT1 A 0 Bright A_Explode(32,450,0,0)
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGBolt",0,0,random(0,360),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(0,360))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeLiteShot",0,0,random(0,360),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(0,360))
		ICBL C 1 Bright A_SpawnItemEx("ProjectileTrailParticleBlue",random(-12,12),random(-12,12),random(-12,12),random(-2,2),random(-2,2),random(-2,2),random(-20,20),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("FreezeBFGLightning",random(-6,6),random(-6,6),random(-6,6),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ICBL C 1 Bright A_CustomMissile("PlayerFreezeBFGProjectileAttack",random(-8,8),random(-10,10),0,CMF_AIMDIRECTION|CMF_TRACKOWNER)
		TNT1 A 0 Bright A_CustomMissile("FreezeBFGTrail",0,0,0,CMF_AIMDIRECTION)
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGFlame",0,0,random(-16,16),CMF_TRACKOWNER|CMF_OFFSETPITCH,random(-8,8))
		TNT1 A 0 Bright A_Explode(32,450,0,0)
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGBolt",0,0,random(0,360),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(0,360))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeLiteShot",0,0,random(0,360),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(0,360))
		ICBL D 1 Bright A_SpawnItemEx("ProjectileTrailParticleBlue",random(-12,12),random(-12,12),random(-12,12),random(-2,2),random(-2,2),random(-2,2),random(-20,20),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_SpawnItemEx("FreezeBFGLightning2",random(-6,6),random(-6,6),random(-6,6),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		ICBL D 1 Bright A_CustomMissile("PlayerFreezeBFGProjectileAttack",random(-8,8),random(-10,10),0,CMF_AIMDIRECTION|CMF_TRACKOWNER)
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGFlame",0,0,random(-16,16),CMF_TRACKOWNER|CMF_OFFSETPITCH,random(-8,8))
		TNT1 A 0 Bright A_Explode(32,450,0,0)
		TNT1 AAA 0 Bright A_SpawnItemEx("PlayerFreezeBFGSpike",random(-50,50),random(-100,100),-9999,0,0,0,0,SXF_NOCHECKPOSITION,96)
		Loop
	Death:
		TNT1 A 0 Bright 
		TNT1 AAAAAAAAAAAAAAAAAAAA 0 Bright A_SpawnItemEx("PlayerIceSpike",random(-256,256),random(-256,256),0,0,0,0,0,SXF_ABSOLUTEPOSITION|SXF_NOCHECKPOSITION,0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 0 Bright A_SpawnItemEx("PlayerIceSpike",random(-256,256),random(-256,256),0,0,0,0,0,SXF_ABSOLUTEPOSITION|SXF_NOCHECKPOSITION,0)
		TNT1 AAAAAAAAAAAAAAAAAAAA 0 Bright A_SpawnItemEx("PlayerIceSpike",random(-256,256),random(-256,256),0,0,0,0,0,SXF_ABSOLUTEPOSITION|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SetTranslucent(0.75,1)
		TNT1 A 0 Bright Radius_Quake(3,35,0,10,0)
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,10,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,20,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,30,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,40,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,50,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,60,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,70,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,80,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,90,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,100,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,110,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,120,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,130,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,140,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,150,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,160,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,170,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,180,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,190,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,200,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,210,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,220,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,230,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,240,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,250,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,260,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,270,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,280,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,290,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,300,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,310,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,320,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,330,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,340,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_CustomMissile("PlayerFreezeBFGTracer",0,0,350,CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-90,90))
		TNT1 A 0 Bright A_SpawnItemEx("FreezeBFGLightningSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_JumpIf(ACS_NamedExecuteWithResult("Hem_SelfDamageCVAR") != 0,3)
		TNT1 A 0 Bright A_Explode(80,256,0,0)
		TNT1 A 0 Bright A_Jump(256,2)
		TNT1 A 0 Bright A_Explode(80,256,1,0)
		ICBL A 6 Bright A_SpawnItemEx("FreezeBFGShockWave",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_JumpIf(ACS_NamedExecuteWithResult("Hem_SelfDamageCVAR") != 0,3)
		TNT1 A 0 Bright A_Explode(80,256,0,0)
		TNT1 A 0 Bright A_Jump(256,2)
		TNT1 A 0 Bright A_Explode(80,256,1,0)
		ICBL B 6 Bright A_SpawnItemEx("FreezeBFGShockWave",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_JumpIf(ACS_NamedExecuteWithResult("Hem_SelfDamageCVAR") != 0,3)
		TNT1 A 0 Bright A_Explode(80,256,0,0)
		TNT1 A 0 Bright A_Jump(256,2)
		TNT1 A 0 Bright A_Explode(80,256,1,0)
		ICBL C 6 Bright A_SpawnItemEx("FreezeBFGShockWave",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_JumpIf(ACS_NamedExecuteWithResult("Hem_SelfDamageCVAR") != 0,3)
		TNT1 A 0 Bright A_Explode(80,256,0,0)
		TNT1 A 0 Bright A_Jump(256,2)
		TNT1 A 0 Bright A_Explode(80,256,1,0)
		ICBL D 6 Bright A_SpawnItemEx("FreezeBFGShockWave",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_JumpIf(ACS_NamedExecuteWithResult("Hem_SelfDamageCVAR") != 0,3)
		TNT1 A 0 Bright A_Explode(80,256,0,0)
		TNT1 A 0 Bright A_Jump(256,2)
		TNT1 A 0 Bright A_Explode(80,256,1,0)
		ICBL A 6 Bright A_SpawnItemEx("FreezeBFGShockWave",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_JumpIf(ACS_NamedExecuteWithResult("Hem_SelfDamageCVAR") != 0,3)
		TNT1 A 0 Bright A_Explode(80,256,0,0)
		TNT1 A 0 Bright A_Jump(256,2)
		TNT1 A 0 Bright A_Explode(80,256,1,0)
		ICBL B 6 Bright A_SpawnItemEx("FreezeBFGShockWave",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_JumpIf(ACS_NamedExecuteWithResult("Hem_SelfDamageCVAR") != 0,3)
		TNT1 A 0 Bright A_Explode(80,256,0,0)
		TNT1 A 0 Bright A_Jump(256,2)
		TNT1 A 0 Bright A_Explode(80,256,1,0)
		ICBL C 6 Bright A_SpawnItemEx("FreezeBFGShockWave",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_JumpIf(ACS_NamedExecuteWithResult("Hem_SelfDamageCVAR") != 0,3)
		TNT1 A 0 Bright A_Explode(80,256,0,0)
		TNT1 A 0 Bright A_Jump(256,2)
		TNT1 A 0 Bright A_Explode(80,256,1,0)
		ICBL D 6 Bright A_SpawnItemEx("FreezeBFGShockWave",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_JumpIf(ACS_NamedExecuteWithResult("Hem_SelfDamageCVAR") != 0,3)
		TNT1 A 0 Bright A_Explode(80,256,0,0)
		TNT1 A 0 Bright A_Jump(256,2)
		TNT1 A 0 Bright A_Explode(80,256,1,0)
		ICBL A 6 Bright A_SpawnItemEx("FreezeBFGShockWave",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_JumpIf(ACS_NamedExecuteWithResult("Hem_SelfDamageCVAR") != 0,3)
		TNT1 A 0 Bright A_Explode(80,256,0,0)
		TNT1 A 0 Bright A_Jump(256,2)
		TNT1 A 0 Bright A_Explode(80,256,1,0)
		ICBL B 6 Bright A_SpawnItemEx("FreezeBFGShockWave",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_JumpIf(ACS_NamedExecuteWithResult("Hem_SelfDamageCVAR") != 0,3)
		TNT1 A 0 Bright A_Explode(80,256,0,0)
		TNT1 A 0 Bright A_Jump(256,2)
		TNT1 A 0 Bright A_Explode(80,256,1,0)
		ICBL C 6 Bright A_SpawnItemEx("FreezeBFGShockWave",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_JumpIf(ACS_NamedExecuteWithResult("Hem_SelfDamageCVAR") != 0,3)
		TNT1 A 0 Bright A_Explode(80,256,0,0)
		TNT1 A 0 Bright A_Jump(256,2)
		TNT1 A 0 Bright A_Explode(80,256,1,0)
		ICBL D 6 Bright A_SpawnItemEx("FreezeBFGShockWave",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 Bright A_JumpIf(ACS_NamedExecuteWithResult("Hem_SelfDamageCVAR") != 0,4)
		TNT1 A 1 Bright A_Explode(128,1024,0,0)
		TNT1 A 0 Bright A_Explode(230,640,0,0)
		TNT1 A 0 Bright A_Jump(256,3)
		TNT1 A 1 Bright A_Explode(128,1024,0,0)
		TNT1 A 0 Bright A_Explode(230,640,1,0)
		TNT1 AAA 0 Bright A_StopSound(CHAN_VOICE)
		TNT1 A 0 Bright A_RadiusGive("HEMFreeze",640,RGF_MONSTERS|RGF_CORPSES,1)
		TNT1 A 0 Bright Radius_Quake(20,12,0,12,0)
		TNT1 A 0 Bright A_PlaySound("icefurry",CHAN_WEAPON,1.0,0)
		TNT1 A 0 Bright A_SpawnItemEx("FreezeBFGShockWave2",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 Bright A_CustomMissile("PlayerFreezeBFGFlame",0,0,random(0,360),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(0,360))
		TNT1 AAAA 0 Bright A_SpawnItemEx("BlueParticleSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
		TNT1 AAAAAAAAAAA 0 Bright A_SpawnItemEx("BlueKaboom3",0,0,0,random(-20,20),random(-20,20),random(-20,20),0,SXF_CLIENTSIDE,0)
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 0 Bright A_SpawnItemEx("PlayerFreezeBFGFlame2",random(-3,3),random(-3,3),random(-3,3),random(-6,6),random(-6,6),random(-3,3),0,SXF_TRANSFERPOINTERS|SXF_SETMASTER,0)
		TNT1 A 35 Bright
		Stop
	}
}

Actor PlayerFreezerBall : FreezerBallBase
{
Species "Player"
}

ACTOR FreezeBFGProjectileAttackBase
{
PROJECTILE
Height 3
Radius 3
Speed 16
+NOTARGET
+THRUACTORS
+LOOKALLAROUND
+QUICKTORETALIATE
+NODAMAGETHRUST
+DONTHARMSPECIES
+THRUSPECIES
+MTHRUSPECIES
DamageType "Ice"
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_CopyFriendliness(AAPTR_TARGET)
		TNT1 A 0 Bright A_RearrangePointers(AAPTR_DEFAULT, AAPTR_TARGET, AAPTR_DEFAULT)
		TNT1 AAAAA 1 Bright A_LookEx(LOF_NOSOUNDCHECK|LOF_NOSEESOUND,0,1250,0,360,"Attack")
		Goto Death
	Attack:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_FaceTarget
		TNT1 A 0 Bright A_RearrangePointers(AAPTR_MASTER, AAPTR_DEFAULT, AAPTR_DEFAULT)
		TNT1 A 1 Bright A_CustomRailgun(8*random(1,8),0,None,"Sky Blue",RGF_SILENT|RGF_FULLBRIGHT|RGF_NOPIERCING,0,2,"IcePuff")
		Goto Death
	Death:
		TNT1 A 1 Bright
		Stop
	}
}

Actor PlayerFreezeBFGProjectileAttack : FreezeBFGProjectileAttackBase
{
+FRIENDLY
+SHOOTABLE
Species "Player"
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_RearrangePointers(AAPTR_DEFAULT, AAPTR_TARGET, AAPTR_DEFAULT)
		TNT1 AAAAA 1 Bright A_LookEx(LOF_NOSOUNDCHECK|LOF_NOSEESOUND,0,1250,0,360,"Attack")
		Goto Death
	}
}

Actor IcePuff : BulletPuff
{
+THRUGHOST
+THRUSPECIES
+MTHRUSPECIES
+PUFFGETSOWNER
DamageType "Ice"
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 AAA 0 Bright A_CustomMissile("Kaboom6F",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
		TNT1 AAAA 0 Bright A_SpawnItemEx("IceDebris",0,0,0,random(-4,4),random(-4,4),random(4,8),0,SXF_CLIENTSIDE,0)
		TNT1 AAA 0 Bright A_CustomMissile("Kaboom6F",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
		TNT1 A 1 Bright
		Stop
	Crash:
		TNT1 A 1 Bright
		Stop
	}
}

Actor PlayerIceSpike : CyberIceSpike
{
+THRUGHOST
+THRUSPECIES
+DONTHARMSPECIES
Species ""
Species "Player"
DamageType ""
DamageType "Ice"
Tag "Ice Spike"
}

ACTOR PlayerFreezeBFGFlame
{
Projectile
Height 6
Radius 3
Speed 8
Damage 8
+RANDOMIZE
+NOBOSSRIP
+NODAMAGETHRUST
-BLOODSPLATTER
+BLOODLESSIMPACT
+THRUSPECIES
+MTHRUSPECIES
+DONTHARMSPECIES
Species "Player"
DamageType "Ice"
States
	{
	Spawn:
		TNT1 A 5 Bright
		TNT1 AAAA 1 Bright A_SpawnItemEx("FreezeBFGFlameStreamTrail",0,0,0,random(-1,1)+velx,random(-1,1)+vely,random(-1,1)+velz,0,SXF_CLIENTSIDE|SXF_ABSOLUTEMOMENTUM,32)
		TNT1 A 1 Bright A_SpawnItemEx("FreezeBFGFlameStreamTrail",0,0,0,random(-2,2)+velx,random(-2,2)+vely,random(-2,2)+velz,0,SXF_CLIENTSIDE|SXF_ABSOLUTEMOMENTUM,32)
		TNT1 A 0 Bright A_SpawnItemEx("FreezeBFGFlameStreamTrail",0,0,0,random(-3,3)+velx,random(-3,3)+vely,random(-3,3)+velz,0,SXF_CLIENTSIDE|SXF_ABSOLUTEMOMENTUM,32)
		TNT1 A 1 Bright A_SpawnItemEx("FreezeBFGFlameStreamTrail",0,0,0,random(-3,3)+velx,random(-3,3)+vely,random(-3,3)+velz,0,SXF_CLIENTSIDE|SXF_ABSOLUTEMOMENTUM,32)
		TNT1 A 0 Bright A_SpawnItemEx("FreezeBFGFlameStreamTrail",0,0,0,random(-3,3)+velx,random(-3,3)+vely,random(-3,3)+velz,0,SXF_CLIENTSIDE|SXF_ABSOLUTEMOMENTUM,32)
		TNT1 A 1 Bright A_SpawnItemEx("FreezeBFGFlameStreamTrail",0,0,0,random(-4,4)+velx,random(-4,4)+vely,random(-4,4)+velz,0,SXF_CLIENTSIDE|SXF_ABSOLUTEMOMENTUM,32)
		TNT1 A 18 Bright
		Stop
	Death:
		TNT1 A 0 Bright
		TNT1 AA 0 Bright A_CustomMissile("PlayerFreezeBFGFlame2",0,0,random(0,360),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(0,360))
		TNT1 A 1 Bright
		Stop
	}
}

ACTOR PlayerFreezeBFGFlame2 : PlayerFreezeBFGFlame
{
Damage 4
States
	{
	Death:
		TNT1 A 1 Bright
		Stop
	}
}

Actor FreezeBFGFlameStreamTrail
{
Height 2
Radius 2
Speed 3
Scale 1
RenderStyle Add
Alpha 0.32
Damage (0)
+MISSILE
+DROPOFF
+NOGRAVITY
+NOBLOCKMAP
+NOTELEPORT
+DONTSPLASH
+RIPPER
+BLOODLESSIMPACT
+CANNOTPUSH
-NOCLIP
-ACTIVATEIMPACT
-ACTIVATEPCROSS
+FORCEXYBILLBOARD
+CLIENTSIDEONLY
+NONETID
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 AA 0 Bright A_Jump(256,"Spawn1","Spawn2","Spawn3")
		Goto Spawn1
	Spawn1:
		64P1 ABCDEFGHIJKLMNOPQRSTUVWXYZ 2 Bright
		Goto Death
	Spawn2:
		64P2 ABCDEFGHIJKLMNOPQRSTUVWXYZ 2 Bright
		Goto Death
	Spawn3:
		64P3 ABCDEFGHIJKLMNOPQRSTUVWXYZ 2 Bright
		Goto Death
	Death:
		TNT1 A 1 Bright
		Stop
	}
}

Actor FreezeBFGTrail
{
Height 2
Radius 1
Speed 0
Scale 1.45
RenderStyle Add
+MISSILE
+NOINTERACTION
+CLIENTSIDEONLY
+NONETID
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
		Goto Fade
	Fade:
		HBRB E 4 Bright A_FadeOut(0.1,1)
		Loop
	Toaster:
		TNT1 A 1 Bright
		Stop
	}
}

ACTOR FreezeBFGShockWave
{
Height 1
Radius 1
Speed 0
Scale 1.15
Renderstyle Translucent
Alpha 0.75
+FORCEXYBILLBOARD
+NOINTERACTION
+CLIENTSIDEONLY
+NONETID
States
	{
	Spawn:
		TNT1 A 0 Bright
		HBRB ABCDEFGHIJKLMNOPQR 1 Bright A_FadeOut(0.025,1)
		Stop
	}
}

ACTOR FreezeBFGShockWave2 : FreezeBFGShockWave
{
Scale 2.5
States
	{
	Spawn:
		TNT1 A 0 Bright
		HBRB ABCDEFGHIJKLMNOPQR 2 Bright A_FadeOut(0.015,1)
		Stop
	}
}

ACTOR FreezeBFGBoltBase
{
Projectile
Height 6
Radius 6
Speed 35
Alpha 0.8
RenderStyle Add
ReactionTime 245
Damage 22
+FORCEXYBILLBOARD
+SEEKERMISSILE
+THRUSPECIES
+MTHRUSPECIES
+DONTREFLECT
+DONTHARMSPECIES
Damagetype "Ice"
DeathSound "bolt/explode"
States
	{
	Spawn:
		TNT1 A 0 Bright A_CountDown
		TNT1 A 0 Bright A_Seekermissile(5,5,SMF_LOOK|SMF_PRECISE)
		TNT1 A 0 Bright A_JumpIf(ACS_NamedExecuteWithResult("HEM_CheckSeeker") == 1,"Enemy")
	"Friendly":
		TNT1 A 0 Bright A_ChangeFlag(THRUACTORS,1)
		TNT1 A 0 Bright A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_NULL)
		FBLS AAAA 1 Bright A_SpawnItemEx("FreezeBFGBoltTrail",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		Goto Spawn
	Enemy:
		TNT1 A 0 Bright A_ChangeFlag(THRUACTORS,0)
		FBLS A 1 Bright A_SpawnItemEx("FreezeBFGBoltTrail",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		Goto Spawn
	Death:
		TNT1 A 0 Bright
		FBLS BCDE 1 Bright
		Stop
	XDeath:
		TNT1 A 0 Bright
		TNT1 AAA 0 Bright A_CustomMissile("Kaboom6",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
		TNT1 AAAA 0 Bright A_SpawnItemEx("IceDebris",0,0,0,random(4,-4),random(4,-4),random(4,8),0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
		TNT1 AAA 0 Bright A_CustomMissile("Kaboom6",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
		FBLS BCDE 1 Bright
		Stop
	}
}

Actor PlayerFreezeBFGBolt : FreezeBFGBoltBase
{
+FRIENDLY
Species "Player"
}

ACTOR FreezeBFGBoltTrail
{
Height 1
Radius 1
Speed 0
Renderstyle Add
+NOINTERACTION
+CLIENTSIDEONLY
+NONETID
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
		PLSS OPQRSTUVWXYZ 1 Bright A_FadeOut(0.05,1)
		Stop
	Toaster:
		TNT1 A 1 Bright
		Stop
	}
}

ACTOR FreezeBFGLightningSpawner
{
+NOINTERACTION
+CLIENTSIDEONLY
+NONETID
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 Bright A_SpawnItemEx("FreezeBFGLightning2",random(6,-6),random(6,-6),random(6,-6),0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		Goto Death
	Death:
		TNT1 A 1 Bright
		Stop
	}
}

ACTOR FreezeBFGLightning
{
Scale 0.24
RenderStyle Add
Alpha 0.5
+NOINTERACTION
+CLIENTSIDEONLY
+NONETID
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
		TNT1 A 0 Bright A_CheckSight("Toaster")
		TNT1 A 0 Bright A_Jump(256,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72)
		HBL1 ABCDEFGHIJKLMNOPQR 0 Bright A_Jump(256,"Death")
		HBL2 ABCDEFGHIJKLMNOPQR 0 Bright A_Jump(256,"Death")
		HBL3 ABCDEFGHIJKLMNOPQR 0 Bright A_Jump(256,"Death")
		HBL4 ABCDEFGHIJKLMNOPQR 0 Bright A_Jump(256,"Death")
		Goto Death
	Death:
		"####" "#" 1 Bright
		Stop
	Toaster:
		TNT1 A 1 Bright
		Stop
	}
}

ACTOR FreezeBFGLightning2 : FreezeBFGLightning { Scale 0.42 }

ACTOR PlayerFreezeBFGTracer : DTBFG10KTracer
{
-THRUSPECIES
+DONTHARMSPECIES
Species "Player"
DamageType "Ice"
States
	{
	XDeath:
		TNT1 A 0 Bright
		TNT1 A 1 Bright A_SpawnItem("CustomSprayFreeze")
		Stop
	}
}

ACTOR CustomSprayFreeze : CustomSpray
{
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 AA 0 Bright A_Jump(256,"Spawn1","Spawn2","Spawn3")
		Goto Spawn1
	Spawn1:
		64P1 ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 Bright A_SpawnItemEx("BlueParticleSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		Goto Death
	Spawn2:
		64P2 ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 Bright A_SpawnItemEx("BlueParticleSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		Goto Death
	Spawn3:
		64P3 ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 Bright A_SpawnItemEx("BlueParticleSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		Goto Death
	Death:
		TNT1 A 1 Bright
		Stop
	}
}

ACTOR FreezeLiteShotBase
{
PROJECTILE
Height 8
Radius 13
Speed 32
Scale 2
RENDERSTYLE ADD
ALPHA 0.85
Reactiontime 26
Damage 15
+THRUGHOST
+THRUSPECIES
+MTHRUSPECIES
+DONTHARMSPECIES
Damagetype "Ice"
DeathSound "weapons/icehit2"
States
	{
	Spawn:
		TNT1 A 0 Bright A_CountDown
		ISHR AABB 1 Bright A_SpawnItemEx("FreezeLiteTrail",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		Loop
	Death:
		TNT1 A 0 Bright
		TNT1 AAAA 0 Bright A_SpawnItemEx("IceDebris",0,0,0,random(-4,4),random(-4,4),random(4,8),0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 1 Bright
		Stop
	XDeath:
		TNT1 A 0 Bright
		TNT1 AAA 0 Bright A_CustomMissile("Kaboom6",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
		TNT1 AAAA 0 Bright A_SpawnItemEx("IceDebris",0,0,0,random(-4,4),random(-4,4),random(4,8),0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 AAA 0 Bright A_CustomMissile("Kaboom6",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
		TNT1 A 1 Bright
		Stop
	}
}

Actor PlayerFreezeLiteShot : FreezeLiteShotBase
{
+FRIENDLY
Species "Player"
}

ACTOR FreezeLiteTrail
{
Height 1
Radius 1
Speed 0
RENDERSTYLE ADD
ALPHA 0.67
+NOINTERACTION
+CLIENTSIDEONLY
+NONETID
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
		ISHR AB 3 Bright
		Stop
	Toaster:
		TNT1 A 1 Bright
		Stop
	}
}

Actor PlayerFreezeBFGSpike : FRZRIceSpike
{
Health 100
+THRUSPECIES
+DONTHARMSPECIES
Species ""
Species "Player"
DamageType ""
DamageType "Ice"
DamageFactor "Ice", 0.0
Tag "Ice Spike"
}