
// FireDemon ----------------------------------------------------------------

class FireDemon : Actor
{
	Default
	{
		Health 80;
		ReactionTime 8;
		PainChance 1;
		Speed 13;
		Radius 20;
		Height 68;
		Mass 75;
		Damage 1;
		Monster;
		+DROPOFF +NOGRAVITY +FLOAT
		+FLOORCLIP +INVULNERABLE +TELESTOMP
		SeeSound "FireDemonSpawn";
		PainSound "FireDemonPain";
		DeathSound "FireDemonDeath";
		ActiveSound "FireDemonActive";
		Obituary "$OB_FIREDEMON";
	}

	native void A_FiredRocks();
	native void A_FiredChase();
	native void A_FiredAttack();
	native void A_FiredSplotch();

	States
	{
	Spawn:
		FDMN X 5 Bright;
		FDMN EFG 10 Bright A_Look;
		Goto Spawn + 1;
	See:
		FDMN E 8 Bright;
		FDMN F 6 Bright;
		FDMN G 5 Bright;
		FDMN F 8 Bright;
		FDMN E 6 Bright;
		FDMN G 7 Bright A_FiredRocks;
		FDMN HI 5 Bright;
		FDMN J 5 Bright A_UnSetInvulnerable;
	Chase:
		FDMN ABC 5 Bright A_FiredChase;
		Loop;
	Pain:
		FDMN D 0 Bright A_UnSetInvulnerable;
		FDMN D 6 Bright A_Pain;
		Goto Chase;
	Missile:
		FDMN K 3 Bright A_FaceTarget;
		FDMN KKK 5 Bright A_FiredAttack;
		Goto Chase;
	Crash:
	XDeath:
		FDMN M 5 A_FaceTarget;
		FDMN N 5 A_NoBlocking;
		FDMN O 5 A_FiredSplotch;
		Stop;
	Death:
		FDMN D 4 Bright A_FaceTarget;
		FDMN L 4 Bright A_Scream;
		FDMN L 4 Bright A_NoBlocking;
		FDMN L 200 Bright;
		Stop;
	Ice:
		FDMN R 5 A_FreezeDeath;
		FDMN R 1 A_FreezeDeathChunks;
		Wait;
	}
}

// FireDemonSplotch1 -------------------------------------------------------

class FireDemonSplotch1 : Actor
{
	Default
	{
		ReactionTime 8;
		Radius 3;
		Height 16;
		Mass 100;
		+DROPOFF +CORPSE
		+NOTELEPORT +FLOORCLIP
	}
	States
	{
	Spawn:
		FDMN P 3;
		FDMN P 6 A_QueueCorpse;
		FDMN Y -1;
		Stop;
	}
}

// FireDemonSplotch2 -------------------------------------------------------

class FireDemonSplotch2 : FireDemonSplotch1
{
	States
	{
	Spawn:
		FDMN Q 3;
		FDMN Q 6 A_QueueCorpse;
		FDMN Z -1;
		Stop;
	}
}

// FireDemonRock1 ------------------------------------------------------------

class FireDemonRock1 : Actor
{
	Default
	{
		ReactionTime 8;
		Radius 3;
		Height 5;
		Mass 16;
		+NOBLOCKMAP +DROPOFF +MISSILE
		+NOTELEPORT
	}

	native void A_SmBounce();

	States
	{
	Spawn:
		FDMN S 4;
		Loop;
	Death:
		FDMN S 5 A_SmBounce;
	XDeath:
		FDMN S 200;
		Stop;
	}
}

// FireDemonRock2 ------------------------------------------------------------

class FireDemonRock2 : FireDemonRock1
{
	States
	{
	Spawn:
		FDMN T 4;
		Loop;
	Death:
		FDMN T 5 A_SmBounce;
	XDeath:
		FDMN T 200;
		Stop;
	}
}

// FireDemonRock3 ------------------------------------------------------------

class FireDemonRock3 : FireDemonRock1
{
	States
	{
	Spawn:
		FDMN U 4;
		Loop;
	Death:
		FDMN U 5 A_SmBounce;
	XDeath:
		FDMN U 200;
		Stop;
	}
}

// FireDemonRock4 ------------------------------------------------------------

class FireDemonRock4 : FireDemonRock1
{
	States
	{
	Spawn:
		FDMN V 4;
		Loop;
	Death:
		FDMN V 5 A_SmBounce;
	XDeath:
		FDMN V 200;
		Stop;
	}
}

// FireDemonRock5 ------------------------------------------------------------

class FireDemonRock5 : FireDemonRock1
{
	States
	{
	Spawn:
		FDMN W 4;
		Loop;
	Death:
		FDMN W 5 A_SmBounce;
	XDeath:
		FDMN W 200;
		Stop;
	}
}

// FireDemonMissile -----------------------------------------------------------

class FireDemonMissile : Actor
{
	Default
	{
		ReactionTime 8;
		Speed 10;
		Radius 10;
		Height 6;
		Mass 5;
		Damage 1;
		DamageType "Fire";
		Projectile;
		RenderStyle "Add";
		DeathSound "FireDemonMissileHit";
	}
	States
	{
	Spawn:
		FDMB A 5 Bright;
		Loop;
	Death:
		FDMB BCDE 5 Bright;
		Stop;
	}
}
