
// Pod ----------------------------------------------------------------------

class Pod : Actor
{
	Default
	{
		Health 45;
		Radius 16;
		Height 54;
		Painchance 255;
		+SOLID +NOBLOOD +SHOOTABLE +DROPOFF
		+WINDTHRUST +PUSHABLE +SLIDESONWALLS
		+CANPASS +TELESTOMP +DONTMORPH
		+NOBLOCKMONST +DONTGIB +OLDRADIUSDMG
		DeathSound "world/podexplode";
		PushFactor 0.5;
	}
	native void A_PodPain (class<Actor> podtype = "PodGoo");
	native void A_RemovePod ();
	
	States
	{
	Spawn:
		PPOD A 10;
		Loop;
	Pain:
		PPOD B 14 A_PodPain;
		Goto Spawn;
	Death:
		PPOD C 5 BRIGHT A_RemovePod;
		PPOD D 5 BRIGHT A_Scream;
		PPOD E 5 BRIGHT A_Explode;
		PPOD F 10 BRIGHT;
		Stop;
	Grow:
		PPOD IJKLMNOP 3;
		Goto Spawn;
	}
}


// Pod goo (falls from pod when damaged) ------------------------------------

class PodGoo : Actor
{
	Default
	{
		Radius 2;
		Height 4;
		Gravity 0.125;
		+NOBLOCKMAP +MISSILE +DROPOFF
		+NOTELEPORT +CANNOTPUSH
	}
	States
	{
	Spawn:
		PPOD GH 8;
		Loop;
	Death:
		PPOD G 10;
		Stop;
	}
}

// Pod generator ------------------------------------------------------------

class PodGenerator : Actor
{
	Default
	{
		+NOBLOCKMAP
		+NOSECTOR
		+DONTSPLASH
		AttackSound "world/podgrow";
	}

	native void A_MakePod (class<Actor> podtype = "Pod");

	States
	{
	Spawn:
		TNT1 A 35 A_MakePod;
		Loop;
	}
}


// Teleglitter generator 1 --------------------------------------------------

class TeleGlitterGenerator1 : Actor
{
	Default
	{
		+NOBLOCKMAP 
		+NOGRAVITY
		+DONTSPLASH
		+MOVEWITHSECTOR
	}
	States
	{
	Spawn:
		TNT1 A 8 A_SpawnItemEx("TeleGlitter1", random[TeleGlitter](0,31)-16, random[TeleGlitter](0,31)-16, 0, 0,0,0.25);
		Loop;
	}
}

// Teleglitter generator 2 --------------------------------------------------

class TeleGlitterGenerator2 : Actor
{
	Default
	{
		+NOBLOCKMAP 
		+NOGRAVITY
		+DONTSPLASH
		+MOVEWITHSECTOR
	}
	States
	{
	Spawn:
		TNT1 A 8 A_SpawnItemEx("TeleGlitter2", random[TeleGlitter2](0,31)-16, random[TeleGlitter2](0,31)-16, 0, 0,0,0.25);
		Loop;
	}
}


// Teleglitter 1 ------------------------------------------------------------

class TeleGlitter1 : Actor
{
	Default
	{
		+NOBLOCKMAP +NOGRAVITY +MISSILE
		RenderStyle "Add";
		Damage 0;
	}

	native void A_AccTeleGlitter ();

	States
	{
	Spawn:
		TGLT A 2 BRIGHT;
		TGLT B 2 BRIGHT A_AccTeleGlitter;
		TGLT C 2 BRIGHT;
		TGLT D 2 BRIGHT A_AccTeleGlitter;
		TGLT E 2 BRIGHT;
		Loop;
	}
}

// Teleglitter 2 ------------------------------------------------------------

class TeleGlitter2 : TeleGlitter1
{
	States
	{
	Spawn:
		TGLT F 2 BRIGHT;
		TGLT G 2 BRIGHT A_AccTeleGlitter;
		TGLT H 2 BRIGHT;
		TGLT I 2 BRIGHT A_AccTeleGlitter;
		TGLT J 2 BRIGHT;
		Loop;
	}
}


// --- Volcano --------------------------------------------------------------

class Volcano : Actor
{
	Default
	{
		Radius 12;
		Height 20;
		+SOLID
	}
	
	native void A_VolcanoSet ();
	native void A_VolcanoBlast ();
	
	States
	{
	Spawn:
		VLCO A 350;
		VLCO A 35 A_VolcanoSet;
		VLCO BCDBCD 3;
		VLCO E 10 A_VolcanoBlast;
		Goto Spawn+1;
	}

}

// Volcano blast ------------------------------------------------------------

class VolcanoBlast : Actor
{
	Default
	{
		Radius 8;
		Height 8;
		Speed 2;
		Damage 2;
		DamageType "Fire";
		Gravity 0.125;
		+NOBLOCKMAP +MISSILE +DROPOFF
		+NOTELEPORT
		DeathSound "world/volcano/blast";
	}

	native void A_VolcBallImpact ();

	States
	{
	Spawn:
		VFBL AB 4 BRIGHT A_SpawnItemEx("Puffy", random2[BeastPuff]()*0.015625, random2[BeastPuff]()*0.015625, random2[BeastPuff]()*0.015625, 
									0,0,0,0,SXF_ABSOLUTEPOSITION, 64);
		Loop;

	Death:
		XPL1 A 4 BRIGHT A_VolcBallImpact;
		XPL1 BCDEF 4 BRIGHT;
		Stop;
	}
}

// Volcano T Blast ----------------------------------------------------------

class VolcanoTBlast : Actor
{
	Default
	{
		Radius 8;
		Height 6;
		Speed 2;
		Damage 1;
		DamageType "Fire";
		Gravity 0.125;
		+NOBLOCKMAP +MISSILE +DROPOFF
		+NOTELEPORT
	}
	States
	{
	Spawn:
		VTFB AB 4 BRIGHT;
		Loop;
	Death:
		SFFI CBABCDE 4 BRIGHT;
		Stop;
	}
}


