
// Programmer ---------------------------------------------------------------

class Programmer : Actor
{
	Default
	{
		Health 1100;
		PainChance 50;
		Speed 26;
		FloatSpeed 5;
		Radius 45;
		Height  60;
		Mass 800;
		Damage 4;
		Monster;
		+NOGRAVITY
		+FLOAT
		+NOBLOOD
		+NOTDMATCH
		+DONTMORPH
		+NOBLOCKMONST
		+LOOKALLAROUND
		+NOICEDEATH
		+NOTARGETSWITCH
		DamageFactor "Fire", 0.5;
		MinMissileChance 150;
		AttackSound "programmer/attack";
		PainSound "programmer/pain";
		DeathSound "programmer/death";
		ActiveSound "programmer/active";
		Obituary "$OB_PROGRAMMER";
		DropItem "Sigil1";
	}
	
	native void A_ProgrammerMelee ();
	native void A_SpawnProgrammerBase ();
	native void A_ProgrammerDeath ();
	native void A_SpotLightning();
	
	States
	{
	Spawn:
		PRGR A 5 A_Look;
		PRGR A 1 A_SentinelBob;
		Loop;
	See:
		PRGR A 160 A_SentinelBob;
		PRGR BCD 5 A_SentinelBob;
		PRGR EF 2 A_SentinelBob;
		PRGR EF 3 A_Chase;
		Goto See+4;
	Melee:
		PRGR E 2 A_SentinelBob;
		PRGR F 3 A_SentinelBob;
		PRGR E 3 A_FaceTarget;
		PRGR F 4 A_ProgrammerMelee;
		Goto See+4;
	Missile:
		PRGR G 5 A_FaceTarget;
		PRGR H 5 A_SentinelBob;
		PRGR I 5 Bright A_FaceTarget;
		PRGR J 5 Bright A_SpotLightning;
		Goto See+4;
	Pain:
		PRGR K 5 A_Pain;
		PRGR L 5 A_SentinelBob;
		Goto See+4;
	Death:
		PRGR L 7 Bright A_TossGib;
		PRGR M 7 Bright A_Scream;
		PRGR N 7 Bright A_TossGib;
		PRGR O 7 Bright A_NoBlocking;
		PRGR P 7 Bright A_TossGib;
		PRGR Q 7 Bright A_SpawnProgrammerBase;
		PRGR R 7 Bright;
		PRGR S 6 Bright;
		PRGR TUVW 5 Bright;
		PRGR X 32 Bright;
		PRGR X -1 Bright A_ProgrammerDeath;
		Stop;
	}
}


// The Programmer's base for when he dies -----------------------------------

class ProgrammerBase : Actor
{
	Default
	{
		+NOBLOCKMAP
		+NOCLIP
		+NOBLOOD
	}
	States
	{
	Spawn:
		BASE A 5 Bright A_Explode(32,32,1,1);
		BASE BCD 5 Bright;
		BASE EFG 5;
		BASE H -1;
		Stop;
	}
}


// The Programmer level ending thing ----------------------------------------

class ProgLevelEnder : Inventory native
{
	Default
	{
		+INVENTORY.UNDROPPABLE
	}
}
