qzdoom-gpl/wadsrc/static/zscript/doom/scriptedmarine.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

309 lines
5.1 KiB
Text

// Scriptable marine -------------------------------------------------------
class ScriptedMarine : Actor native
{
Default
{
Health 100;
Radius 16;
Height 56;
Mass 100;
Speed 8;
Painchance 160;
MONSTER;
-COUNTKILL
Translation 0;
Damage 100;
DeathSound "*death";
PainSound "*pain50";
}
native void A_M_Refire (bool ignoremissile=false);
native void A_M_CheckAttack ();
native void A_MarineChase ();
native void A_MarineLook ();
native void A_MarineNoise ();
native void A_M_Punch (int force);
native void A_M_SawRefire ();
native void A_M_FirePistol (bool accurate);
native void A_M_FireShotgun ();
native void A_M_FireShotgun2 ();
native void A_M_FireCGun(bool accurate);
native void A_M_FireMissile ();
native void A_M_FirePlasma ();
native void A_M_FireRailgun ();
native void A_M_BFGsound ();
native void A_M_FireBFG ();
States
{
Spawn:
PLAY A 4 A_MarineLook;
PLAY A 4 A_MarineNoise;
Loop;
Idle:
PLAY A 4 A_MarineLook;
PLAY A 4 A_MarineNoise;
PLAY A 4 A_MarineLook;
PLAY B 4 A_MarineNoise;
PLAY B 4 A_MarineLook;
PLAY B 4 A_MarineNoise;
Loop;
See:
PLAY ABCD 4 A_MarineChase;
Loop;
Melee.Fist:
PLAY E 4 A_FaceTarget;
PLAY E 4 A_M_Punch(1);
PLAY A 9;
PLAY A 0 A_M_Refire(1);
Loop;
PLAY A 5 A_FaceTarget;
Goto See;
Melee.Berserk:
PLAY E 4 A_FaceTarget;
PLAY E 4 A_M_Punch(10);
PLAY A 9;
PLAY A 0 A_M_Refire(1);
Loop;
PLAY A 5 A_FaceTarget;
Goto See;
Melee.Chainsaw:
PLAY E 4 A_MarineNoise;
PLAY E 4 A_M_Saw;
PLAY E 0 A_M_SawRefire;
goto Melee.Chainsaw+1;
PLAY A 0;
Goto See;
Missile:
Missile.None:
PLAY E 12 A_FaceTarget;
Goto Idle;
PLAY F 6 BRIGHT;
Loop;
Missile.Pistol:
PLAY E 4 A_FaceTarget;
PLAY F 6 BRIGHT A_M_FirePistol(1);
PLAY A 4 A_FaceTarget;
PLAY A 0 A_M_Refire;
PLAY A 5;
Goto See;
Fireloop.Pistol:
PLAY F 6 BRIGHT A_M_FirePistol(0);
PLAY A 4 A_FaceTarget;
PLAY A 0 A_M_Refire;
Goto Fireloop.Pistol;
PLAY A 5;
Goto See;
Missile.Shotgun:
PLAY E 3 A_M_CheckAttack;
PLAY F 7 BRIGHT A_M_FireShotgun;
Goto See;
Missile.SSG:
PLAY E 3 A_M_CheckAttack;
PLAY F 7 BRIGHT A_M_FireShotgun2;
Goto See;
Missile.Chaingun:
PLAY E 4 A_FaceTarget;
PLAY FF 4 BRIGHT A_M_FireCGun(1);
PLAY FF 4 BRIGHT A_M_FireCGun(0);
PLAY A 0 A_M_Refire;
Goto Missile.Chaingun+3;
PLAY A 0;
Goto See;
Missile.Rocket:
PLAY E 8;
PLAY F 6 BRIGHT A_M_FireMissile;
PLAY E 6;
PLAY A 0 A_M_Refire;
Loop;
PLAY A 0;
Goto See;
Missile.Plasma:
PLAY E 2 A_FaceTarget;
PLAY E 0 A_FaceTarget;
PLAY F 3 BRIGHT A_M_FirePlasma;
PLAY A 0 A_M_Refire;
Goto Missile.Plasma+1;
PLAY A 0;
Goto See;
Missile.Railgun:
PLAY E 4 A_M_CheckAttack;
PLAY F 6 BRIGHT A_M_FireRailgun;
Goto See;
Missile.BFG:
PLAY E 5 A_M_BFGSound;
PLAY EEEEE 5 A_FaceTarget;
PLAY F 6 BRIGHT A_M_FireBFG;
PLAY A 4 A_FaceTarget;
PLAY A 0 A_M_Refire;
Loop;
PLAY A 0;
Goto See;
SkipAttack:
PLAY A 1;
Goto See;
Pain:
PLAY G 4;
PLAY G 4 A_Pain;
Goto Idle;
Death:
PLAY H 10;
PLAY I 10 A_Scream;
PLAY J 10 A_NoBlocking;
PLAY KLM 10;
PLAY N -1;
Stop;
XDeath:
PLAY O 5;
PLAY P 5 A_XScream;
PLAY Q 5 A_NoBlocking;
PLAY RSTUV 5;
PLAY W -1;
Stop;
Raise:
PLAY MLKJIH 5;
Goto See;
}
}
//---------------------------------------------------------------------------
class MarineFist : ScriptedMarine
{
States
{
Melee:
Goto Super::Melee.Fist;
Missile:
Stop;
}
}
//---------------------------------------------------------------------------
class MarineBerserk : MarineFist
{
States
{
Melee:
Goto Super::Melee.Berserk;
Missile:
Stop;
}
}
//---------------------------------------------------------------------------
class MarineChainsaw : ScriptedMarine
{
States
{
Melee:
Goto Super::Melee.Chainsaw;
Missile:
Stop;
}
}
//---------------------------------------------------------------------------
class MarinePistol : ScriptedMarine
{
States
{
Missile:
Goto Super::Missile.Pistol;
}
}
//---------------------------------------------------------------------------
class MarineShotgun : ScriptedMarine
{
States
{
Missile:
Goto Super::Missile.Shotgun;
}
}
//---------------------------------------------------------------------------
class MarineSSG : ScriptedMarine
{
States
{
Missile:
Goto Super::Missile.SSG;
}
}
//---------------------------------------------------------------------------
class MarineChaingun : ScriptedMarine
{
States
{
Missile:
Goto Super::Missile.Chaingun;
}
}
//---------------------------------------------------------------------------
class MarineRocket : MarineFist
{
States
{
Missile:
Goto Super::Missile.Rocket;
}
}
//---------------------------------------------------------------------------
class MarinePlasma : ScriptedMarine
{
States
{
Missile:
Goto Super::Missile.Plasma;
}
}
//---------------------------------------------------------------------------
class MarineRailgun : ScriptedMarine
{
States
{
Missile:
Goto Super::Missile.Railgun;
}
}
//---------------------------------------------------------------------------
class MarineBFG : ScriptedMarine
{
States
{
Missile:
Goto Super::Missile.BFG;
}
}