mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-02-09 09:41:12 +00:00
Restore super transformation conditions
This commit is contained in:
parent
24b211e568
commit
a9d7da6003
4 changed files with 13 additions and 25 deletions
|
@ -1730,12 +1730,11 @@ static int lib_pResetCamera(lua_State *L)
|
||||||
static int lib_pSuperReady(lua_State *L)
|
static int lib_pSuperReady(lua_State *L)
|
||||||
{
|
{
|
||||||
player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER));
|
player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER));
|
||||||
boolean transform = (boolean)lua_opttrueboolean(L, 2);
|
|
||||||
//HUDSAFE
|
//HUDSAFE
|
||||||
INLEVEL
|
INLEVEL
|
||||||
if (!player)
|
if (!player)
|
||||||
return LUA_ErrInvalid(L, "player_t");
|
return LUA_ErrInvalid(L, "player_t");
|
||||||
lua_pushboolean(L, P_SuperReady(player, transform));
|
lua_pushboolean(L, P_SuperReady(player));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -203,7 +203,7 @@ mobj_t *P_LookForEnemies(player_t *player, boolean nonenemies, boolean bullet);
|
||||||
void P_NukeEnemies(mobj_t *inflictor, mobj_t *source, fixed_t radius);
|
void P_NukeEnemies(mobj_t *inflictor, mobj_t *source, fixed_t radius);
|
||||||
void P_Earthquake(mobj_t *inflictor, mobj_t *source, fixed_t radius);
|
void P_Earthquake(mobj_t *inflictor, mobj_t *source, fixed_t radius);
|
||||||
boolean P_HomingAttack(mobj_t *source, mobj_t *enemy); /// \todo doesn't belong in p_user
|
boolean P_HomingAttack(mobj_t *source, mobj_t *enemy); /// \todo doesn't belong in p_user
|
||||||
boolean P_SuperReady(player_t *player, boolean transform);
|
boolean P_SuperReady(player_t *player);
|
||||||
void P_DoJump(player_t *player, boolean soundandstate, boolean allowflip);
|
void P_DoJump(player_t *player, boolean soundandstate, boolean allowflip);
|
||||||
void P_DoSpinDashDust(player_t *player);
|
void P_DoSpinDashDust(player_t *player);
|
||||||
#define P_AnalogMove(player) (P_ControlStyle(player) == CS_LMAOGALOG)
|
#define P_AnalogMove(player) (P_ControlStyle(player) == CS_LMAOGALOG)
|
||||||
|
|
29
src/p_user.c
29
src/p_user.c
|
@ -4438,27 +4438,21 @@ static void P_DoSuperStuff(player_t *player)
|
||||||
//
|
//
|
||||||
// Returns true if player is ready to transform or detransform
|
// Returns true if player is ready to transform or detransform
|
||||||
//
|
//
|
||||||
boolean P_SuperReady(player_t *player, boolean transform)
|
boolean P_SuperReady(player_t *player)
|
||||||
{
|
{
|
||||||
if (!transform &&
|
|
||||||
(player->powers[pw_super] < TICRATE*3/2
|
|
||||||
|| !G_CoopGametype())) // No turning back in competitive!
|
|
||||||
return false;
|
|
||||||
else if (transform
|
|
||||||
&& (player->powers[pw_super]
|
|
||||||
|| !ALL7EMERALDS(emeralds)
|
|
||||||
|| !(player->rings >= 50)))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (player->mo
|
if (player->mo
|
||||||
|
&& (player->rings >= 50)
|
||||||
|
&& ALL7EMERALDS(emeralds)
|
||||||
|
&& (player->charflags & SF_SUPER)
|
||||||
|
&& (player->pflags & PF_JUMPED)
|
||||||
|
&& !player->powers[pw_super]
|
||||||
|
&& !player->powers[pw_invulnerability]
|
||||||
|
&& !(player->powers[pw_shield] & SH_NOSTACK)
|
||||||
&& !player->powers[pw_tailsfly]
|
&& !player->powers[pw_tailsfly]
|
||||||
&& !player->powers[pw_carry]
|
&& !player->powers[pw_carry]
|
||||||
&& (player->charflags & SF_SUPER)
|
|
||||||
&& !P_PlayerInPain(player)
|
&& !P_PlayerInPain(player)
|
||||||
&& !player->climbing
|
&& !player->climbing
|
||||||
&& !(player->pflags & (PF_JUMPSTASIS|PF_THOKKED|PF_STARTDASH|PF_GLIDING|PF_SLIDING|PF_SHIELDABILITY))
|
&& !(player->pflags & (PF_JUMPSTASIS|PF_THOKKED|PF_STARTDASH|PF_GLIDING|PF_SLIDING|PF_SHIELDABILITY))
|
||||||
&& ((player->pflags & PF_JUMPED) || (P_IsObjectOnGround(player->mo) && (player->panim == PA_IDLE || player->panim == PA_EDGE
|
|
||||||
|| player->panim == PA_WALK || player->panim == PA_RUN || (player->charflags & SF_DASHMODE && player->panim == PA_DASH))))
|
|
||||||
&& !(maptol & TOL_NIGHTS))
|
&& !(maptol & TOL_NIGHTS))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
@ -5318,8 +5312,7 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd, boolean spinshieldhac
|
||||||
;
|
;
|
||||||
else if (cmd->buttons & BT_SPIN)
|
else if (cmd->buttons & BT_SPIN)
|
||||||
{
|
{
|
||||||
if (spinshieldhack && !(player->pflags & PF_SPINDOWN) && P_SuperReady(player, true)
|
if (spinshieldhack && !(player->pflags & PF_SPINDOWN) && P_SuperReady(player))
|
||||||
&& !player->powers[pw_invulnerability] && !(player->powers[pw_shield] & SH_NOSTACK)) // These two checks are no longer in P_SuperReady
|
|
||||||
{
|
{
|
||||||
// If you're using two-button play, can turn Super and aren't already,
|
// If you're using two-button play, can turn Super and aren't already,
|
||||||
// and you don't have a shield, then turn Super!
|
// and you don't have a shield, then turn Super!
|
||||||
|
@ -8805,10 +8798,6 @@ void P_MovePlayer(player_t *player)
|
||||||
// Transform into super if we can!
|
// Transform into super if we can!
|
||||||
if (P_SuperReady(player, true))
|
if (P_SuperReady(player, true))
|
||||||
P_DoSuperTransformation(player, false);
|
P_DoSuperTransformation(player, false);
|
||||||
|
|
||||||
// Detransform from super if we can!
|
|
||||||
else if (P_SuperReady(player, false))
|
|
||||||
P_DoSuperDetransformation(player);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -579,9 +579,9 @@ void Y_IntermissionDrawer(void)
|
||||||
{
|
{
|
||||||
if (LUA_HudEnabled(hud_intermissiontitletext))
|
if (LUA_HudEnabled(hud_intermissiontitletext))
|
||||||
{
|
{
|
||||||
const char *ringtext = "\x82" "get 50 rings, then";
|
const char *ringtext = "\x82" "50 rings, no shield";
|
||||||
const char *tut1text = "\x82" "press " "\x80" "shield";
|
const char *tut1text = "\x82" "press " "\x80" "shield";
|
||||||
const char *tut2text = "\x82" "to transform";
|
const char *tut2text = "\x82" "mid-" "\x80" "jump";
|
||||||
ttheight = 8;
|
ttheight = 8;
|
||||||
V_DrawLevelTitle(data.spec.passedx1 + xoffset1, ttheight, 0, data.spec.passed1);
|
V_DrawLevelTitle(data.spec.passedx1 + xoffset1, ttheight, 0, data.spec.passed1);
|
||||||
ttheight += V_LevelNameHeight(data.spec.passed3) + 2;
|
ttheight += V_LevelNameHeight(data.spec.passed3) + 2;
|
||||||
|
|
Loading…
Reference in a new issue