
// Wraith -------------------------------------------------------------------

class Wraith : Actor
{
	Default
	{
		Health 150;
		PainChance 25;
		Speed 11;
		Height 55;
		Mass 75;
		Damage 10;
		Monster;
		+NOGRAVITY +DROPOFF +FLOAT
		+FLOORCLIP +TELESTOMP
		SeeSound "WraithSight";
		AttackSound "WraithAttack";
		PainSound "WraithPain";
		DeathSound "WraithDeath";
		ActiveSound "WraithActive";
		HitObituary "$OB_WRAITHHIT";
		Obituary "$OB_WRAITH";
	}

	native void A_WraithInit();
	native void A_WraithChase();
	native void A_WraithFX3();
	native void A_WraithMelee();

	States
	{
	Spawn:
		WRTH A 10;
		WRTH B 5 A_WraithInit;
		Goto Look;
	Look:
		WRTH AB 15 A_Look;
		Loop;
	See:
		WRTH ABCD 4 A_WraithChase;
		Loop;
	Pain:
		WRTH A 2;
		WRTH H 6 A_Pain;
		Goto See;
	Melee:
		WRTH E 6 A_FaceTarget;
		WRTH F 6 A_WraithFX3;
		WRTH G 6 A_WraithMelee;
		Goto See;
	Missile:
		WRTH E 6 A_FaceTarget;
		WRTH F 6;
		WRTH G 6 A_CustomMissile("WraithFX1");
		Goto See;
	Death:
		WRTH I 4;
		WRTH J 4 A_Scream;
		WRTH KL 4;
		WRTH M 4 A_NoBlocking;
		WRTH N 4 A_QueueCorpse;
		WRTH O 4;
		WRTH PQ 5;
		WRTH R -1;
		Stop;
	XDeath:
		WRT2 A 5;
		WRT2 B 5 A_Scream;
		WRT2 CD 5;
		WRT2 E 5 A_NoBlocking;
		WRT2 F 5 A_QueueCorpse;
		WRT2 G 5;
		WRT2 H -1;
		Stop;
	Ice:
		WRT2 I 5 A_FreezeDeath;
		WRT2 I 1 A_FreezeDeathChunks;
		Wait;
	}
}

// Buried wraith ------------------------------------------------------------

class WraithBuried : Wraith
{
	Default
	{
		Height 68;
		-SHOOTABLE
		-SOLID
		+DONTMORPH
		+DONTBLAST
		+SPECIALFLOORCLIP
		+STAYMORPHED
		+INVISIBLE
		PainChance 0;
	}
	
	native void A_WraithRaiseInit();
	native void A_WraithRaise();
	
	States
	{
	Spawn:
		Goto Super::Look;
	See:
		WRTH A 2 A_WraithRaiseInit;
		WRTH A 2 A_WraithRaise;
		WRTH A 2 A_FaceTarget;
		WRTH BB 2 A_WraithRaise;
		Goto See + 1;
	Chase:
		Goto Super::See;
	}
}

// Wraith FX 1 --------------------------------------------------------------

class WraithFX1 : Actor
{
	Default
	{
		Speed 14;
		Radius 10;
		Height 6;
		Mass 5;
		Damage 5;
		DamageType "Fire";
		Projectile;
		+FLOORCLIP
		SeeSound "WraithMissileFire";
		DeathSound "WraithMissileExplode";
	}

	native void A_WraithFX2();

	States
	{
	Spawn:
		WRBL A 3 Bright;
		WRBL B 3 Bright A_WraithFX2;
		WRBL C 3 Bright;
		Loop;
	Death:
		WRBL D 4 Bright;
		WRBL E 4 Bright A_WraithFX2;
		WRBL F 4 Bright;
		WRBL GH 3 Bright A_WraithFX2;
		WRBL I 3 Bright;
		Stop;
	}
}

// Wraith FX 2 --------------------------------------------------------------

class WraithFX2 : Actor
{
	Default
	{
		Radius 2;
		Height 5;
		Mass 5;
		+NOBLOCKMAP +DROPOFF
		+FLOORCLIP +NOTELEPORT
	}
	States
	{
	Spawn:
		WRBL JKLMNOP 4 Bright;
		Stop;
	}
}

// Wraith FX 3 --------------------------------------------------------------

class WraithFX3 : Actor
{
	Default
	{
		Radius 2;
		Height 5;
		Mass 5;
		+NOBLOCKMAP +DROPOFF +MISSILE
		+FLOORCLIP +NOTELEPORT
		DeathSound "Drip";
	}
	States
	{
	Spawn:
		WRBL QRS 4 Bright;
		Loop;
	Death:
		WRBL S 4 Bright;
		Stop;
	}
}

// Wraith FX 4 --------------------------------------------------------------

class WraithFX4 : Actor
{
	Default
	{
		Radius 2;
		Height 5;
		Mass 5;
		+NOBLOCKMAP +DROPOFF +MISSILE
		+NOTELEPORT
		DeathSound "Drip";
	}
	States
	{
	Spawn:
		WRBL TUVW 4;
		Loop;
	Death:
		WRBL W 10;
		Stop;
	}
}

// Wraith FX 5 --------------------------------------------------------------

class WraithFX5 : WraithFX4
{
	States
	{
	Spawn:
		WRBL XYZ 7;
		Loop;
	Death:
		WRBL Z 35;
		Stop;
	}
}
