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 |  (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.
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 } }