diff --git a/src/y_inter.c b/src/y_inter.c index 42aee79deafb105c1f6a4b331bf018df2eebaa0e..975902ab089b2593f738bb14540cb2e812df1df8 100644 --- a/src/y_inter.c +++ b/src/y_inter.c @@ -1877,6 +1877,22 @@ static void Y_SetPerfectBonus(player_t *player, y_bonus_t *bstruct) data.coop.gotperfbonus = (bstruct->display ? 1 : 0); } +static void Y_SetSpecialRingBonus(player_t *player, y_bonus_t *bstruct) +{ + INT32 i, sharedringtotal = 0; + + (void)player; + strncpy(bstruct->patch, "YB_RING", sizeof(bstruct->patch)); + bstruct->display = true; + + for (i = 0; i < MAXPLAYERS; i++) + { + if (!playeringame[i]) continue; + sharedringtotal += players[i].rings; + } + bstruct->points = max(0, (sharedringtotal) * 100); +} + // This list can be extended in the future with SOC/Lua, perhaps. typedef void (*bonus_f)(player_t *, y_bonus_t *); bonus_f bonuses_list[6][4] = { @@ -2001,7 +2017,7 @@ static void Y_AwardSpecialStageBonus(void) } else { - Y_SetRingBonus(&players[i], &localbonuses[0]); + Y_SetSpecialRingBonus(&players[i], &localbonuses[0]); Y_SetPerfectBonus(&players[i], &localbonuses[1]); } players[i].score += localbonuses[0].points;