

// base for all spectral monsters which hurt when being touched--------------

class SpectralMonster : Actor native
{
	Default
	{
		Monster;
		+SPECIAL
		+SPECTRAL
		+NOICEDEATH
	}
	
	native void A_SpectreChunkSmall ();
	native void A_SpectreChunkLarge ();
	native void A_Spectre3Attack ();
	native void A_SpotLightning ();
}


// Container for all spectral lightning deaths ------------------------------

class SpectralLightningBase : Actor
{
	Default
	{
		+NOTELEPORT
		+ACTIVATEIMPACT
		+ACTIVATEPCROSS
		+STRIFEDAMAGE
		MaxStepHeight 4;
		RenderStyle "Add";
		SeeSound "weapons/sigil";
		DeathSound "weapons/sigilhit";
	}
	States
	{
	Death:
		ZAP1 B 3 A_Explode(32,32);
		ZAP1 A 3 A_AlertMonsters;
		ZAP1 BCDEFE 3;
		ZAP1 DCB 2;
		ZAP1 A 1;
		Stop;
	}
}

// Spectral Lightning death that does not explode ---------------------------

class SpectralLightningDeath1 : SpectralLightningBase
{
	States
	{
	Death:
		Goto Super::Death+1;
	}
}

// Spectral Lightning death that does not alert monsters --------------------

class SpectralLightningDeath2 : SpectralLightningBase
{
	States
	{
	Death:
		Goto Super::Death+2;
	}
}

// Spectral Lightning death that is shorter than the rest -------------------

class SpectralLightningDeathShort : SpectralLightningBase
{
	States
	{
	Death:
		Goto Super::Death+6;
	}
}

// Spectral Lightning (Ball Shaped #1) --------------------------------------

class SpectralLightningBall1 : SpectralLightningBase
{
	Default
	{
		Speed 30;
		Radius 8;
		Height 16;
		Damage 70;
		Projectile;
		+SPECTRAL
	}
	States
	{
	Spawn:
		ZOT3 ABCDE 4 Bright;
		Loop;
	}
}

// Spectral Lightning (Ball Shaped #2) --------------------------------------

class SpectralLightningBall2 : SpectralLightningBall1
{
	Default
	{
		Damage 20;
	}
}

// Spectral Lightning (Horizontal #1) ---------------------------------------

class SpectralLightningH1 : SpectralLightningBase
{
	Default
	{
		Speed 30;
		Radius 8;
		Height 16;
		Damage 70;
		Projectile;
		+SPECTRAL
	}

	native void A_SpectralLightningTail ();

	States
	{
	Spawn:
		ZAP6 A 4 Bright;
		ZAP6 BC 4 Bright A_SpectralLightningTail;
		Loop;
	}
}


// Spectral Lightning (Horizontal #2) -------------------------------------

class SpectralLightningH2 : SpectralLightningH1
{
	Default
	{
		Damage 20;
	}
}

// Spectral Lightning (Horizontal #3) -------------------------------------

class SpectralLightningH3 : SpectralLightningH1
{
	Default
	{
		Damage 10;
	}
}

// ASpectralLightningHTail --------------------------------------------------

class SpectralLightningHTail : Actor
{
	Default
	{
		+NOBLOCKMAP
		+NOGRAVITY
		+DROPOFF
		RenderStyle "Add";
	}
	States
	{
	Spawn:
		ZAP6 ABC 5 Bright;
		Stop;
	}
}	

// Spectral Lightning (Big Ball #1) -----------------------------------------

class SpectralLightningBigBall1 : SpectralLightningDeath2
{
	Default
	{
		Speed 18;
		Radius 20;
		Height 40;
		Damage 130;
		Projectile;
		+SPECTRAL
	}

	native void A_SpectralBigBallLightning ();

	States
	{
	Spawn:
		ZAP7 AB 4 Bright A_SpectralBigBallLightning;
		ZAP7 CDE 6 Bright A_SpectralBigBallLightning;
		Loop;
	}
}


// Spectral Lightning (Big Ball #2 - less damaging) -------------------------

class SpectralLightningBigBall2 : SpectralLightningBigBall1
{
	Default
	{
		Damage 30;
	}
}

// Sigil Lightning (Vertical #1) --------------------------------------------

class SpectralLightningV1 : SpectralLightningDeathShort
{
	Default
	{
		Speed 22;
		Radius 8;
		Height 24;
		Damage 100;
		Projectile;
		DamageType "SpectralLow";
		+SPECTRAL
	}
	States
	{
	Spawn:
		ZOT1 AB 4 Bright;
		ZOT1 CDE 6 Bright;
		Loop;
	}
}

// Sigil Lightning (Vertical #2 - less damaging) ----------------------------

class SpectralLightningV2 : SpectralLightningV1
{
	Default
	{
		Damage 50;
	}
}

// Sigil Lightning Spot (roams around dropping lightning from above) --------

class SpectralLightningSpot : SpectralLightningDeath1
{
	Default
	{
		Speed 18;
		ReactionTime 70;
		+NOBLOCKMAP
		+NOBLOCKMONST
		+NODROPOFF
		RenderStyle "Translucent";
		Alpha 0.6;
	}

	native void A_SpectralLightning ();

	States
	{
	Spawn:
		ZAP5 A 4 Bright A_Countdown;
		ZAP5 B 4 Bright A_SpectralLightning;
		ZAP5 CD 4 Bright A_Countdown;
		Loop;
	}
}

// Sigil Lightning (Big Vertical #1) ----------------------------------------

class SpectralLightningBigV1 : SpectralLightningDeath1
{
	Default
	{
		Speed 28;
		Radius 8;
		Height 16;
		Damage 120;
		Projectile;
		+SPECTRAL
	}
	States
	{
	Spawn:
		ZOT2 ABCDE 4 Bright A_Tracer2;
		Loop;
	}
}

// Actor 90 -----------------------------------------------------------------

class SpectralLightningBigV2 : SpectralLightningBigV1
{
	Default
	{
		Damage 60;
	}
}




