mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-28 07:02:38 +00:00
Merge branch 'shield-button-touchups' into 'next'
Shield Button Touchups See merge request STJr/SRB2!2257
This commit is contained in:
commit
89620dbd9e
13 changed files with 170 additions and 116 deletions
|
@ -11,6 +11,7 @@
|
||||||
/// \brief Lua SOC library
|
/// \brief Lua SOC library
|
||||||
|
|
||||||
#include "deh_lua.h"
|
#include "deh_lua.h"
|
||||||
|
#include "g_input.h"
|
||||||
|
|
||||||
// freeslot takes a name (string only!)
|
// freeslot takes a name (string only!)
|
||||||
// and allocates it to the appropriate free slot.
|
// and allocates it to the appropriate free slot.
|
||||||
|
@ -596,12 +597,20 @@ static int ScanConstants(lua_State *L, boolean mathlib, const char *word)
|
||||||
return luaL_error(L, "translation '%s' could not be found.\n", word);
|
return luaL_error(L, "translation '%s' could not be found.\n", word);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: 2.3: Delete this alias
|
// TODO: 2.3: Delete these aliases
|
||||||
if (fastcmp(word, "BT_USE"))
|
else if (fastcmp(word, "BT_USE"))
|
||||||
{
|
{
|
||||||
CacheAndPushConstant(L, word, (lua_Integer)BT_SPIN);
|
CacheAndPushConstant(L, word, (lua_Integer)BT_SPIN);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
else if (fastcmp(word, "GC_WEPSLOT8") || fastcmp(word, "GC_WEPSLOT9") || fastcmp(word, "GC_WEPSLOT10"))
|
||||||
|
{
|
||||||
|
// Using GC_WEPSLOT7 isn't accurate, but ensures that "if x >= GC_WEPSLOT1 and x <= GC_WEPSLOT10" keeps the intended effect
|
||||||
|
CacheAndPushConstant(L, word, (lua_Integer)GC_WEPSLOT7);
|
||||||
|
if (!mathlib)
|
||||||
|
LUA_Deprecated(L, "GC_WEPSLOT8\"-\"GC_WEPSLOT10", "GC_WEPSLOT1\"-\"GC_WEPSLOT7");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; INT_CONST[i].n; i++)
|
for (i = 0; INT_CONST[i].n; i++)
|
||||||
if (fastcmp(word,INT_CONST[i].n)) {
|
if (fastcmp(word,INT_CONST[i].n)) {
|
||||||
|
|
|
@ -5738,6 +5738,7 @@ struct int_const_s const INT_CONST[] = {
|
||||||
{"JA_DIGITAL",JA_DIGITAL},
|
{"JA_DIGITAL",JA_DIGITAL},
|
||||||
{"JA_JUMP",JA_JUMP},
|
{"JA_JUMP",JA_JUMP},
|
||||||
{"JA_SPIN",JA_SPIN},
|
{"JA_SPIN",JA_SPIN},
|
||||||
|
{"JA_SHIELD",JA_SHIELD},
|
||||||
{"JA_FIRE",JA_FIRE},
|
{"JA_FIRE",JA_FIRE},
|
||||||
{"JA_FIRENORMAL",JA_FIRENORMAL},
|
{"JA_FIRENORMAL",JA_FIRENORMAL},
|
||||||
{"JOYAXISRANGE",JOYAXISRANGE},
|
{"JOYAXISRANGE",JOYAXISRANGE},
|
||||||
|
|
|
@ -98,7 +98,7 @@ demoghost *ghosts = NULL;
|
||||||
// DEMO RECORDING
|
// DEMO RECORDING
|
||||||
//
|
//
|
||||||
|
|
||||||
#define DEMOVERSION 0x0011
|
#define DEMOVERSION 0x0012
|
||||||
#define DEMOHEADER "\xF0" "SRB2Replay" "\x0F"
|
#define DEMOHEADER "\xF0" "SRB2Replay" "\x0F"
|
||||||
|
|
||||||
#define DF_GHOST 0x01 // This demo contains ghost data too!
|
#define DF_GHOST 0x01 // This demo contains ghost data too!
|
||||||
|
@ -183,7 +183,11 @@ void G_ReadDemoTiccmd(ticcmd_t *cmd, INT32 playernum)
|
||||||
if (ziptic & ZT_ANGLE)
|
if (ziptic & ZT_ANGLE)
|
||||||
oldcmd.angleturn = READINT16(demo_p);
|
oldcmd.angleturn = READINT16(demo_p);
|
||||||
if (ziptic & ZT_BUTTONS)
|
if (ziptic & ZT_BUTTONS)
|
||||||
|
{
|
||||||
oldcmd.buttons = (oldcmd.buttons & (BT_CAMLEFT|BT_CAMRIGHT)) | (READUINT16(demo_p) & ~(BT_CAMLEFT|BT_CAMRIGHT));
|
oldcmd.buttons = (oldcmd.buttons & (BT_CAMLEFT|BT_CAMRIGHT)) | (READUINT16(demo_p) & ~(BT_CAMLEFT|BT_CAMRIGHT));
|
||||||
|
if (demoversion < 0x0012 && oldcmd.buttons & BT_SPIN)
|
||||||
|
oldcmd.buttons |= BT_SHIELD; // Copy BT_SPIN to BT_SHIELD for pre-Shield-button demos
|
||||||
|
}
|
||||||
if (ziptic & ZT_AIMING)
|
if (ziptic & ZT_AIMING)
|
||||||
oldcmd.aiming = READINT16(demo_p);
|
oldcmd.aiming = READINT16(demo_p);
|
||||||
if (ziptic & ZT_LATENCY)
|
if (ziptic & ZT_LATENCY)
|
||||||
|
|
55
src/g_game.c
55
src/g_game.c
|
@ -403,27 +403,29 @@ consvar_t cv_cam_lockonboss[2] = {
|
||||||
CVAR_INIT ("cam2_lockaimassist", "Full", CV_SAVE|CV_ALLOWLUA, lockedassist_cons_t, NULL),
|
CVAR_INIT ("cam2_lockaimassist", "Full", CV_SAVE|CV_ALLOWLUA, lockedassist_cons_t, NULL),
|
||||||
};
|
};
|
||||||
|
|
||||||
consvar_t cv_moveaxis = CVAR_INIT ("joyaxis_move", "Y-Axis", CV_SAVE, joyaxis_cons_t, NULL);
|
consvar_t cv_moveaxis = CVAR_INIT ("joyaxis_move", "Y-Axis", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_sideaxis = CVAR_INIT ("joyaxis_side", "X-Axis", CV_SAVE, joyaxis_cons_t, NULL);
|
consvar_t cv_sideaxis = CVAR_INIT ("joyaxis_side", "X-Axis", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_lookaxis = CVAR_INIT ("joyaxis_look", "X-Rudder-", CV_SAVE, joyaxis_cons_t, NULL);
|
consvar_t cv_lookaxis = CVAR_INIT ("joyaxis_look", "X-Rudder-", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_turnaxis = CVAR_INIT ("joyaxis_turn", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL);
|
consvar_t cv_turnaxis = CVAR_INIT ("joyaxis_turn", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_jumpaxis = CVAR_INIT ("joyaxis_jump", "None", CV_SAVE, joyaxis_cons_t, NULL);
|
consvar_t cv_jumpaxis = CVAR_INIT ("joyaxis_jump", "None", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_spinaxis = CVAR_INIT ("joyaxis_spin", "None", CV_SAVE, joyaxis_cons_t, NULL);
|
consvar_t cv_spinaxis = CVAR_INIT ("joyaxis_spin", "None", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_fireaxis = CVAR_INIT ("joyaxis_fire", "Z-Rudder", CV_SAVE, joyaxis_cons_t, NULL);
|
consvar_t cv_shieldaxis = CVAR_INIT ("joyaxis_shield", "None", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_firenaxis = CVAR_INIT ("joyaxis_firenormal", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL);
|
consvar_t cv_fireaxis = CVAR_INIT ("joyaxis_fire", "Z-Rudder", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_deadzone = CVAR_INIT ("joy_deadzone", "0.125", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL);
|
consvar_t cv_firenaxis = CVAR_INIT ("joyaxis_firenormal", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_digitaldeadzone = CVAR_INIT ("joy_digdeadzone", "0.25", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL);
|
consvar_t cv_deadzone = CVAR_INIT ("joy_deadzone", "0.125", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL);
|
||||||
|
consvar_t cv_digitaldeadzone = CVAR_INIT ("joy_digdeadzone", "0.25", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL);
|
||||||
|
|
||||||
consvar_t cv_moveaxis2 = CVAR_INIT ("joyaxis2_move", "Y-Axis", CV_SAVE, joyaxis_cons_t, NULL);
|
consvar_t cv_moveaxis2 = CVAR_INIT ("joyaxis2_move", "Y-Axis", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_sideaxis2 = CVAR_INIT ("joyaxis2_side", "X-Axis", CV_SAVE, joyaxis_cons_t, NULL);
|
consvar_t cv_sideaxis2 = CVAR_INIT ("joyaxis2_side", "X-Axis", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_lookaxis2 = CVAR_INIT ("joyaxis2_look", "X-Rudder-", CV_SAVE, joyaxis_cons_t, NULL);
|
consvar_t cv_lookaxis2 = CVAR_INIT ("joyaxis2_look", "X-Rudder-", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_turnaxis2 = CVAR_INIT ("joyaxis2_turn", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL);
|
consvar_t cv_turnaxis2 = CVAR_INIT ("joyaxis2_turn", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_jumpaxis2 = CVAR_INIT ("joyaxis2_jump", "None", CV_SAVE, joyaxis_cons_t, NULL);
|
consvar_t cv_jumpaxis2 = CVAR_INIT ("joyaxis2_jump", "None", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_spinaxis2 = CVAR_INIT ("joyaxis2_spin", "None", CV_SAVE, joyaxis_cons_t, NULL);
|
consvar_t cv_spinaxis2 = CVAR_INIT ("joyaxis2_spin", "None", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_fireaxis2 = CVAR_INIT ("joyaxis2_fire", "Z-Rudder", CV_SAVE, joyaxis_cons_t, NULL);
|
consvar_t cv_shieldaxis2 = CVAR_INIT ("joyaxis2_shield", "None", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_firenaxis2 = CVAR_INIT ("joyaxis2_firenormal", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL);
|
consvar_t cv_fireaxis2 = CVAR_INIT ("joyaxis2_fire", "Z-Rudder", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_deadzone2 = CVAR_INIT ("joy_deadzone2", "0.125", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL);
|
consvar_t cv_firenaxis2 = CVAR_INIT ("joyaxis2_firenormal", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL);
|
||||||
consvar_t cv_digitaldeadzone2 = CVAR_INIT ("joy_digdeadzone2", "0.25", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL);
|
consvar_t cv_deadzone2 = CVAR_INIT ("joy_deadzone2", "0.125", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL);
|
||||||
|
consvar_t cv_digitaldeadzone2 = CVAR_INIT ("joy_digdeadzone2", "0.25", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL);
|
||||||
|
|
||||||
player_t *seenplayer; // player we're aiming at right now
|
player_t *seenplayer; // player we're aiming at right now
|
||||||
|
|
||||||
|
@ -894,6 +896,9 @@ INT32 JoyAxis(joyaxis_e axissel)
|
||||||
case JA_SPIN:
|
case JA_SPIN:
|
||||||
axisval = cv_spinaxis.value;
|
axisval = cv_spinaxis.value;
|
||||||
break;
|
break;
|
||||||
|
case JA_SHIELD:
|
||||||
|
axisval = cv_shieldaxis.value;
|
||||||
|
break;
|
||||||
case JA_FIRE:
|
case JA_FIRE:
|
||||||
axisval = cv_fireaxis.value;
|
axisval = cv_fireaxis.value;
|
||||||
break;
|
break;
|
||||||
|
@ -967,6 +972,9 @@ INT32 Joy2Axis(joyaxis_e axissel)
|
||||||
case JA_SPIN:
|
case JA_SPIN:
|
||||||
axisval = cv_spinaxis2.value;
|
axisval = cv_spinaxis2.value;
|
||||||
break;
|
break;
|
||||||
|
case JA_SHIELD:
|
||||||
|
axisval = cv_shieldaxis2.value;
|
||||||
|
break;
|
||||||
case JA_FIRE:
|
case JA_FIRE:
|
||||||
axisval = cv_fireaxis2.value;
|
axisval = cv_fireaxis2.value;
|
||||||
break;
|
break;
|
||||||
|
@ -1334,8 +1342,8 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
|
||||||
if (PLAYERINPUTDOWN(ssplayer, GC_WEAPONPREV))
|
if (PLAYERINPUTDOWN(ssplayer, GC_WEAPONPREV))
|
||||||
cmd->buttons |= BT_WEAPONPREV; // Previous Weapon
|
cmd->buttons |= BT_WEAPONPREV; // Previous Weapon
|
||||||
|
|
||||||
#if NUM_WEAPONS > 10
|
#if NUM_WEAPONS > 7
|
||||||
"Add extra inputs to g_input.h/gamecontrols_e"
|
"Add extra inputs to g_input.h/gamecontrols_e, and fix conflicts in d_ticcmd.h/ticcmd_t/buttons"
|
||||||
#endif
|
#endif
|
||||||
//use the three avaliable bits to determine the weapon.
|
//use the three avaliable bits to determine the weapon.
|
||||||
cmd->buttons &= ~BT_WEAPONMASK;
|
cmd->buttons &= ~BT_WEAPONMASK;
|
||||||
|
@ -1361,7 +1369,8 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
|
||||||
cmd->buttons |= BT_TOSSFLAG;
|
cmd->buttons |= BT_TOSSFLAG;
|
||||||
|
|
||||||
// Shield button
|
// Shield button
|
||||||
if (PLAYERINPUTDOWN(ssplayer, GC_SHIELD))
|
axis = PlayerJoyAxis(ssplayer, JA_SHIELD);
|
||||||
|
if (PLAYERINPUTDOWN(ssplayer, GC_SHIELD) || (usejoystick && axis > 0))
|
||||||
cmd->buttons |= BT_SHIELD;
|
cmd->buttons |= BT_SHIELD;
|
||||||
|
|
||||||
// Lua scriptable buttons
|
// Lua scriptable buttons
|
||||||
|
|
|
@ -71,8 +71,8 @@ typedef enum {
|
||||||
#define P_ControlStyle(player) ((((player)->pflags & PF_ANALOGMODE) ? CS_LMAOGALOG : 0) | (((player)->pflags & PF_DIRECTIONCHAR) ? CS_STANDARD : 0))
|
#define P_ControlStyle(player) ((((player)->pflags & PF_ANALOGMODE) ? CS_LMAOGALOG : 0) | (((player)->pflags & PF_DIRECTIONCHAR) ? CS_STANDARD : 0))
|
||||||
|
|
||||||
extern consvar_t cv_autobrake, cv_autobrake2;
|
extern consvar_t cv_autobrake, cv_autobrake2;
|
||||||
extern consvar_t cv_sideaxis,cv_turnaxis,cv_moveaxis,cv_lookaxis,cv_jumpaxis,cv_spinaxis,cv_fireaxis,cv_firenaxis,cv_deadzone,cv_digitaldeadzone;
|
extern consvar_t cv_sideaxis, cv_turnaxis, cv_moveaxis, cv_lookaxis, cv_jumpaxis, cv_spinaxis, cv_shieldaxis, cv_fireaxis, cv_firenaxis, cv_deadzone, cv_digitaldeadzone;
|
||||||
extern consvar_t cv_sideaxis2,cv_turnaxis2,cv_moveaxis2,cv_lookaxis2,cv_jumpaxis2,cv_spinaxis2,cv_fireaxis2,cv_firenaxis2,cv_deadzone2,cv_digitaldeadzone2;
|
extern consvar_t cv_sideaxis2,cv_turnaxis2,cv_moveaxis2,cv_lookaxis2,cv_jumpaxis2,cv_spinaxis2,cv_shieldaxis2,cv_fireaxis2,cv_firenaxis2,cv_deadzone2,cv_digitaldeadzone2;
|
||||||
extern consvar_t cv_ghost_bestscore, cv_ghost_besttime, cv_ghost_bestrings, cv_ghost_last, cv_ghost_guest;
|
extern consvar_t cv_ghost_bestscore, cv_ghost_besttime, cv_ghost_bestrings, cv_ghost_last, cv_ghost_guest;
|
||||||
|
|
||||||
// hi here's some new controls
|
// hi here's some new controls
|
||||||
|
@ -100,6 +100,7 @@ typedef enum
|
||||||
|
|
||||||
JA_JUMP = JA_DIGITAL,
|
JA_JUMP = JA_DIGITAL,
|
||||||
JA_SPIN,
|
JA_SPIN,
|
||||||
|
JA_SHIELD,
|
||||||
JA_FIRE,
|
JA_FIRE,
|
||||||
JA_FIRENORMAL,
|
JA_FIRENORMAL,
|
||||||
} joyaxis_e;
|
} joyaxis_e;
|
||||||
|
|
|
@ -1002,7 +1002,6 @@ static void setcontrol(INT32 (*gc)[2])
|
||||||
// TODO: 2.3: Delete the "use" alias
|
// TODO: 2.3: Delete the "use" alias
|
||||||
namectrl = (stricmp(COM_Argv(1), "use")) ? COM_Argv(1) : "spin";
|
namectrl = (stricmp(COM_Argv(1), "use")) ? COM_Argv(1) : "spin";
|
||||||
|
|
||||||
|
|
||||||
for (numctrl = 0; numctrl < NUM_GAMECONTROLS && stricmp(namectrl, gamecontrolname[numctrl]);
|
for (numctrl = 0; numctrl < NUM_GAMECONTROLS && stricmp(namectrl, gamecontrolname[numctrl]);
|
||||||
numctrl++)
|
numctrl++)
|
||||||
;
|
;
|
||||||
|
|
|
@ -2498,6 +2498,17 @@ static int lib_pDoSuperTransformation(lua_State *L)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int lib_pDoSuperDetransformation(lua_State *L)
|
||||||
|
{
|
||||||
|
player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER));
|
||||||
|
NOHUD
|
||||||
|
INLEVEL
|
||||||
|
if (!player)
|
||||||
|
return LUA_ErrInvalid(L, "player_t");
|
||||||
|
P_DoSuperDetransformation(player);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int lib_pExplodeMissile(lua_State *L)
|
static int lib_pExplodeMissile(lua_State *L)
|
||||||
{
|
{
|
||||||
mobj_t *mo = *((mobj_t **)luaL_checkudata(L, 1, META_MOBJ));
|
mobj_t *mo = *((mobj_t **)luaL_checkudata(L, 1, META_MOBJ));
|
||||||
|
@ -4451,6 +4462,7 @@ static luaL_Reg lib[] = {
|
||||||
{"P_VectorInstaThrust",lib_pVectorInstaThrust},
|
{"P_VectorInstaThrust",lib_pVectorInstaThrust},
|
||||||
{"P_SetMobjStateNF",lib_pSetMobjStateNF},
|
{"P_SetMobjStateNF",lib_pSetMobjStateNF},
|
||||||
{"P_DoSuperTransformation",lib_pDoSuperTransformation},
|
{"P_DoSuperTransformation",lib_pDoSuperTransformation},
|
||||||
|
{"P_DoSuperDetransformation",lib_pDoSuperDetransformation},
|
||||||
{"P_ExplodeMissile",lib_pExplodeMissile},
|
{"P_ExplodeMissile",lib_pExplodeMissile},
|
||||||
{"P_MobjTouchingSectorSpecial",lib_pMobjTouchingSectorSpecial},
|
{"P_MobjTouchingSectorSpecial",lib_pMobjTouchingSectorSpecial},
|
||||||
{"P_ThingOnSpecial3DFloor",lib_pThingOnSpecial3DFloor},
|
{"P_ThingOnSpecial3DFloor",lib_pThingOnSpecial3DFloor},
|
||||||
|
|
38
src/m_menu.c
38
src/m_menu.c
|
@ -1068,9 +1068,9 @@ static menuitem_t OP_ChangeControlsMenu[] =
|
||||||
{IT_CALL | IT_STRING2, NULL, "Move Backward", M_ChangeControl, GC_BACKWARD },
|
{IT_CALL | IT_STRING2, NULL, "Move Backward", M_ChangeControl, GC_BACKWARD },
|
||||||
{IT_CALL | IT_STRING2, NULL, "Move Left", M_ChangeControl, GC_STRAFELEFT },
|
{IT_CALL | IT_STRING2, NULL, "Move Left", M_ChangeControl, GC_STRAFELEFT },
|
||||||
{IT_CALL | IT_STRING2, NULL, "Move Right", M_ChangeControl, GC_STRAFERIGHT },
|
{IT_CALL | IT_STRING2, NULL, "Move Right", M_ChangeControl, GC_STRAFERIGHT },
|
||||||
{IT_CALL | IT_STRING2, NULL, "Jump", M_ChangeControl, GC_JUMP },
|
{IT_CALL | IT_STRING2, NULL, "Jump", M_ChangeControl, GC_JUMP },
|
||||||
{IT_CALL | IT_STRING2, NULL, "Spin", M_ChangeControl, GC_SPIN },
|
{IT_CALL | IT_STRING2, NULL, "Spin", M_ChangeControl, GC_SPIN },
|
||||||
{IT_CALL | IT_STRING2, NULL, "Shield", M_ChangeControl, GC_SHIELD },
|
{IT_CALL | IT_STRING2, NULL, "Shield Ability", M_ChangeControl, GC_SHIELD },
|
||||||
{IT_HEADER, NULL, "Camera", NULL, 0},
|
{IT_HEADER, NULL, "Camera", NULL, 0},
|
||||||
{IT_SPACE, NULL, NULL, NULL, 0}, // padding
|
{IT_SPACE, NULL, NULL, NULL, 0}, // padding
|
||||||
{IT_CALL | IT_STRING2, NULL, "Look Up", M_ChangeControl, GC_LOOKUP },
|
{IT_CALL | IT_STRING2, NULL, "Look Up", M_ChangeControl, GC_LOOKUP },
|
||||||
|
@ -1119,13 +1119,15 @@ static menuitem_t OP_ChangeControlsMenu[] =
|
||||||
|
|
||||||
static menuitem_t OP_Joystick1Menu[] =
|
static menuitem_t OP_Joystick1Menu[] =
|
||||||
{
|
{
|
||||||
{IT_STRING | IT_CALL, NULL, "Select Gamepad...", M_Setup1PJoystickMenu, 10},
|
{IT_STRING | IT_CALL, NULL, "Select Gamepad...", M_Setup1PJoystickMenu, 0},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Move \x17 Axis" , &cv_moveaxis , 30},
|
|
||||||
{IT_STRING | IT_CVAR, NULL, "Move \x18 Axis" , &cv_sideaxis , 40},
|
{IT_STRING | IT_CVAR, NULL, "Move \x17 Axis" , &cv_moveaxis , 20},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Camera \x17 Axis" , &cv_lookaxis , 50},
|
{IT_STRING | IT_CVAR, NULL, "Move \x18 Axis" , &cv_sideaxis , 30},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Camera \x18 Axis" , &cv_turnaxis , 60},
|
{IT_STRING | IT_CVAR, NULL, "Camera \x17 Axis" , &cv_lookaxis , 40},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Jump Axis" , &cv_jumpaxis , 70},
|
{IT_STRING | IT_CVAR, NULL, "Camera \x18 Axis" , &cv_turnaxis , 50},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Spin Axis" , &cv_spinaxis , 80},
|
{IT_STRING | IT_CVAR, NULL, "Jump Axis" , &cv_jumpaxis , 60},
|
||||||
|
{IT_STRING | IT_CVAR, NULL, "Spin Axis" , &cv_spinaxis , 70},
|
||||||
|
{IT_STRING | IT_CVAR, NULL, "Shield Axis" , &cv_shieldaxis , 80},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Fire Axis" , &cv_fireaxis , 90},
|
{IT_STRING | IT_CVAR, NULL, "Fire Axis" , &cv_fireaxis , 90},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Fire Normal Axis" , &cv_firenaxis ,100},
|
{IT_STRING | IT_CVAR, NULL, "Fire Normal Axis" , &cv_firenaxis ,100},
|
||||||
|
|
||||||
|
@ -1137,13 +1139,15 @@ static menuitem_t OP_Joystick1Menu[] =
|
||||||
|
|
||||||
static menuitem_t OP_Joystick2Menu[] =
|
static menuitem_t OP_Joystick2Menu[] =
|
||||||
{
|
{
|
||||||
{IT_STRING | IT_CALL, NULL, "Select Gamepad...", M_Setup2PJoystickMenu, 10},
|
{IT_STRING | IT_CALL, NULL, "Select Gamepad...", M_Setup2PJoystickMenu, 0},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Move \x17 Axis" , &cv_moveaxis2 , 30},
|
|
||||||
{IT_STRING | IT_CVAR, NULL, "Move \x18 Axis" , &cv_sideaxis2 , 40},
|
{IT_STRING | IT_CVAR, NULL, "Move \x17 Axis" , &cv_moveaxis2 , 20},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Camera \x17 Axis" , &cv_lookaxis2 , 50},
|
{IT_STRING | IT_CVAR, NULL, "Move \x18 Axis" , &cv_sideaxis2 , 30},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Camera \x18 Axis" , &cv_turnaxis2 , 60},
|
{IT_STRING | IT_CVAR, NULL, "Camera \x17 Axis" , &cv_lookaxis2 , 40},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Jump Axis" , &cv_jumpaxis2 , 70},
|
{IT_STRING | IT_CVAR, NULL, "Camera \x18 Axis" , &cv_turnaxis2 , 50},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Spin Axis" , &cv_spinaxis2 , 80},
|
{IT_STRING | IT_CVAR, NULL, "Jump Axis" , &cv_jumpaxis2 , 60},
|
||||||
|
{IT_STRING | IT_CVAR, NULL, "Spin Axis" , &cv_spinaxis2 , 70},
|
||||||
|
{IT_STRING | IT_CVAR, NULL, "Shield Axis" , &cv_shieldaxis2 , 80},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Fire Axis" , &cv_fireaxis2 , 90},
|
{IT_STRING | IT_CVAR, NULL, "Fire Axis" , &cv_fireaxis2 , 90},
|
||||||
{IT_STRING | IT_CVAR, NULL, "Fire Normal Axis" , &cv_firenaxis2 ,100},
|
{IT_STRING | IT_CVAR, NULL, "Fire Normal Axis" , &cv_firenaxis2 ,100},
|
||||||
|
|
||||||
|
|
|
@ -815,6 +815,8 @@ void D_RegisterClientCommands(void)
|
||||||
CV_RegisterVar(&cv_jumpaxis2);
|
CV_RegisterVar(&cv_jumpaxis2);
|
||||||
CV_RegisterVar(&cv_spinaxis);
|
CV_RegisterVar(&cv_spinaxis);
|
||||||
CV_RegisterVar(&cv_spinaxis2);
|
CV_RegisterVar(&cv_spinaxis2);
|
||||||
|
CV_RegisterVar(&cv_shieldaxis);
|
||||||
|
CV_RegisterVar(&cv_shieldaxis2);
|
||||||
CV_RegisterVar(&cv_fireaxis);
|
CV_RegisterVar(&cv_fireaxis);
|
||||||
CV_RegisterVar(&cv_fireaxis2);
|
CV_RegisterVar(&cv_fireaxis2);
|
||||||
CV_RegisterVar(&cv_firenaxis);
|
CV_RegisterVar(&cv_firenaxis);
|
||||||
|
|
|
@ -552,6 +552,7 @@ void P_ThrustEvenIn2D(mobj_t *mo, angle_t angle, fixed_t move);
|
||||||
void P_VectorInstaThrust(fixed_t xa, fixed_t xb, fixed_t xc, fixed_t ya, fixed_t yb, fixed_t yc,
|
void P_VectorInstaThrust(fixed_t xa, fixed_t xb, fixed_t xc, fixed_t ya, fixed_t yb, fixed_t yc,
|
||||||
fixed_t za, fixed_t zb, fixed_t zc, fixed_t momentum, mobj_t *mo);
|
fixed_t za, fixed_t zb, fixed_t zc, fixed_t momentum, mobj_t *mo);
|
||||||
void P_DoSuperTransformation(player_t *player, boolean giverings);
|
void P_DoSuperTransformation(player_t *player, boolean giverings);
|
||||||
|
void P_DoSuperDetransformation(player_t *player);
|
||||||
void P_ExplodeMissile(mobj_t *mo);
|
void P_ExplodeMissile(mobj_t *mo);
|
||||||
void P_CheckGravity(mobj_t *mo, boolean affect);
|
void P_CheckGravity(mobj_t *mo, boolean affect);
|
||||||
void P_SetPitchRollFromSlope(mobj_t *mo, pslope_t *slope);
|
void P_SetPitchRollFromSlope(mobj_t *mo, pslope_t *slope);
|
||||||
|
|
136
src/p_user.c
136
src/p_user.c
|
@ -1378,7 +1378,7 @@ void P_DoSuperTransformation(player_t *player, boolean giverings)
|
||||||
// P_DoSuperDetransformation
|
// P_DoSuperDetransformation
|
||||||
//
|
//
|
||||||
// Detransform into regular Sonic!
|
// Detransform into regular Sonic!
|
||||||
static void P_DoSuperDetransformation(player_t *player)
|
void P_DoSuperDetransformation(player_t *player)
|
||||||
{
|
{
|
||||||
player->powers[pw_emeralds] = 0; // lost the power stones
|
player->powers[pw_emeralds] = 0; // lost the power stones
|
||||||
P_SpawnGhostMobj(player->mo);
|
P_SpawnGhostMobj(player->mo);
|
||||||
|
@ -4182,16 +4182,6 @@ static void P_DoFiring(player_t *player, ticcmd_t *cmd)
|
||||||
I_Assert(player != NULL);
|
I_Assert(player != NULL);
|
||||||
I_Assert(!P_MobjWasRemoved(player->mo));
|
I_Assert(!P_MobjWasRemoved(player->mo));
|
||||||
|
|
||||||
// Toss a flag
|
|
||||||
if (cmd->buttons & BT_TOSSFLAG && G_GametypeHasTeams()
|
|
||||||
&& !(player->powers[pw_super]) && !(player->tossdelay))
|
|
||||||
{
|
|
||||||
if (!(player->gotflag & (GF_REDFLAG|GF_BLUEFLAG)))
|
|
||||||
P_PlayerEmeraldBurst(player, true); // Toss emeralds
|
|
||||||
else
|
|
||||||
P_PlayerFlagBurst(player, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(cmd->buttons & (BT_ATTACK|BT_FIRENORMAL)))
|
if (!(cmd->buttons & (BT_ATTACK|BT_FIRENORMAL)))
|
||||||
{
|
{
|
||||||
// Not holding any firing buttons anymore.
|
// Not holding any firing buttons anymore.
|
||||||
|
@ -4200,7 +4190,7 @@ static void P_DoFiring(player_t *player, ticcmd_t *cmd)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player->pflags & PF_ATTACKDOWN || player->climbing)
|
if (player->pflags & PF_ATTACKDOWN || player->climbing || (G_TagGametype() && !(player->pflags & PF_TAGIT)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Fire a fireball if we have the Fire Flower powerup!
|
// Fire a fireball if we have the Fire Flower powerup!
|
||||||
|
@ -4216,7 +4206,7 @@ static void P_DoFiring(player_t *player, ticcmd_t *cmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
// No ringslinging outside of ringslinger!
|
// No ringslinging outside of ringslinger!
|
||||||
if (!G_RingSlingerGametype() || player->weapondelay || (G_TagGametype() && !(player->pflags & PF_TAGIT)))
|
if (!G_RingSlingerGametype() || player->weapondelay)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
player->pflags |= PF_ATTACKDOWN;
|
player->pflags |= PF_ATTACKDOWN;
|
||||||
|
@ -4448,7 +4438,7 @@ boolean P_SuperReady(player_t *player, boolean transform)
|
||||||
&& (player->charflags & SF_SUPER)
|
&& (player->charflags & SF_SUPER)
|
||||||
&& !P_PlayerInPain(player)
|
&& !P_PlayerInPain(player)
|
||||||
&& !player->climbing
|
&& !player->climbing
|
||||||
&& !(player->pflags & (PF_FULLSTASIS|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->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))))
|
|| player->panim == PA_WALK || player->panim == PA_RUN || (player->charflags & SF_DASHMODE && player->panim == PA_DASH))))
|
||||||
&& !(maptol & TOL_NIGHTS))
|
&& !(maptol & TOL_NIGHTS))
|
||||||
|
@ -5269,7 +5259,7 @@ static boolean P_PlayerShieldThink(player_t *player, ticcmd_t *cmd, mobj_t *lock
|
||||||
//
|
//
|
||||||
// Handles player jumping
|
// Handles player jumping
|
||||||
//
|
//
|
||||||
static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd)
|
static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd, boolean spinshieldhack)
|
||||||
{
|
{
|
||||||
mobj_t *lockonthok = NULL, *visual = NULL;
|
mobj_t *lockonthok = NULL, *visual = NULL;
|
||||||
|
|
||||||
|
@ -5302,45 +5292,53 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd)
|
||||||
;
|
;
|
||||||
else if (P_PlayerShieldThink(player, cmd, lockonthok, visual))
|
else if (P_PlayerShieldThink(player, cmd, lockonthok, visual))
|
||||||
;
|
;
|
||||||
else if ((cmd->buttons & BT_SPIN) && !LUA_HookPlayer(player, HOOK(JumpSpinSpecial)))
|
else if (cmd->buttons & BT_SPIN)
|
||||||
{
|
{
|
||||||
switch (player->charability)
|
if (spinshieldhack && !(player->pflags & PF_SPINDOWN) && P_SuperReady(player, true)
|
||||||
|
&& !player->powers[pw_invulnerability] && !(player->powers[pw_shield] & SH_NOSTACK)) // These two checks are no longer in P_SuperReady
|
||||||
{
|
{
|
||||||
case CA_THOK:
|
// If you're using two-button play, can turn Super and aren't already,
|
||||||
if (player->powers[pw_super]) // Super Sonic float
|
// and you don't have a shield, then turn Super!
|
||||||
{
|
P_DoSuperTransformation(player, false);
|
||||||
if ((player->speed > 5*player->mo->scale) // FixedMul(5<<FRACBITS, player->mo->scale), but scale is FRACUNIT-based
|
|
||||||
&& (P_MobjFlip(player->mo)*player->mo->momz <= 0))
|
|
||||||
{
|
|
||||||
if (player->panim != PA_RUN && player->panim != PA_WALK)
|
|
||||||
{
|
|
||||||
if (player->speed >= FixedMul(player->runspeed, player->mo->scale))
|
|
||||||
P_SetMobjState(player->mo, S_PLAY_FLOAT_RUN);
|
|
||||||
else
|
|
||||||
P_SetMobjState(player->mo, S_PLAY_FLOAT);
|
|
||||||
}
|
|
||||||
|
|
||||||
player->mo->momz = 0;
|
|
||||||
player->pflags &= ~(PF_STARTJUMP|PF_SPINNING);
|
|
||||||
player->secondjump = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case CA_TELEKINESIS:
|
|
||||||
if (!(player->pflags & (PF_THOKKED|PF_SPINDOWN)) || (player->charflags & SF_MULTIABILITY))
|
|
||||||
{
|
|
||||||
P_Telekinesis(player,
|
|
||||||
-FixedMul(player->actionspd, player->mo->scale), // -ve thrust (pulling towards player)
|
|
||||||
FixedMul(384*FRACUNIT, player->mo->scale));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case CA_TWINSPIN:
|
|
||||||
if ((player->charability2 == CA2_MELEE) && (!(player->pflags & (PF_THOKKED|PF_SPINDOWN)) || player->charflags & SF_MULTIABILITY))
|
|
||||||
P_DoTwinSpin(player);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
else if (!LUA_HookPlayer(player, HOOK(JumpSpinSpecial)))
|
||||||
|
switch (player->charability)
|
||||||
|
{
|
||||||
|
case CA_THOK:
|
||||||
|
if (player->powers[pw_super]) // Super Sonic float
|
||||||
|
{
|
||||||
|
if ((player->speed > 5*player->mo->scale) // FixedMul(5<<FRACBITS, player->mo->scale), but scale is FRACUNIT-based
|
||||||
|
&& (P_MobjFlip(player->mo)*player->mo->momz <= 0))
|
||||||
|
{
|
||||||
|
if (player->panim != PA_RUN && player->panim != PA_WALK)
|
||||||
|
{
|
||||||
|
if (player->speed >= FixedMul(player->runspeed, player->mo->scale))
|
||||||
|
P_SetMobjState(player->mo, S_PLAY_FLOAT_RUN);
|
||||||
|
else
|
||||||
|
P_SetMobjState(player->mo, S_PLAY_FLOAT);
|
||||||
|
}
|
||||||
|
|
||||||
|
player->mo->momz = 0;
|
||||||
|
player->pflags &= ~(PF_STARTJUMP|PF_SPINNING);
|
||||||
|
player->secondjump = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case CA_TELEKINESIS:
|
||||||
|
if (!(player->pflags & (PF_THOKKED|PF_SPINDOWN)) || (player->charflags & SF_MULTIABILITY))
|
||||||
|
{
|
||||||
|
P_Telekinesis(player,
|
||||||
|
-FixedMul(player->actionspd, player->mo->scale), // -ve thrust (pulling towards player)
|
||||||
|
FixedMul(384*FRACUNIT, player->mo->scale));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case CA_TWINSPIN:
|
||||||
|
if ((player->charability2 == CA2_MELEE) && (!(player->pflags & (PF_THOKKED|PF_SPINDOWN)) || player->charflags & SF_MULTIABILITY))
|
||||||
|
P_DoTwinSpin(player);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8055,6 +8053,7 @@ void P_MovePlayer(player_t *player)
|
||||||
{
|
{
|
||||||
ticcmd_t *cmd;
|
ticcmd_t *cmd;
|
||||||
INT32 i;
|
INT32 i;
|
||||||
|
boolean spinshieldhack = false; // Hack: Is Spin and Shield bound to the same button (pressed on the same tic)?
|
||||||
|
|
||||||
fixed_t runspd;
|
fixed_t runspd;
|
||||||
|
|
||||||
|
@ -8676,10 +8675,13 @@ void P_MovePlayer(player_t *player)
|
||||||
&& !(player->mo->eflags & (MFE_UNDERWATER|MFE_TOUCHWATER)))
|
&& !(player->mo->eflags & (MFE_UNDERWATER|MFE_TOUCHWATER)))
|
||||||
P_ElementalFire(player, false);
|
P_ElementalFire(player, false);
|
||||||
|
|
||||||
|
if ((cmd->buttons & (BT_SPIN|BT_SHIELD)) == (BT_SPIN|BT_SHIELD) && !(player->pflags & (PF_SPINDOWN|PF_SHIELDDOWN)))
|
||||||
|
spinshieldhack = true; // Spin and Shield is bound to the same button (pressed on the same tic), so enable two-button play (Jump and Spin+Shield)
|
||||||
|
|
||||||
P_DoSpinAbility(player, cmd);
|
P_DoSpinAbility(player, cmd);
|
||||||
|
|
||||||
// jumping
|
// jumping
|
||||||
P_DoJumpStuff(player, cmd);
|
P_DoJumpStuff(player, cmd, spinshieldhack);
|
||||||
|
|
||||||
// If you're not spinning, you'd better not be spindashing!
|
// If you're not spinning, you'd better not be spindashing!
|
||||||
if (!(player->pflags & PF_SPINNING) && player->powers[pw_carry] != CR_NIGHTSMODE)
|
if (!(player->pflags & PF_SPINNING) && player->powers[pw_carry] != CR_NIGHTSMODE)
|
||||||
|
@ -8758,19 +8760,23 @@ void P_MovePlayer(player_t *player)
|
||||||
&& player->panim == PA_IDLE && !(player->powers[pw_carry]))
|
&& player->panim == PA_IDLE && !(player->powers[pw_carry]))
|
||||||
P_DoTeeter(player);
|
P_DoTeeter(player);
|
||||||
|
|
||||||
// Check for fire and shield buttons
|
// Toss a flag
|
||||||
if (!player->exiting && !(player->pflags & PF_STASIS))
|
if (G_GametypeHasTeams() && (cmd->buttons & BT_TOSSFLAG) && !(player->powers[pw_super]) && !(player->tossdelay))
|
||||||
{
|
{
|
||||||
// Check for fire buttons
|
if (!(player->gotflag & (GF_REDFLAG|GF_BLUEFLAG)))
|
||||||
P_DoFiring(player, cmd);
|
P_PlayerEmeraldBurst(player, true); // Toss emeralds
|
||||||
|
else
|
||||||
|
P_PlayerFlagBurst(player, true);
|
||||||
|
}
|
||||||
|
|
||||||
// Release the shield button
|
// Check for fire and shield buttons
|
||||||
if (!(cmd->buttons & BT_SHIELD))
|
if (!player->exiting)
|
||||||
player->pflags &= ~PF_SHIELDDOWN;
|
{
|
||||||
|
P_DoFiring(player, cmd);
|
||||||
|
|
||||||
// Shield button behavior
|
// Shield button behavior
|
||||||
// Check P_PlayerShieldThink for actual shields!
|
// Check P_PlayerShieldThink for actual shields!
|
||||||
else if (!(player->pflags & PF_SHIELDDOWN))
|
if ((cmd->buttons & BT_SHIELD) && !(player->pflags & PF_SHIELDDOWN) && !spinshieldhack)
|
||||||
{
|
{
|
||||||
// Transform into super if we can!
|
// Transform into super if we can!
|
||||||
if (P_SuperReady(player, true))
|
if (P_SuperReady(player, true))
|
||||||
|
@ -8779,8 +8785,6 @@ void P_MovePlayer(player_t *player)
|
||||||
// Detransform from super if we can!
|
// Detransform from super if we can!
|
||||||
else if (P_SuperReady(player, false))
|
else if (P_SuperReady(player, false))
|
||||||
P_DoSuperDetransformation(player);
|
P_DoSuperDetransformation(player);
|
||||||
|
|
||||||
player->pflags |= PF_SHIELDDOWN;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12036,7 +12040,7 @@ void P_PlayerThink(player_t *player)
|
||||||
ticmiss++;
|
ticmiss++;
|
||||||
|
|
||||||
P_DoRopeHang(player);
|
P_DoRopeHang(player);
|
||||||
P_DoJumpStuff(player, &player->cmd);
|
P_DoJumpStuff(player, &player->cmd, false); // P_DoRopeHang would set PF_SPINDOWN, so no spinshieldhack here
|
||||||
}
|
}
|
||||||
else //if (player->powers[pw_carry] == CR_ZOOMTUBE)
|
else //if (player->powers[pw_carry] == CR_ZOOMTUBE)
|
||||||
{
|
{
|
||||||
|
@ -12306,6 +12310,12 @@ void P_PlayerThink(player_t *player)
|
||||||
player->pflags &= ~PF_SPINDOWN;
|
player->pflags &= ~PF_SPINDOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check for Shield button
|
||||||
|
if (cmd->buttons & BT_SHIELD)
|
||||||
|
player->pflags |= PF_SHIELDDOWN;
|
||||||
|
else
|
||||||
|
player->pflags &= ~PF_SHIELDDOWN;
|
||||||
|
|
||||||
// IF PLAYER NOT HERE THEN FLASH END IF
|
// IF PLAYER NOT HERE THEN FLASH END IF
|
||||||
if (player->quittime && player->powers[pw_flashing] < flashingtics - 1
|
if (player->quittime && player->powers[pw_flashing] < flashingtics - 1
|
||||||
&& !(G_TagGametype() && !(player->pflags & PF_TAGIT)) && !player->gotflag)
|
&& !(G_TagGametype() && !(player->pflags & PF_TAGIT)) && !player->gotflag)
|
||||||
|
|
|
@ -1171,8 +1171,10 @@ static void ST_drawInput(void)
|
||||||
V_DrawFill(x+16+(xoffs), y+(yoffs)-offs, 10, 10, col);\
|
V_DrawFill(x+16+(xoffs), y+(yoffs)-offs, 10, 10, col);\
|
||||||
V_DrawCharacter(x+16+1+(xoffs), y+1+(yoffs)-offs, hudinfo[HUD_INPUT].f|symb, false)
|
V_DrawCharacter(x+16+1+(xoffs), y+1+(yoffs)-offs, hudinfo[HUD_INPUT].f|symb, false)
|
||||||
|
|
||||||
drawbutt( 4,-3, BT_JUMP, 'J');
|
drawbutt( 4,-3, BT_JUMP, 'J' );
|
||||||
drawbutt(15,-3, BT_SPIN, 'S');
|
drawbutt(15,-3, BT_SPIN, 'S' );
|
||||||
|
drawbutt(26,-3, BT_SHIELD, '\0'); // Instead of a wide 'J' or 'S', we'll draw a thin "SH" for Shield
|
||||||
|
V_DrawThinString(x+16+26, y+2+(-3)-offs, hudinfo[HUD_LIVES].f, "SH");
|
||||||
|
|
||||||
V_DrawFill(x+16+4, y+8, 21, 10, hudinfo[HUD_INPUT].f|20); // sundial backing
|
V_DrawFill(x+16+4, y+8, 21, 10, hudinfo[HUD_INPUT].f|20); // sundial backing
|
||||||
if (stplyr->mo)
|
if (stplyr->mo)
|
||||||
|
|
|
@ -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" "get 50 rings, then";
|
||||||
const char *tut1text = "\x82" "press " "\x80" "shield";
|
const char *tut1text = "\x82" "press " "\x80" "shield";
|
||||||
const char *tut2text = "\x82" "to " "\x80" "transform";
|
const char *tut2text = "\x82" "to transform";
|
||||||
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