mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-11 15:21:51 +00:00
ac86a535e7
This could cause problems with functions that take states as parameters but use them to set them internally instead of passing them through the A_Jump interface back to the caller, like A_Chase or A_LookEx. This required some quite significant refactoring because the entire state resolution logic had been baked into the compiler which turned out to be a major maintenance problem. Fixed this by adding a new builtin type 'statelabel'. This is an opaque identifier representing a state, with the actual data either directly encoded into the number for single label state or an index into a state information table. The state resolution is now the task of the called function as it should always have remained. Note, that this required giving back the 'action' qualifier to most state jumping functions. - refactored most A_Jump checkers to a two stage setup with a pure checker that returns a boolean and a scripted A_Jump wrapper, for some simpler checks the checker function was entirely omitted and calculated inline in the A_Jump function. It is strongly recommended to use the boolean checkers unless using an inline function invocation in a state as they lead to vastly clearer code and offer more flexibility. - let Min() and Max() use the OP_MIN and OP_MAX opcodes. Although these were present, these function were implemented using some grossly inefficient branching tests. - the DECORATE 'state' cast kludge will now actually call ResolveState because a state label is not a state and needs conversion.
891 lines
14 KiB
Text
891 lines
14 KiB
Text
|
|
class StrifeWeapon : Weapon
|
|
{
|
|
Default
|
|
{
|
|
Weapon.Kickback 100;
|
|
}
|
|
}
|
|
|
|
// Same as the bullet puff for Doom -----------------------------------------
|
|
|
|
class StrifePuff : Actor
|
|
{
|
|
Default
|
|
{
|
|
+NOBLOCKMAP
|
|
+NOGRAVITY
|
|
+ALLOWPARTICLES
|
|
RenderStyle "Translucent";
|
|
Alpha 0.25;
|
|
}
|
|
|
|
States
|
|
{
|
|
Spawn:
|
|
POW3 ABCDEFGH 3;
|
|
Stop;
|
|
Crash:
|
|
PUFY A 4 Bright;
|
|
PUFY BCD 4;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
|
|
// A spark when you hit something that doesn't bleed ------------------------
|
|
// Only used by the dagger.
|
|
|
|
class StrifeSpark : StrifePuff
|
|
{
|
|
Default
|
|
{
|
|
RenderStyle "Add";
|
|
}
|
|
States
|
|
{
|
|
Crash:
|
|
POW2 ABCD 4;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
// Punch Dagger -------------------------------------------------------------
|
|
|
|
class PunchDagger : StrifeWeapon
|
|
{
|
|
Default
|
|
{
|
|
Weapon.SelectionOrder 3900;
|
|
+WEAPON.NOALERT
|
|
Obituary "$OB_MPPUNCHDAGGER";
|
|
Tag "$TAG_PUNCHDAGGER";
|
|
}
|
|
|
|
action native void A_JabDagger ();
|
|
|
|
States
|
|
{
|
|
Ready:
|
|
PNCH A 1 A_WeaponReady;
|
|
Loop;
|
|
Deselect:
|
|
PNCH A 1 A_Lower;
|
|
Loop;
|
|
Select:
|
|
PNCH A 1 A_Raise;
|
|
Loop;
|
|
Fire:
|
|
PNCH B 4;
|
|
PNCH C 4 A_JabDagger;
|
|
PNCH D 5;
|
|
PNCH C 4;
|
|
PNCH B 5 A_ReFire;
|
|
Goto Ready;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
// The base for Strife projectiles that die with ZAP1 -----------------------
|
|
|
|
class StrifeZap1 : Actor
|
|
{
|
|
Default
|
|
{
|
|
+NOBLOCKMAP
|
|
+NOGRAVITY
|
|
+DROPOFF
|
|
}
|
|
States
|
|
{
|
|
Spawn:
|
|
Death:
|
|
ZAP1 A 3 A_AlertMonsters;
|
|
ZAP1 BCDEFE 3;
|
|
ZAP1 DCB 2;
|
|
ZAP1 A 1;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
|
|
// Electric Bolt ------------------------------------------------------------
|
|
|
|
class ElectricBolt : StrifeZap1
|
|
{
|
|
Default
|
|
{
|
|
Speed 30;
|
|
Radius 10;
|
|
Height 10;
|
|
Damage 10;
|
|
Projectile;
|
|
+STRIFEDAMAGE
|
|
MaxStepHeight 4;
|
|
SeeSound "misc/swish";
|
|
ActiveSound "misc/swish";
|
|
DeathSound "weapons/xbowhit";
|
|
Obituary "$OB_MPELECTRICBOLT";
|
|
}
|
|
States
|
|
{
|
|
Spawn:
|
|
AROW A 10 A_LoopActiveSound;
|
|
Loop;
|
|
}
|
|
}
|
|
|
|
|
|
// Poison Bolt --------------------------------------------------------------
|
|
|
|
class PoisonBolt : Actor native
|
|
{
|
|
Default
|
|
{
|
|
Speed 30;
|
|
Radius 10;
|
|
Height 10;
|
|
Damage 500;
|
|
Projectile;
|
|
+STRIFEDAMAGE
|
|
MaxStepHeight 4;
|
|
SeeSound "misc/swish";
|
|
ActiveSound "misc/swish";
|
|
Obituary "$OB_MPPOISONBOLT";
|
|
}
|
|
States
|
|
{
|
|
Spawn:
|
|
ARWP A 10 A_LoopActiveSound;
|
|
Loop;
|
|
Death:
|
|
AROW A 1;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
|
|
// Strife's Crossbow --------------------------------------------------------
|
|
|
|
class StrifeCrossbow : StrifeWeapon
|
|
{
|
|
Default
|
|
{
|
|
+FLOORCLIP
|
|
Weapon.SelectionOrder 1200;
|
|
+WEAPON.NOALERT
|
|
Weapon.AmmoUse1 1;
|
|
Weapon.AmmoGive1 8;
|
|
Weapon.AmmoType1 "ElectricBolts";
|
|
Weapon.SisterWeapon "StrifeCrossbow2";
|
|
Inventory.PickupMessage "$TXT_STRIFECROSSBOW";
|
|
Tag "$TAG_STRIFECROSSBOW1";
|
|
Inventory.Icon "CBOWA0";
|
|
}
|
|
|
|
action native void A_ClearFlash ();
|
|
action native void A_ShowElectricFlash ();
|
|
action native void A_FireArrow (class<Actor> proj);
|
|
|
|
States
|
|
{
|
|
Spawn:
|
|
CBOW A -1;
|
|
Stop;
|
|
Ready:
|
|
XBOW A 0 A_ShowElectricFlash;
|
|
XBOW A 1 A_WeaponReady;
|
|
Wait;
|
|
Deselect:
|
|
XBOW A 1 A_Lower;
|
|
Loop;
|
|
Select:
|
|
XBOW A 1 A_Raise;
|
|
Loop;
|
|
Fire:
|
|
XBOW A 3 A_ClearFlash;
|
|
XBOW B 6 A_FireArrow("ElectricBolt");
|
|
XBOW C 4;
|
|
XBOW D 6;
|
|
XBOW E 3;
|
|
XBOW F 5;
|
|
XBOW G 0 A_ShowElectricFlash;
|
|
XBOW G 5 A_CheckReload;
|
|
Goto Ready+1;
|
|
Flash:
|
|
XBOW KLM 5;
|
|
Loop;
|
|
}
|
|
}
|
|
|
|
|
|
class StrifeCrossbow2 : StrifeCrossbow
|
|
{
|
|
Default
|
|
{
|
|
Weapon.SelectionOrder 2700;
|
|
Weapon.AmmoUse1 1;
|
|
Weapon.AmmoGive1 0;
|
|
Weapon.AmmoType1 "PoisonBolts";
|
|
Weapon.SisterWeapon "StrifeCrossbow";
|
|
Tag "$TAG_STRIFECROSSBOW2";
|
|
}
|
|
States
|
|
{
|
|
Ready:
|
|
XBOW H 1 A_WeaponReady;
|
|
Loop;
|
|
Deselect:
|
|
XBOW H 1 A_Lower;
|
|
Loop;
|
|
Select:
|
|
XBOW H 1 A_Raise;
|
|
Loop;
|
|
Fire:
|
|
XBOW H 3;
|
|
XBOW B 6 A_FireArrow("PoisonBolt");
|
|
XBOW C 4;
|
|
XBOW D 6;
|
|
XBOW E 3;
|
|
XBOW I 5;
|
|
XBOW J 5 A_CheckReload;
|
|
Goto Ready;
|
|
Flash:
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
// Assault Gun --------------------------------------------------------------
|
|
|
|
class AssaultGun : StrifeWeapon
|
|
{
|
|
Default
|
|
{
|
|
+FLOORCLIP
|
|
Weapon.SelectionOrder 600;
|
|
Weapon.AmmoUse1 1;
|
|
Weapon.AmmoGive1 20;
|
|
Weapon.AmmoType1 "ClipOfBullets";
|
|
Inventory.Icon "RIFLA0";
|
|
Tag "$TAG_ASSAULTGUN";
|
|
Inventory.PickupMessage "$TXT_ASSAULTGUN";
|
|
Obituary "$OB_MPASSAULTGUN";
|
|
}
|
|
States
|
|
{
|
|
Spawn:
|
|
RIFL A -1;
|
|
Stop;
|
|
Ready:
|
|
RIFG A 1 A_WeaponReady;
|
|
Loop;
|
|
Deselect:
|
|
RIFG B 1 A_Lower;
|
|
Loop;
|
|
Select:
|
|
RIFG A 1 A_Raise;
|
|
Loop;
|
|
Fire:
|
|
RIFF AB 3 A_FireAssaultGun;
|
|
RIFG D 3 A_FireAssaultGun;
|
|
RIFG C 0 A_ReFire;
|
|
RIFG B 2 A_Light0;
|
|
Goto Ready;
|
|
}
|
|
}
|
|
|
|
|
|
// Standing variant of the assault gun --------------------------------------
|
|
|
|
class AssaultGunStanding : WeaponGiver
|
|
{
|
|
Default
|
|
{
|
|
DropItem "AssaultGun";
|
|
Inventory.PickupMessage "$TXT_ASSAULTGUN";
|
|
}
|
|
States
|
|
{
|
|
Spawn:
|
|
RIFL B -1;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
|
|
// Mini-Missile Launcher ----------------------------------------------------
|
|
|
|
|
|
class MiniMissileLauncher : StrifeWeapon
|
|
{
|
|
Default
|
|
{
|
|
+FLOORCLIP
|
|
Weapon.SelectionOrder 1800;
|
|
Weapon.AmmoUse1 1;
|
|
Weapon.AmmoGive1 8;
|
|
Weapon.AmmoType1 "MiniMissiles";
|
|
Inventory.Icon "MMSLA0";
|
|
Tag "$TAG_MMLAUNCHER";
|
|
Inventory.PickupMessage "$TXT_MMLAUNCHER";
|
|
}
|
|
|
|
action native void A_FireMiniMissile ();
|
|
|
|
States
|
|
{
|
|
Spawn:
|
|
MMSL A -1;
|
|
Stop;
|
|
Ready:
|
|
MMIS A 1 A_WeaponReady;
|
|
Loop;
|
|
Deselect:
|
|
MMIS A 1 A_Lower;
|
|
Loop;
|
|
Select:
|
|
MMIS A 1 A_Raise;
|
|
Loop;
|
|
Fire:
|
|
MMIS A 4 A_FireMiniMissile;
|
|
MMIS B 4 A_Light1;
|
|
MMIS C 5 Bright;
|
|
MMIS D 2 Bright A_Light2;
|
|
MMIS E 2 Bright;
|
|
MMIS F 2 Bright A_Light0;
|
|
MMIS F 0 A_ReFire;
|
|
Goto Ready;
|
|
}
|
|
}
|
|
|
|
|
|
// Rocket Trail -------------------------------------------------------------
|
|
|
|
class RocketTrail : Actor
|
|
{
|
|
Default
|
|
{
|
|
+NOBLOCKMAP
|
|
+NOGRAVITY
|
|
RenderStyle "Translucent";
|
|
Alpha 0.25;
|
|
SeeSound "misc/missileinflight";
|
|
}
|
|
States
|
|
{
|
|
Spawn:
|
|
PUFY BCBCD 4;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
// Rocket Puff --------------------------------------------------------------
|
|
|
|
class MiniMissilePuff : StrifePuff
|
|
{
|
|
Default
|
|
{
|
|
-ALLOWPARTICLES
|
|
}
|
|
States
|
|
{
|
|
Spawn:
|
|
Goto Crash;
|
|
}
|
|
}
|
|
|
|
// Mini Missile -------------------------------------------------------------
|
|
|
|
class MiniMissile : Actor
|
|
{
|
|
Default
|
|
{
|
|
Speed 20;
|
|
Radius 10;
|
|
Height 14;
|
|
Damage 10;
|
|
Projectile;
|
|
+STRIFEDAMAGE
|
|
MaxStepHeight 4;
|
|
SeeSound "weapons/minimissile";
|
|
DeathSound "weapons/minimissilehit";
|
|
Obituary "$OB_MPMINIMISSILELAUNCHER";
|
|
}
|
|
States
|
|
{
|
|
Spawn:
|
|
MICR A 6 Bright A_RocketInFlight;
|
|
Loop;
|
|
Death:
|
|
SMIS A 0 Bright A_SetTranslucent(1,1);
|
|
SMIS A 5 Bright A_Explode(64,64,1,1);
|
|
SMIS B 5 Bright;
|
|
SMIS C 4 Bright;
|
|
SMIS DEFG 2 Bright;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
// Flame Thrower ------------------------------------------------------------
|
|
|
|
class FlameThrower : StrifeWeapon
|
|
{
|
|
Default
|
|
{
|
|
+FLOORCLIP
|
|
Weapon.SelectionOrder 2100;
|
|
Weapon.Kickback 0;
|
|
Weapon.AmmoUse1 1;
|
|
Weapon.AmmoGive1 100;
|
|
Weapon.UpSound "weapons/flameidle";
|
|
Weapon.ReadySound "weapons/flameidle";
|
|
Weapon.AmmoType1 "EnergyPod";
|
|
Inventory.Icon "FLAMA0";
|
|
Tag "$TAG_FLAMER";
|
|
Inventory.PickupMessage "$TXT_FLAMER";
|
|
}
|
|
|
|
action native void A_FireFlamer ();
|
|
|
|
States
|
|
{
|
|
Spawn:
|
|
FLAM A -1;
|
|
Stop;
|
|
Ready:
|
|
FLMT AB 3 A_WeaponReady;
|
|
Loop;
|
|
Deselect:
|
|
FLMT A 1 A_Lower;
|
|
Loop;
|
|
Select:
|
|
FLMT A 1 A_Raise;
|
|
Loop;
|
|
Fire:
|
|
FLMF A 2 A_FireFlamer;
|
|
FLMF B 3 A_ReFire;
|
|
Goto Ready;
|
|
}
|
|
}
|
|
|
|
|
|
// Flame Thrower Projectile -------------------------------------------------
|
|
|
|
class FlameMissile : Actor
|
|
{
|
|
Default
|
|
{
|
|
Speed 15;
|
|
Height 11;
|
|
Radius 8;
|
|
Mass 10;
|
|
Damage 4;
|
|
DamageType "Fire";
|
|
ReactionTime 8;
|
|
Projectile;
|
|
-NOGRAVITY
|
|
+STRIFEDAMAGE
|
|
MaxStepHeight 4;
|
|
RenderStyle "Add";
|
|
SeeSound "weapons/flamethrower";
|
|
Obituary "$OB_MPFLAMETHROWER";
|
|
}
|
|
|
|
native void A_FlameDie ();
|
|
|
|
States
|
|
{
|
|
Spawn:
|
|
FRBL AB 3 Bright;
|
|
FRBL C 3 Bright A_Countdown;
|
|
Loop;
|
|
Death:
|
|
FRBL D 5 Bright A_FlameDie;
|
|
FRBL EFGHI 5 Bright;
|
|
Stop;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
// Mauler -------------------------------------------------------------------
|
|
// The scatter version
|
|
|
|
class Mauler : StrifeWeapon
|
|
{
|
|
Default
|
|
{
|
|
+FLOORCLIP
|
|
Weapon.SelectionOrder 300;
|
|
Weapon.AmmoUse1 20;
|
|
Weapon.AmmoGive1 40;
|
|
Weapon.AmmoType1 "EnergyPod";
|
|
Weapon.SisterWeapon "Mauler2";
|
|
Inventory.Icon "TRPDA0";
|
|
Tag "$TAG_MAULER1";
|
|
Inventory.PickupMessage "$TXT_MAULER";
|
|
Obituary "$OB_MPMAULER1";
|
|
}
|
|
|
|
action native void A_FireMauler1 ();
|
|
|
|
States
|
|
{
|
|
Ready:
|
|
MAUL FGHA 6 A_WeaponReady;
|
|
Loop;
|
|
Deselect:
|
|
MAUL A 1 A_Lower;
|
|
Loop;
|
|
Select:
|
|
MAUL A 1 A_Raise;
|
|
Loop;
|
|
Fire:
|
|
BLSF A 5 Bright A_FireMauler1;
|
|
MAUL B 3 Bright A_Light1;
|
|
MAUL C 2 A_Light2;
|
|
MAUL DE 2;
|
|
MAUL A 7 A_Light0;
|
|
MAUL H 7;
|
|
MAUL G 7 A_CheckReload;
|
|
Goto Ready;
|
|
Spawn:
|
|
TRPD A -1;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
|
|
// Mauler Torpedo version ---------------------------------------------------
|
|
|
|
class Mauler2 : Mauler
|
|
{
|
|
Default
|
|
{
|
|
Weapon.SelectionOrder 3300;
|
|
Weapon.AmmoUse1 30;
|
|
Weapon.AmmoGive1 0;
|
|
Weapon.AmmoType1 "EnergyPod";
|
|
Weapon.SisterWeapon "Mauler";
|
|
Tag "$TAG_MAULER2";
|
|
}
|
|
|
|
action native void A_FireMauler2Pre ();
|
|
action native void A_FireMauler2 ();
|
|
|
|
States
|
|
{
|
|
Ready:
|
|
MAUL IJKL 7 A_WeaponReady;
|
|
Loop;
|
|
Deselect:
|
|
MAUL I 1 A_Lower;
|
|
Loop;
|
|
Select:
|
|
MAUL I 1 A_Raise;
|
|
Loop;
|
|
Fire:
|
|
MAUL I 20 A_FireMauler2Pre;
|
|
MAUL J 10 A_Light1;
|
|
BLSF A 10 Bright A_FireMauler2;
|
|
MAUL B 10 Bright A_Light2;
|
|
MAUL C 2;
|
|
MAUL D 2 A_Light0;
|
|
MAUL E 2 A_ReFire;
|
|
Goto Ready;
|
|
}
|
|
}
|
|
|
|
|
|
// Mauler "Bullet" Puff -----------------------------------------------------
|
|
|
|
class MaulerPuff : Actor
|
|
{
|
|
Default
|
|
{
|
|
+NOBLOCKMAP
|
|
+NOGRAVITY
|
|
+PUFFONACTORS
|
|
RenderStyle "Add";
|
|
DamageType "Disintegrate";
|
|
}
|
|
States
|
|
{
|
|
Spawn:
|
|
MPUF AB 5;
|
|
POW1 ABCDE 4;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
// The Mauler's Torpedo -----------------------------------------------------
|
|
|
|
class MaulerTorpedo : Actor
|
|
{
|
|
Default
|
|
{
|
|
Speed 20;
|
|
Height 8;
|
|
Radius 13;
|
|
Damage 1;
|
|
DamageType "Disintegrate";
|
|
Projectile;
|
|
+STRIFEDAMAGE
|
|
MaxStepHeight 4;
|
|
RenderStyle "Add";
|
|
SeeSound "weapons/mauler2fire";
|
|
DeathSound "weapons/mauler2hit";
|
|
Obituary "$OB_MPMAULER";
|
|
}
|
|
|
|
native void A_MaulerTorpedoWave ();
|
|
|
|
States
|
|
{
|
|
Spawn:
|
|
TORP ABCD 4 Bright;
|
|
Loop;
|
|
Death:
|
|
THIT AB 8 Bright;
|
|
THIT C 8 Bright A_MaulerTorpedoWave;
|
|
THIT DE 8 Bright;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
|
|
// The mini torpedoes shot by the big torpedo --------------------------------
|
|
|
|
class MaulerTorpedoWave : Actor
|
|
{
|
|
Default
|
|
{
|
|
Speed 35;
|
|
Radius 13;
|
|
Height 13;
|
|
Damage 10;
|
|
DamageType "Disintegrate";
|
|
Projectile;
|
|
+STRIFEDAMAGE
|
|
MaxStepHeight 4;
|
|
RenderStyle "Add";
|
|
Obituary "$OB_MPMAULER";
|
|
}
|
|
States
|
|
{
|
|
Spawn:
|
|
TWAV AB 9 Bright;
|
|
Death:
|
|
TWAV C 9 Bright;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
|
|
// High-Explosive Grenade ---------------------------------------------------
|
|
|
|
class HEGrenade : Actor
|
|
{
|
|
Default
|
|
{
|
|
Speed 15;
|
|
Radius 13;
|
|
Height 13;
|
|
Mass 20;
|
|
Damage 1;
|
|
Reactiontime 30;
|
|
Projectile;
|
|
-NOGRAVITY
|
|
+STRIFEDAMAGE
|
|
+BOUNCEONACTORS
|
|
+EXPLODEONWATER
|
|
MaxStepHeight 4;
|
|
BounceType "Doom";
|
|
BounceFactor 0.5;
|
|
BounceCount 2;
|
|
SeeSound "weapons/hegrenadeshoot";
|
|
DeathSound "weapons/hegrenadebang";
|
|
Obituary "$OB_MPSTRIFEGRENADE";
|
|
}
|
|
States
|
|
{
|
|
Spawn:
|
|
GRAP AB 3 A_Countdown;
|
|
Loop;
|
|
Death:
|
|
BNG4 A 0 Bright A_NoGravity;
|
|
BNG4 A 0 Bright A_SetTranslucent(1,1);
|
|
BNG4 A 2 Bright A_Explode(192,192,1,1);
|
|
BNG4 BCDEFGHIJKLMN 3 Bright;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
// White Phosphorous Grenade ------------------------------------------------
|
|
|
|
class PhosphorousGrenade : Actor
|
|
{
|
|
Default
|
|
{
|
|
Speed 15;
|
|
Radius 13;
|
|
Height 13;
|
|
Mass 20;
|
|
Damage 1;
|
|
Reactiontime 40;
|
|
Projectile;
|
|
-NOGRAVITY
|
|
+STRIFEDAMAGE
|
|
+BOUNCEONACTORS
|
|
+EXPLODEONWATER
|
|
BounceType "Doom";
|
|
MaxStepHeight 4;
|
|
BounceFactor 0.5;
|
|
BounceCount 2;
|
|
SeeSound "weapons/phgrenadeshoot";
|
|
DeathSound "weapons/phgrenadebang";
|
|
Obituary "$OB_MPPHOSPHOROUSGRENADE";
|
|
}
|
|
States
|
|
{
|
|
Spawn:
|
|
GRIN AB 3 A_Countdown;
|
|
Loop;
|
|
Death:
|
|
BNG3 A 2 A_SpawnItemEx("PhosphorousFire");
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
// Fire from the Phoshorous Grenade -----------------------------------------
|
|
|
|
class PhosphorousFire : Actor native
|
|
{
|
|
Default
|
|
{
|
|
Reactiontime 120;
|
|
DamageType "Fire";
|
|
+NOBLOCKMAP
|
|
+FLOORCLIP
|
|
+NOTELEPORT
|
|
+NODAMAGETHRUST
|
|
+DONTSPLASH
|
|
RenderStyle "Add";
|
|
Obituary "$OB_MPPHOSPHOROUSGRENADE";
|
|
}
|
|
|
|
native void A_Burnarea ();
|
|
native void A_Burnination ();
|
|
|
|
States
|
|
{
|
|
Spawn:
|
|
BNG3 B 2 Bright A_Burnarea;
|
|
BNG3 C 2 Bright A_Countdown;
|
|
FLBE A 2 Bright A_Burnination;
|
|
FLBE B 2 Bright A_Countdown;
|
|
FLBE C 2 Bright A_Burnarea;
|
|
FLBE D 3 Bright A_Countdown;
|
|
FLBE E 3 Bright A_Burnarea;
|
|
FLBE F 3 Bright A_Countdown;
|
|
FLBE G 3 Bright A_Burnination;
|
|
Goto Spawn+5;
|
|
Death:
|
|
FLBE H 2 Bright;
|
|
FLBE I 2 Bright A_Burnination;
|
|
FLBE JK 2 Bright;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
// High-Explosive Grenade Launcher ------------------------------------------
|
|
|
|
class StrifeGrenadeLauncher : StrifeWeapon
|
|
{
|
|
Default
|
|
{
|
|
+FLOORCLIP
|
|
Weapon.SelectionOrder 2400;
|
|
Weapon.AmmoUse1 1;
|
|
Weapon.AmmoGive1 12;
|
|
Weapon.AmmoType1 "HEGrenadeRounds";
|
|
Weapon.SisterWeapon "StrifeGrenadeLauncher2";
|
|
Inventory.Icon "GRNDA0";
|
|
Tag "$TAG_GLAUNCHER1";
|
|
Inventory.PickupMessage "$TXT_GLAUNCHER";
|
|
}
|
|
|
|
action native void A_FireGrenade (class<Actor> grenadetype, float angleofs, statelabel flash);
|
|
|
|
States
|
|
{
|
|
Spawn:
|
|
GRND A -1;
|
|
Stop;
|
|
Ready:
|
|
GREN A 1 A_WeaponReady;
|
|
Loop;
|
|
Deselect:
|
|
GREN A 1 A_Lower;
|
|
Loop;
|
|
Select:
|
|
GREN A 1 A_Raise;
|
|
Loop;
|
|
Fire:
|
|
GREN A 5 A_FireGrenade("HEGrenade", -90, "Flash");
|
|
GREN B 10;
|
|
GREN A 5 A_FireGrenade("HEGrenade", 90, "Flash2");
|
|
GREN C 10;
|
|
GREN A 0 A_ReFire;
|
|
Goto Ready;
|
|
Flash:
|
|
GREF A 5 Bright A_Light1;
|
|
Goto LightDone;
|
|
Flash2:
|
|
GREF B 5 Bright A_Light2;
|
|
Goto LightDone;
|
|
}
|
|
|
|
}
|
|
|
|
// White Phosphorous Grenade Launcher ---------------------------------------
|
|
|
|
class StrifeGrenadeLauncher2 : StrifeGrenadeLauncher
|
|
{
|
|
Default
|
|
{
|
|
Weapon.SelectionOrder 3200;
|
|
Weapon.AmmoUse1 1;
|
|
Weapon.AmmoGive1 0;
|
|
Weapon.AmmoType1 "PhosphorusGrenadeRounds";
|
|
Weapon.SisterWeapon "StrifeGrenadeLauncher";
|
|
Tag "$TAG_GLAUNCHER2";
|
|
}
|
|
States
|
|
{
|
|
Ready:
|
|
GREN D 1 A_WeaponReady;
|
|
Loop;
|
|
Deselect:
|
|
GREN D 1 A_Lower;
|
|
Loop;
|
|
Select:
|
|
GREN D 1 A_Raise;
|
|
Loop;
|
|
Fire:
|
|
GREN D 5 A_FireGrenade("PhosphorousGrenade", -90, "Flash");
|
|
GREN E 10;
|
|
GREN D 5 A_FireGrenade("PhosphorousGrenade", 90, "Flash2");
|
|
GREN F 10;
|
|
GREN A 0 A_ReFire;
|
|
Goto Ready;
|
|
Flash:
|
|
GREF C 5 Bright A_Light1;
|
|
Goto LightDone;
|
|
Flash2:
|
|
GREF D 5 Bright A_Light2;
|
|
Goto LightDone;
|
|
}
|
|
}
|
|
|