diff --git a/src/d_player.h b/src/d_player.h index 8e63357f5..fddbd9c51 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -1081,6 +1081,7 @@ struct player_t UINT16 progressivethrust; // When getting beat up in GTR_BUMPERS, speed up the longer you've been out of control. UINT8 ringvisualwarning; // Check with > 1, not >= 1! Set when put in debt, counts down and holds at 1 when still in debt. + UINT32 bailcharge; UINT32 baildrop; boolean analoginput; // Has an input been recorded that requires analog usage? For input display. diff --git a/src/lua_playerlib.c b/src/lua_playerlib.c index 214eaae8b..faea1a8ee 100644 --- a/src/lua_playerlib.c +++ b/src/lua_playerlib.c @@ -284,6 +284,8 @@ static int player_get(lua_State *L) lua_pushboolean(L, plr->progressivethrust); else if (fastcmp(field,"ringvisualwarning")) lua_pushboolean(L, plr->ringvisualwarning); + else if (fastcmp(field,"bailcharge")) + lua_pushboolean(L, plr->bailcharge); else if (fastcmp(field,"baildrop")) lua_pushboolean(L, plr->baildrop); else if (fastcmp(field,"dotrickfx")) @@ -912,6 +914,8 @@ static int player_set(lua_State *L) plr->progressivethrust = luaL_checkboolean(L, 3); else if (fastcmp(field,"ringvisualwarning")) plr->ringvisualwarning = luaL_checkboolean(L, 3); + else if (fastcmp(field,"bailcharge")) + plr->bailcharge = luaL_checkinteger(L, 3); else if (fastcmp(field,"baildrop")) plr->baildrop = luaL_checkinteger(L, 3); else if (fastcmp(field,"analoginput")) diff --git a/src/p_enemy.c b/src/p_enemy.c index 00f341128..cc7d298a4 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -3503,7 +3503,7 @@ void A_AttractChase(mobj_t *actor) if (actor->extravalue1 && actor->type != MT_EMERALD) // SRB2Kart { - if (!actor->target || P_MobjWasRemoved(actor->target) || !actor->target->player || actor->target->player->baildrop) + if (!actor->target || P_MobjWasRemoved(actor->target) || !actor->target->player || actor->target->player->baildrop || actor->target->player->bailcharge) { P_RemoveMobj(actor); return; diff --git a/src/p_inter.c b/src/p_inter.c index d71b587e8..dea9cd3e2 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -731,7 +731,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) if (player->instaWhipCharge) return; - if (player->baildrop) + if (player->baildrop || player->bailcharge) return; // Don't immediately pick up spilled rings diff --git a/src/p_saveg.cpp b/src/p_saveg.cpp index c038c1ba4..878572929 100644 --- a/src/p_saveg.cpp +++ b/src/p_saveg.cpp @@ -667,6 +667,7 @@ static void P_NetArchivePlayers(savebuffer_t *save) WRITEUINT16(save->p, players[i].progressivethrust); WRITEUINT8(save->p, players[i].ringvisualwarning); + WRITEUINT32(save->p, players[i].bailcharge); WRITEUINT32(save->p, players[i].baildrop); WRITEUINT8(save->p, players[i].analoginput); @@ -1324,6 +1325,7 @@ static void P_NetUnArchivePlayers(savebuffer_t *save) players[i].progressivethrust = READUINT16(save->p); players[i].ringvisualwarning = READUINT8(save->p); + players[i].bailcharge = READUINT32(save->p); players[i].baildrop = READUINT32(save->p); players[i].analoginput = READUINT8(save->p);