mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-05-04 07:52:22 +00:00
Merge branch 'challenge-kindnesses' into 'master'
Challenge Kindnesses See merge request KartKrew/Kart!2328
This commit is contained in:
commit
0582a00040
5 changed files with 51 additions and 34 deletions
|
|
@ -493,7 +493,12 @@ void srb2::load_ng_gamedata()
|
||||||
gamedata->tutorialdone = js.milestones.tutorialdone;
|
gamedata->tutorialdone = js.milestones.tutorialdone;
|
||||||
gamedata->gonerlevel = js.milestones.gonerlevel;
|
gamedata->gonerlevel = js.milestones.gonerlevel;
|
||||||
gamedata->thisprisoneggpickup = js.prisons.thisprisoneggpickup;
|
gamedata->thisprisoneggpickup = js.prisons.thisprisoneggpickup;
|
||||||
|
|
||||||
gamedata->prisoneggstothispickup = js.prisons.prisoneggstothispickup;
|
gamedata->prisoneggstothispickup = js.prisons.prisoneggstothispickup;
|
||||||
|
if (gamedata->prisoneggstothispickup > GDINIT_PRISONSTOPRIZE)
|
||||||
|
{
|
||||||
|
gamedata->prisoneggstothispickup = GDINIT_PRISONSTOPRIZE;
|
||||||
|
}
|
||||||
|
|
||||||
size_t emblems_size = js.emblems.size();
|
size_t emblems_size = js.emblems.size();
|
||||||
for (size_t i = 0; i < std::min((size_t)MAXEMBLEMS, emblems_size); i++)
|
for (size_t i = 0; i < std::min((size_t)MAXEMBLEMS, emblems_size); i++)
|
||||||
|
|
|
||||||
50
src/m_cond.c
50
src/m_cond.c
|
|
@ -398,6 +398,20 @@ badgrid:
|
||||||
gamedata->challengegridwidth = 0;
|
gamedata->challengegridwidth = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void M_ChallengeGridExtraDataAdjacencyRules(challengegridextradata_t *extradata, UINT16 adjacent)
|
||||||
|
{
|
||||||
|
// Adjacent unlocked tile, permit hint/general key skip.
|
||||||
|
if (gamedata->unlocked[adjacent] == true)
|
||||||
|
{
|
||||||
|
extradata->flags |= CHE_HINT;
|
||||||
|
}
|
||||||
|
// Adjacent locked small tile, prevent 10x key skip.
|
||||||
|
else if (unlockables[adjacent].majorunlock == false)
|
||||||
|
{
|
||||||
|
extradata->flags &= ~CHE_ALLCLEAR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void M_UpdateChallengeGridExtraData(challengegridextradata_t *extradata)
|
void M_UpdateChallengeGridExtraData(challengegridextradata_t *extradata)
|
||||||
{
|
{
|
||||||
UINT16 i, j, num, id, tempid, work;
|
UINT16 i, j, num, id, tempid, work;
|
||||||
|
|
@ -489,14 +503,7 @@ void M_UpdateChallengeGridExtraData(challengegridextradata_t *extradata)
|
||||||
}
|
}
|
||||||
else if (work < MAXUNLOCKABLES)
|
else if (work < MAXUNLOCKABLES)
|
||||||
{
|
{
|
||||||
if (gamedata->unlocked[work] == true)
|
M_ChallengeGridExtraDataAdjacencyRules(extradata+id, work);
|
||||||
{
|
|
||||||
extradata[id].flags |= CHE_HINT;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
extradata[id].flags &= ~CHE_ALLCLEAR;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -534,14 +541,7 @@ void M_UpdateChallengeGridExtraData(challengegridextradata_t *extradata)
|
||||||
}
|
}
|
||||||
else if (work < MAXUNLOCKABLES)
|
else if (work < MAXUNLOCKABLES)
|
||||||
{
|
{
|
||||||
if (gamedata->unlocked[work] == true)
|
M_ChallengeGridExtraDataAdjacencyRules(extradata+id, work);
|
||||||
{
|
|
||||||
extradata[id].flags |= CHE_HINT;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
extradata[id].flags &= ~CHE_ALLCLEAR;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -566,14 +566,7 @@ void M_UpdateChallengeGridExtraData(challengegridextradata_t *extradata)
|
||||||
}
|
}
|
||||||
else if (work < MAXUNLOCKABLES)
|
else if (work < MAXUNLOCKABLES)
|
||||||
{
|
{
|
||||||
if (gamedata->unlocked[work] == true)
|
M_ChallengeGridExtraDataAdjacencyRules(extradata+id, work);
|
||||||
{
|
|
||||||
extradata[id].flags |= CHE_HINT;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
extradata[id].flags &= ~CHE_ALLCLEAR;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -595,14 +588,7 @@ void M_UpdateChallengeGridExtraData(challengegridextradata_t *extradata)
|
||||||
}
|
}
|
||||||
else if (work < MAXUNLOCKABLES)
|
else if (work < MAXUNLOCKABLES)
|
||||||
{
|
{
|
||||||
if (gamedata->unlocked[work] == true)
|
M_ChallengeGridExtraDataAdjacencyRules(extradata+id, work);
|
||||||
{
|
|
||||||
extradata[id].flags |= CHE_HINT;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
extradata[id].flags &= ~CHE_ALLCLEAR;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -302,7 +302,7 @@ typedef enum {
|
||||||
#define GDCONVERT_ROUNDSTOKEY 5
|
#define GDCONVERT_ROUNDSTOKEY 5
|
||||||
|
|
||||||
#define GDINIT_CHAOKEYS 10 // Start with 10 Chao Keys !!
|
#define GDINIT_CHAOKEYS 10 // Start with 10 Chao Keys !!
|
||||||
#define GDINIT_PRISONSTOPRIZE 30 // 30 Prison Eggs to your [Wild Prize] !!
|
#define GDINIT_PRISONSTOPRIZE 15 // 15 Prison Eggs to your [Wild Prize] !!
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GDGONER_INIT = 0,
|
GDGONER_INIT = 0,
|
||||||
|
|
|
||||||
26
src/m_pw.cpp
26
src/m_pw.cpp
|
|
@ -535,6 +535,31 @@ void f_difficulty()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void f_keys()
|
||||||
|
{
|
||||||
|
INT32 givekeys = 25;
|
||||||
|
|
||||||
|
if (gamedata->chaokeys > (GDMAX_CHAOKEYS - givekeys))
|
||||||
|
{
|
||||||
|
givekeys = GDMAX_CHAOKEYS - gamedata->chaokeys;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (givekeys > 0)
|
||||||
|
{
|
||||||
|
S_StartSound(0, sfx_keygen);
|
||||||
|
|
||||||
|
gamedata->chaokeys += givekeys;
|
||||||
|
gamedata->chaokeytutorial = true;
|
||||||
|
|
||||||
|
M_StartMessage("Dr. Robotnik's Ring Racers - Deluxe Edition", va("Claimed %d Chao Keys!", givekeys), NULL, MM_NOTHING, NULL, NULL);
|
||||||
|
G_SaveGameData();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
M_StartMessage("Dr. Robotnik's Ring Racers - Deluxe Edition", "You have the maximum number of Chao Keys!", NULL, MM_NOTHING, NULL, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void f_devmode()
|
void f_devmode()
|
||||||
{
|
{
|
||||||
INT32 i;
|
INT32 i;
|
||||||
|
|
@ -737,4 +762,5 @@ void M_PasswordInit(void)
|
||||||
passwords.emplace_back(f_timeattack, "mFu5OB9d6jnc2kth7HE66wJ42F/GHDzSvuciK1Qw++6iGnpBccxcKjpoxgOvD3eIoqR606ruBINuXi23proXHQ==");
|
passwords.emplace_back(f_timeattack, "mFu5OB9d6jnc2kth7HE66wJ42F/GHDzSvuciK1Qw++6iGnpBccxcKjpoxgOvD3eIoqR606ruBINuXi23proXHQ==");
|
||||||
passwords.emplace_back(f_encore, "i5u5sIsMs5eITy+LzAXvKm6D9OzOVKhUqSy1mTTV/oUxJX6RPsk8OcyLbNaey9Vc6wXOhz+2+mTXILkIRzvXqA==");
|
passwords.emplace_back(f_encore, "i5u5sIsMs5eITy+LzAXvKm6D9OzOVKhUqSy1mTTV/oUxJX6RPsk8OcyLbNaey9Vc6wXOhz+2+mTXILkIRzvXqA==");
|
||||||
passwords.emplace_back(f_difficulty, "MKjOtEFLkgXf21uiECdBTU6XtbkuFWaGh7i8znKo7JrXXEDrCBJmGwINvPg0T3TLn0zlscLvmC5nve7I+NTrnA==");
|
passwords.emplace_back(f_difficulty, "MKjOtEFLkgXf21uiECdBTU6XtbkuFWaGh7i8znKo7JrXXEDrCBJmGwINvPg0T3TLn0zlscLvmC5nve7I+NTrnA==");
|
||||||
|
passwords.emplace_back(f_keys, "jgsD6UJ2Xa10QcS2ZDJwcvpd4iia3AXIG8wDDSsHX7kFH5jEXnym45yaNZG9hIKEvBMpVONKR0YTA6JBAQRCvg==");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -507,7 +507,7 @@ static void M_ChallengesTutorial(UINT8 option)
|
||||||
"to break open Big Challenge tiles.\n"
|
"to break open Big Challenge tiles.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"You'll also need to unlock\n"
|
"You'll also need to unlock\n"
|
||||||
"the surrounding tiles first.\n"
|
"any surrounding small tiles first.\n"
|
||||||
), NULL, MM_NOTHING, NULL, NULL);
|
), NULL, MM_NOTHING, NULL, NULL);
|
||||||
gamedata->majorkeyskipattempted = true;
|
gamedata->majorkeyskipattempted = true;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue