mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-12-18 08:31:03 +00:00
371712c53a
- 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.
297 lines
4.6 KiB
Text
297 lines
4.6 KiB
Text
|
|
// Boss spot ----------------------------------------------------------------
|
|
|
|
class BossSpot : SpecialSpot
|
|
{
|
|
Default
|
|
{
|
|
+INVISIBLE
|
|
}
|
|
}
|
|
|
|
// Sorcerer (D'Sparil on his serpent) ---------------------------------------
|
|
|
|
class Sorcerer1 : Actor
|
|
{
|
|
Default
|
|
{
|
|
Health 2000;
|
|
Radius 28;
|
|
Height 100;
|
|
Mass 800;
|
|
Speed 16;
|
|
PainChance 56;
|
|
Monster;
|
|
+BOSS
|
|
+DONTMORPH
|
|
+NORADIUSDMG
|
|
+NOTARGET
|
|
+NOICEDEATH
|
|
+FLOORCLIP
|
|
+DONTGIB
|
|
SeeSound "dsparilserpent/sight";
|
|
AttackSound "dsparilserpent/attack";
|
|
PainSound "dsparilserpent/pain";
|
|
DeathSound "dsparilserpent/death";
|
|
ActiveSound "dsparilserpent/active";
|
|
Obituary "$OB_DSPARIL1";
|
|
HitObituary "$OB_DSPARIL1HIT";
|
|
}
|
|
|
|
native void A_Sor1Pain ();
|
|
native void A_Sor1Chase ();
|
|
native void A_Srcr1Attack ();
|
|
native void A_SorcererRise ();
|
|
|
|
States
|
|
{
|
|
Spawn:
|
|
SRCR AB 10 A_Look;
|
|
Loop;
|
|
See:
|
|
SRCR ABCD 5 A_Sor1Chase;
|
|
Loop;
|
|
Pain:
|
|
SRCR Q 6 A_Sor1Pain;
|
|
Goto See;
|
|
Missile:
|
|
SRCR Q 7 A_FaceTarget;
|
|
SRCR R 6 A_FaceTarget;
|
|
SRCR S 10 A_Srcr1Attack;
|
|
Goto See;
|
|
Missile2:
|
|
SRCR S 10 A_FaceTarget;
|
|
SRCR Q 7 A_FaceTarget;
|
|
SRCR R 6 A_FaceTarget;
|
|
SRCR S 10 A_Srcr1Attack;
|
|
Goto See;
|
|
Death:
|
|
SRCR E 7;
|
|
SRCR F 7 A_Scream;
|
|
SRCR G 7;
|
|
SRCR HIJK 6;
|
|
SRCR L 25 A_PlaySound("dsparil/zap", CHAN_BODY, 1, false, ATTN_NONE);
|
|
SRCR MN 5;
|
|
SRCR O 4;
|
|
SRCR L 20 A_PlaySound("dsparil/zap", CHAN_BODY, 1, false, ATTN_NONE);
|
|
SRCR MN 5;
|
|
SRCR O 4;
|
|
SRCR L 12;
|
|
SRCR P -1 A_SorcererRise;
|
|
}
|
|
}
|
|
|
|
|
|
// Sorcerer FX 1 ------------------------------------------------------------
|
|
|
|
class SorcererFX1 : Actor
|
|
{
|
|
Default
|
|
{
|
|
Radius 10;
|
|
Height 10;
|
|
Speed 20;
|
|
FastSpeed 28;
|
|
Damage 10;
|
|
DamageType "Fire";
|
|
Projectile;
|
|
-ACTIVATEIMPACT
|
|
-ACTIVATEPCROSS
|
|
RenderStyle "Add";
|
|
}
|
|
|
|
States
|
|
{
|
|
Spawn:
|
|
FX14 ABC 6 BRIGHT;
|
|
Loop;
|
|
Death:
|
|
FX14 DEFGH 5 BRIGHT;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
|
|
// Sorcerer 2 (D'Sparil without his serpent) --------------------------------
|
|
|
|
class Sorcerer2 : Actor
|
|
{
|
|
Default
|
|
{
|
|
Health 3500;
|
|
Radius 16;
|
|
Height 70;
|
|
Mass 300;
|
|
Speed 14;
|
|
Painchance 32;
|
|
Monster;
|
|
+DROPOFF
|
|
+BOSS
|
|
+DONTMORPH
|
|
+FULLVOLACTIVE
|
|
+NORADIUSDMG
|
|
+NOTARGET
|
|
+NOICEDEATH
|
|
+FLOORCLIP
|
|
+BOSSDEATH
|
|
SeeSound "dsparil/sight";
|
|
AttackSound "dsparil/attack";
|
|
PainSound "dsparil/pain";
|
|
ActiveSound "dsparil/active";
|
|
Obituary "$OB_DSPARIL2";
|
|
HitObituary "$OB_DSPARIL2HIT";
|
|
}
|
|
|
|
native void A_Srcr2Decide ();
|
|
native void A_Srcr2Attack ();
|
|
native void A_Sor2DthInit ();
|
|
native void A_Sor2DthLoop ();
|
|
|
|
States
|
|
{
|
|
Spawn:
|
|
SOR2 MN 10 A_Look;
|
|
Loop;
|
|
See:
|
|
SOR2 MNOP 4 A_Chase;
|
|
Loop;
|
|
Rise:
|
|
SOR2 AB 4;
|
|
SOR2 C 4 A_PlaySound("dsparil/rise", CHAN_BODY, 1, false, ATTN_NONE);
|
|
SOR2 DEF 4;
|
|
SOR2 G 12 A_PlaySound("dsparil/sight", CHAN_BODY, 1, false, ATTN_NONE);
|
|
Goto See;
|
|
Pain:
|
|
SOR2 Q 3;
|
|
SOR2 Q 6 A_Pain;
|
|
Goto See;
|
|
Missile:
|
|
SOR2 R 9 A_Srcr2Decide;
|
|
SOR2 S 9 A_FaceTarget;
|
|
SOR2 T 20 A_Srcr2Attack;
|
|
Goto See;
|
|
Teleport:
|
|
SOR2 LKJIHG 6;
|
|
Goto See;
|
|
Death:
|
|
SDTH A 8 A_Sor2DthInit;
|
|
SDTH B 8;
|
|
SDTH C 8 A_PlaySound("dsparil/scream", CHAN_BODY, 1, false, ATTN_NONE);
|
|
DeathLoop:
|
|
SDTH DE 7;
|
|
SDTH F 7 A_Sor2DthLoop;
|
|
SDTH G 6 A_PlaySound("dsparil/explode", CHAN_BODY, 1, false, ATTN_NONE);
|
|
SDTH H 6;
|
|
SDTH I 18;
|
|
SDTH J 6 A_NoBlocking;
|
|
SDTH K 6 A_PlaySound("dsparil/bones", CHAN_BODY, 1, false, ATTN_NONE);
|
|
SDTH LMN 6;
|
|
SDTH O -1 A_BossDeath;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Sorcerer 2 FX 1 ----------------------------------------------------------
|
|
|
|
class Sorcerer2FX1 : Actor
|
|
{
|
|
Default
|
|
{
|
|
Radius 10;
|
|
Height 6;
|
|
Speed 20;
|
|
FastSpeed 28;
|
|
Damage 1;
|
|
Projectile;
|
|
-ACTIVATEIMPACT
|
|
-ACTIVATEPCROSS
|
|
RenderStyle "Add";
|
|
}
|
|
|
|
native void A_BlueSpark ();
|
|
|
|
States
|
|
{
|
|
Spawn:
|
|
FX16 ABC 3 BRIGHT A_BlueSpark;
|
|
Loop;
|
|
Death:
|
|
FX16 G 5 BRIGHT A_Explode(random[S2FX1](80,111));
|
|
FX16 HIJKL 5 BRIGHT;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
// Sorcerer 2 FX Spark ------------------------------------------------------
|
|
|
|
class Sorcerer2FXSpark : Actor
|
|
{
|
|
Default
|
|
{
|
|
Radius 20;
|
|
Height 16;
|
|
+NOBLOCKMAP
|
|
+NOGRAVITY
|
|
+NOTELEPORT
|
|
+CANNOTPUSH
|
|
RenderStyle "Add";
|
|
}
|
|
|
|
States
|
|
{
|
|
Spawn:
|
|
FX16 DEF 12 BRIGHT;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
// Sorcerer 2 FX 2 ----------------------------------------------------------
|
|
|
|
class Sorcerer2FX2 : Actor
|
|
{
|
|
Default
|
|
{
|
|
Radius 10;
|
|
Height 6;
|
|
Speed 6;
|
|
Damage 10;
|
|
Projectile;
|
|
-ACTIVATEIMPACT
|
|
-ACTIVATEPCROSS
|
|
RenderStyle "Add";
|
|
}
|
|
|
|
native void A_GenWizard ();
|
|
|
|
States
|
|
{
|
|
Spawn:
|
|
FX11 A 35 BRIGHT;
|
|
FX11 A 5 BRIGHT A_GenWizard;
|
|
FX11 B 5 BRIGHT;
|
|
Goto Spawn+1;
|
|
Death:
|
|
FX11 CDEFG 5 BRIGHT;
|
|
Stop;
|
|
|
|
}
|
|
}
|
|
// Sorcerer 2 Telefade ------------------------------------------------------
|
|
|
|
class Sorcerer2Telefade : Actor
|
|
{
|
|
Default
|
|
{
|
|
+NOBLOCKMAP
|
|
}
|
|
|
|
States
|
|
{
|
|
Spawn:
|
|
SOR2 GHIJKL 6;
|
|
Stop;
|
|
}
|
|
}
|
|
|