Mooore tweaks

- Fixed position numbers; orders by balloons first then points (before
it was doing it the other way around), and the leading players should
never display as like 3 or something if there's ties :v
- Messed with Boo & Feather frequencies to be less common in Battle
- Fixed the issue when a karma bomb steals a balloon from one of the two
last people standing, kills them, and comes back, and the game ends
anyway, giving two players the "win" bonus
- Removed karma items being able to pass their items to other karma
bombs. This never worked correctly in the first place, and I'm 95% sure
it's what's been causing people to be ghosts forever
This commit is contained in:
TehRealSalt 2017-11-30 17:34:48 -05:00
parent 1e5c016eb1
commit e430a3bced
3 changed files with 13 additions and 14 deletions

View file

@ -721,7 +721,7 @@ static INT32 K_KartItemOddsBalloons[NUMKARTITEMS][5] =
{ {
//P-Odds 0 1 2 3 4 //P-Odds 0 1 2 3 4
/*Magnet*/ { 0, 0, 0, 0, 0 }, // Magnet /*Magnet*/ { 0, 0, 0, 0, 0 }, // Magnet
/*Boo*/ { 0, 1, 5, 2, 0 }, // Boo /*Boo*/ { 0, 1, 3, 2, 0 }, // Boo
/*Mushroom*/ { 1, 2, 5, 1, 0 }, // Mushroom /*Mushroom*/ { 1, 2, 5, 1, 0 }, // Mushroom
/*Triple Mushroom*/ { 0, 0, 0, 0, 0 }, // Triple Mushroom /*Triple Mushroom*/ { 0, 0, 0, 0, 0 }, // Triple Mushroom
/*Mega Mushroom*/ { 1, 1, 0, 0, 0 }, // Mega Mushroom /*Mega Mushroom*/ { 1, 1, 0, 0, 0 }, // Mega Mushroom
@ -740,7 +740,7 @@ static INT32 K_KartItemOddsBalloons[NUMKARTITEMS][5] =
/*Triple Red Shell*/ { 1, 1, 0, 0, 0 }, // Triple Red Shell /*Triple Red Shell*/ { 1, 1, 0, 0, 0 }, // Triple Red Shell
/*Lightning*/ { 0, 0, 0, 0, 0 }, // Lightning /*Lightning*/ { 0, 0, 0, 0, 0 }, // Lightning
/*Feather*/ { 0, 0, 5, 3, 1 } // Feather /*Feather*/ { 0, 0, 3, 2, 1 } // Feather
}; };
/** \brief Item Roulette for Kart /** \brief Item Roulette for Kart
@ -1924,6 +1924,8 @@ void K_ExplodePlayer(player_t *player, mobj_t *source) // A bit of a hack, we ju
{ {
source->player->kartstuff[k_comebackpoints] += 2; source->player->kartstuff[k_comebackpoints] += 2;
CONS_Printf(M_GetText("%s bombed %s!\n"), player_names[source->player-players], player_names[player-players]); CONS_Printf(M_GetText("%s bombed %s!\n"), player_names[source->player-players], player_names[player-players]);
if (thing->player->kartstuff[k_comebackpoints] >= 3)
K_StealBalloon(thing->player, tmthing->player, true);
} }
P_AddPlayerScore(source->player, 1); P_AddPlayerScore(source->player, 1);
} }
@ -2014,9 +2016,13 @@ void K_StealBalloon(player_t *player, player_t *victim, boolean force)
player->kartstuff[k_balloon]++; player->kartstuff[k_balloon]++;
player->kartstuff[k_comebackpoints] = 0; player->kartstuff[k_comebackpoints] = 0;
player->powers[pw_flashing] = K_GetKartFlashing(player); player->powers[pw_flashing] = K_GetKartFlashing(player);
player->kartstuff[k_comebacktimer] = comebacktime; player->kartstuff[k_comebacktimer] = comebacktime;
victim->powers[pw_flashing] = K_GetKartFlashing(victim);
victim->kartstuff[k_comebacktimer] = comebacktime;
return; return;
} }
@ -2950,12 +2956,13 @@ static void K_KartUpdatePosition(player_t *player)
{ {
if (player->exiting) if (player->exiting)
return; return;
if (players[i].kartstuff[k_balloon] > player->kartstuff[k_balloon]) if (players[i].kartstuff[k_balloon] == player->kartstuff[k_balloon] && players[i].score > player->score)
position++; position++;
else if (players[i].score > player->score) else if (players[i].kartstuff[k_balloon] > player->kartstuff[k_balloon])
position++; position++;
} }
} }
player->kartstuff[k_position] = position; player->kartstuff[k_position] = position;
} }
// //

View file

@ -414,8 +414,8 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
{ {
if (player->kartstuff[k_comebackmode] == 0 && !player->kartstuff[k_comebacktimer]) if (player->kartstuff[k_comebackmode] == 0 && !player->kartstuff[k_comebacktimer])
{ {
if (special->tracer && special->tracer->player) if (special->tracer)
special->tracer->player->kartstuff[k_comebackmode] = 0; return;
P_SetTarget(&special->tracer, toucher); P_SetTarget(&special->tracer, toucher);
player->kartstuff[k_comebackmode] = 1; player->kartstuff[k_comebackmode] = 1;
} }

View file

@ -1648,20 +1648,12 @@ static boolean PIT_CheckThing(mobj_t *thing)
if (tmthing->player->kartstuff[k_balloon] > 0) if (tmthing->player->kartstuff[k_balloon] > 0)
{ {
K_ExplodePlayer(tmthing->player, thing); K_ExplodePlayer(tmthing->player, thing);
if (thing->player->kartstuff[k_comebackpoints] >= 3)
K_StealBalloon(thing->player, tmthing->player, true);
thing->player->kartstuff[k_comebacktimer] = comebacktime; thing->player->kartstuff[k_comebacktimer] = comebacktime;
return true; return true;
} }
else if (thing->player->kartstuff[k_balloon] > 0) else if (thing->player->kartstuff[k_balloon] > 0)
{ {
K_ExplodePlayer(thing->player, tmthing); K_ExplodePlayer(thing->player, tmthing);
if (tmthing->player->kartstuff[k_comebackpoints] >= 3)
K_StealBalloon(tmthing->player, thing->player, true);
tmthing->player->kartstuff[k_comebacktimer] = comebacktime; tmthing->player->kartstuff[k_comebacktimer] = comebacktime;
return true; return true;
} }