gzdoom/wadsrc/static/zscript/strife/programmer.txt
Christoph Oelckers 371712c53a - turned everything I could into non-action functions.
- fixed emission of the self pointer in FxVMFunctionCall. I did not realize that the self expression only sets up a register for the value, not pushing it onto the stack.
2016-10-22 17:49:08 +02:00

116 lines
2 KiB
Text

// 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
}
}