Classes:PlasmaRifle
Jump to navigation
Jump to search
Note: Wait! Stop! You do not need to copy this actor's code into your project! Here's why:
|
Plasma rifle | |||
---|---|---|---|
Actor type | Weapon | Game | ![]() |
DoomEd Number | 2004 | Class Name | PlasmaRifle |
Spawn ID | 30 | Identifier | T_PLASMAGUN |
Classes: Inventory→Weapon→DoomWeapon→PlasmaRifle
The plasma rifle. A fast projectile-launching weapon which uses cells for ammo.
ZScript definition
Note: The ZScript definition below is for reference and may be different in the current version of GZDoom.The most up-to-date version of this code can be found on GZDoom GitHub. |
class PlasmaRifle : DoomWeapon
{
Default
{
Weapon.SelectionOrder 100;
Weapon.AmmoUse 1;
Weapon.AmmoGive 40;
Weapon.AmmoType "Cell";
Inventory.PickupMessage "$GOTPLASMA";
Tag "$TAG_PLASMARIFLE";
}
States
{
Ready:
PLSG A 1 A_WeaponReady;
Loop;
Deselect:
PLSG A 1 A_Lower;
Loop;
Select:
PLSG A 1 A_Raise;
Loop;
Fire:
PLSG A 3 A_FirePlasma;
PLSG B 20 A_ReFire;
Goto Ready;
Flash:
PLSF A 4 Bright A_Light1;
Goto LightDone;
PLSF B 4 Bright A_Light1;
Goto LightDone;
Spawn:
PLAS A -1;
Stop;
}
}
class PlasmaBall : Actor
{
Default
{
Radius 13;
Height 8;
Speed 25;
Damage 5;
Projectile;
+RANDOMIZE
+ZDOOMTRANS
RenderStyle "Add";
Alpha 0.75;
SeeSound "weapons/plasmaf";
DeathSound "weapons/plasmax";
Obituary "$OB_MPPLASMARIFLE";
}
States
{
Spawn:
PLSS AB 6 Bright;
Loop;
Death:
PLSE ABCDE 4 Bright;
Stop;
}
}
extend class StateProvider
{
//===========================================================================
//
// A_FirePlasma
//
//===========================================================================
action void A_FirePlasma()
{
if (player == null)
{
return;
}
Weapon weap = player.ReadyWeapon;
if (weap != null && invoker == weap && stateinfo != null && stateinfo.mStateType == STATE_Psprite)
{
if (!weap.DepleteAmmo (weap.bAltFire, true, 1))
return;
State flash = weap.FindState('Flash');
if (flash != null)
{
player.SetSafeFlash(weap, flash, random[FirePlasma](0, 1));
}
}
SpawnPlayerMissile ("PlasmaBall");
}
}
DECORATE definition
![]() |
Warning: This is legacy code, kept for archival purposes only. DECORATE is deprecated in GZDoom and is completely superseded by ZScript. GZDoom internally uses the ZScript definition above. |
ACTOR PlasmaRifle : DoomWeapon { Weapon.SelectionOrder 100 Weapon.AmmoUse 1 Weapon.AmmoGive 40 Weapon.AmmoType "Cell" Inventory.PickupMessage "$GOTPLASMA" Tag "$TAG_PLASMARIFLE" States { Ready: PLSG A 1 A_WeaponReady Loop Deselect: PLSG A 1 A_Lower Loop Select: PLSG A 1 A_Raise Loop Fire: PLSG A 3 A_FirePlasma PLSG B 20 A_ReFire Goto Ready Flash: PLSF A 4 Bright A_Light1 Goto LightDone PLSF B 4 Bright A_Light1 Goto LightDone Spawn: PLAS A -1 Stop } }