mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-03-22 02:41:56 +00:00
Fix this garbage
This commit is contained in:
commit
9bea44e5c1
10 changed files with 56 additions and 57 deletions
|
@ -163,7 +163,7 @@ typedef struct
|
|||
UINT16 powers[NUMPOWERS];
|
||||
|
||||
INT32 kartstuff[NUMKARTSTUFF]; // SRB2kart
|
||||
UINT8 collide[MAXPLAYERS]; // SRB2kart
|
||||
angle_t frameangle; // SRB2kart
|
||||
|
||||
// Score is resynched in the confirm resync packet
|
||||
INT32 health;
|
||||
|
|
|
@ -317,7 +317,7 @@ consvar_t cv_lightning = {"lightning", "On", CV_NETVAR|CV_CHEAT, CV_OnOff,
|
|||
consvar_t cv_karthud = {"karthud", "Default", CV_SAVE|CV_CALL, karthud_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
consvar_t cv_kartcheck = {"kartcheck", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
consvar_t cv_kartcc = {"kartcc", "100cc", CV_NETVAR, kartcc_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
static CV_PossibleValue_t kartballoons_cons_t[] = {{1, "MIN"}, {99, "MAX"}, {0, NULL}};
|
||||
static CV_PossibleValue_t kartballoons_cons_t[] = {{1, "MIN"}, {12, "MAX"}, {0, NULL}};
|
||||
consvar_t cv_kartballoons = {"kartballoons", "3", CV_NETVAR, kartballoons_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
consvar_t cv_kartfrantic = {"kartfrantic", "Off", CV_NETVAR|CV_CHEAT, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
static CV_PossibleValue_t speedometer_cons_t[] = {{0, "Off"}, {1, "Kilometers"}, {2, "Miles"}, {3, "Fracunits"}, {0, NULL}};
|
||||
|
|
|
@ -370,7 +370,6 @@ typedef struct player_s
|
|||
|
||||
// SRB2kart stuff
|
||||
INT32 kartstuff[NUMKARTSTUFF];
|
||||
|
||||
angle_t frameangle; // for the player add the ability to have the sprite only face other angles
|
||||
|
||||
// Bit flags.
|
||||
|
|
|
@ -205,7 +205,7 @@ INT32 bootime = 7*TICRATE;
|
|||
INT32 boostealtime = TICRATE/2;
|
||||
INT32 mushroomtime = TICRATE + (TICRATE/3);
|
||||
INT32 itemtime = 8*TICRATE;
|
||||
INT32 comebacktime = 5*TICRATE;
|
||||
INT32 comebacktime = 15*TICRATE;
|
||||
|
||||
INT32 gameovertics = 15*TICRATE;
|
||||
|
||||
|
|
65
src/k_kart.c
65
src/k_kart.c
|
@ -1092,6 +1092,17 @@ void K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce)
|
|||
|
||||
momdifx = mobj1->momx - mobj2->momx;
|
||||
momdify = mobj1->momy - mobj2->momy;
|
||||
|
||||
// if the speed difference is less than this let's assume they're going proportionately faster from each other
|
||||
if (P_AproxDistance(momdifx, momdify) < 25*FRACUNIT/2)
|
||||
{
|
||||
fixed_t momdiflength = P_AproxDistance(momdifx, momdify);
|
||||
fixed_t normalisedx = FixedDiv(momdifx, momdiflength);
|
||||
fixed_t normalisedy = FixedDiv(momdify, momdiflength);
|
||||
momdifx = FixedMul(25*FRACUNIT/2, normalisedx);
|
||||
momdify = FixedMul(25*FRACUNIT/2, normalisedy);
|
||||
}
|
||||
|
||||
distx = mobj1->x - mobj2->x;
|
||||
disty = mobj1->y - mobj2->y;
|
||||
dot = FixedMul(momdifx, distx) + FixedMul(momdify, disty);
|
||||
|
@ -1276,8 +1287,13 @@ void K_LakituChecker(player_t *player)
|
|||
void K_KartMoveAnimation(player_t *player)
|
||||
{
|
||||
ticcmd_t *cmd = &player->cmd;
|
||||
// Battle Mode bomb overrides everything else
|
||||
if (gametype != GT_RACE && player->kartstuff[k_balloon] <= 0)
|
||||
{
|
||||
P_SetPlayerMobjState(player->mo, S_PLAYERBOMB);
|
||||
}
|
||||
// Standing frames - S_KART_STND1 S_KART_STND1_L S_KART_STND1_R
|
||||
if (player->speed == 0)
|
||||
else if (player->speed == 0)
|
||||
{
|
||||
if (cmd->buttons & BT_DRIFTRIGHT && !(player->mo->state >= &states[S_KART_STND1_R] && player->mo->state <= &states[S_KART_STND2_R]))
|
||||
P_SetPlayerMobjState(player->mo, S_KART_STND1_R);
|
||||
|
@ -1633,7 +1649,7 @@ void K_SpinPlayer(player_t *player, mobj_t *source)
|
|||
|| (gametype != GT_RACE && (player->kartstuff[k_balloon] <= 0 && player->kartstuff[k_comebacktimer])))
|
||||
return;
|
||||
|
||||
if (source && source->player && !source->player->kartstuff[k_sounds])
|
||||
if (source && source != player->mo && source->player && !source->player->kartstuff[k_sounds])
|
||||
{
|
||||
S_StartSound(source, sfx_hitem);
|
||||
source->player->kartstuff[k_sounds] = 50;
|
||||
|
@ -1840,7 +1856,8 @@ void K_StealBalloon(player_t *player, player_t *victim)
|
|||
return;
|
||||
}
|
||||
|
||||
void K_SpawnKartExplosion(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 number, mobjtype_t type, angle_t rotangle, boolean spawncenter, boolean ghostit)
|
||||
// source is the mobj that originally threw the bomb that exploded etc.
|
||||
void K_SpawnKartExplosion(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 number, mobjtype_t type, angle_t rotangle, boolean spawncenter, boolean ghostit, mobj_t *source)
|
||||
{
|
||||
mobj_t *mobj;
|
||||
mobj_t *ghost = NULL;
|
||||
|
@ -1920,6 +1937,7 @@ void K_SpawnKartExplosion(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32
|
|||
mobj->flags |= MF_NOCLIPTHING;
|
||||
mobj->flags &= ~MF_SPECIAL;
|
||||
|
||||
P_SetTarget(&mobj->target, source);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1999,7 +2017,7 @@ void K_SpawnDriftTrail(player_t *player)
|
|||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
if (player->kartstuff[k_bootimer] != 0 || (gametype != GT_RACE && player->kartstuff[k_balloon] <= 0))
|
||||
if (player->kartstuff[k_bootimer] != 0 || (gametype != GT_RACE && player->kartstuff[k_balloon] <= 0 && player->kartstuff[k_comebacktimer]))
|
||||
continue;
|
||||
|
||||
newx = player->mo->x + P_ReturnThrustX(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(24*FRACUNIT, player->mo->scale));
|
||||
|
@ -3249,31 +3267,26 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
}
|
||||
else if (player->kartstuff[k_bootimer] == 0)
|
||||
{
|
||||
player->mo->flags2 &= ~MF2_DONTDRAW;
|
||||
if (gametype != GT_RACE && player->kartstuff[k_balloon] <= 0) // dead in match? you da bomb
|
||||
{
|
||||
K_StripItems(player);
|
||||
if (player->kartstuff[k_comebacktimer] > 0)
|
||||
{
|
||||
if (leveltime & 1)
|
||||
player->mo->flags2 |= MF2_DONTDRAW;
|
||||
else
|
||||
player->mo->flags2 &= ~MF2_DONTDRAW;
|
||||
|
||||
player->powers[pw_flashing] = player->kartstuff[k_comebacktimer];
|
||||
}
|
||||
else
|
||||
player->mo->flags2 &= ~MF2_DONTDRAW;
|
||||
}
|
||||
else if (player->kartstuff[k_balloon] > 0)
|
||||
player->mo->flags2 &= ~MF2_DONTDRAW;
|
||||
}
|
||||
}
|
||||
|
||||
if (gametype != GT_RACE && player->kartstuff[k_balloon] <= 0) // dead in match? you da bomb
|
||||
{
|
||||
K_StripItems(player);
|
||||
player->mo->flags2 |= MF2_DONTDRAW;
|
||||
|
||||
if (player->kartstuff[k_comebacktimer])
|
||||
player->powers[pw_flashing] = 2;
|
||||
|
||||
if (!(player->mo->tracer))
|
||||
player->mo->tracer = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_OVERLAY);
|
||||
|
||||
P_SetMobjState(player->mo->tracer, S_PLAYERBOMB);
|
||||
P_SetTarget(&player->mo->tracer, player->mo);
|
||||
player->mo->tracer->color = player->mo->color;
|
||||
}
|
||||
else if (player->mo->tracer && player->mo->tracer->state == &states[S_PLAYERBOMB])
|
||||
{
|
||||
player->mo->flags2 &= ~MF2_DONTDRAW;
|
||||
P_RemoveMobj(player->mo->tracer);
|
||||
}
|
||||
|
||||
if (player->kartstuff[k_growshrinktimer] > 1)
|
||||
player->powers[pw_flashing] = 2;
|
||||
|
||||
|
|
|
@ -16,14 +16,14 @@ UINT8 K_GetKartColorByName(const char *name);
|
|||
void K_RegisterKartStuff(void);
|
||||
|
||||
UINT8 K_GetKartCC(void);
|
||||
void K_KartMoveAnimation(player_t *player);
|
||||
void K_KartBouncing(mobj_t *mobj1, mobj_t *mobj2, boolean bounce);
|
||||
void K_KartMoveAnimation(player_t *player);
|
||||
void K_KartPlayerThink(player_t *player, ticcmd_t *cmd);
|
||||
void K_SpinPlayer(player_t *player, mobj_t *source);
|
||||
void K_SquishPlayer(player_t *player, mobj_t *source);
|
||||
void K_ExplodePlayer(player_t *player, mobj_t *source);
|
||||
void K_StealBalloon(player_t *player, player_t *victim);
|
||||
void K_SpawnKartExplosion(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 number, mobjtype_t type, angle_t rotangle, boolean spawncenter, boolean ghostit);
|
||||
void K_SpawnKartExplosion(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 number, mobjtype_t type, angle_t rotangle, boolean spawncenter, boolean ghostit, mobj_t *source);
|
||||
void K_SpawnDriftTrail(player_t *player);
|
||||
void K_DoMushroom(player_t *player, boolean doPFlag, boolean startboost);
|
||||
INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue);
|
||||
|
|
|
@ -8252,7 +8252,7 @@ void A_BobombExplode(mobj_t *actor)
|
|||
type = (mobjtype_t)locvar1;
|
||||
|
||||
for (d = 0; d < 16; d++)
|
||||
K_SpawnKartExplosion(actor->x, actor->y, actor->z, actor->info->painchance + 32*FRACUNIT, 32, type, d*(ANGLE_45/4), false, false); // 32 <-> 64
|
||||
K_SpawnKartExplosion(actor->x, actor->y, actor->z, actor->info->painchance + 32*FRACUNIT, 32, type, d*(ANGLE_45/4), false, false, actor->target); // 32 <-> 64
|
||||
|
||||
P_SpawnMobj(actor->x, actor->y, actor->z, MT_BOMBEXPLOSIONSOUND);
|
||||
|
||||
|
|
|
@ -3130,7 +3130,8 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
|||
{
|
||||
// Just need to do this now! Being thrown upwards is done by the explosion.
|
||||
P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_BLUELIGHTNING);
|
||||
P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_BLUEEXPLOSION);
|
||||
mobj_t *blueexplode = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_BLUEEXPLOSION);
|
||||
P_SetTarget(&blueexplode->target, source);
|
||||
return true;
|
||||
}
|
||||
else if (damage == 65 && player->kartstuff[k_position] > 1)
|
||||
|
|
27
src/p_mobj.c
27
src/p_mobj.c
|
@ -6544,7 +6544,6 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
if (mobj->health > 0 && mobj->target && mobj->target->player && mobj->target->player->mo
|
||||
&& mobj->target->player->health > 0 && !mobj->target->player->spectator)
|
||||
{
|
||||
fixed_t HEIGHT;
|
||||
fixed_t radius; // mobj's distance from its Target, or Radius.
|
||||
|
||||
if (mobj->type == MT_BANANASHIELD || mobj->type == MT_TRIPLEBANANASHIELD1 || mobj->type == MT_TRIPLEBANANASHIELD2 || mobj->type == MT_TRIPLEBANANASHIELD3)
|
||||
|
@ -6563,18 +6562,6 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
else
|
||||
mobj->angle = (mobj->target->angle + ANGLE_180);
|
||||
|
||||
// If the player is on the ceiling, then flip your items as well.
|
||||
if (mobj->target->eflags & MFE_VERTICALFLIP)
|
||||
{
|
||||
mobj->eflags |= MFE_VERTICALFLIP;
|
||||
HEIGHT = mobj->target->height / 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
mobj->eflags &= ~MFE_VERTICALFLIP;
|
||||
HEIGHT = mobj->target->height / 5;
|
||||
}
|
||||
|
||||
// Shrink your items if the player shrunk too.
|
||||
mobj->scale = mobj->target->scale;
|
||||
|
||||
|
@ -6701,23 +6688,19 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
case MT_PLAYERARROW:
|
||||
if (mobj->target && mobj->target->health
|
||||
&& mobj->target->player && mobj->target->player->mo
|
||||
&& mobj->target->player->health && mobj->target->player->playerstate != PST_DEAD
|
||||
&& !(gametype != GT_RACE && mobj->target->player->kartstuff[k_balloon] <= 0))
|
||||
&& mobj->target->player->health && mobj->target->player->playerstate != PST_DEAD)
|
||||
{
|
||||
fixed_t scale = mobj->target->scale;
|
||||
mobj->color = mobj->target->color;
|
||||
|
||||
if (mobj->target->player == &players[displayplayer])
|
||||
if ((splitscreen || !netgame)
|
||||
|| gametype == GT_RACE
|
||||
|| mobj->target->player == &players[displayplayer]
|
||||
|| (mobj->target->player->mo->flags2 & MF2_DONTDRAW))
|
||||
mobj->flags2 |= MF2_DONTDRAW;
|
||||
else
|
||||
mobj->flags2 &= ~MF2_DONTDRAW;
|
||||
|
||||
if ((splitscreen || !netgame)
|
||||
|| gametype == GT_RACE
|
||||
|| mobj->target->player->kartstuff[k_bootimer]
|
||||
|| (mobj->target->player->kartstuff[k_balloon] <= 0 && mobj->target->player->kartstuff[k_comebacktimer]))
|
||||
mobj->flags2 |= MF2_DONTDRAW;
|
||||
|
||||
P_UnsetThingPosition(mobj);
|
||||
mobj->x = mobj->target->x;
|
||||
mobj->y = mobj->target->y;
|
||||
|
|
|
@ -1010,6 +1010,9 @@ void P_AddPlayerScore(player_t *player, UINT32 amount)
|
|||
if (player->bot)
|
||||
player = &players[consoleplayer];
|
||||
|
||||
if (gametype != GT_RACE && player->kartstuff[k_balloon] <= 0)
|
||||
return;
|
||||
|
||||
// NiGHTS does it different!
|
||||
if (gamestate == GS_LEVEL && mapheaderinfo[gamemap-1]->typeoflevel & TOL_NIGHTS)
|
||||
{
|
||||
|
@ -9459,7 +9462,7 @@ void P_PlayerThink(player_t *player)
|
|||
{
|
||||
// SRB2kart - fixes boo not flashing when it should. Mega doesn't flash either. Flashing is local.
|
||||
if ((player == &players[displayplayer] || (splitscreen && player == &players[secondarydisplayplayer]))
|
||||
&& player->kartstuff[k_bootimer] == 0 && player->kartstuff[k_growshrinktimer] <= 0)
|
||||
&& player->kartstuff[k_bootimer] == 0 && player->kartstuff[k_comebacktimer] == 0 && player->kartstuff[k_growshrinktimer] <= 0)
|
||||
{
|
||||
if (player->powers[pw_flashing] > 0 && player->powers[pw_flashing] < flashingtics && (leveltime & 1))
|
||||
player->mo->flags2 |= MF2_DONTDRAW;
|
||||
|
|
Loading…
Reference in a new issue