gzdoom/wadsrc/static/zscript/hexen/wraith.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

236 lines
3.4 KiB
Text

// Wraith -------------------------------------------------------------------
class Wraith : Actor
{
Default
{
Health 150;
PainChance 25;
Speed 11;
Height 55;
Mass 75;
Damage 10;
Monster;
+NOGRAVITY +DROPOFF +FLOAT
+FLOORCLIP +TELESTOMP
SeeSound "WraithSight";
AttackSound "WraithAttack";
PainSound "WraithPain";
DeathSound "WraithDeath";
ActiveSound "WraithActive";
HitObituary "$OB_WRAITHHIT";
Obituary "$OB_WRAITH";
}
native void A_WraithInit();
native void A_WraithChase();
native void A_WraithFX3();
native void A_WraithMelee();
States
{
Spawn:
WRTH A 10;
WRTH B 5 A_WraithInit;
Goto Look;
Look:
WRTH AB 15 A_Look;
Loop;
See:
WRTH ABCD 4 A_WraithChase;
Loop;
Pain:
WRTH A 2;
WRTH H 6 A_Pain;
Goto See;
Melee:
WRTH E 6 A_FaceTarget;
WRTH F 6 A_WraithFX3;
WRTH G 6 A_WraithMelee;
Goto See;
Missile:
WRTH E 6 A_FaceTarget;
WRTH F 6;
WRTH G 6 A_CustomMissile("WraithFX1", 32, 0);
Goto See;
Death:
WRTH I 4;
WRTH J 4 A_Scream;
WRTH KL 4;
WRTH M 4 A_NoBlocking;
WRTH N 4 A_QueueCorpse;
WRTH O 4;
WRTH PQ 5;
WRTH R -1;
Stop;
XDeath:
WRT2 A 5;
WRT2 B 5 A_Scream;
WRT2 CD 5;
WRT2 E 5 A_NoBlocking;
WRT2 F 5 A_QueueCorpse;
WRT2 G 5;
WRT2 H -1;
Stop;
Ice:
WRT2 I 5 A_FreezeDeath;
WRT2 I 1 A_FreezeDeathChunks;
Wait;
}
}
// Buried wraith ------------------------------------------------------------
class WraithBuried : Wraith
{
Default
{
Height 68;
-SHOOTABLE
-SOLID
+DONTMORPH
+DONTBLAST
+SPECIALFLOORCLIP
+STAYMORPHED
+INVISIBLE
PainChance 0;
}
native void A_WraithRaiseInit();
native void A_WraithRaise();
States
{
Spawn:
Goto Super::Look;
See:
WRTH A 2 A_WraithRaiseInit;
WRTH A 2 A_WraithRaise;
WRTH A 2 A_FaceTarget;
WRTH BB 2 A_WraithRaise;
Goto See + 1;
Chase:
Goto Super::See;
}
}
// Wraith FX 1 --------------------------------------------------------------
class WraithFX1 : Actor
{
Default
{
Speed 14;
Radius 10;
Height 6;
Mass 5;
Damage 5;
DamageType "Fire";
Projectile;
+FLOORCLIP
SeeSound "WraithMissileFire";
DeathSound "WraithMissileExplode";
}
native void A_WraithFX2();
States
{
Spawn:
WRBL A 3 Bright;
WRBL B 3 Bright A_WraithFX2;
WRBL C 3 Bright;
Loop;
Death:
WRBL D 4 Bright;
WRBL E 4 Bright A_WraithFX2;
WRBL F 4 Bright;
WRBL GH 3 Bright A_WraithFX2;
WRBL I 3 Bright;
Stop;
}
}
// Wraith FX 2 --------------------------------------------------------------
class WraithFX2 : Actor
{
Default
{
Radius 2;
Height 5;
Mass 5;
+NOBLOCKMAP +DROPOFF
+FLOORCLIP +NOTELEPORT
}
States
{
Spawn:
WRBL JKLMNOP 4 Bright;
Stop;
}
}
// Wraith FX 3 --------------------------------------------------------------
class WraithFX3 : Actor
{
Default
{
Radius 2;
Height 5;
Mass 5;
+NOBLOCKMAP +DROPOFF +MISSILE
+FLOORCLIP +NOTELEPORT
DeathSound "Drip";
}
States
{
Spawn:
WRBL QRS 4 Bright;
Loop;
Death:
WRBL S 4 Bright;
Stop;
}
}
// Wraith FX 4 --------------------------------------------------------------
class WraithFX4 : Actor
{
Default
{
Radius 2;
Height 5;
Mass 5;
+NOBLOCKMAP +DROPOFF +MISSILE
+NOTELEPORT
DeathSound "Drip";
}
States
{
Spawn:
WRBL TUVW 4;
Loop;
Death:
WRBL W 10;
Stop;
}
}
// Wraith FX 5 --------------------------------------------------------------
class WraithFX5 : WraithFX4
{
States
{
Spawn:
WRBL XYZ 7;
Loop;
Death:
WRBL Z 35;
Stop;
}
}