From 48bb2e1b3ce250b82616891d1500aaa9c54873d1 Mon Sep 17 00:00:00 2001 From: toaster Date: Fri, 20 Oct 2023 12:41:07 +0100 Subject: [PATCH] Add support for `PodiumCup Any` --- src/deh_soc.c | 3 +++ src/m_cond.c | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/deh_soc.c b/src/deh_soc.c index 49a8607c8..a38bfd4fa 100644 --- a/src/deh_soc.c +++ b/src/deh_soc.c @@ -2881,6 +2881,9 @@ static void readcondition(UINT16 set, UINT32 id, char *word2) { PARAMCHECK(1); ty = UCRP_PODIUMCUP; + + re = -1; + if (!fastcmp(params[1], "ANY")) { cupheader_t *cup = kartcupheaders; UINT32 hash = quickncasehash(params[1], MAXCUPNAME); diff --git a/src/m_cond.c b/src/m_cond.c index 199b650b6..8c8dfb6fc 100644 --- a/src/m_cond.c +++ b/src/m_cond.c @@ -1499,9 +1499,13 @@ boolean M_CheckCondition(condition_t *cn, player_t *player) if (grandprixinfo.gp == false || K_PodiumRanking() == false) return false; if (grandprixinfo.cup == NULL - || grandprixinfo.cup->id != cn->requirement) + || ( + cn->requirement != -1 // Any + && grandprixinfo.cup->id != cn->requirement + ) + ) return false; - if (cn->extrainfo2) + if (cn->extrainfo2 != 0) return (K_PodiumGrade() >= (unsigned)cn->requirement); if (cn->extrainfo1 != 0) return (player->position != 0 @@ -2373,6 +2377,13 @@ static const char *M_GetConditionString(condition_t *cn) orbetter = " or better in"; } + if (cn->requirement == -1) + { + return va("%s%s any Cup", + completetype, orbetter + ); + } + for (cup = kartcupheaders; cup; cup = cup->next) { if (cup->id != cn->requirement)