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

ACTOR Programmer
{
	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"
	
	action native A_ProgrammerMelee ();
	action native A_SpawnProgrammerBase ();
	action native A_ProgrammerDeath ();
	action native 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 -----------------------------------

ACTOR ProgrammerBase
{
	+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 ----------------------------------------

ACTOR ProgLevelEnder : Inventory native
{
	+INVENTORY.UNDROPPABLE
}
