|
Note: Wait! Stop! Before you copy this actor's definition into your mod, remember the following things:
- You do not need to copy that actor, since it is already defined.
- In fact, it's not just useless, it's actually harmful as it can cause problems.
- If you want to modify it, or use a modified version, using inheritance is the way to go.
- The actor definitions here are put on the wiki for reference purpose only. Learn from them, don't copy them.
- There is only one exception: if what you want is changing Ammo capacity, you need to create a new type from Ammo.
|
Plasma rifle
|
Actor type
|
Weapon
|
Game
|
(Doom)
|
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.
|
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");
}
}
|
Note: This is legacy code, kept here for reference only. DECORATE is still supported but no longer used by GZDoom. 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
}
}