Let flame shield punt hazards
This commit is contained in:
parent
1736fa10a9
commit
aa64b9aeed
5 changed files with 23 additions and 9 deletions
|
|
@ -2060,6 +2060,12 @@ boolean K_TripwirePass(const player_t *player)
|
||||||
return (player->tripwirePass != TRIPWIRE_NONE);
|
return (player->tripwirePass != TRIPWIRE_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean K_PlayerCanPunt(const player_t *player)
|
||||||
|
{
|
||||||
|
return player->invincibilitytimer > 0 || player->growshrinktimer > 0 ||
|
||||||
|
(player->flamestore > 0 && K_GetShieldFromPlayer(player) == KSHIELD_FLAME);
|
||||||
|
}
|
||||||
|
|
||||||
// Safe guard cvars to prevent cheating in RA.
|
// Safe guard cvars to prevent cheating in RA.
|
||||||
INT32 K_RAGuard(consvar_t cvar)
|
INT32 K_RAGuard(consvar_t cvar)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -279,6 +279,7 @@ boolean K_ApplyOffroad(const player_t *player);
|
||||||
fixed_t K_PlayerTripwireSpeedThreshold(const player_t *player);
|
fixed_t K_PlayerTripwireSpeedThreshold(const player_t *player);
|
||||||
tripwirepass_t K_TripwirePassConditions(const player_t *player);
|
tripwirepass_t K_TripwirePassConditions(const player_t *player);
|
||||||
boolean K_TripwirePass(const player_t *player);
|
boolean K_TripwirePass(const player_t *player);
|
||||||
|
boolean K_PlayerCanPunt(const player_t *player);
|
||||||
boolean K_WaterRun(mobj_t *mobj);
|
boolean K_WaterRun(mobj_t *mobj);
|
||||||
void K_SpawnWaterTrail(mobj_t *mobj);
|
void K_SpawnWaterTrail(mobj_t *mobj);
|
||||||
boolean K_ItemMobjAllowedtoWaterRun(mobj_t *item);
|
boolean K_ItemMobjAllowedtoWaterRun(mobj_t *item);
|
||||||
|
|
|
||||||
|
|
@ -4388,6 +4388,17 @@ static int lib_kGetShieldFromPlayer(lua_State *L)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int lib_kPlayerCanPunt(lua_State *L)
|
||||||
|
{
|
||||||
|
player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER));
|
||||||
|
|
||||||
|
//HUDSAFE
|
||||||
|
if (!player)
|
||||||
|
return LUA_ErrInvalid(L, "player_t");
|
||||||
|
lua_pushboolean(L, K_PlayerCanPunt(player));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static int lib_kAddNewScoreboardMod(lua_State *L)
|
static int lib_kAddNewScoreboardMod(lua_State *L)
|
||||||
{
|
{
|
||||||
const char *modname = luaL_checkstring(L, 1);
|
const char *modname = luaL_checkstring(L, 1);
|
||||||
|
|
@ -5322,6 +5333,7 @@ static luaL_Reg lib[] = {
|
||||||
{"K_AwardPlayerRings", lib_kAwardPlayerRings},
|
{"K_AwardPlayerRings", lib_kAwardPlayerRings},
|
||||||
{"K_AwardScaledPlayerRings", lib_kAwardScaledPlayerRings},
|
{"K_AwardScaledPlayerRings", lib_kAwardScaledPlayerRings},
|
||||||
{"K_GetShieldFromPlayer", lib_kGetShieldFromPlayer},
|
{"K_GetShieldFromPlayer", lib_kGetShieldFromPlayer},
|
||||||
|
{"K_PlayerCanPunt", lib_kPlayerCanPunt},
|
||||||
|
|
||||||
// k_hud
|
// k_hud
|
||||||
{"K_AddNewScoreboardMod", lib_kAddNewScoreboardMod},
|
{"K_AddNewScoreboardMod", lib_kAddNewScoreboardMod},
|
||||||
|
|
|
||||||
|
|
@ -573,9 +573,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// kill
|
// kill
|
||||||
if (player->invincibilitytimer > 0
|
if (K_PlayerCanPunt(player))
|
||||||
|| player->growshrinktimer > 0
|
|
||||||
|| player->flamestore > 0)
|
|
||||||
{
|
{
|
||||||
P_KillMobj(special, toucher, toucher, DMG_NORMAL);
|
P_KillMobj(special, toucher, toucher, DMG_NORMAL);
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -1208,8 +1208,7 @@ static BlockItReturn_t PIT_CheckThing(mobj_t *thing)
|
||||||
if (!thing->health)
|
if (!thing->health)
|
||||||
return BMIT_CONTINUE; // dead
|
return BMIT_CONTINUE; // dead
|
||||||
|
|
||||||
if (g_tm.thing->player->invincibilitytimer > 0
|
if (K_PlayerCanPunt(g_tm.thing->player))
|
||||||
|| g_tm.thing->player->growshrinktimer > 0)
|
|
||||||
{
|
{
|
||||||
if (thing->type == MT_BLUEROBRA_JOINT)
|
if (thing->type == MT_BLUEROBRA_JOINT)
|
||||||
P_KillMobj(thing->target, g_tm.thing, g_tm.thing, DMG_NORMAL);
|
P_KillMobj(thing->target, g_tm.thing, g_tm.thing, DMG_NORMAL);
|
||||||
|
|
@ -1234,8 +1233,7 @@ static BlockItReturn_t PIT_CheckThing(mobj_t *thing)
|
||||||
if (!thing->health)
|
if (!thing->health)
|
||||||
return BMIT_CONTINUE; // dead
|
return BMIT_CONTINUE; // dead
|
||||||
|
|
||||||
if (g_tm.thing->player->invincibilitytimer > 0
|
if (K_PlayerCanPunt(g_tm.thing->player))
|
||||||
|| g_tm.thing->player->growshrinktimer > 0)
|
|
||||||
{
|
{
|
||||||
P_KillMobj(thing, g_tm.thing, g_tm.thing, DMG_NORMAL);
|
P_KillMobj(thing, g_tm.thing, g_tm.thing, DMG_NORMAL);
|
||||||
return BMIT_CONTINUE; // kill
|
return BMIT_CONTINUE; // kill
|
||||||
|
|
@ -1265,8 +1263,7 @@ static BlockItReturn_t PIT_CheckThing(mobj_t *thing)
|
||||||
return BMIT_CONTINUE; // underneath
|
return BMIT_CONTINUE; // underneath
|
||||||
|
|
||||||
// kill
|
// kill
|
||||||
if (g_tm.thing->player->invincibilitytimer > 0
|
if (K_PlayerCanPunt(g_tm.thing->player))
|
||||||
|| g_tm.thing->player->growshrinktimer > 0)
|
|
||||||
{
|
{
|
||||||
P_KillMobj(thing, g_tm.thing, g_tm.thing, DMG_NORMAL);
|
P_KillMobj(thing, g_tm.thing, g_tm.thing, DMG_NORMAL);
|
||||||
return BMIT_CONTINUE;
|
return BMIT_CONTINUE;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue