mirror of
https://github.com/ZDoom/raze-gles.git
synced 2025-01-11 18:50:46 +00:00
LunaCON: implement 'tossweapon'.
git-svn-id: https://svn.eduke32.com/eduke32@3943 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
d53b976acf
commit
e4849af91f
5 changed files with 28 additions and 9 deletions
|
@ -525,6 +525,26 @@ local function have_ammo_at_max(ps, weap)
|
||||||
return (ps.ammo_amount[weap] >= ps.max_ammo_amount[weap])
|
return (ps.ammo_amount[weap] >= ps.max_ammo_amount[weap])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function _tossweapon(pli) -- P_DropWeapon replacement
|
||||||
|
check_player_idx(pli)
|
||||||
|
local ps = ffiC.g_player[pli].ps
|
||||||
|
|
||||||
|
bcheck.weapon_idx(ps.curr_weapon)
|
||||||
|
local cw = ffiC.g_playerWeapon[pli][ps.curr_weapon].workslike
|
||||||
|
|
||||||
|
if (cw >= ffiC.MAX_WEAPONS+0ULL) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if (krandand(1) ~= 0) then
|
||||||
|
spawn(ffiC.WeaponPickupSprites[cw], ps.i)
|
||||||
|
elseif (cw==ffiC.RPG_WEAPON or cw==ffiC.HANDBOMB_WEAPON) then
|
||||||
|
if (D.EXPLOSION2 ~= nil) then
|
||||||
|
spawn(D.EXPLOSION2, ps.i)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local function P_AddAmmo(ps, weap, amount)
|
local function P_AddAmmo(ps, weap, amount)
|
||||||
if (not have_ammo_at_max(ps, weap)) then
|
if (not have_ammo_at_max(ps, weap)) then
|
||||||
local curamount = ps.ammo_amount[weap]
|
local curamount = ps.ammo_amount[weap]
|
||||||
|
@ -547,6 +567,7 @@ end
|
||||||
--- but which are off limits to users. (That is, we need to think about how to
|
--- but which are off limits to users. (That is, we need to think about how to
|
||||||
--- expose the functionality in a better fashion than merely giving access to
|
--- expose the functionality in a better fashion than merely giving access to
|
||||||
--- the C functions.)
|
--- the C functions.)
|
||||||
|
--- TODO: Move these to a separate module like "con_private".
|
||||||
|
|
||||||
-- quotes
|
-- quotes
|
||||||
local REALMAXQUOTES = con_lang.REALMAXQUOTES
|
local REALMAXQUOTES = con_lang.REALMAXQUOTES
|
||||||
|
@ -1010,14 +1031,6 @@ function _sizeto(i, xr, yr)
|
||||||
spr.yrepeat = spr.yrepeat + ((dr == 0) and 0 or (dr < 0 and -1 or 1))
|
spr.yrepeat = spr.yrepeat + ((dr == 0) and 0 or (dr < 0 and -1 or 1))
|
||||||
end
|
end
|
||||||
|
|
||||||
-- NOTE: function args of the C function have overloaded meaning
|
|
||||||
function _A_Spawn(j, pn)
|
|
||||||
check_sprite_idx(j)
|
|
||||||
check_sector_idx(ffiC.sprite[j].sectnum)
|
|
||||||
check_tile_idx(pn)
|
|
||||||
return CF.A_Spawn(j, pn)
|
|
||||||
end
|
|
||||||
|
|
||||||
function _pstomp(ps, i)
|
function _pstomp(ps, i)
|
||||||
if (ps.knee_incs == 0 and sprite[ps.i].xrepeat >= 40) then
|
if (ps.knee_incs == 0 and sprite[ps.i].xrepeat >= 40) then
|
||||||
local spr = sprite[i]
|
local spr = sprite[i]
|
||||||
|
|
|
@ -614,6 +614,7 @@ playerdata_t g_player[MAXPLAYERS];
|
||||||
DukePlayer_t *g_player_ps[MAXPLAYERS];
|
DukePlayer_t *g_player_ps[MAXPLAYERS];
|
||||||
weapondata_x_MAX_WEAPONS g_playerWeapon[MAXPLAYERS];
|
weapondata_x_MAX_WEAPONS g_playerWeapon[MAXPLAYERS];
|
||||||
weapondata_t g_weaponOverridden[MAX_WEAPONS];
|
weapondata_t g_weaponOverridden[MAX_WEAPONS];
|
||||||
|
int16_t WeaponPickupSprites[MAX_WEAPONS];
|
||||||
tiledata_t g_tile[MAXTILES];
|
tiledata_t g_tile[MAXTILES];
|
||||||
projectile_t ProjectileData[MAXTILES];
|
projectile_t ProjectileData[MAXTILES];
|
||||||
projectile_t SpriteProjectile[MAXSPRITES];
|
projectile_t SpriteProjectile[MAXSPRITES];
|
||||||
|
|
|
@ -139,6 +139,7 @@ g_player;
|
||||||
g_player_ps;
|
g_player_ps;
|
||||||
g_playerWeapon;
|
g_playerWeapon;
|
||||||
g_weaponOverridden;
|
g_weaponOverridden;
|
||||||
|
WeaponPickupSprites;
|
||||||
g_tile;
|
g_tile;
|
||||||
ProjectileData;
|
ProjectileData;
|
||||||
SpriteProjectile;
|
SpriteProjectile;
|
||||||
|
|
|
@ -2307,7 +2307,7 @@ local Cinner = {
|
||||||
tip = cmd()
|
tip = cmd()
|
||||||
/ PLS".tipincs=26",
|
/ PLS".tipincs=26",
|
||||||
tossweapon = cmd()
|
tossweapon = cmd()
|
||||||
/ "", -- TODO_MP
|
/ "_con._tossweapon(_pli)",
|
||||||
wackplayer = cmd()
|
wackplayer = cmd()
|
||||||
/ PLS":whack()",
|
/ PLS":whack()",
|
||||||
|
|
||||||
|
|
|
@ -50,3 +50,7 @@ useractor notenemy 909 // tree trunk
|
||||||
quote 400
|
quote 400
|
||||||
}
|
}
|
||||||
enda
|
enda
|
||||||
|
|
||||||
|
onevent EVENT_JUMP
|
||||||
|
tossweapon
|
||||||
|
endevent
|
||||||
|
|
Loading…
Reference in a new issue