
ACTOR FrozenZombieman : AbstractCorpse

// NOT a corpse until dies -- so they only become raiseable when they shatter and vanish

{
	Health 60
	Radius 16
	Height 52
	+SOLID	+SHOOTABLE	+NOBLOOD +PUSHABLE
	-CORPSE
	
	DamageFactor "Freeze", 0.2
	DamageFactor "Ice", 0.2
	DamageFactor "Frost", 0.2
	DamageFactor "IOS_Frost", 0 // Icon of Sin breath
	
	States
	{
		Spawn:
			FZD1 A 200
			FZD1 A 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZD1 A 50
			FZD1 B 2
			FZD1 A 50
			FZD1 B 2
			FZD1 A 50
			FZD1 B 2
			FZD1 A 25
			FZD1 B 2
			FZD1 A 25
			FZD1 B 2
			FZD1 A 10
			FZD1 B 2
			FZD1 A 10
			FZD1 B 2
			FZD1 A 10
			FZD1 BABABA 2
			TNT1 A 0 A_Jump(128, "Death")
			//Goto Death.Burn
		Death.Fire:
		Death.Flames:
		Death.Burn:
			TNT1 A 0 A_ChangeFlag("SHOOTABLE", 0)
			TNT1 A 0 A_ChangeFlag("SOLID", 0)
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 A 0 A_NoBlocking
			//TNT1 A 0 A_spawnItem("Zombieman")
			//Stop
			TNT1 A 1 A_Jump(256, "Defrost1", "Defrost2", "Defrost3", "Defrost4")
			Wait // Zandronum client skips the jump and keeps repeating the last frame wainting for a status update from the server
			
		Defrost1:
			TNT1 A 0
			TNT1 A 0 A_SpawnItem("Rifle")
			POS8 ABC 6
			TNT1 A 3 A_SpawnItemEx("FBD_DeadZombieMan_NoLegBoth",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost2:
			TNT1 A 0
			TNT1 A 0 A_SpawnItem("Rifle")
			ZZD4 AB 6
			TNT1 A 3 A_SpawnItemEx("FBD_DeadZombieMan_NoHeadNoArms",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost3:
			TNT1 A 0
			TNT1 A 0 A_SpawnItem("Rifle")
			TNT1 A 3 A_SpawnItemEx("Zombiemanfallingbeheaded",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost4:
			TNT1 A 0
			TNT1 A 0 A_SpawnItem("Rifle")
			ZZD2 AEC 6
			TNT1 A 3 A_SpawnItemEx("FBD_DeadZombieMan_NoArmFront",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop	
		Death:	
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAA 0 A_CustomMissile ("XDeath1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath3", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAA 0 A_CustomMissile ("Guts", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAA 0 A_CustomMissile ("MuchBlood", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 A 0 A_SpawnItem("Rifle")
			FZD1 C 300
			FZD1 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1 A_FadeOut(0.01)
			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Death.Freeze:
		Death.Ice:
		Death.Frost:
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_SpawnItem("Rifle")
			Goto Shatter
		
		Shatter:
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", Random(24,56), 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", Random(24,56), 0, random (0, 360), 2, random (0, 160))
			
			// size 2x
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2b", Random(24,56), 0, random (0, 360), 2, random (0, 160))
			
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", Random(24,56), 0, random (0, 360), 2, random (40, 120))

			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0) 
			Stop
		//***Che
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2000), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("ZombiemanRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 6, 0, 0) // "ZombiemanRaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2000) // see _mob_list.xlsx
			Stop
	}
}


ACTOR FrozenShotgunguy: FrozenZombieman
{
	States
		{
		Spawn:
			FZD2 A 200
			FZD2 A 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZD2 A 50
			FZD2 B 2
			FZD2 A 50
			FZD2 B 2
			FZD2 A 50
			FZD2 B 2
			FZD2 A 25
			FZD2 B 2
			FZD2 A 25
			FZD2 B 2
			FZD2 A 10
			FZD2 B 2
			FZD2 A 10
			FZD2 B 2
			FZD2 A 10
			FZD2 BABABA 2
			TNT1 A 0 A_Jump(128, "Death")
			Goto Death.Burn			
		Death:	
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAA 0 A_CustomMissile ("XDeath1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath3", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAA 0 A_CustomMissile ("Guts", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAA 0 A_CustomMissile ("MuchBlood", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 A 0 A_SpawnItem("Shotgun")
			FZD2 C 300
			FZD2 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1 A_FadeOut(0.01)
			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Death.Freeze:
		Death.Ice:
		Death.Frost:
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_SpawnItem("Shotgun")
			Goto Shatter
			
		Defrost1:
			TNT1 A 0
			TNT1 A 0 A_SpawnItem("Shotgun")
			SPO4 UVW 6
			TNT1 A 3 A_SpawnItemEx("FBD_DeadShotgunGuy1",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost2:
			TNT1 A 0
			TNT1 A 0 A_SpawnItem("Shotgun")
			ID11 OP 6
			TNT1 A 3 A_SpawnItemEx("DeadShotgunGuy_NoArm",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost3:
			TNT1 A 0
			TNT1 A 0 A_SpawnItem("Shotgun")
			ID16 A 12
			TNT1 A 3 A_SpawnItemEx("DeadShotgunGuy_NoLeg",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost4:
			TNT1 A 0
			TNT1 A 0 A_SpawnItem("Shotgun")
			SPDH ACD 6
			TNT1 A 3 A_SpawnItemEx("DeadShotgunGuy_NoHead",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2001), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("ShotgunGuyRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 9, 0, 0) //"ShotgunGuyRaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2001) // see _mob_list.xlsx
			Stop
	}
}

ACTOR FrozenLabGuy: FrozenZombieman //***Che: this one was missing!
{
	States
		{
		Spawn:
			LGFZ A 200
			LGFZ A 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			LGFZ A 50
			LGFZ B 2
			LGFZ A 50
			LGFZ B 2
			LGFZ A 50
			LGFZ B 2
			LGFZ A 25
			LGFZ B 2
			LGFZ A 25
			LGFZ B 2
			LGFZ A 10
			LGFZ B 2
			LGFZ A 10
			LGFZ B 2
			LGFZ A 10
			LGFZ BABABA 2
			TNT1 A 0 A_Jump(128, "Death")
			Goto Death.Burn			
		Death:	
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAA 0 A_CustomMissile ("XDeath1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath3", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAA 0 A_CustomMissile ("Guts", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAA 0 A_CustomMissile ("MuchBlood", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 A 0 A_SpawnItem("Shotgun")
			LGFZ C 300
			LGFZ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1 A_FadeOut(0.01)
			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Death.Freeze:
		Death.Ice:
		Death.Frost:
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_SpawnItem("BloodyAxe")
			Goto Shatter
			
		Defrost1:
			TNT1 A 0
			TNT1 A 0 A_SpawnItem("BloodyAxe")
			SCZ4 ABCD 6
			TNT1 A 3 A_SpawnItemEx("DeadLabguySCZ4E",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost2:
			TNT1 A 0
			TNT1 A 0 A_SpawnItem("BloodyAxe")
			FSMS IJK 6
			TNT1 A 3 A_SpawnItemEx("DeadFormerScientist",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost3:
			TNT1 A 0
			TNT1 A 0 A_SpawnItem("BloodyAxe")
			FSAD ACD 6
			TNT1 A 3 A_SpawnItemEx("DeadLabguyFSADE",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost4:
			TNT1 A 0
			TNT1 A 0 A_SpawnItem("BloodyAxe")
			FSD1 DEFG 6
			TNT1 A 3 A_SpawnItemEx("DeadLabguyFSD1H",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2003), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("LabguyGuyRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 17, 0, 0) //"LabguyRaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2003) // see _mob_list.xlsx
			Stop
	}
}



ACTOR FrozenNazi: FrozenZombieman //***Che: this one was missing and did not even have sprites!
{
	States
		{
		Spawn:
			FZDN A 200 // frozen nazi frankensteined by your great and industrious ChebMaster
			FZDN A 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZDN A 50
			FZDN B 2
			FZDN A 50
			FZDN B 2
			FZDN A 50
			FZDN B 2
			FZDN A 25
			FZDN B 2
			FZDN A 25
			FZDN B 2
			FZDN A 10
			FZDN B 2
			FZDN A 10
			FZDN B 2
			FZDN A 10
			FZDN BABABA 2
			TNT1 A 0 A_Jump(128, "Death")
			Goto Death.Burn			
		Death:	
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAA 0 A_CustomMissile ("XDeath1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath3", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAA 0 A_CustomMissile ("Guts", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAA 0 A_CustomMissile ("MuchBlood", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 A 0 A_SpawnItem("MP40Drop")
			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Death.Freeze:
		Death.Ice:
		Death.Frost:
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_SpawnItem("MP40Drop")
			Goto Shatter
		
		// There is no such thing as "nazi corpse", the dead nazis are not destructible
		
		Defrost1:
		Defrost2:
			TNT1 A 0
			TNT1 A 0 A_SpawnItem("MP40Drop")
			NAZH ABCD 6
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			NAZH E -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Defrost3:
		Defrost4:
			TNT1 A 0
			TNT1 A 0 A_SpawnItem("MP40Drop")
			NAZI HIJK 6
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			NAZH L -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2012), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("NaziRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 14, 0, 0) //"NaziRaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2012) // see _mob_list.xlsx
			Stop
	}
}


ACTOR FrozenChaingunguy: FrozenZombieman
{
	States
		{
		Spawn:
			FZD3 A 200
			FZD3 A 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZD3 A 50
			FZD3 B 2
			FZD3 A 50
			FZD3 B 2
			FZD3 A 50
			FZD3 B 2
			FZD3 A 25
			FZD3 B 2
			FZD3 A 25
			FZD3 B 2
			FZD3 A 10
			FZD3 B 2
			FZD3 A 10
			FZD3 B 2
			FZD3 A 10
			FZD3 BABABA 2
			TNT1 A 0 A_Jump(128, "Death")
			Goto Death.Burn	
		Death:	
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAA 0 A_CustomMissile ("XDeath1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath3", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAA 0 A_CustomMissile ("Guts", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAA 0 A_CustomMissile ("MuchBlood", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 A 0 A_SpawnItem("Chaingun")
			FZD3 C 300
			FZD3 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1 A_FadeOut(0.01)
			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Death.Freeze:
		Death.Ice:
		Death.Frost:
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_SpawnItem("Chaingun")
			Goto Shatter
			
			
		Defrost1:
			TNT1 A 0
			TNT1 A 0 A_SpawnItem("Chaingun")
			CPOD ABEF 6
			TNT1 A 3 A_SpawnItemEx("FBD_DeadChaingunGuy1",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost2:
			TNT1 A 0
			TNT1 A 0 A_SpawnItem("Chaingun")
			CPHD ABCDE 6
			TNT1 A 3 A_SpawnItemEx("DeadChaingunGuy_NoHead",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost3:
			TNT1 A 0
			CPHM IJC 6
			TNT1 A 0 A_SpawnItem("Chaingun")
			CPHM DE 6
			TNT1 A 3 A_SpawnItemEx("DeadChaingunGuy_KilledByMinorHead",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost4:
			TNT1 A 0
			CPDR CEGIK 6
			TNT1 A 0 A_SpawnItem("Chaingun")
			TNT1 A 3 A_SpawnItemEx("DeadChaingunGuyCPDRO",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		//***Che
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2002), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("ChaingunGuyRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 11, 0, 0) //"ChaingunGuyRaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2002) // see _mob_list.xlsx
			Stop
	}
}

ACTOR FrozenImp: FrozenZombieman
{
	States
		{
		Spawn:
			FZD4 A 200
			FZD4 A 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZD4 A 50
			FZD4 B 2
			FZD4 A 50
			FZD4 B 2
			FZD4 A 50
			FZD4 B 2
			FZD4 A 25
			FZD4 B 2
			FZD4 A 25
			FZD4 B 2
			FZD4 A 10
			FZD4 B 2
			FZD4 A 10
			FZD4 B 2
			FZD4 A 10
			FZD4 BABABA 2
			TNT1 A 0 A_Jump(128, "Death")
			Goto Death.Burn				
	
		Death:	
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAA 0 A_CustomMissile ("XDeath1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath3", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAA 0 A_CustomMissile ("Guts", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAA 0 A_CustomMissile ("MuchBlood", 48, 0, random (0, 360), 2, random (0, 160))
			FZD4 C 300
			FZD4 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1 A_FadeOut(0.01)
			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Death.Freeze:
		Death.Ice:
		Death.Frost:
			TNT1 A 0 A_NoBlocking
			Goto Shatter
			
		Defrost1:
			TNT1 A 0
			TR97 BCD 6
			TNT1 A 3 A_SpawnItemEx("FBD_DeadImp",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost2:
			TNT1 A 0
			TR08 ABD 6
			TNT1 A 3 A_SpawnItemEx("FBD_DeadImp_NoArm",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost3:
			TNT1 A 0
			TR09 BD 4
			TNT1 A 3 A_SpawnItemEx("FBD_DeadImp_NoLeg",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost4:
			TNT1 A 0
			TR08 F 12
			TNT1 A 3 A_SpawnItemEx("FBD_DeadImp_NoArmNoHead",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		//***Che
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2005), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("ImpRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 7, 0, 0)//"ImpRaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2005) // see _mob_list.xlsx
			Stop		
	}
}


ACTOR FrozenDemon: FrozenZombieman
{
	Radius 22
	Height 52
	Health 60
	States
		{
		Spawn:
			FZD5 A 200
			FZD5 A 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZD5 A 50
			FZD5 B 2
			FZD5 A 50
			FZD5 B 2
			FZD5 A 50
			FZD5 B 2
			FZD5 A 25
			FZD5 B 2
			FZD5 A 25
			FZD5 B 2
			FZD5 A 10
			FZD5 B 2
			FZD5 A 10
			FZD5 B 2
			FZD5 A 10
			FZD5 BABABA 2
			TNT1 A 0 A_Jump(128, "Death")
			Goto Death.Burn	
			
		Death.Fire:
		Death.Flames:
		Death.Burn:
			TNT1 A 0 A_ChangeFlag("SHOOTABLE", 0)
			TNT1 A 0 A_ChangeFlag("SOLID", 0)
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 A 0 A_NoBlocking
			//TNT1 A 0 A_spawnItem("Demon")
			TNT1 A 1 A_Jump(256, "Defrost1", "Defrost2", "Defrost3", "Defrost4")
			Wait // Zandronum client skips the jump and keeps repeating the last frame wainting for a status update from the server
			
		Death:	
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAA 0 A_CustomMissile ("XDeath1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath3", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAA 0 A_CustomMissile ("Guts", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAA 0 A_CustomMissile ("MuchBlood", 48, 0, random (0, 360), 2, random (0, 160))
			FZD5 C 300
			FZD5 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1 A_FadeOut(0.01)
			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Death.Freeze:
		Death.Ice:
		Death.Frost:
			TNT1 A 0 A_NoBlocking
			Goto Shatter
		Defrost1:
			TNT1 A 0
			SARG JKL 6
			TNT1 A 3 A_SpawnItemEx("DeadDemon1",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost2:
			TNT1 A 0
			SAAR BCDE 6
			TNT1 A 3 A_SpawnItemEx("DeadDemonNoArm",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost3:
			TNT1 A 0
			SARH ABC 6
			TNT1 A 3 A_SpawnItemEx("DeadDemonNoHead",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost4:
			TNT1 A 0
			S2RG JKL 6
			TNT1 A 3 A_SpawnItemEx("DeadDemon1Left",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2009), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("DemonRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 8, 0, 0) //"DemonRaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2009) // see _mob_list.xlsx
			Stop		
	}
}

ACTOR FrozenHellKnight: FrozenZombieman
{
	Radius 24
	Height 64
	Health 60
	Scale 1.1
	States
		{
		Spawn:
			FZD6 A 200
			FZD6 A 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZD6 A 50
			FZD6 B 2
			FZD6 A 50
			FZD6 B 2
			FZD6 A 50
			FZD6 B 2
			FZD6 A 25
			FZD6 B 2
			FZD6 A 25
			FZD6 B 2
			FZD6 A 10
			FZD6 B 2
			FZD6 A 10
			FZD6 B 2
			FZD6 A 10
			FZD6 BABABA 2
			TNT1 A 0 A_Jump(128, "Death")
			Goto Death.Burn	
			
		Death.Fire:
		Death.Flames:
		Death.Burn:
			TNT1 A 0 A_ChangeFlag("SHOOTABLE", 0)
			TNT1 A 0 A_ChangeFlag("SOLID", 0)
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAA 0 A_CustomMissile ("XDeath1Green", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("MuchBloodGreen", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 A 0 A_NoBlocking
			//TNT1 A 0 A_spawnItem("HellKnight")
			TNT1 A 1 A_Jump(256, "Defrost1", "Defrost2", "Defrost3", "Defrost4")
			Wait // Zandronum client skips the jump and keeps repeating the last frame wainting for a status update from the server			
		Death:	
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAA 0 A_CustomMissile ("XDeath1Green", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath2Green", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath3Green", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAA 0 A_CustomMissile ("GreenGuts", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAA 0 A_CustomMissile ("MuchBloodGreen", 48, 0, random (0, 360), 2, random (0, 160))
			FZD6 C 300
			FZD6 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1 A_FadeOut(0.01)
			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
			Stop
		Death.Freeze:
		Death.Ice:
		Death.Frost:
			TNT1 A 0 A_NoBlocking
			Goto Shatter
		Shatter:
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", Random(24,76), 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", Random(24,76), 0, random (0, 360), 2, random (0, 160))
			
			// size 2x
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2b", Random(24,76), 0, random (0, 360), 2, random (0, 160))
			
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", Random(24,76), 0, random (0, 360), 2, random (40, 120))

			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop			

		Defrost1:
			TNT1 A 0
			HKDD ABC 6
			TNT1 A 3 A_SpawnItemEx("FBD_DeadKnight",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost2:
			TNT1 A 0
			BTN3 ABC 6
			TNT1 A 3 A_SpawnItemEx("DeadHellKnightNoArm",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost3:
			TNT1 A 0
			BTN4 ABC 6
			TNT1 A 3 A_SpawnItemEx("DeadHellKnightNoArmNoHead",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost4:
			TNT1 A 0
			TNT1 A 3 A_SpawnItemEx("DyingHellKnight1",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		//***Che
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2022), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("KnightRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 1, 0, 0) //"KnightRaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2022) // see _mob_list.xlsx
			
			Stop			
	}
}

ACTOR FrozenBaronOfHell: FrozenHellKnight //FrozenZombieman
{
	Radius 24
	Height 64
	Health 60
	Scale 1.3
	States
		{
		Spawn:
			FZD7 A 200
			FZD7 A 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZD7 A 50
			FZD7 B 2
			FZD7 A 50
			FZD7 B 2
			FZD7 A 50
			FZD7 B 2
			FZD7 A 25
			FZD7 B 2
			FZD7 A 25
			FZD7 B 2
			FZD7 A 10
			FZD7 B 2
			FZD7 A 10
			FZD7 B 2
			FZD7 A 10
			FZD7 BABABA 2
			TNT1 A 0 A_Jump(128, "Death")
			Goto Death.Burn	

		Death:	
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAA 0 A_CustomMissile ("XDeath1Green", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath2Green", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath3Green", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAA 0 A_CustomMissile ("GreenGuts", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAA 0 A_CustomMissile ("MuchBloodGreen", 48, 0, random (0, 360), 2, random (0, 160))
			FZD7 C 300
			FZD7 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1 A_FadeOut(0.01)
			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Death.Freeze:
		Death.Ice:
		Death.Frost:
			TNT1 A 0 A_NoBlocking
			Goto Shatter
		Defrost1:
			TNT1 A 0
			BADH ABC 6
			TNT1 A 3 A_SpawnItemEx("FBD_DeadBaronNoHead",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost2:
			TNT1 A 0
			BOH3 BC 6
			TNT1 A 3 A_SpawnItemEx("FBD_DeadBaronBOH3D",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost3:
			TNT1 A 0
			KSA8 BDEF 6
			TNT1 A 3 A_SpawnItemEx("FBD_DeadBaronClassic",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost4:
			TNT1 A 0
			TNT1 A 3 A_SpawnItemEx("DyingBaron1",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		//***Che
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2004), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("BaronRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 4, 0, 0) //"BaronRaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2004) // see _mob_list.xlsx
			Stop			
	}
}



ACTOR FrozenCacodemon: FrozenZombieman
{
	Radius 31
	Height 56
	Health 60
	Scale 1.0
	States
		{
		Spawn:
			FZDC A 200
			FZDC A 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZDC A 50
			FZDC B 2
			FZDC A 50
			FZDC B 2
			FZDC A 50
			FZDC B 2
			FZDC A 25
			FZDC B 2
			FZDC A 25
			FZDC B 2
			FZDC A 10
			FZDC B 2
			FZDC A 10
			FZDC B 2
			FZDC A 10
			FZDC BABABA 2
			TNT1 A 0 A_Jump(128, "Death")
			Goto Death.Burn	
		Death.Fire:
		Death.Flames:
		Death.Burn:
			TNT1 A 0 A_ChangeFlag("SHOOTABLE", 0)
			TNT1 A 0 A_ChangeFlag("SOLID", 0)
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 A 0 A_NoBlocking
			//T1 A 0 A_spawnItem("Cacodemon")
			TNT1 A 1 A_Jump(256, "Defrost1", "Defrost2", "Defrost3", "Defrost4")
			Wait // Zandronum client skips the jump and keeps repeating the last frame wainting for a status update from the server			
		Death:	
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAAAAAAAAAAAA 0 A_CustomMissile ("Blue_FlyingBlood", 50, 0, random (160, 200), 2, random (0, 50))
			TNT1 A 0 A_CustomMissile ("CacoXDeath2", 50, 0, random (0, 360), 2, random (20, 40))
			TNT1 A 0 A_CustomMissile ("CacoXDeath1", 50, 0, random (0, 360), 2, random (20, 40))
			TNT1 A 0 A_CustomMissile ("CacoXDeath3", 50, 0, random (0, 360), 2, random (20, 40))
			TNT1 A 0 A_CustomMissile ("CacoXDeath4", 50, 0, random (0, 360), 2, random (20, 40))
			TNT1 AA 0 A_CustomMissile ("CacoXDeath5", 50, 0, random (0, 360), 2, random (20, 40))
			TNT1 AAAA 0 A_CustomMissile ("CacoXDeath6", 50, 0, random (0, 360), 2, random (20, 40))
			TNT1 AAAAAA 0 A_CustomMissile ("CacoXDeath7", 50, 0, random (0, 360), 2, random (20, 40))
			TNT1 A 3
			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Death.Freeze:
		Death.Ice:
		Death.Frost:
			TNT1 A 0 A_NoBlocking
			Goto Shatter
		Defrost1:
		Defrost4:
			TNT1 A 0
			HEAD HIJK 6
			TNT1 A 3 A_SpawnItemEx("FBD_DeadCacoDemon1",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost2:
			TNT1 A 0
			TNT1 AA 0 A_CustomMissile ("XDeath2Blue", 25, 0, random (0, 360), CMF_AIMDIRECTION, random (30, 150))
			TNT1 AA 0 A_CustomMissile ("XDeath3Blue", 25, 0, random (0, 360), CMF_AIMDIRECTION, random (30, 150))
			TNT1 AA 0 A_CustomMissile ("XDeath4Blue", 25, 0, random (0, 360), CMF_AIMDIRECTION, random (30, 150))
			CCD3 A 18
			TNT1 A 3 A_SpawnItemEx("DeadHalfCacoDemon",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost3:
			TNT1 A 0
			TNT1 AA 0 A_CustomMissile ("XDeath2Blue", 25, 0, random (0, 360), CMF_AIMDIRECTION, random (30, 150))
			CCD2 E 18
			TNT1 A 3 A_SpawnItemEx("DeadCacoDemon2",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		//***Che
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2011), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("CacodemonRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 10, 0, 0) //"CacodemonRaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2011) // see _mob_list.xlsx
			Stop
	}
}

//***Che
ACTOR FrozenCaclet: FrozenZombieman
{
	Radius 12
	Height 28
	Health 60
	Scale 0.8
	States
		{
		Spawn:
			KYCA X 200
			KYCA X 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			KYCA X 50
			KYCA X 2
			KYCA X 50
			KYCA X 2
			KYCA X 50
			KYCA X 2
			KYCA X 25
			KYCA X 2
			KYCA X 25
			KYCA X 2
			KYCA X 10
			KYCA X 2
			KYCA X 10
			KYCA X 2
			KYCA X 10
			KYCA XXXXXX 2
			TNT1 A 0 A_Jump(128, "Death")
			Goto Death.Burn	
		Death.Fire:
		Death.Flames:
		Death.Burn:
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			"----" A 0 A_ChangeFlag("SOLID", 0)
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_PlaySound ("ice/shatter")
			"----" AAAA 0 A_CustomMissile ("XIceChunk1", 24, 0, random (0, 360), 2, random (0, 160))
			"----" AAAAAAA 0 A_CustomMissile ("XIceChunk2", 24, 0, random (0, 360), 2, random (0, 160))
			"----" AAAAAAAA 0 A_CustomMissile ("XIceChunk3", 24, 0, random (0, 360), 2, random (40, 120))
			"----" A 0 A_NoBlocking
			"----" A 1 A_Jump(256, "Defrost1", "Defrost2", "Defrost3", "Defrost4")
			Wait // Zandronum client skips the jump and keeps repeating the last frame wainting for a status update from the server			
		Death:	
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAAAA 0 A_CustomMissile ("Blue_FlyingBlood", 25, 0, random (160, 200), 2, random (0, 50))
			TNT1 A 0 A_SpawnItem("RipCaclet")

			TNT1 A 3
			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Death.Freeze:
		Death.Ice:
		Death.Frost:
			TNT1 A 0 A_NoBlocking
			Goto Shatter
		Defrost1:
			TNT1 A 0
			TNT1 A 30 A_SpawnItemEx("FBD_DeadCaclet3",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop		
		Defrost4:
			TNT1 A 0
			TNT1 A 30 A_SpawnItemEx("FBD_DeadCaclet1",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost3:
			TNT1 A 0
			TNT1 A 30 A_SpawnItemEx("FBD_DeadCaclet2",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost2:
			TNT1 A 0
			TNT1 AA 0 A_CustomMissile ("XDeath2Blue", 25, 0, random (0, 360), CMF_AIMDIRECTION, random (30, 150))
			TNT1 AA 0 A_CustomMissile ("XDeath3Blue", 25, 0, random (0, 360), CMF_AIMDIRECTION, random (30, 150))
			TNT1 AA 0 A_CustomMissile ("XDeath4Blue", 25, 0, random (0, 360), CMF_AIMDIRECTION, random (30, 150))
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2010), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("CacletRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteWithResult("FallbackRez", 27)
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2010) // see _mob_list.xlsx
			Stop
	}
}


ACTOR FrozenPainElemental: FrozenZombieman
{
	Radius 31
	Height 56
	Health 60
	Scale 1.0
	States
		{
		Spawn:
			FZDP A 200
			FZDP A 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZDP A 50
			FZDP B 2
			FZDP A 50
			FZDP B 2
			FZDP A 50
			FZDP B 2
			FZDP A 25
			FZDP B 2
			FZDP A 25
			FZDP B 2
			FZDP A 10
			FZDP B 2
			FZDP A 10
			FZDP B 2
			FZDP A 10
			FZDP BABABA 2
		Death:
		Death.Freeze:
		Death.Ice:
		Death.Frost:
		Death.Fire:
		Death.Flames:
		Death.Burn:
		
			// PE doesn't have raiseable *corpses*, we can only spawn an exploding PE
			//  (a regular PE who dies on spawn) who will then be respawned by the game engine.
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_ChangeFlag("SHOOTABLE", 0)
			TNT1 A 0 A_ChangeFlag("SOLID", 0)
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 A 0 A_NoBlocking
			
			// this is what will get respawned:
			TNT1 A 0 A_SpawnItemEx("PEExplodingHarmlessly",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			// P.S. it does *not* explode harmlessly, it spawns three lost souls!
			
			TNT1 A 30 A_ChangeFlag("CORPSE", 0) 
			Stop
	}
}


ACTOR FrozenMancubus: FrozenHellKnight
{
	Radius 24
	Height 64
	Health 60
	Scale 1.2
	States
		{
		Spawn:
			FZD9 A 200
			FZD9 A 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZD9 A 50
			FZD9 B 2
			FZD9 A 50
			FZD9 B 2
			FZD9 A 50
			FZD9 B 2
			FZD9 A 25
			FZD9 B 2
			FZD9 A 25
			FZD9 B 2
			FZD9 A 10
			FZD9 B 2
			FZD9 A 10
			FZD9 B 2
			FZD9 A 10
			FZD9 BABABA 2
			TNT1 A 0 A_Jump(128, "Death")
			Goto Death.Burn	
		Death.Fire:
		Death.Flames:
		Death.Burn:
			TNT1 A 0 A_ChangeFlag("SHOOTABLE", 0)
			TNT1 A 0 A_ChangeFlag("SOLID", 0)
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 A 0 A_NoBlocking
			TNT1 A 1 A_Jump(256, "Defrost1", "Defrost2", "Defrost3", "Defrost4")
			Wait // Zandronum client skips the jump and keeps repeating the last frame wainting for a status update from the server					
		Death:	
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAA 0 A_CustomMissile ("XDeath1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath3", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAA 0 A_CustomMissile ("Guts", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAA 0 A_CustomMissile ("MuchBlood", 48, 0, random (0, 360), 2, random (0, 160))
			FZD9 C 300
			FZD9 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1 A_FadeOut(0.01)

			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
			
		Death.Freeze:
		Death.Ice:
		Death.Frost:
			TNT1 A 0 A_NoBlocking
			Goto Shatter
		Defrost1:
			TNT1 A 0
			FAT2 LNO 9
			TNT1 A 3 A_SpawnItemEx("FBD_NoGutsFatso",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost2:
			TNT1 A 0
			FATK BCDE 6
			TNT1 A 3 A_SpawnItemEx("DeadFat",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost3:
			TNT1 A 0
			FATT PQRS 6
			TNT1 A 3 A_SpawnItemEx("DeadFatNoHead",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Stop
		Defrost4:
			TNT1 A 0
			FATT PQRS 6
			TNT1 A 0 A_CustomMissile ("XDeathMancubusArm", 20, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 40))
			TNT1 A 3 A_SpawnItemEx("DeadFatNoHead_RemovedWeapon",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0) // FAT2 R
			Stop
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2021), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("MancubusRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 18, 0, 0) //"MancubusRaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2021) // see _mob_list.xlsx
			Stop			
	}
}


//***Che
ACTOR FrozenVolcabus: FrozenMancubus
{
	Scale 1.5
	Radius 39
	Height 62
	Health 120
	States
	{
		Spawn:
			FZDY CCCCCC 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZDY C 400
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZDY C 50
		Death:
		Death.Fire:
		Death.Flames:
		Death.Burn:
		Death.Freeze:
		Death.Ice:
		Death.Frost:		

			// *no* defrost
		
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2b", Random(36,60), 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 A 0 A_CustomMissile ("XDeath1", 0, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath2", 0, 0, random (0, 360), 2, random (0, 160))
			TNT1 A 0 A_CustomMissile ("XDeath1", 0, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAA 0 A_CustomMissile ("XDeath2b", 20, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAA 0 A_CustomMissile ("XDeath3b", 20, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("MuchBlood2", 50, 0, random (0, 360), 2, random (0, 160))
			TNT1 A 0 A_CustomMissile ("XDeathVolcabusArm", 20, 0, random (0, 360), 2, random (50, 130))	
			TNT1 AA 0 A_CustomMissile ("XDeath1", 0, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath2", 0, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath2", 0, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAA 0 A_CustomMissile ("RipGuts", 0, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAA 0 A_CustomMissile ("XDeath2", 0, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath3", 0, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAA 0 A_CustomMissile ("Guts", 32, 0, random (0, 360), 2, random (0, 160))	
			TNT1 AAAAAA 0 A_CustomMissile ("MuchBlood", 48, 0, random (0, 360), 2, random (0, 160))	
			
			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2020), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("VolcabusRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 19, 0, 0) //"VolcabusRaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2020) // see _mob_list.xlsx
			Stop			
	}		
}




ACTOR Frozenarchvile: FrozenHellKnight
{
	Radius 20
	Height 56
	Health 60
	States
		{
		Spawn:
			TNT1 A 0
			
			TNT1 A 0 A_JumpIfInTargetInventory("IAmRaiseable", 1, 1)
			Goto AfterSpawn2
			TNT1 A 0 A_GiveInventory("IAmRaiseable", 1) 
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)			
			
		AfterSpawn2:	
			TNT1 A 0 A_GiveInventory("EnemyIsArchvile") // the nightmare respawn ACS scripts require this for vile corpses
			FZDB A 200
			FZDB A 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZDB A 50
			FZDB B 2
			FZDB A 50
			FZDB B 2
			FZDB A 50
			FZDB B 2
			FZDB A 25
			FZDB B 2
			FZDB A 25
			FZDB B 2
			FZDB A 10
			FZDB B 2
			FZDB A 10
			FZDB B 2
			FZDB A 10
			FZDB BABABA 2
		Death:
		Death.Fire:
		Death.Flames:
		Death.Burn:	

			// *no* defrost
		
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAA 0 A_CustomMissile ("XDeath1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath3", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAA 0 A_CustomMissile ("Guts", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAA 0 A_CustomMissile ("MuchBlood", 48, 0, random (0, 360), 2, random (0, 160))
			//FZDB C 300
			//FZDB CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1 A_FadeOut(0.01)
			
			//***Che: do NOT play with flags here
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Raise: 
			"----" A 0
			// a double check
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			
			"----" A 0 A_JumpIfInventory("IAmRaiseable", 1, 1)
			Goto Vanish 
			
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2006), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("VileRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 2, 0, 0) //"VileRaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2006) // see _mob_list.xlsx
			Stop
		Vanish:
			TNT1 A 1
			Stop
		RespawnOnNightmare:
			// the special effects are provided by the raised actor
			"----" A 0
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			
			"----" A 3 A_SpawnItemEx ("VileRaisedByScript",0,0,0) // deliberately NOT using the nocheckposition flag to fail if there is not enough space
			"----" A 10 // wait 10 tics to be destroyed by the spawned monster
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 3, 0, 0) //"VileRaisedByScript"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2007) // see _mob_list.xlsx
			Stop			
	}
}


ACTOR FrozenArachnotron: FrozenZombieman
{
	Radius 48
	Height 64
	Health 60
	Scale 1.3
	States
		{
		Spawn:
			FZD8 A 200
			FZD8 A 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZD8 A 50
			FZD8 B 2
			FZD8 A 50
			FZD8 B 2
			FZD8 A 50
			FZD8 B 2
			FZD8 A 25
			FZD8 B 2
			FZD8 A 25
			FZD8 B 2
			FZD8 A 10
			FZD8 B 2
			FZD8 A 10
			FZD8 B 2
			FZD8 A 10
			FZD8 BABABA 2
		Death:
		XDeath:
		Death.Fire:
		Death.Flames:
		Death.Burn:	

			// again, no defrost for this one
			
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAA 0 A_CustomMissile ("XDeath1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath3", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAA 0 A_CustomMissile ("Guts", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAA 0 A_CustomMissile ("MuchBlood", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAA 0 A_CustomMissile ("SpiderLeg", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			
			//***Che: there is *NO* such sprite as FZD8 C, only A and B!
			//FZD8 C 300
			//FZD8 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1 A_FadeOut(0.01)
			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
			
		Death.Freeze:
		Death.Ice:
		Death.Frost:
			TNT1 A 0 A_NoBlocking
			TNT1 AA 0 A_CustomMissile ("SpiderLeg", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			Goto Shatter
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2019), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("ArachnotronRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 20, 0, 0) //"ArachnotronRaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2019) // see _mob_list.xlsx
			Stop				
	}
}


ACTOR FrozenAncientArachnotron: FrozenArachnotron
{
	Scale 1.4
	States {
		Spawn:
			FZDY DDDDDD 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZDY D 400
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZDY D 50
		Death:
		XDeath:
		Death.Fire:
		Death.Flames:
		Death.Burn:		
			TNT1 A 0
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AA 0 A_CustomMissile ("SpiderLeg2", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAA 0 A_CustomMissile ("Guts", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAA 0 A_CustomMissile ("SmallBrainPiece", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAA 0 A_CustomMissile ("SpiderPart1", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("SpiderPart2", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAA 0 A_CustomMissile ("PEPart2", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAA 0 A_CustomMissile ("MuchBlood", 48, 0, random (0, 360), 2, random (0, 160))	
			TNT1 AA 0 A_CustomMissile ("SpiderLeg2", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			TNT1 A 0
			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Death.Freeze:
		Death.Ice:
		Death.Frost:
			TNT1 A 0 A_NoBlocking
			TNT1 AA 0 A_CustomMissile ("SpiderLeg2", 32, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			Goto Shatter
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2018), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("Arachnotron2RaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 21, 0, 0) //"Arachnotron2RaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2018) // see _mob_list.xlsx
			Stop		
	}
}

ACTOR FrozenRevenant: FrozenHellKnight
{
	Radius 20
	Height 64
	Health 60
	States
		{
		Spawn:
			FZDA A 200
			FZDA A 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZDA A 50
			FZDA B 2
			FZDA A 50
			FZDA B 2
			FZDA A 50
			FZDA B 2
			FZDA A 25
			FZDA B 2
			FZDA A 25
			FZDA B 2
			FZDA A 10
			FZDA B 2
			FZDA A 10
			FZDA B 2
			FZDA A 10
			FZDA BABABA 2
		Death:
		Death.Fire:
		Death.Flames:
		Death.Burn:		
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAAAA 0 A_CustomMissile ("RevenantDust", 60, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 360))
			TNT1 AAAAAA 0 A_CustomMissile ("RevenantDust2", 60, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 360))
			TNT1 A 0 A_CustomMissile ("XDeathRevenantHead", 52, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			TNT1 AAA 0 A_CustomMissile ("XDeath1", 67, 0, random (0, 360), CMF_AIMDIRECTION, random (30, 150))
			TNT1 AA 0 A_CustomMissile ("RevenantArm", 57, 0, random (0, 360), CMF_AIMDIRECTION, random (30, 150))
			TNT1 AA 0 A_CustomMissile ("MetalShard1", 50, 0, random (0, 360), CMF_AIMDIRECTION, random (30, 160))
			TNT1 AA 0 A_CustomMissile ("MetalShard2", 50, 0, random (0, 360), CMF_AIMDIRECTION, random (30, 160))
			TNT1 AA 0 A_CustomMissile ("MetalShard3", 50, 0, random (0, 360), CMF_AIMDIRECTION, random (30, 160))			
			TNT1 AAA 0 A_CustomMissile ("XDeath1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAA 0 A_CustomMissile ("Guts", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAA 0 A_CustomMissile ("RevenantBonesFast", 57, 0, random (0, 360), CMF_AIMDIRECTION, random (30, 150))
			TNT1 AAAAA 0 A_CustomMissile ("RevenantPiece", 57, 0, random (0, 360), CMF_AIMDIRECTION, random (30, 150))
			TNT1 AA 0 A_CustomMissile ("MuchBlood", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 A 0 A_SpawnItem("HellishMissileLauncher")
			
			//***Che: there is no such sprite as FZDA C
			//FZDA C 300
			//FZDA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1 A_FadeOut(0.01)
			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Death.Freeze:
		Death.Ice:
		Death.Frost:
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_SpawnItem("HellishMissileLauncher")
			Goto Shatter
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2013), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("RevenantRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 13, 0, 0) //"RevenantRaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2013) // see _mob_list.xlsx
			Stop		
	}
}



ACTOR XIceChunk1
{
    Radius 4
    Height 4
    Speed 8
    Scale 1.0
	Mass 1
    +NOBLOCKMAP
	+MISSILE
    +NOTELEPORT
    +MOVEWITHSECTOR
    +CLIENTSIDEONLY
	-DONTSPLASH
	+THRUGHOST
	+THRUACTORS
	+DOOMBOUNCE
	Alpha 1
	BounceFactor 0.4
	Mass 1
    States
    {
		Spawn:
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Death")
			ICC1 ABCD 3
			Loop
		Death:
			ICC1 A 100
			//***Che ICC1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_FadeOut(0.01)
			ICC1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 4 A_FadeOut(0.04)
			Stop
    }
}


ACTOR XIceChunk2: XIceChunk1
{
    States
    {
		Spawn:
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Death")
			ICC2 ABCD 3
			Loop
		Death:
			ICC2 A 100
			//***Che ICC2 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_FadeOut(0.01)
			ICC2 AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 4 A_FadeOut(0.04)
			Stop
    }
}

//***Che
ACTOR XIceChunk2b: XIceChunk2
{
    States
    {
		Spawn:
			TNT1 A 0 NODELAY A_Jump(128, "Flip")
			TNT1 A 0 A_SetScale(-2, 2)
			Goto Fly
		Flip:
			TNT1 A 0 A_SetScale(2, 2)
			Goto Fly
		Fly:
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Death")
			ICC2 ABCD 3
			Loop
		Death:
			ICC2 A 100
			ICC2 AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 4 A_FadeOut(0.04)
			Stop
    }
}


ACTOR XIceChunk3: XIceChunk1
{
	-DOOMBOUNCE
	Gravity 0.4
	Speed 6
    States
    {
		Spawn:
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Death")
			ICC3 ABCD 3
			Loop
		Death:
			ICC3 A 100
			//***Che ICC3 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_FadeOut(0.01)
			ICC3 AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 4 A_FadeOut(0.04)
			Stop
    }
}


ACTOR FrozenMummy: FrozenZombieman
{
	Radius 16
	Height 56
	Health 60
	Scale 0.6	
	States
		{
		Spawn:
			FZDY A 200
			FZDY A 2
			TNT1 A 0 A_PlaySound("ice/crackle/long")
			FZDY A 50
			FZDY A 2
			FZDY A 50
			FZDY A 2
			FZDY A 50
			FZDY A 2
			FZDY A 25
			FZDY A 2
			FZDY A 25
			FZDY A 2
			FZDY A 10
			FZDY A 2
			FZDY A 10
			FZDY A 2
			FZDY A 10
			FZDY AAAAAA 2
		Death:
		Death.Fire:
		Death.Flames:
		Death.Burn:
		Death.Freeze:
		Death.Ice:
		Death.Frost:		
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 38, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 28, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			
			TNT1 AAAAA 0 A_CustomMissile ("RevenantDust", 40, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAAAAA 0 A_CustomMissile ("RevenantDust2", 40, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 0 A_CustomMissile ("XDeathRevenantHead", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 A 0 A_CustomMissile ("XDeath1", 47, 0, random (0, 360), 2, random (30, 150))
			TNT1 A 0 A_CustomMissile ("XDeath1", 40, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 0 A_CustomMissile ("XDeath2b", 40, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 0 A_CustomMissile ("XDeath3b", 40, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 0 A_SpawnItem("MuchBlood2", 0, 50)
			TNT1 AAA 0 A_CustomMissile ("RevenantBones", 25, 0, random (0, 360), 2, random (30, 150))
			TNT1 AAAAA 0 A_CustomMissile ("RevenantBonesFast", 47, 0, random (0, 360), 2, random (30, 150))
			TNT1 AAAAA 0 A_CustomMissile ("RevenantPiece", 37, 0, random (0, 360), 2, random (30, 150))
			TNT1 A 0
			

			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2016), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)			
			"----" A 0 A_SpawnItemEx ("MummyRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 16, 0, 0) //"MummyRaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2016) // see _mob_list.xlsx
			Stop	
	}
}



ACTOR FrozenAracnorb: FrozenZombieman
{
	Scale 0.85
	Radius 16
	States {
		Spawn:
			FZDY B 200
			FZDY B 2
			TNT1 B 0 A_PlaySound("ice/crackle/long")
			FZDY B 50
			FZDY B 2
			FZDY B 50
			FZDY B 2
			FZDY B 50
			FZDY B 2
			FZDY B 25
			FZDY B 2
			FZDY B 25
			FZDY B 2
			FZDY B 10
			FZDY B 2
			FZDY B 10
			FZDY B 2
			FZDY B 10
			FZDY BBBBBB 2
		Death:
		Death.Fire:
		Death.Flames:
		Death.Burn:
		Death.Freeze:
		Death.Ice:
		Death.Frost:		
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 28, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 38, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 18, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAAA 0 A_CustomMissile ("Guts", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAA 0 A_CustomMissile ("XDeathBrain1", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAA 0 A_CustomMissile ("XDeathBrain2", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAA 0 A_CustomMissile ("MuchBlood", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeathSpiderNew1", 32, 0, random (0, 360), 2, random (60, 90))
			TNT1 A 0 A_CustomMissile ("XDeathSpiderNew2", 32, 0, random (0, 360), 2, random (60, 90))
			TNT1 A 0
			
			//***Che: prevent the game engine from auto-respawning this gibbed corpse on nightmare as a corpse
			// while allowiing archviles raising it (they only check for the CORPSE flag)
			// and respawning via script on nightmare
			TNT1 A 0 A_ChangeFlag("CORPSE", 1)
			TNT1 A 0 A_ChangeFlag("ISMONSTER", 0)
			TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
			Stop
		Raise:
			// note: the frame letter of the "----" (keep previous) sprite is ignored
			"----" A 0
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_NoBlocking // the raising code deep in C++ makes it solid
			"----" A 0 A_JumpIf(!CallAcs("EnoughSpaceToRezNormally", 2017), "FallbackRaise")
			// The vile had already copied his friendliness and target to this corpse.
			// A_SpawnItem(Ex) automatically copy friendliness
			//   and target, but only if both the spawner and the spawnee are monsters.
			"----" A 0 A_ChangeFlag("COUNTKILL", 0)
			"----" A 0 A_ChangeFlag("ISMONSTER", 1)
			"----" A 0 A_SpawnItemEx ("AracnorbRaisedByVile",0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS | SXF_NOCHECKPOSITION)
			"----" A 1 A_Jump(256, "OnRezSfx")
			Wait //Zandronum client repeats the last frame while it waits for a status update from the server
			
		FallbackRaise:
			"----" A 0 A_GiveInventory("RezzingNow")
			"----" A 0 A_ChangeFlag("CORPSE", 0)
			"----" A 0 A_ChangeFlag("SHOOTABLE", 0)
			//"----" A -1 ACS_NamedExecuteAlways("FallbackRez", 0, 22, 0, 0) //"AracnorbRaisedByVile"
			"----" A -1 ACS_NamedExecuteWithResult("FallbackRezMkII", 2017) // see _mob_list.xlsx
			Stop			
	}
}

Actor FrozenMarineFake: FrozenZombieman 
// NOT raiseable: used by NPC marines and evil marines alike.
// If you wish to be rezzable on ice death, employ 
// TNT1 A -1 ACS_NamedExecuteAlways("RespawnCorpseAfter60sIfNightmare", 0, 0, 0, 0)
{
	-CORPSE
	States
	{
		Raise:
			Stop
		Spawn:
			FZDY E 200
			FZDY E 2
			TNT1 E 0 A_PlaySound("ice/crackle/long")
			FZDY E 50
			FZDY E 2
			FZDY E 50
			FZDY E 2
			FZDY E 50
			FZDY E 2
			FZDY E 25
			FZDY E 2
			FZDY E 25
			FZDY E 2
			FZDY E 10
			FZDY E 2
			FZDY E 10
			FZDY E 2
			FZDY E 10
			FZDY EEEEEEE 2	
			Goto Death
		Death:
		Death.Fire:
		Death.Flames:
		Death.Burn:	
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", 48, 0, random (0, 360), 2, random (40, 120))
			TNT1 AAA 0 A_CustomMissile ("XDeath1", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath2", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AA 0 A_CustomMissile ("XDeath3", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAA 0 A_CustomMissile ("Guts", 32, 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAA 0 A_CustomMissile ("MuchBlood", 48, 0, random (0, 360), 2, random (0, 160))
			TNT1 A 30
			Stop
		Death.Freeze:
		Death.Ice:
		Death.Frost:
		Death.IOS_Frost:
		Shatter:
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_PlaySound ("ice/shatter")
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk1", Random(24,56), 0, random (0, 360), 2, random (0, 160))
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2", Random(24,56), 0, random (0, 360), 2, random (0, 160))
			
			// size 2x
			TNT1 AAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk2b", Random(24,56), 0, random (0, 360), 2, random (0, 160))
			
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("XIceChunk3", Random(24,56), 0, random (0, 360), 2, random (40, 120))	
			TNT1 A 30
			Stop
	}
}


Actor FrozenUberZoldat: FrozenMarineFake
{
	States
	{
		Spawn:
			UZOL Z 200
			UZOL Z 2
			TNT1 E 0 A_PlaySound("ice/crackle/long")
			UZOL Z 50
			UZOL Z 2
			UZOL Z 50
			UZOL Z 2
			UZOL Z 50
			UZOL Z 2
			UZOL Z 25
			UZOL Z 2
			UZOL Z 25
			UZOL Z 2
			UZOL Z 10
			UZOL Z 2
			UZOL Z 10
			UZOL Z 2
			UZOL Z 10
			UZOL ZZZZZZZ 2	
			Goto Death	
	}
}


Actor FrozenMarineFake2: FrozenMarineFake
{
	Height 40
	States
	{
		Spawn:
			FZDY F 200
			FZDY F 2
			TNT1 E 0 A_PlaySound("ice/crackle/long")
			FZDY F 50
			FZDY F 2
			FZDY F 50
			FZDY F 2
			FZDY F 50
			FZDY F 2
			FZDY F 25
			FZDY F 2
			FZDY F 25
			FZDY F 2
			FZDY F 10
			FZDY F 2
			FZDY F 10
			FZDY F 2
			FZDY F 10
			FZDY FFFFFFF 2	
			Goto Death	
	}
}



#include Permafrost.txt

