Tweeeeeaks

- MT_FALLINGROCK bumps you instead of spinning you out! RIP annoying af apples
- Made some Battle-related messages only happen in netgames
- Messed with the timing on the intro
This commit is contained in:
TehRealSalt 2017-12-28 18:37:25 -05:00
parent 6d263a0dff
commit c70a2f51aa
9 changed files with 62 additions and 30 deletions

View File

@ -412,6 +412,7 @@ extern INT32 boostealtime;
extern INT32 mushroomtime;
extern INT32 itemtime;
extern INT32 comebacktime;
extern INT32 bumptime;
extern UINT8 introtoplay;
extern UINT8 creditscutscene;

View File

@ -254,7 +254,7 @@ const char *introtext[NUMINTROSCENES];
static tic_t introscenetime[NUMINTROSCENES] =
{
8*TICRATE, // KART KR(eW
4*TICRATE, // KART KR(eW
};
// custom intros

View File

@ -53,8 +53,8 @@ UINT8 wipedefs[NUMWIPEDEFS] = {
99, // wipe_credits_toblack
0, // wipe_evaluation_toblack
0, // wipe_gameend_toblack
99, // wipe_intro_toblack (hardcoded)
99, // wipe_cutscene_toblack (hardcoded)
UINT8_MAX, // wipe_intro_toblack (hardcoded)
UINT8_MAX, // wipe_cutscene_toblack (hardcoded)
0, // wipe_specinter_toblack
0, // wipe_multinter_toblack

View File

@ -210,6 +210,7 @@ INT32 boostealtime = TICRATE/2;
INT32 mushroomtime = TICRATE + (TICRATE/3);
INT32 itemtime = 8*TICRATE;
INT32 comebacktime = 10*TICRATE;
INT32 bumptime = 6;
INT32 gameovertics = 15*TICRATE;

View File

@ -13264,13 +13264,13 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL, // xdeathstate
sfx_None, // deathsound
0, // speed
8*FRACUNIT, // radius
16*FRACUNIT, // height
16*FRACUNIT, // radius
32*FRACUNIT, // height
0, // display offset
4, // mass
0, // damage
sfx_rocks1, // activesound
MF_PAIN|MF_BOUNCE, // flags
MF_BOUNCE, // flags
S_NULL // raisestate
},

View File

