qzdoom/wadsrc/static/zscript/strife/spectral.txt

364 lines
5.6 KiB
Plaintext
Raw Normal View History

2016-10-18 21:05:58 +00:00
// base for all spectral monsters which hurt when being touched--------------
class SpectralMonster : Actor native
{
Default
{
Monster;
+SPECIAL
+SPECTRAL
+NOICEDEATH
}
2016-11-28 10:52:03 +00:00
//============================================================================
void A_SpectreChunkSmall ()
{
Actor foo = Spawn("AlienChunkSmall", pos + (0, 0, 10), ALLOW_REPLACE);
if (foo != null)
{
int t;
t = random[SpectreChunk]() & 15;
foo.Vel.X = (t - (random[SpectreChunk]() & 7));
t = random[SpectreChunk]() & 15;
foo.Vel.Y = (t - (random[SpectreChunk]() & 7));
foo.Vel.Z = (random[SpectreChunk]() & 15);
}
}
void A_SpectreChunkLarge ()
{
Actor foo = Spawn("AlienChunkLarge", pos + (0, 0, 10), ALLOW_REPLACE);
if (foo != null)
{
int t;
t = random[SpectreChunk]() & 7;
foo.Vel.X = (t - (random[SpectreChunk]() & 15));
t = random[SpectreChunk]() & 7;
foo.Vel.Y = (t - (random[SpectreChunk]() & 15));
foo.Vel.Z = (random[SpectreChunk]() & 7);
}
}
void A_Spectre3Attack ()
{
if (target == null)
return;
Actor foo = Spawn("SpectralLightningV2", Pos + (0, 0, 32), ALLOW_REPLACE);
foo.Vel.Z = -12;
foo.target = self;
foo.FriendPlayer = 0;
foo.tracer = target;
Angle -= 90.;
for (int i = 0; i < 20; ++i)
{
Angle += 9.;
SpawnSubMissile ("SpectralLightningBall2", self);
}
Angle -= 90.;
}
2016-10-18 21:05:58 +00:00
native void A_SpotLightning ();
2016-10-18 21:05:58 +00:00
}
// Container for all spectral lightning deaths ------------------------------
class SpectralLightningBase : Actor
{
Default
{
+NOTELEPORT
+ACTIVATEIMPACT
+ACTIVATEPCROSS
+STRIFEDAMAGE
MaxStepHeight 4;
RenderStyle "Add";
SeeSound "weapons/sigil";
DeathSound "weapons/sigilhit";
}
States
{
Death:
ZAP1 B 3 A_Explode(32,32);
ZAP1 A 3 A_AlertMonsters;
ZAP1 BCDEFE 3;
ZAP1 DCB 2;
ZAP1 A 1;
Stop;
}
}
// Spectral Lightning death that does not explode ---------------------------
class SpectralLightningDeath1 : SpectralLightningBase
{
States
{
Death:
Goto Super::Death+1;
}
}
// Spectral Lightning death that does not alert monsters --------------------
class SpectralLightningDeath2 : SpectralLightningBase
{
States
{
Death:
Goto Super::Death+2;
}
}
// Spectral Lightning death that is shorter than the rest -------------------
class SpectralLightningDeathShort : SpectralLightningBase
{
States
{
Death:
Goto Super::Death+6;
}
}
// Spectral Lightning (Ball Shaped #1) --------------------------------------
class SpectralLightningBall1 : SpectralLightningBase
{
Default
{
Speed 30;
Radius 8;
Height 16;
Damage 70;
Projectile;
+SPECTRAL
}
States
{
Spawn:
ZOT3 ABCDE 4 Bright;
Loop;
}
}
// Spectral Lightning (Ball Shaped #2) --------------------------------------
class SpectralLightningBall2 : SpectralLightningBall1
{
Default
{
Damage 20;
}
}
// Spectral Lightning (Horizontal #1) ---------------------------------------
class SpectralLightningH1 : SpectralLightningBase
{
Default
{
Speed 30;
Radius 8;
Height 16;
Damage 70;
Projectile;
+SPECTRAL
}
native void A_SpectralLightningTail ();
2016-10-18 21:05:58 +00:00
States
{
Spawn:
ZAP6 A 4 Bright;
ZAP6 BC 4 Bright A_SpectralLightningTail;
Loop;
}
}
// Spectral Lightning (Horizontal #2) -------------------------------------
class SpectralLightningH2 : SpectralLightningH1
{
Default
{
Damage 20;
}
}
// Spectral Lightning (Horizontal #3) -------------------------------------
class SpectralLightningH3 : SpectralLightningH1
{
Default
{
Damage 10;
}
}
// ASpectralLightningHTail --------------------------------------------------
class SpectralLightningHTail : Actor
{
Default
{
+NOBLOCKMAP
+NOGRAVITY
+DROPOFF
RenderStyle "Add";
}
States
{
Spawn:
ZAP6 ABC 5 Bright;
Stop;
}
}
// Spectral Lightning (Big Ball #1) -----------------------------------------
class SpectralLightningBigBall1 : SpectralLightningDeath2
{
Default
{
Speed 18;
Radius 20;
Height 40;
Damage 130;
Projectile;
+SPECTRAL
}
native void A_SpectralBigBallLightning ();
2016-10-18 21:05:58 +00:00
States
{
Spawn:
ZAP7 AB 4 Bright A_SpectralBigBallLightning;
ZAP7 CDE 6 Bright A_SpectralBigBallLightning;
Loop;
}
}
// Spectral Lightning (Big Ball #2 - less damaging) -------------------------
class SpectralLightningBigBall2 : SpectralLightningBigBall1
{
Default
{
Damage 30;
}
}
// Sigil Lightning (Vertical #1) --------------------------------------------
class SpectralLightningV1 : SpectralLightningDeathShort
{
Default
{
Speed 22;
Radius 8;
Height 24;
Damage 100;
Projectile;
DamageType "SpectralLow";
+SPECTRAL
}
States
{
Spawn:
ZOT1 AB 4 Bright;
ZOT1 CDE 6 Bright;
Loop;
}
}
// Sigil Lightning (Vertical #2 - less damaging) ----------------------------
class SpectralLightningV2 : SpectralLightningV1
{
Default
{
Damage 50;
}
}
// Sigil Lightning Spot (roams around dropping lightning from above) --------
class SpectralLightningSpot : SpectralLightningDeath1
{
Default
{
Speed 18;
ReactionTime 70;
+NOBLOCKMAP
+NOBLOCKMONST
+NODROPOFF
RenderStyle "Translucent";
Alpha 0.6;
}
native void A_SpectralLightning ();
2016-10-18 21:05:58 +00:00
States
{
Spawn:
ZAP5 A 4 Bright A_Countdown;
ZAP5 B 4 Bright A_SpectralLightning;
ZAP5 CD 4 Bright A_Countdown;
Loop;
}
}
// Sigil Lightning (Big Vertical #1) ----------------------------------------
class SpectralLightningBigV1 : SpectralLightningDeath1
{
Default
{
Speed 28;
Radius 8;
Height 16;
Damage 120;
Projectile;
+SPECTRAL
}
States
{
Spawn:
ZOT2 ABCDE 4 Bright A_Tracer2;
Loop;
}
}
// Actor 90 -----------------------------------------------------------------
class SpectralLightningBigV2 : SpectralLightningBigV1
{
Default
{
Damage 60;
}
}