mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-24 21:11:39 +00:00
- scriptified A_FirePlasma.
This commit is contained in:
parent
fdab994fcb
commit
3c726aa570
5 changed files with 149 additions and 141 deletions
|
@ -16,42 +16,11 @@
|
|||
*/
|
||||
|
||||
void P_SetSafeFlash(AWeapon *weapon, player_t *player, FState *flashstate, int index);
|
||||
static FRandom pr_fireplasma ("FirePlasma");
|
||||
static FRandom pr_firerail ("FireRail");
|
||||
static FRandom pr_bfgspray ("BFGSpray");
|
||||
static FRandom pr_oldbfg ("OldBFG");
|
||||
|
||||
|
||||
//
|
||||
// A_FirePlasma
|
||||
//
|
||||
DEFINE_ACTION_FUNCTION(AActor, A_FirePlasma)
|
||||
{
|
||||
PARAM_ACTION_PROLOGUE(AActor);
|
||||
|
||||
player_t *player;
|
||||
|
||||
if (NULL == (player = self->player))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
AWeapon *weapon = self->player->ReadyWeapon;
|
||||
if (weapon != NULL && ACTION_CALL_FROM_PSPRITE())
|
||||
{
|
||||
if (!weapon->DepleteAmmo (weapon->bAltFire, true, 1))
|
||||
return 0;
|
||||
|
||||
FState *flash = weapon->FindState(NAME_Flash);
|
||||
if (flash != NULL)
|
||||
{
|
||||
P_SetSafeFlash(weapon, player, flash, (pr_fireplasma()&1));
|
||||
}
|
||||
}
|
||||
|
||||
P_SpawnPlayerMissile (self, PClass::FindActor("PlasmaBall"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
//
|
||||
// [RH] A_FireRailgun
|
||||
//
|
||||
|
|
|
@ -55,6 +55,7 @@ zscript/doom/weaponssg.txt
|
|||
zscript/doom/weaponchaingun.txt
|
||||
zscript/doom/weaponchainsaw.txt
|
||||
zscript/doom/weaponrlaunch.txt
|
||||
zscript/doom/weaponplasma.txt
|
||||
|
||||
zscript/doom/deadthings.txt
|
||||
zscript/doom/doomammo.txt
|
||||
|
|
|
@ -13,115 +13,6 @@ class DoomWeapon : Weapon
|
|||
}
|
||||
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
//
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
//
|
||||
// BFG 9000
|
||||
|
|
148
wadsrc/static/zscript/doom/weaponplasma.txt
Normal file
148
wadsrc/static/zscript/doom/weaponplasma.txt
Normal file
|
@ -0,0 +1,148 @@
|
|||
// --------------------------------------------------------------------------
|
||||
//
|
||||
// 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");
|
||||
}
|
||||
}
|
|
@ -51,7 +51,6 @@ class StateProvider : Inventory native
|
|||
action native void A_Lower();
|
||||
action native void A_Raise();
|
||||
|
||||
action native void A_FirePlasma();
|
||||
action native void A_FireRailgun();
|
||||
action native void A_FireRailgunLeft();
|
||||
action native void A_FireRailgunRight();
|
||||
|
|
Loading…
Reference in a new issue