@ -1147,6 +1147,17 @@ void K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce)
|| (mobj2->player && mobj2->player->playerstate != PST_LIVE))
return;
// Don't bump if you've recently bumped
if ((mobj1->player && mobj1->player->kartstuff[k_justbumped])
|| (mobj2->player && mobj1->player->kartstuff[k_justbumped]))
{
if (mobj1->player)
mobj1->player->kartstuff[k_justbumped] = bumptime;
if (mobj2->player)
mobj2->player->kartstuff[k_justbumped] = bumptime;
return;
}
if (cv_collidesounds.value == 1)
{
S_StartSound(mobj1, cv_collidesoundnum.value);
@ -1214,16 +1225,19 @@ void K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce)
// Because this is done during collision now, rmomx and rmomy need to be recalculated
// so that friction doesn't immediately decide to stop the player if they're at a standstill
// Also set justbumped here
if (mobj1->player)
{
mobj1->player->rmomx = mobj1->momx - mobj1->player->cmomx;
mobj1->player->rmomy = mobj1->momy - mobj1->player->cmomy;
mobj1->player->kartstuff[k_justbumped] = bumptime;
}
if (mobj2->player)
{
mobj2->player->rmomx = mobj2->momx - mobj2->player->cmomx;
mobj2->player->rmomy = mobj2->momy - mobj2->player->cmomy;
mobj2->player->kartstuff[k_justbumped] = bumptime;
}
}
@ -1924,7 +1938,8 @@ void K_ExplodePlayer(player_t *player, mobj_t *source) // A bit of a hack, we ju
if (source->player->kartstuff[k_balloon] <= 0)
{
source->player->kartstuff[k_comebackpoints] += 2;
CONS_Printf(M_GetText("%s bombed %s!\n"), player_names[source->player-players], player_names[player-players]);
if (netgame)
CONS_Printf(M_GetText("%s bombed %s!\n"), player_names[source->player-players], player_names[player-players]);
if (source->player->kartstuff[k_comebackpoints] >= 3)
K_StealBalloon(source->player, player, true);
}
@ -1993,10 +2008,13 @@ void K_StealBalloon(player_t *player, player_t *victim, boolean force)
return;
}
if (player->kartstuff[k_balloon] <= 0)
CONS_Printf(M_GetText("%s is back in the game!\n"), player_names[player-players]);
else
CONS_Printf(M_GetText("%s stole a balloon from %s!\n"), player_names[player-players], player_names[victim-players]);
if (netgame)
{
if (player->kartstuff[k_balloon] <= 0)
CONS_Printf(M_GetText("%s is back in the game!\n"), player_names[player-players]);
else
CONS_Printf(M_GetText("%s stole a balloon from %s!\n"), player_names[player-players], player_names[victim-players]);
}
newballoon = player->kartstuff[k_balloon];
if (newballoon <= 1)
@ -3710,10 +3728,14 @@ void K_CheckBalloons(void)
UINT8 numingame = 0;
INT8 winnernum = -1;
#if 0
return; // set to 1 to test comeback mechanics while alone
#endif
if (!multiplayer)
return;
if (gametype == GT_RACE)
if (gametype != GT_MATCH)
return;
if (gameaction == ga_completed)
@ -4812,20 +4834,15 @@ static void K_drawKartBalloonsOrKarma(void)
if (stplyr->kartstuff[k_balloon] <= 0)
{
V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_karmasticker, colormap);
V_DrawKartString(LAPS_X+57, LAPS_Y+3, V_HUDTRANS|splitflags, va("%d/3", stplyr->kartstuff[k_comebackpoints]));
V_DrawKartString(LAPS_X+59, LAPS_Y+3, V_HUDTRANS|splitflags, va("%d/3", stplyr->kartstuff[k_comebackpoints]));
}
else
{
if (stplyr->kartstuff[k_balloon] > 9 || cv_kartballoons.value > 9)
{
if (stplyr->kartstuff[k_balloon] > 9 && cv_kartballoons.value > 9)
V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_balloonstickerwide, colormap);
V_DrawKartString(LAPS_X+45, LAPS_Y+3, V_HUDTRANS|splitflags, va("%d/%2d", stplyr->kartstuff[k_balloon], cv_kartballoons.value));
}
else
{
V_DrawMappedPatch(LAPS_X, LAPS_Y, V_HUDTRANS|splitflags, kp_balloonsticker, colormap);
V_DrawKartString(LAPS_X+45, LAPS_Y+3, V_HUDTRANS|splitflags, va("%d/%d", stplyr->kartstuff[k_balloon], cv_kartballoons.value));
}
V_DrawKartString(LAPS_X+47, LAPS_Y+3, V_HUDTRANS|splitflags, va("%d/%d", stplyr->kartstuff[k_balloon], cv_kartballoons.value));
}
}
}
@ -5064,8 +5081,6 @@ static void K_drawBattleFullscreen(void)
if (splitscreen)
{
scale /= 2;
if ((splitscreen == 1 && stplyr == &players[secondarydisplayplayer])
|| (splitscreen > 1 && (stplyr == &players[thirddisplayplayer] || stplyr == &players[fourthdisplayplayer])))
y = 232-(stplyr->kartstuff[k_cardanimation]/2);
@ -5074,6 +5089,8 @@ static void K_drawBattleFullscreen(void)
if (splitscreen > 1)
{
scale /= 2;
if (stplyr == &players[secondarydisplayplayer] || stplyr == &players[fourthdisplayplayer])
x = 3*BASEVIDWIDTH/4;
else
@ -5307,10 +5324,6 @@ void K_drawKartHUD(void)
// Draw the timestamp
K_drawKartTimestamp();
// Draw the speedometer
// TODO: Make a better speedometer.
K_drawKartSpeedometer();
if (!modeattacking)
{
// The little triple-item icons at the bottom
@ -5324,6 +5337,13 @@ void K_drawKartHUD(void)
// Draw the lap counter
K_drawKartLaps();
if (!splitscreen)
{
// Draw the speedometer
// TODO: Make a better speedometer.
K_drawKartSpeedometer();
}
if (!modeattacking)
{
// Draw the numerical position

View File

@ -438,7 +438,9 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
special->tracer->player->kartstuff[k_comebackmode] = 0;
special->tracer->player->kartstuff[k_comebackpoints]++;
CONS_Printf(M_GetText("%s gave an item to %s.\n"), player_names[special->tracer->player-players], player_names[player-players]);
if (netgame)
CONS_Printf(M_GetText("%s gave an item to %s.\n"), player_names[special->tracer->player-players], player_names[player-players]);
if (special->tracer->player->kartstuff[k_comebackpoints] >= 3)
K_StealBalloon(special->tracer->player, player, true);

View File

@ -1204,7 +1204,6 @@ static boolean PIT_CheckThing(mobj_t *thing)
return true;
}
if (thing->type == MT_POKEY)
{
// see if it went over / under
@ -1226,6 +1225,16 @@ static boolean PIT_CheckThing(mobj_t *thing)
//}
if (thing->type == MT_FALLINGROCK || tmthing->type == MT_FALLINGROCK)
{
// see if it went over / under
if (tmthing->z > thing->z + thing->height)
return true; // overhead
if (tmthing->z + tmthing->height < thing->z)
return true; // underneath
K_KartBouncing(thing, tmthing, false);
}
if ((thing->type == MT_SPRINGSHELL || thing->type == MT_YELLOWSHELL) && thing->health > 0
&& (tmthing->player || (tmthing->flags & MF_PUSHABLE)) && tmthing->health > 0)
{
@ -1703,8 +1712,6 @@ static boolean PIT_CheckThing(mobj_t *thing)
}
}
thing->player->kartstuff[k_justbumped] = 6;
tmthing->player->kartstuff[k_justbumped] = 6;
return true;
}
// Are you touching the side of the object you're interacting with?

View File

@ -8671,6 +8671,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
{
case MT_PLAYER:
case MT_BIGMACE: case MT_SMALLMACE:
case MT_FALLINGROCK:
//case MT_RANDOMITEM:
case MT_BANANAITEM: case MT_BANANASHIELD:
case MT_TRIPLEBANANASHIELD1: case MT_TRIPLEBANANASHIELD2: case MT_TRIPLEBANANASHIELD3: