diff --git a/src/deh_soc.c b/src/deh_soc.c index 047a396af..3121f54e8 100644 --- a/src/deh_soc.c +++ b/src/deh_soc.c @@ -3088,6 +3088,7 @@ static void readcondition(UINT16 set, UINT32 id, char *word2) else if ((offset=0) || fastcmp(params[0], "FINISHCOOL") || (++offset && fastcmp(params[0], "FINISHPERFECT")) || (++offset && fastcmp(params[0], "FINISHALLPRISONS")) + || (++offset && fastcmp(params[0], "SURVIVE")) || (++offset && fastcmp(params[0], "NOCONTEST")) || (++offset && fastcmp(params[0], "SMASHUFO")) || (++offset && fastcmp(params[0], "CHASEDBYSPB"))) diff --git a/src/m_cond.c b/src/m_cond.c index 29499fc4a..afb4134dd 100644 --- a/src/m_cond.c +++ b/src/m_cond.c @@ -1710,6 +1710,9 @@ boolean M_CheckCondition(condition_t *cn, player_t *player) && !(player->pflags & PF_NOCONTEST) //&& M_NotFreePlay() && numtargets >= maptargets); + case UCRP_SURVIVE: + return (player->exiting + && !(player->pflags & PF_NOCONTEST)); case UCRP_NOCONTEST: return (player->pflags & PF_NOCONTEST); @@ -2650,6 +2653,8 @@ static const char *M_GetConditionString(condition_t *cn) return "finish a perfect round"; case UCRP_FINISHALLPRISONS: return "break every Prison Egg"; + case UCRP_SURVIVE: + return "survive"; case UCRP_NOCONTEST: return "NO CONTEST"; diff --git a/src/m_cond.h b/src/m_cond.h index 81eb6515d..b9989af56 100644 --- a/src/m_cond.h +++ b/src/m_cond.h @@ -103,6 +103,7 @@ typedef enum UCRP_FINISHCOOL, // Finish in good standing UCRP_FINISHPERFECT, // Finish a perfect race UCRP_FINISHALLPRISONS, // Break all prisons + UCRP_SURVIVE, // Survive UCRP_NOCONTEST, // No Contest UCRP_SMASHUFO, // Smash the UFO Catcher