mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
NOW we make it past p_mobj
This commit is contained in:
parent
9c51086348
commit
5a98c00405
18 changed files with 210 additions and 2396 deletions
|
|
@ -475,17 +475,14 @@ typedef struct player_s
|
|||
|
||||
playerstate_t playerstate;
|
||||
|
||||
// Determine POV, including viewpoint bobbing during movement.
|
||||
fixed_t camerascale;
|
||||
fixed_t shieldscale;
|
||||
// Focal origin above r.z
|
||||
fixed_t viewz;
|
||||
// Base height above floor for viewz.
|
||||
fixed_t viewheight;
|
||||
// Bob/squat speed.
|
||||
//fixed_t deltaviewheight;
|
||||
fixed_t deltaviewheight;
|
||||
// bounded/scaled total momentum.
|
||||
//fixed_t bob;
|
||||
fixed_t bob;
|
||||
|
||||
angle_t viewrollangle;
|
||||
|
||||
|
|
|
|||
|
|
@ -136,8 +136,8 @@ typedef struct
|
|||
#define ML_NONET 4096 // Apply effect only in single player games
|
||||
#define ML_EFFECT6 8192
|
||||
|
||||
// Bounce off walls!
|
||||
#define ML_BOUNCY 16384
|
||||
// Don't bounce off this wall!
|
||||
#define ML_NOTBOUNCY 16384
|
||||
|
||||
#define ML_TFERLINE 32768
|
||||
|
||||
|
|
|
|||
|
|
@ -286,7 +286,7 @@ static void K_SpawnOvertimeParticles(fixed_t x, fixed_t y, fixed_t scale, mobjty
|
|||
boolean flip[MAXPLANESPERSECTOR];
|
||||
UINT8 numflats = 0;
|
||||
mobj_t *mo;
|
||||
subsector_t *ss = R_IsPointInSubsector(x, y);
|
||||
subsector_t *ss = R_PointInSubsectorOrNull(x, y);
|
||||
sector_t *sec;
|
||||
|
||||
if (!ss)
|
||||
|
|
|
|||
|
|
@ -36,6 +36,20 @@
|
|||
|
||||
UINT8 K_ColorRelativeLuminance(UINT8 r, UINT8 g, UINT8 b);
|
||||
|
||||
/*--------------------------------------------------
|
||||
UINT16 K_RainbowColor(tic_t time)
|
||||
|
||||
Gives you a color to use for rainbow effects (like invincibility).
|
||||
|
||||
Input Arguments:-
|
||||
time - Time offset, usually is leveltime.
|
||||
|
||||
Return:-
|
||||
Skincolor value.
|
||||
--------------------------------------------------*/
|
||||
|
||||
UINT16 K_RainbowColor(tic_t time);
|
||||
|
||||
/*--------------------------------------------------
|
||||
void K_RainbowColormap(UINT8 *dest_colormap, UINT8 skincolor);
|
||||
|
||||
|
|
|
|||
42
src/k_hud.c
42
src/k_hud.c
|
|
@ -1576,7 +1576,7 @@ static boolean K_drawKartPositionFaces(void)
|
|||
else
|
||||
Y -= (9*5);
|
||||
|
||||
if (G_BattleGametype() || strank <= 2) // too close to the top, or playing battle, or a spectator? would have had (strank == -1) called out, but already caught by (strank <= 2)
|
||||
if (gametype == GT_BATTLE || strank <= 2) // too close to the top, or playing battle, or a spectator? would have had (strank == -1) called out, but already caught by (strank <= 2)
|
||||
{
|
||||
i = 0;
|
||||
if (ranklines > 5) // could be both...
|
||||
|
|
@ -1616,7 +1616,7 @@ static boolean K_drawKartPositionFaces(void)
|
|||
if (LUA_HudEnabled(hud_battlebumpers))
|
||||
{
|
||||
#endif
|
||||
if (G_BattleGametype() && players[rankplayer[i]].kartstuff[k_bumper] > 0)
|
||||
if (gametype == GT_BATTLE && players[rankplayer[i]].kartstuff[k_bumper] > 0)
|
||||
{
|
||||
V_DrawMappedPatch(bumperx-2, Y, V_HUDTRANS|V_SLIDEIN|V_SNAPTOLEFT, kp_tinybumper[0], colormap);
|
||||
for (j = 1; j < players[rankplayer[i]].kartstuff[k_bumper]; j++)
|
||||
|
|
@ -1633,7 +1633,7 @@ static boolean K_drawKartPositionFaces(void)
|
|||
if (i == strank)
|
||||
V_DrawScaledPatch(FACE_X, Y, V_HUDTRANS|V_SLIDEIN|V_SNAPTOLEFT, kp_facehighlight[(leveltime / 4) % 8]);
|
||||
|
||||
if (G_BattleGametype() && players[rankplayer[i]].kartstuff[k_bumper] <= 0)
|
||||
if (gametype == GT_BATTLE && players[rankplayer[i]].kartstuff[k_bumper] <= 0)
|
||||
V_DrawScaledPatch(FACE_X-4, Y-3, V_HUDTRANS|V_SLIDEIN|V_SNAPTOLEFT, kp_ranknobumpers);
|
||||
else
|
||||
{
|
||||
|
|
@ -1731,7 +1731,7 @@ void K_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, IN
|
|||
colormap = R_GetTranslationColormap(players[tab[i].num].skin, players[tab[i].num].mo->color, GTC_CACHE);
|
||||
|
||||
V_DrawMappedPatch(x, y-4, 0, facerankprefix[players[tab[i].num].skin], colormap);
|
||||
/*if (G_BattleGametype() && players[tab[i].num].kartstuff[k_bumper] > 0) -- not enough space for this
|
||||
/*if (gametype == GT_BATTLE && players[tab[i].num].kartstuff[k_bumper] > 0) -- not enough space for this
|
||||
{
|
||||
INT32 bumperx = x+19;
|
||||
V_DrawMappedPatch(bumperx-2, y-4, 0, kp_tinybumper[0], colormap);
|
||||
|
|
@ -1746,7 +1746,7 @@ void K_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, IN
|
|||
if (tab[i].num == whiteplayer)
|
||||
V_DrawScaledPatch(x, y-4, 0, kp_facehighlight[(leveltime / 4) % 8]);
|
||||
|
||||
if (G_BattleGametype() && players[tab[i].num].kartstuff[k_bumper] <= 0)
|
||||
if (gametype == GT_BATTLE && players[tab[i].num].kartstuff[k_bumper] <= 0)
|
||||
V_DrawScaledPatch(x-4, y-7, 0, kp_ranknobumpers);
|
||||
else
|
||||
{
|
||||
|
|
@ -1757,7 +1757,7 @@ void K_DrawTabRankings(INT32 x, INT32 y, playersort_t *tab, INT32 scorelines, IN
|
|||
V_DrawScaledPatch(x-5, y+6, 0, kp_facenum[pos]);
|
||||
}
|
||||
|
||||
if (G_RaceGametype())
|
||||
if (gametype == GT_RACE)
|
||||
{
|
||||
#define timestring(time) va("%i'%02i\"%02i", G_TicsToMinutes(time, true), G_TicsToSeconds(time), G_TicsToCentiseconds(time))
|
||||
if (scorelines > 8)
|
||||
|
|
@ -1996,7 +1996,7 @@ static void K_drawKartSpeedometer(void)
|
|||
numbers[1] = ((convSpeed / 10) % 10);
|
||||
numbers[2] = (convSpeed % 10);
|
||||
|
||||
if (G_BattleGametype())
|
||||
if (gametype == GT_BATTLE)
|
||||
battleoffset = 8;
|
||||
|
||||
V_DrawScaledPatch(LAPS_X, LAPS_Y-25 + battleoffset, V_HUDTRANS|V_SLIDEIN|splitflags, kp_speedometersticker);
|
||||
|
|
@ -2419,7 +2419,7 @@ static boolean K_ShowPlayerNametag(player_t *p)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (G_RaceGametype())
|
||||
if (gametype == GT_RACE)
|
||||
{
|
||||
if ((p->kartstuff[k_position] < stplyr->kartstuff[k_position]-2)
|
||||
|| (p->kartstuff[k_position] > stplyr->kartstuff[k_position]+2))
|
||||
|
|
@ -2814,7 +2814,7 @@ static void K_drawKartMinimap(void)
|
|||
y -= SHORT(AutomapPic->topoffset);
|
||||
|
||||
// Draw the super item in Battle
|
||||
if (G_BattleGametype() && battleovertime.enabled)
|
||||
if (gametype == GT_BATTLE && battleovertime.enabled)
|
||||
{
|
||||
if (battleovertime.enabled >= 10*TICRATE || (battleovertime.enabled & 1))
|
||||
{
|
||||
|
|
@ -2831,7 +2831,7 @@ static void K_drawKartMinimap(void)
|
|||
for (i = 0; i < 4; i++)
|
||||
localplayers[i] = -1;
|
||||
|
||||
if (G_RaceGametype())
|
||||
if (gametype == GT_RACE)
|
||||
hyu *= 2; // double in race
|
||||
|
||||
// Player's tiny icons on the Automap. (drawn opposite direction so player 1 is drawn last in splitscreen)
|
||||
|
|
@ -2874,7 +2874,7 @@ static void K_drawKartMinimap(void)
|
|||
|
||||
if (i != displayplayers[0] || r_splitscreen)
|
||||
{
|
||||
if (G_BattleGametype() && players[i].kartstuff[k_bumper] <= 0)
|
||||
if (gametype == GT_BATTLE && players[i].kartstuff[k_bumper] <= 0)
|
||||
continue;
|
||||
|
||||
if (players[i].kartstuff[k_hyudorotimer] > 0)
|
||||
|
|
@ -2911,8 +2911,8 @@ static void K_drawKartMinimap(void)
|
|||
|
||||
K_drawKartMinimapIcon(players[i].mo->x, players[i].mo->y, x, y, splitflags, facemmapprefix[skin], colormap, AutomapPic);
|
||||
// Target reticule
|
||||
if ((G_RaceGametype() && players[i].kartstuff[k_position] == spbplace)
|
||||
|| (G_BattleGametype() && K_IsPlayerWanted(&players[i])))
|
||||
if ((gametype == GT_RACE && players[i].kartstuff[k_position] == spbplace)
|
||||
|| (gametype == GT_BATTLE && K_IsPlayerWanted(&players[i])))
|
||||
K_drawKartMinimapIcon(players[i].mo->x, players[i].mo->y, x, y, splitflags, kp_wantedreticle, NULL, AutomapPic);
|
||||
}
|
||||
}
|
||||
|
|
@ -2964,8 +2964,8 @@ static void K_drawKartMinimap(void)
|
|||
K_drawKartMinimapIcon(players[localplayers[i]].mo->x, players[localplayers[i]].mo->y, x, y, splitflags, facemmapprefix[skin], colormap, AutomapPic);
|
||||
|
||||
// Target reticule
|
||||
if ((G_RaceGametype() && players[localplayers[i]].kartstuff[k_position] == spbplace)
|
||||
|| (G_BattleGametype() && K_IsPlayerWanted(&players[localplayers[i]])))
|
||||
if ((gametype == GT_RACE && players[localplayers[i]].kartstuff[k_position] == spbplace)
|
||||
|| (gametype == GT_BATTLE && K_IsPlayerWanted(&players[localplayers[i]])))
|
||||
K_drawKartMinimapIcon(players[localplayers[i]].mo->x, players[localplayers[i]].mo->y, x, y, splitflags, kp_wantedreticle, NULL, AutomapPic);
|
||||
}
|
||||
}
|
||||
|
|
@ -3889,7 +3889,7 @@ void K_drawKartHUD(void)
|
|||
return;
|
||||
}
|
||||
|
||||
battlefullscreen = ((G_BattleGametype())
|
||||
battlefullscreen = ((gametype == GT_BATTLE)
|
||||
&& (stplyr->exiting
|
||||
|| (stplyr->kartstuff[k_bumper] <= 0
|
||||
&& stplyr->kartstuff[k_comebacktimer]
|
||||
|
|
@ -3912,7 +3912,7 @@ void K_drawKartHUD(void)
|
|||
K_drawKartNameTags();
|
||||
|
||||
// Draw WANTED status
|
||||
if (G_BattleGametype())
|
||||
if (gametype == GT_BATTLE)
|
||||
{
|
||||
#ifdef HAVE_BLUA
|
||||
if (LUA_HudEnabled(hud_wanted))
|
||||
|
|
@ -3996,7 +3996,7 @@ void K_drawKartHUD(void)
|
|||
V_DrawTinyScaledPatch(x-54, y, 0, W_CachePatchName("TTKBANNR", PU_CACHE));
|
||||
V_DrawTinyScaledPatch(x-54, y+25, 0, W_CachePatchName("TTKART", PU_CACHE));
|
||||
}
|
||||
else if (G_RaceGametype()) // Race-only elements
|
||||
else if (gametype == GT_RACE) // Race-only elements
|
||||
{
|
||||
// Draw the lap counter
|
||||
#ifdef HAVE_BLUA
|
||||
|
|
@ -4023,7 +4023,7 @@ void K_drawKartHUD(void)
|
|||
K_drawInput();
|
||||
}
|
||||
}
|
||||
else if (G_BattleGametype()) // Battle-only
|
||||
else if (gametype == GT_BATTLE) // Battle-only
|
||||
{
|
||||
// Draw the hits left!
|
||||
#ifdef HAVE_BLUA
|
||||
|
|
@ -4053,7 +4053,7 @@ void K_drawKartHUD(void)
|
|||
}
|
||||
|
||||
// Race overlays
|
||||
if (G_RaceGametype() && !freecam)
|
||||
if (gametype == GT_RACE && !freecam)
|
||||
{
|
||||
if (stplyr->exiting)
|
||||
K_drawKartFinish();
|
||||
|
|
@ -4064,7 +4064,7 @@ void K_drawKartHUD(void)
|
|||
if (modeattacking || freecam) // everything after here is MP and debug only
|
||||
return;
|
||||
|
||||
if (G_BattleGametype() && !r_splitscreen && (stplyr->karthud[khud_yougotem] % 2)) // * YOU GOT EM *
|
||||
if (gametype == GT_BATTLE && !r_splitscreen && (stplyr->karthud[khud_yougotem] % 2)) // * YOU GOT EM *
|
||||
V_DrawScaledPatch(BASEVIDWIDTH/2 - (SHORT(kp_yougotem->width)/2), 32, V_HUDTRANS, kp_yougotem);
|
||||
|
||||
// Draw FREE PLAY.
|
||||
|
|
|
|||
23
src/k_kart.c
23
src/k_kart.c
|
|
@ -1043,9 +1043,6 @@ fixed_t K_GetMobjWeight(mobj_t *mobj, mobj_t *against)
|
|||
// This kind of wipeout happens with no rings -- doesn't remove a bumper, has no invulnerability, and is much shorter.
|
||||
static void K_DebtStingPlayer(player_t *player, INT32 length)
|
||||
{
|
||||
if (player->health <= 0)
|
||||
return;
|
||||
|
||||
if (player->powers[pw_flashing] > 0 || player->kartstuff[k_squishedtimer] > 0 || player->kartstuff[k_spinouttimer] > 0
|
||||
|| player->kartstuff[k_invincibilitytimer] > 0 || player->kartstuff[k_growshrinktimer] > 0 || player->kartstuff[k_hyudorotimer] > 0
|
||||
|| ((gametyperules & GTR_BUMPERS) && ((player->kartstuff[k_bumper] <= 0 && player->kartstuff[k_comebacktimer]) || player->kartstuff[k_comebackmode] == 1)))
|
||||
|
|
@ -2271,7 +2268,7 @@ UINT16 K_GetKartFlashing(player_t *player)
|
|||
|
||||
tics += (tics/8) * (player->kartspeed);
|
||||
|
||||
if (G_BattleGametype())
|
||||
if (gametype == GT_BATTLE)
|
||||
tics *= 2;
|
||||
|
||||
return tics;
|
||||
|
|
@ -2393,9 +2390,6 @@ void K_SpinPlayer(player_t *player, mobj_t *source, INT32 type, mobj_t *inflicto
|
|||
scoremultiply = 2;
|
||||
}
|
||||
|
||||
if (player->health <= 0)
|
||||
return;
|
||||
|
||||
if (player->powers[pw_flashing] > 0 || player->kartstuff[k_squishedtimer] > 0 || (player->kartstuff[k_spinouttimer] > 0 && player->kartstuff[k_spinouttype] != 2)
|
||||
|| player->kartstuff[k_invincibilitytimer] > 0 || player->kartstuff[k_growshrinktimer] > 0 || player->kartstuff[k_hyudorotimer] > 0
|
||||
|| ((gametyperules & GTR_BUMPERS) && ((player->kartstuff[k_bumper] <= 0 && player->kartstuff[k_comebacktimer]) || player->kartstuff[k_comebackmode] == 1)))
|
||||
|
|
@ -2537,9 +2531,6 @@ void K_SquishPlayer(player_t *player, mobj_t *source, mobj_t *inflictor)
|
|||
scoremultiply = 2;
|
||||
}
|
||||
|
||||
if (player->health <= 0)
|
||||
return;
|
||||
|
||||
if (player->powers[pw_flashing] > 0 || player->kartstuff[k_squishedtimer] > 0 || player->kartstuff[k_invincibilitytimer] > 0
|
||||
|| player->kartstuff[k_growshrinktimer] > 0 || player->kartstuff[k_hyudorotimer] > 0
|
||||
|| ((gametyperules & GTR_BUMPERS) && ((player->kartstuff[k_bumper] <= 0 && player->kartstuff[k_comebacktimer]) || player->kartstuff[k_comebackmode] == 1)))
|
||||
|
|
@ -2652,9 +2643,6 @@ void K_ExplodePlayer(player_t *player, mobj_t *source, mobj_t *inflictor) // A b
|
|||
scoremultiply = 2;
|
||||
}
|
||||
|
||||
if (player->health <= 0)
|
||||
return;
|
||||
|
||||
if (player->kartstuff[k_invincibilitytimer] > 0 || player->kartstuff[k_growshrinktimer] > 0 || player->kartstuff[k_hyudorotimer] > 0 // Do not check spinout, because SPB and Eggman should combo
|
||||
|| ((gametyperules & GTR_BUMPERS) && ((player->kartstuff[k_bumper] <= 0 && player->kartstuff[k_comebacktimer]) || player->kartstuff[k_comebackmode] == 1)))
|
||||
{
|
||||
|
|
@ -2763,9 +2751,6 @@ void K_StealBumper(player_t *player, player_t *victim, boolean force)
|
|||
if (!(gametyperules & GTR_BUMPERS))
|
||||
return;
|
||||
|
||||
if (player->health <= 0 || victim->health <= 0)
|
||||
return;
|
||||
|
||||
if (!force)
|
||||
{
|
||||
if (victim->kartstuff[k_bumper] <= 0) // || player->kartstuff[k_bumper] >= K_StartingBumperCount()+2
|
||||
|
|
@ -4895,8 +4880,10 @@ static void K_MoveHeldObjects(player_t *player)
|
|||
cur->momx = FixedMul(FINECOSINE(cur->angle>>ANGLETOFINESHIFT), cur->extravalue1);
|
||||
cur->momy = FixedMul(FINESINE(cur->angle>>ANGLETOFINESHIFT), cur->extravalue1);
|
||||
cur->flags &= ~MF_NOCLIPTHING;
|
||||
|
||||
if (!P_TryMove(cur, player->mo->x + cur->momx, player->mo->y + cur->momy, true))
|
||||
P_SlideMove(cur, true);
|
||||
P_SlideMove(cur);
|
||||
|
||||
if (P_IsObjectOnGround(player->mo))
|
||||
{
|
||||
if (P_MobjFlip(cur) > 0)
|
||||
|
|
@ -5361,7 +5348,7 @@ void K_KartPlayerHUDUpdate(player_t *player)
|
|||
else if (player->karthud[khud_fault] > 0 && player->karthud[khud_fault] < 2*TICRATE)
|
||||
player->karthud[khud_fault]++;
|
||||
|
||||
if (G_RaceGametype())
|
||||
if (gametype == GT_RACE)
|
||||
{
|
||||
// 0 is the fast spin animation, set at 30 tics of ring boost or higher!
|
||||
if (player->kartstuff[k_ringboost] >= 30)
|
||||
|
|
|
|||
|
|
@ -35,11 +35,11 @@ SINT8 K_UsingPowerLevels(void)
|
|||
return PWRLV_DISABLED;
|
||||
}
|
||||
|
||||
if (G_RaceGametype())
|
||||
if (gametype == GT_RACE)
|
||||
{
|
||||
pt = PWRLV_RACE;
|
||||
}
|
||||
else if (G_BattleGametype())
|
||||
else if (gametype == GT_BATTLE)
|
||||
{
|
||||
pt = PWRLV_BATTLE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1541,12 +1541,11 @@ static int lib_pTeleportMove(lua_State *L)
|
|||
static int lib_pSlideMove(lua_State *L)
|
||||
{
|
||||
mobj_t *mo = *((mobj_t **)luaL_checkudata(L, 1, META_MOBJ));
|
||||
boolean forceslide = luaL_checkboolean(L, 2);
|
||||
NOHUD
|
||||
INLEVEL
|
||||
if (!mo)
|
||||
return LUA_ErrInvalid(L, "mobj_t");
|
||||
P_SlideMove(mo, forceslide);
|
||||
P_SlideMove(mo);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -197,10 +197,6 @@ static int player_get(lua_State *L)
|
|||
LUA_PushUserdata(L, &plr->cmd, META_TICCMD);
|
||||
else if (fastcmp(field,"playerstate"))
|
||||
lua_pushinteger(L, plr->playerstate);
|
||||
else if (fastcmp(field,"camerascale"))
|
||||
lua_pushfixed(L, plr->camerascale);
|
||||
else if (fastcmp(field,"shieldscale"))
|
||||
lua_pushfixed(L, plr->shieldscale);
|
||||
else if (fastcmp(field,"viewz"))
|
||||
lua_pushfixed(L, plr->viewz);
|
||||
else if (fastcmp(field,"viewheight"))
|
||||
|
|
@ -464,10 +460,6 @@ static int player_set(lua_State *L)
|
|||
return NOSET;
|
||||
else if (fastcmp(field,"playerstate"))
|
||||
plr->playerstate = luaL_checkinteger(L, 3);
|
||||
else if (fastcmp(field,"camerascale"))
|
||||
plr->camerascale = luaL_checkfixed(L, 3);
|
||||
else if (fastcmp(field,"shieldscale"))
|
||||
plr->shieldscale = luaL_checkfixed(L, 3);
|
||||
else if (fastcmp(field,"viewz"))
|
||||
plr->viewz = luaL_checkfixed(L, 3);
|
||||
else if (fastcmp(field,"viewheight"))
|
||||
|
|
|
|||
|
|
@ -1062,8 +1062,8 @@ void OP_ObjectplaceMovement(player_t *player)
|
|||
player->mo->eflags &= ~MFE_VERTICALFLIP;
|
||||
|
||||
// make sure viewz follows player if in 1st person mode
|
||||
//player->deltaviewheight = 0;
|
||||
player->viewheight = FixedMul(32 << FRACBITS, player->mo->scale);
|
||||
player->deltaviewheight = 0;
|
||||
player->viewheight = P_GetPlayerViewHeight(player);
|
||||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||
player->viewz = player->mo->z + player->mo->height - player->viewheight;
|
||||
else
|
||||
|
|
|
|||
|
|
@ -293,7 +293,7 @@ boolean P_MobjWasRemoved(mobj_t *th);
|
|||
void P_RemoveSavegameMobj(mobj_t *th);
|
||||
boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state);
|
||||
boolean P_SetMobjState(mobj_t *mobj, statenum_t state);
|
||||
//void P_RunShields(void);
|
||||
void P_RunShields(void);
|
||||
void P_RunOverlays(void);
|
||||
void P_HandleMinecartSegments(mobj_t *mobj);
|
||||
void P_MobjThinker(mobj_t *mobj);
|
||||
|
|
@ -417,7 +417,7 @@ boolean P_CheckCameraPosition(fixed_t x, fixed_t y, camera_t *thiscam);
|
|||
boolean P_TryMove(mobj_t *thing, fixed_t x, fixed_t y, boolean allowdropoff);
|
||||
boolean P_Move(mobj_t *actor, fixed_t speed);
|
||||
boolean P_TeleportMove(mobj_t *thing, fixed_t x, fixed_t y, fixed_t z);
|
||||
void P_SlideMove(mobj_t *mo, boolean forceslide);
|
||||
void P_SlideMove(mobj_t *mo);
|
||||
void P_BouncePlayerMove(mobj_t *mo);
|
||||
void P_BounceMove(mobj_t *mo);
|
||||
boolean P_CheckSight(mobj_t *t1, mobj_t *t2);
|
||||
|
|
|
|||
21
src/p_map.c
21
src/p_map.c
|
|
@ -3357,7 +3357,7 @@ static void P_CheckLavaWall(mobj_t *mo, sector_t *sec)
|
|||
//
|
||||
// This is a kludgy mess.
|
||||
//
|
||||
void P_SlideMove(mobj_t *mo, boolean forceslide)
|
||||
void P_SlideMove(mobj_t *mo)
|
||||
{
|
||||
fixed_t leadx, leady, trailx, traily, newx, newy;
|
||||
INT16 hitcount = 0;
|
||||
|
|
@ -3541,13 +3541,6 @@ retry:
|
|||
P_CheckLavaWall(mo, sec);
|
||||
}
|
||||
|
||||
// Some walls are bouncy even if you're not
|
||||
if (!forceslide && bestslideline && !(bestslideline->flags & ML_BOUNCY)) // SRB2kart - All walls are bouncy unless specified otherwise
|
||||
{
|
||||
P_BounceMove(mo);
|
||||
return;
|
||||
}
|
||||
|
||||
papercollision:
|
||||
// move up to the wall
|
||||
if (bestslidefrac == FRACUNIT+1)
|
||||
|
|
@ -3637,7 +3630,7 @@ void P_BouncePlayerMove(mobj_t *mo)
|
|||
|
||||
if (mo->player->spectator)
|
||||
{
|
||||
P_SlideMove(mo, true);
|
||||
P_SlideMove(mo);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -3743,7 +3736,7 @@ void P_BounceMove(mobj_t *mo)
|
|||
|
||||
if (mo->eflags & MFE_JUSTBOUNCEDWALL)
|
||||
{
|
||||
P_SlideMove(mo, true);
|
||||
P_SlideMove(mo);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -3844,6 +3837,14 @@ bounceback:
|
|||
tmymove = FixedMul(mmomy, (FRACUNIT - (FRACUNIT>>2) - (FRACUNIT>>3)));
|
||||
}
|
||||
|
||||
// Some walls aren't bouncy even if you are
|
||||
if (bestslideline && (bestslideline->flags & ML_NOTBOUNCY))
|
||||
{
|
||||
// SRB2Kart: Non-bouncy line!
|
||||
P_SlideMove(mo);
|
||||
return;
|
||||
}
|
||||
|
||||
P_HitBounceLine(bestslideline); // clip the moves
|
||||
|
||||
mo->momx = tmxmove;
|
||||
|
|
|
|||
2433
src/p_mobj.c
2433
src/p_mobj.c
File diff suppressed because it is too large
Load diff
|
|
@ -1619,8 +1619,8 @@ static void ParseTextmapLinedefParameter(UINT32 i, char *param, char *val)
|
|||
lines[i].flags |= ML_NONET;
|
||||
else if (fastcmp(param, "netonly") && fastcmp("true", val))
|
||||
lines[i].flags |= ML_NETONLY;
|
||||
else if (fastcmp(param, "bouncy") && fastcmp("true", val))
|
||||
lines[i].flags |= ML_BOUNCY;
|
||||
else if (fastcmp(param, "notbouncy") && fastcmp("true", val))
|
||||
lines[i].flags |= ML_NOTBOUNCY;
|
||||
else if (fastcmp(param, "transfer") && fastcmp("true", val))
|
||||
lines[i].flags |= ML_TFERLINE;
|
||||
}
|
||||
|
|
@ -3019,7 +3019,7 @@ static void P_ConvertBinaryMap(void)
|
|||
lines[i].args[3] |= TMCF_SUBLIGHTG|TMCF_SUBFADEG;
|
||||
if (lines[i].flags & ML_EFFECT2)
|
||||
lines[i].args[3] |= TMCF_SUBLIGHTB|TMCF_SUBFADEB;
|
||||
if (lines[i].flags & ML_BOUNCY)
|
||||
if (lines[i].flags & ML_NOTBOUNCY)
|
||||
lines[i].args[3] |= TMCF_FROMBLACK;
|
||||
if (lines[i].flags & ML_EFFECT5)
|
||||
lines[i].args[3] |= TMCF_OVERRIDE;
|
||||
|
|
@ -3428,7 +3428,7 @@ static void P_InitLevelSettings(void)
|
|||
// SRB2Kart: map load variables
|
||||
if (grandprixinfo.gp == true)
|
||||
{
|
||||
if (G_BattleGametype())
|
||||
if (gametype == GT_BATTLE)
|
||||
{
|
||||
gamespeed = KARTSPEED_EASY;
|
||||
}
|
||||
|
|
|
|||
16
src/p_spec.c
16
src/p_spec.c
|
|
@ -1262,7 +1262,7 @@ static boolean PolyFade(line_t *line)
|
|||
if (po->translucency == pfd.destvalue)
|
||||
return 1;
|
||||
|
||||
pfd.docollision = !(line->flags & ML_BOUNCY); // do not handle collision flags
|
||||
pfd.docollision = !(line->flags & ML_NOTBOUNCY); // do not handle collision flags
|
||||
pfd.doghostfade = (line->flags & ML_EFFECT1); // do ghost fade (no collision flags during fade)
|
||||
pfd.ticbased = (line->flags & ML_EFFECT4); // Speed = Tic Duration
|
||||
|
||||
|
|
@ -1497,8 +1497,8 @@ void P_RunNightsCapsuleTouchExecutors(mobj_t *actor, boolean entering, boolean e
|
|||
&& ((entering && (lines[i].flags & ML_TFERLINE))
|
||||
|| (!entering && !(lines[i].flags & ML_TFERLINE)))
|
||||
&& ((lines[i].flags & ML_DONTPEGTOP)
|
||||
|| (enoughspheres && !(lines[i].flags & ML_BOUNCY))
|
||||
|| (!enoughspheres && (lines[i].flags & ML_BOUNCY))))
|
||||
|| (enoughspheres && !(lines[i].flags & ML_NOTBOUNCY))
|
||||
|| (!enoughspheres && (lines[i].flags & ML_NOTBOUNCY))))
|
||||
P_RunTriggerLinedef(&lines[i], actor, NULL);
|
||||
}
|
||||
}
|
||||
|
|
@ -2521,7 +2521,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
|||
mapmusflags = tracknum & MUSIC_TRACKMASK;
|
||||
if (!(line->flags & ML_BLOCKPLAYERS))
|
||||
mapmusflags |= MUSIC_RELOADRESET;
|
||||
if (line->flags & ML_BOUNCY)
|
||||
if (line->flags & ML_NOTBOUNCY)
|
||||
mapmusflags |= MUSIC_FORCERESET;
|
||||
|
||||
mapmusposition = position;
|
||||
|
|
@ -2932,7 +2932,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
|||
mo->player->rmomx = mo->player->rmomy = 1;
|
||||
mo->player->cmomx = mo->player->cmomy = 0;
|
||||
P_ResetPlayer(mo->player);
|
||||
P_SetPlayerMobjState(mo, S_KART_STILL1);
|
||||
P_SetPlayerMobjState(mo, S_KART_STILL);
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
@ -3553,7 +3553,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
|||
!(line->flags & ML_NOCLIMB), // do not handle FF_TRANSLUCENT
|
||||
!(line->flags & ML_EFFECT2), // do not handle lighting
|
||||
!(line->flags & ML_EFFECT2), // do not handle colormap (ran out of flags)
|
||||
!(line->flags & ML_BOUNCY), // do not handle collision
|
||||
!(line->flags & ML_NOTBOUNCY), // do not handle collision
|
||||
(line->flags & ML_EFFECT1), // do ghost fade (no collision during fade)
|
||||
(line->flags & ML_TFERLINE)); // use exact alpha values (for opengl)
|
||||
else
|
||||
|
|
@ -3578,7 +3578,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
|||
!(line->flags & ML_NOCLIMB), // do not handle FF_TRANSLUCENT
|
||||
!(line->flags & ML_EFFECT2), // do not handle lighting
|
||||
!(line->flags & ML_EFFECT2), // do not handle colormap (ran out of flags)
|
||||
!(line->flags & ML_BOUNCY), // do not handle collision
|
||||
!(line->flags & ML_NOTBOUNCY), // do not handle collision
|
||||
(line->flags & ML_EFFECT1), // do ghost fade (no collision during fade)
|
||||
(line->flags & ML_TFERLINE)); // use exact alpha values (for opengl)
|
||||
}
|
||||
|
|
@ -5872,7 +5872,7 @@ static void P_AddEachTimeThinker(line_t *sourceline)
|
|||
eachtime->thinker.function.acp1 = (actionf_p1)T_EachTimeThinker;
|
||||
|
||||
eachtime->sourceline = sourceline;
|
||||
eachtime->triggerOnExit = !!(sourceline->flags & ML_BOUNCY);
|
||||
eachtime->triggerOnExit = !!(sourceline->flags & ML_NOTBOUNCY);
|
||||
}
|
||||
|
||||
/** Adds a camera scanner.
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ void P_MixUp(mobj_t *thing, fixed_t x, fixed_t y, fixed_t z, angle_t angle,
|
|||
P_ResetStarposts();
|
||||
|
||||
P_ResetPlayer(thing->player);
|
||||
P_SetPlayerMobjState(thing, S_KART_STILL1); // SRB2kart - was S_PLAY_STND
|
||||
P_SetPlayerMobjState(thing, S_KART_STILL); // SRB2kart - was S_PLAY_STND
|
||||
|
||||
P_FlashPal(thing->player, PAL_MIXUP, 10);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -588,7 +588,7 @@ void P_Ticker(boolean run)
|
|||
}
|
||||
|
||||
// Run shield positioning
|
||||
//P_RunShields();
|
||||
P_RunShields();
|
||||
P_RunOverlays();
|
||||
|
||||
P_UpdateSpecials();
|
||||
|
|
@ -769,7 +769,7 @@ void P_PreTicker(INT32 frames)
|
|||
LUAh_ThinkFrame();
|
||||
|
||||
// Run shield positioning
|
||||
//P_RunShields();
|
||||
P_RunShields();
|
||||
P_RunOverlays();
|
||||
|
||||
P_UpdateSpecials();
|
||||
|
|
|
|||
|
|
@ -1672,7 +1672,7 @@ static void P_CheckBouncySectors(player_t *player)
|
|||
goto bouncydone;
|
||||
}
|
||||
|
||||
if (!(rover->master->flags & ML_BOUNCY))
|
||||
if (!(rover->master->flags & ML_NOTBOUNCY))
|
||||
{
|
||||
if (newmom > 0)
|
||||
{
|
||||
|
|
@ -1870,11 +1870,8 @@ static void P_3dMovement(player_t *player)
|
|||
{
|
||||
ticcmd_t *cmd;
|
||||
angle_t movepushangle; // Analog
|
||||
//INT32 topspeed, acceleration, thrustfactor;
|
||||
fixed_t movepushforward = 0;
|
||||
angle_t dangle; // replaces old quadrants bits
|
||||
//boolean dangleflip = false; // SRB2kart - toaster
|
||||
//fixed_t normalspd = FixedMul(player->normalspeed, player->mo->scale);
|
||||
fixed_t oldMagnitude, newMagnitude;
|
||||
#ifdef ESLOPE
|
||||
vector3_t totalthrust;
|
||||
|
|
@ -4433,8 +4430,8 @@ void P_PlayerThink(player_t *player)
|
|||
if (player->spectator)
|
||||
{
|
||||
//player->score = 0;
|
||||
player->rings = 0;
|
||||
player->mo->health = 1;
|
||||
player->health = 1;
|
||||
}
|
||||
|
||||
// SRB2kart 010217
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue