qzdoom/wadsrc/static/zscript/hexen/clericstaff.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

105 lines
1.8 KiB
Text

// The Cleric's Serpent Staff -----------------------------------------------
class CWeapStaff : ClericWeapon
{
Default
{
Weapon.SelectionOrder 1600;
Weapon.AmmoUse1 1;
Weapon.AmmoGive1 25;
Weapon.KickBack 150;
Weapon.YAdjust 10;
Weapon.AmmoType1 "Mana1";
Inventory.PickupMessage "$TXT_WEAPON_C2";
Obituary "$OB_MPCWEAPSTAFFM";
Tag "$TAG_CWEAPSTAFF";
}
native void A_CStaffInitBlink();
native void A_CStaffCheckBlink();
native void A_CStaffCheck();
native void A_CStaffAttack();
States
{
Spawn:
WCSS A -1;
Stop;
Select:
CSSF C 1 A_Raise;
Loop;
Deselect:
CSSF B 3;
CSSF C 4;
CSSF C 1 A_Lower;
Wait;
Ready:
CSSF C 4;
CSSF B 3 A_CStaffInitBlink;
CSSF AAAAAAA 1 A_WeaponReady;
CSSF A 1 A_CStaffCheckBlink;
Goto Ready + 2;
Fire:
CSSF A 1 Offset (0, 45) A_CStaffCheck;
CSSF J 1 Offset (0, 50) A_CStaffAttack;
CSSF J 2 Offset (0, 50);
CSSF J 2 Offset (0, 45);
CSSF A 2 Offset (0, 40);
CSSF A 2 Offset (0, 36);
Goto Ready + 2;
Blink:
CSSF BBBCCCCCBBB 1 A_WeaponReady;
Goto Ready + 2;
Drain:
CSSF K 10 Offset (0, 36);
Goto Ready + 2;
}
}
// Serpent Staff Missile ----------------------------------------------------
class CStaffMissile : Actor native
{
Default
{
Speed 22;
Radius 12;
Height 10;
Damage 5;
RenderStyle "Add";
Projectile;
DeathSound "ClericCStaffExplode";
Obituary "$OB_MPCWEAPSTAFFR";
}
States
{
Spawn:
CSSF DDEE 1 Bright A_CStaffMissileSlither;
Loop;
Death:
CSSF FG 4 Bright;
CSSF HI 3 Bright;
Stop;
}
}
// Serpent Staff Puff -------------------------------------------------------
class CStaffPuff : Actor
{
Default
{
+NOBLOCKMAP +NOGRAVITY
+PUFFONACTORS
RenderStyle "Translucent";
Alpha 0.6;
SeeSound "ClericCStaffHitThing";
}
States
{
Spawn:
FHFX STUVW 4;
Stop;
}
}