diff --git a/src/deh_soc.c b/src/deh_soc.c index 65db63ebb13fab76dc84dbbfb64f43fa13a8895f..f2ae7f2244e5fe0d97e8432b1ca91700870dbf03 100644 --- a/src/deh_soc.c +++ b/src/deh_soc.c @@ -3453,6 +3453,18 @@ static void readcondition(UINT8 set, UINT32 id, char *word2) return; } } + else if (fastcmp(params[0], "LUA")) + { + PARAMCHECK(1); + ty = UC_LUA; + re = atoi(params[1]); + + if (re <= 0 || re > MAXLUACONDITIONS) + { + deh_warning("Lua condition %d out of range (1 - %d)", re, MAXLUACONDITIONS); + return; + } + } else if (fastcmp(params[0], "CONDITIONSET")) { PARAMCHECK(1); diff --git a/src/m_cond.c b/src/m_cond.c index 5a5913297157e24ada893ca5fad77a4d38ffd3e3..279eca8faf40a553f1df4c6fcd2ecbad29651498 100644 --- a/src/m_cond.c +++ b/src/m_cond.c @@ -155,6 +155,8 @@ void M_ClearSecrets(gamedata_t *data) data->unlocked[i] = false; for (i = 0; i < MAXCONDITIONSETS; ++i) data->achieved[i] = false; + for (i = 0; i < MAXLUACONDITIONS; ++i) + data->lua[i] = false; data->timesBeaten = data->timesBeatenWithEmeralds = data->timesBeatenUltimate = 0; @@ -214,6 +216,8 @@ static UINT8 M_CheckCondition(condition_t *cn, gamedata_t *data) return data->collected[cn->requirement-1]; case UC_EXTRAEMBLEM: // Requires extra emblem x to be obtained return data->extraCollected[cn->requirement-1]; + case UC_LUA: + return data->lua[cn->requirement-1]; case UC_CONDITIONSET: // requires condition set x to already be achieved return M_Achieved(cn->requirement-1, data); } diff --git a/src/m_cond.h b/src/m_cond.h index 2491a384c02aa5f34ba47933eba689811ac599d0..2e6606f560390044b4e04239f5b139587030b28f 100644 --- a/src/m_cond.h +++ b/src/m_cond.h @@ -47,6 +47,7 @@ typedef enum UC_EMBLEM, // EMBLEM [emblem number] UC_EXTRAEMBLEM, // EXTRAEMBLEM [extra emblem number] UC_CONDITIONSET, // CONDITIONSET [condition set number] + UC_LUA, // LUA [condition set number] } conditiontype_t; // Condition Set information @@ -141,6 +142,7 @@ typedef struct #define MAXEMBLEMS 512 #define MAXEXTRAEMBLEMS 48 #define MAXUNLOCKABLES 80 +#define MAXLUACONDITIONS 128 /** Time attack information, currently a very small structure. */ @@ -202,6 +204,9 @@ typedef struct // UNLOCKABLES UNLOCKED boolean unlocked[MAXUNLOCKABLES]; + // LUA DATA (NOT SAVED INTO GAMEDATA) + boolean lua[MAXLUACONDITIONS]; + // TIME ATTACK DATA recorddata_t *mainrecords[NUMMAPS]; nightsdata_t *nightsrecords[NUMMAPS];