mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-12-14 22:51:38 +00:00
149 lines
2.4 KiB
Text
149 lines
2.4 KiB
Text
|
// --------------------------------------------------------------------------
|
||
|
//
|
||
|
// Plasma rifle
|
||
|
//
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
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
|
||
|
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;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
//
|
||
|
// BFG 2704
|
||
|
//
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
class PlasmaBall1 : PlasmaBall
|
||
|
{
|
||
|
Default
|
||
|
{
|
||
|
Damage 4;
|
||
|
BounceType "Classic";
|
||
|
BounceFactor 1.0;
|
||
|
Obituary "$OB_MPBFG_MBF";
|
||
|
}
|
||
|
States
|
||
|
{
|
||
|
Spawn:
|
||
|
PLS1 AB 6 Bright;
|
||
|
Loop;
|
||
|
Death:
|
||
|
PLS1 CDEFG 4 Bright;
|
||
|
Stop;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class PlasmaBall2 : PlasmaBall1
|
||
|
{
|
||
|
States
|
||
|
{
|
||
|
Spawn:
|
||
|
PLS2 AB 6 Bright;
|
||
|
Loop;
|
||
|
Death:
|
||
|
PLS2 CDE 4 Bright;
|
||
|
Stop;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
//===========================================================================
|
||
|
//
|
||
|
// Code (must be attached to StateProvider)
|
||
|
//
|
||
|
//===========================================================================
|
||
|
|
||
|
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]()&1);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
SpawnPlayerMissile ("PlasmaBall");
|
||
|
}
|
||
|
}
|