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

169 lines
3 KiB
Text

// The Mage's Lightning Arc of Death ----------------------------------------
class MWeapLightning : MageWeapon
{
Default
{
+NOGRAVITY
Weapon.SelectionOrder 1100;
Weapon.AmmoUse1 5;
Weapon.AmmoGive1 25;
Weapon.KickBack 0;
Weapon.YAdjust 20;
Weapon.AmmoType1 "Mana2";
Inventory.PickupMessage "$TXT_WEAPON_M3";
Tag "$TAG_MWEAPLIGHTNING";
}
native void A_LightningReady();
native void A_MLightningAttack(class<Actor> floor = "LightningFloor", class<Actor> ceiling = "LightningCeiling");
States
{
Spawn:
WMLG ABCDEFGH 4 Bright;
Loop;
Select:
MLNG A 1 Bright A_Raise;
Loop;
Deselect:
MLNG A 1 Bright A_Lower;
Loop;
Ready:
MLNG AAAAA 1 Bright A_WeaponReady;
MLNG A 1 Bright A_LightningReady;
MLNG BBBBBB 1 Bright A_WeaponReady;
MLNG CCCCC 1 Bright A_WeaponReady;
MLNG C 1 Bright A_LightningReady;
MLNG BBBBBB 1 Bright A_WeaponReady;
Loop;
Fire:
MLNG DE 3 Bright;
MLNG F 4 Bright A_MLightningAttack;
MLNG G 4 Bright;
MLNG HI 3 Bright;
MLNG I 6 Bright Offset (0, 199);
MLNG C 2 Bright Offset (0, 55);
MLNG B 2 Bright Offset (0, 50);
MLNG B 2 Bright Offset (0, 45);
MLNG B 2 Bright Offset (0, 40);
Goto Ready;
}
}
// Ceiling Lightning --------------------------------------------------------
class Lightning : Actor native
{
Default
{
MissileType "LightningZap";
AttackSound "MageLightningZap";
ActiveSound "MageLightningContinuous";
Obituary "$OB_MPMWEAPLIGHTNING";
}
}
class LightningCeiling : Lightning
{
Default
{
Health 144;
Speed 25;
Radius 16;
Height 40;
Damage 8;
Projectile;
+CEILINGHUGGER
RenderStyle "Add";
}
native void A_LightningZap();
native void A_LightningClip();
native void A_LightningRemove();
States
{
Spawn:
MLFX A 2 Bright A_LightningZap;
MLFX BCD 2 Bright A_LightningClip;
Loop;
Death:
MLF2 A 2 Bright A_LightningRemove;
MLF2 BCDEKLM 3 Bright;
ACLO E 35;
MLF2 NO 3 Bright;
MLF2 P 4 Bright;
MLF2 QP 3 Bright;
MLF2 Q 4 Bright;
MLF2 P 3 Bright;
MLF2 O 3 Bright;
MLF2 P 3 Bright;
MLF2 P 1 Bright A_HideThing;
ACLO E 1050;
Stop;
}
}
// Floor Lightning ----------------------------------------------------------
class LightningFloor : LightningCeiling
{
Default
{
-CEILINGHUGGER
+FLOORHUGGER
RenderStyle "Add";
}
native void A_LastZap();
States
{
Spawn:
MLFX E 2 Bright A_LightningZap;
MLFX FGH 2 Bright A_LightningClip;
Loop;
Death:
MLF2 F 2 Bright A_LightningRemove;
MLF2 GHIJKLM 3 Bright;
ACLO E 20;
MLF2 NO 3 Bright;
MLF2 P 4 Bright;
MLF2 QP 3 Bright;
MLF2 Q 4 Bright A_LastZap;
MLF2 POP 3 Bright;
MLF2 P 1 Bright A_HideThing;
Goto Super::Death + 19;
}
}
// Lightning Zap ------------------------------------------------------------
class LightningZap : Actor native
{
Default
{
Radius 15;
Height 35;
Damage 2;
Projectile;
-ACTIVATEIMPACT
-ACTIVATEPCROSS
RenderStyle "Add";
Obituary "$OB_MPMWEAPLIGHTNING";
}
native void A_ZapMimic();
States
{
Spawn:
MLFX IJKLM 2 Bright A_ZapMimic;
Loop;
Death:
MLFX NOPQRSTU 2 Bright;
Stop;
}
}