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);
|
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_firerail ("FireRail");
|
||||||
static FRandom pr_bfgspray ("BFGSpray");
|
static FRandom pr_bfgspray ("BFGSpray");
|
||||||
static FRandom pr_oldbfg ("OldBFG");
|
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
|
// [RH] A_FireRailgun
|
||||||
//
|
//
|
||||||
|
|
|
@ -55,6 +55,7 @@ zscript/doom/weaponssg.txt
|
||||||
zscript/doom/weaponchaingun.txt
|
zscript/doom/weaponchaingun.txt
|
||||||
zscript/doom/weaponchainsaw.txt
|
zscript/doom/weaponchainsaw.txt
|
||||||
zscript/doom/weaponrlaunch.txt
|
zscript/doom/weaponrlaunch.txt
|
||||||
|
zscript/doom/weaponplasma.txt
|
||||||
|
|
||||||
zscript/doom/deadthings.txt
|
zscript/doom/deadthings.txt
|
||||||
zscript/doom/doomammo.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
|
// 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_Lower();
|
||||||
action native void A_Raise();
|
action native void A_Raise();
|
||||||
|
|
||||||
action native void A_FirePlasma();
|
|
||||||
action native void A_FireRailgun();
|
action native void A_FireRailgun();
|
||||||
action native void A_FireRailgunLeft();
|
action native void A_FireRailgunLeft();
|
||||||
action native void A_FireRailgunRight();
|
action native void A_FireRailgunRight();
|
||||||
|
|
Loading…
Reference in a new issue