mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2025-10-30 08:01:01 +00:00
Added ability to set a level to skip credits, fixed SM74 bugs
This commit is contained in:
parent
5a260a2840
commit
fbce5f23c6
13 changed files with 68 additions and 39 deletions
|
|
@ -575,6 +575,7 @@
|
||||||
--- @field public exitCastleArea integer
|
--- @field public exitCastleArea integer
|
||||||
--- @field public exitCastleLevel LevelNum
|
--- @field public exitCastleLevel LevelNum
|
||||||
--- @field public exitCastleWarpNode integer
|
--- @field public exitCastleWarpNode integer
|
||||||
|
--- @field public skipCreditsAt LevelNum
|
||||||
--- @field public starPositions StarPositions
|
--- @field public starPositions StarPositions
|
||||||
|
|
||||||
--- @class LinearTransitionPoint
|
--- @class LinearTransitionPoint
|
||||||
|
|
@ -642,6 +643,7 @@
|
||||||
--- @field public interactObj Object
|
--- @field public interactObj Object
|
||||||
--- @field public invincTimer integer
|
--- @field public invincTimer integer
|
||||||
--- @field public isSnoring integer
|
--- @field public isSnoring integer
|
||||||
|
--- @field public knockbackTimer integer
|
||||||
--- @field public marioBodyState MarioBodyState
|
--- @field public marioBodyState MarioBodyState
|
||||||
--- @field public marioObj Object
|
--- @field public marioObj Object
|
||||||
--- @field public minimumBoneY number
|
--- @field public minimumBoneY number
|
||||||
|
|
|
||||||
|
|
@ -837,6 +837,7 @@
|
||||||
| exitCastleArea | `integer` | |
|
| exitCastleArea | `integer` | |
|
||||||
| exitCastleLevel | [enum LevelNum](constants.md#enum-LevelNum) | |
|
| exitCastleLevel | [enum LevelNum](constants.md#enum-LevelNum) | |
|
||||||
| exitCastleWarpNode | `integer` | |
|
| exitCastleWarpNode | `integer` | |
|
||||||
|
| skipCreditsAt | [enum LevelNum](constants.md#enum-LevelNum) | |
|
||||||
| starPositions | [StarPositions](structs.md#StarPositions) | read-only |
|
| starPositions | [StarPositions](structs.md#StarPositions) | read-only |
|
||||||
|
|
||||||
[:arrow_up_small:](#)
|
[:arrow_up_small:](#)
|
||||||
|
|
@ -932,6 +933,7 @@
|
||||||
| interactObj | [Object](structs.md#Object) | |
|
| interactObj | [Object](structs.md#Object) | |
|
||||||
| invincTimer | `integer` | |
|
| invincTimer | `integer` | |
|
||||||
| isSnoring | `integer` | |
|
| isSnoring | `integer` | |
|
||||||
|
| knockbackTimer | `integer` | |
|
||||||
| marioBodyState | [MarioBodyState](structs.md#MarioBodyState) | |
|
| marioBodyState | [MarioBodyState](structs.md#MarioBodyState) | |
|
||||||
| marioObj | [Object](structs.md#Object) | |
|
| marioObj | [Object](structs.md#Object) | |
|
||||||
| minimumBoneY | `number` | |
|
| minimumBoneY | `number` | |
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ sOverrideCameraModes = {
|
||||||
--[CAMERA_MODE_C_UP] = true,
|
--[CAMERA_MODE_C_UP] = true,
|
||||||
[CAMERA_MODE_WATER_SURFACE] = true,
|
[CAMERA_MODE_WATER_SURFACE] = true,
|
||||||
[CAMERA_MODE_SLIDE_HOOT] = true,
|
[CAMERA_MODE_SLIDE_HOOT] = true,
|
||||||
[CAMERA_MODE_INSIDE_CANNON] = true,
|
--[CAMERA_MODE_INSIDE_CANNON] = true,
|
||||||
--[CAMERA_MODE_BOSS_FIGHT] = true,
|
--[CAMERA_MODE_BOSS_FIGHT] = true,
|
||||||
[CAMERA_MODE_PARALLEL_TRACKING] = true,
|
[CAMERA_MODE_PARALLEL_TRACKING] = true,
|
||||||
[CAMERA_MODE_FIXED] = true,
|
[CAMERA_MODE_FIXED] = true,
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ end
|
||||||
function course_names_swap_sm74ee()
|
function course_names_swap_sm74ee()
|
||||||
if sCourseNamesEE then return end
|
if sCourseNamesEE then return end
|
||||||
smlua_text_utils_course_acts_replace(COURSE_BOB, " 1 DEVIL'S DICE", "LITTLE WARM-UP", "LET'S-A-GO!", "SCALE THE TOWER", "FUNDAMENTAL TUNNEL PROBLEMS", "FIRST RED KATASTROPHE", "YOU WON'T FIND ME!")
|
smlua_text_utils_course_acts_replace(COURSE_BOB, " 1 DEVIL'S DICE", "LITTLE WARM-UP", "LET'S-A-GO!", "SCALE THE TOWER", "FUNDAMENTAL TUNNEL PROBLEMS", "FIRST RED KATASTROPHE", "YOU WON'T FIND ME!")
|
||||||
smlua_text_utils_course_acts_replace(COURSE_WF, " 2 VIRUSVINE VERANDA", "THE VINE'S TREASURE", "TIME PRESSURE TRAVEL", "ON TOP OF THAT WALL!", "JUMPING-PARCOUR 1", "JUMPING-PARCOUR 2", "LIGHT RED COINS")
|
smlua_text_utils_course_acts_replace(COURSE_WF, " 2 VIRUSVINE VERANDA", "THE VINE'S TREASURE", "TIME PRESSURE TRAVEL", "ON TOP OF THAT WALL!", "JUMPING-PARCOUR 1", "JUMPING-PARCOUR 2", "LIGHT RED COINS")
|
||||||
smlua_text_utils_course_acts_replace(COURSE_JRB, " 3 DEEPRED DEPTHS", "THE UPPER END OF THE CRATER", "SMALL PILLAR TRAINING", "HOT STEP STONES", "DEEP WITHIN THE VOLCANO", "ARTISTIC COIN SEARCH", "PAINFUL EXPERIENCE")
|
smlua_text_utils_course_acts_replace(COURSE_JRB, " 3 DEEPRED DEPTHS", "THE UPPER END OF THE CRATER", "SMALL PILLAR TRAINING", "HOT STEP STONES", "DEEP WITHIN THE VOLCANO", "ARTISTIC COIN SEARCH", "PAINFUL EXPERIENCE")
|
||||||
smlua_text_utils_course_acts_replace(COURSE_CCM, " 4 SYSTEM OF A DOWNTOWN", "GHOST ODYSSEE", "GUARDIAN OF THE VILLAGE", "EXPANDED SECRET ROOM", "DEATH PIT", "SO CLOSE AND YET SO FAR AWAY", "HIDDEN COWARD")
|
smlua_text_utils_course_acts_replace(COURSE_CCM, " 4 SYSTEM OF A DOWNTOWN", "GHOST ODYSSEE", "GUARDIAN OF THE VILLAGE", "EXPANDED SECRET ROOM", "DEATH PIT", "SO CLOSE AND YET SO FAR AWAY", "HIDDEN COWARD")
|
||||||
smlua_text_utils_course_acts_replace(COURSE_BBH, " 5 DROWNED FACTORY", "PEARL DIVER", "THE TUNNEL LABYRINTH PART 1", "THE TUNNEL LABYRINTH PART 2", "THE TUNNEL LABYRINTH PART 3", "THE TUNNEL LABYRINTH PART 4", "THE TUNNEL LABYRINTH PART 5")
|
smlua_text_utils_course_acts_replace(COURSE_BBH, " 5 DROWNED FACTORY", "PEARL DIVER", "THE TUNNEL LABYRINTH PART 1", "THE TUNNEL LABYRINTH PART 2", "THE TUNNEL LABYRINTH PART 3", "THE TUNNEL LABYRINTH PART 4", "THE TUNNEL LABYRINTH PART 5")
|
||||||
|
|
@ -50,23 +50,23 @@ function course_names_swap_sm74ee()
|
||||||
smlua_text_utils_course_acts_replace(COURSE_LLL, " 7 MELTING ICECRYSTAL-TOWER", "BRICK BATTLE", "FLOATATION IN BLOCK FORM", "SOUL OF A CLIMBER", "BLOOR-RED FINANCES", "ANNOYING SEARCH", "UNJUSTIFIABLE SEARCH")
|
smlua_text_utils_course_acts_replace(COURSE_LLL, " 7 MELTING ICECRYSTAL-TOWER", "BRICK BATTLE", "FLOATATION IN BLOCK FORM", "SOUL OF A CLIMBER", "BLOOR-RED FINANCES", "ANNOYING SEARCH", "UNJUSTIFIABLE SEARCH")
|
||||||
smlua_text_utils_course_acts_replace(COURSE_SSL, " 8 OVERGROWN OASIS", "STILL UNDER CONSTRUCTION", "FLOOD LANDING STAGE", "NOT SO SECRET SECRET ANYMORE", "DOUBTFUL PYRAMID", "HIDDEN HERMIT", "YOU SHALL DROWN!")
|
smlua_text_utils_course_acts_replace(COURSE_SSL, " 8 OVERGROWN OASIS", "STILL UNDER CONSTRUCTION", "FLOOD LANDING STAGE", "NOT SO SECRET SECRET ANYMORE", "DOUBTFUL PYRAMID", "HIDDEN HERMIT", "YOU SHALL DROWN!")
|
||||||
smlua_text_utils_course_acts_replace(COURSE_DDD, " 9 FIREFLOWER FIELDS", "ANOTHER REMATCH WITH KING BOB-OMB", "WINDY MILL", "WAY TOO EASY COINS", "THE UNSTABLE WOODEN CONSTRUCTION", "NOT SO SECRET CAVERN", "BARK BEETLE JUMPS")
|
smlua_text_utils_course_acts_replace(COURSE_DDD, " 9 FIREFLOWER FIELDS", "ANOTHER REMATCH WITH KING BOB-OMB", "WINDY MILL", "WAY TOO EASY COINS", "THE UNSTABLE WOODEN CONSTRUCTION", "NOT SO SECRET CAVERN", "BARK BEETLE JUMPS")
|
||||||
smlua_text_utils_course_acts_replace(COURSE_SL, "10 BREEZING BEACH", "SECRET OF THE SMARAGDS", "HOT POLE-DANCE", "SOMEWHERE IN THE NOWHERE", "NOWHERE IN THE SOMEWHERE", "COLD TOMB", "HEMOGLOBIN-COINS")
|
smlua_text_utils_course_acts_replace(COURSE_SL, "10 BREEZING BEACH", "SECRET OF THE SMARAGDS", "HOT POLE-DANCE", "SOMEWHERE IN THE NOWHERE", "NOWHERE IN THE SOMEWHERE", "COLD TOMB", "HEMOGLOBIN-COINS")
|
||||||
smlua_text_utils_course_acts_replace(COURSE_WDW, "11 DRIED-OUT DEAD DESERT", "BURNING FEET", "AIRY STORED COINS", "THE OLD HIDEOUT", "GRAVE DIGGER", "CEMETARY ARTISTICS", "THE SAND PLATEAU'S TORTURE")
|
smlua_text_utils_course_acts_replace(COURSE_WDW, "11 DRIED-OUT DEAD DESERT", "BURNING FEET", "AIRY STORED COINS", "THE OLD HIDEOUT", "GRAVE DIGGER", "CEMETARY ARTISTICS", "THE SAND PLATEAU'S TORTURE")
|
||||||
smlua_text_utils_course_acts_replace(COURSE_TTM, "12 CLIFF OF PAIN", "MOVE YOUR BUTT UP THERE!", "WAY TOO HIGH", "ANOTHER PROBLEMATIC BOX", "HEAVE-HO CAVE", "YOU-CAN-GUESS-WHICH COINS", "BRAZENLY PLACED")
|
smlua_text_utils_course_acts_replace(COURSE_TTM, "12 CLIFF OF PAIN", "MOVE YOUR BUTT UP THERE!", "WAY TOO HIGH", "ANOTHER PROBLEMATIC BOX", "HEAVE-HO CAVE", "YOU-CAN-GUESS-WHICH COINS", "BRAZENLY PLACED")
|
||||||
smlua_text_utils_course_acts_replace(COURSE_THI, "13 ACID PEAKS", "WELCOME TO THE ACID SWAMP", "EYE TO EYE", "ACIDPROOF BOXES", "IN THE BIG CAVE", "ANOTHER CLIMBING CHALLENGE", "LAVA-COLORED GLITTER")
|
smlua_text_utils_course_acts_replace(COURSE_THI, "13 ACID PEAKS", "WELCOME TO THE ACID SWAMP", "EYE TO EYE", "ACIDPROOF BOXES", "IN THE BIG CAVE", "ANOTHER CLIMBING CHALLENGE", "LAVA-COLORED GLITTER")
|
||||||
smlua_text_utils_course_acts_replace(COURSE_TTC, "14 VENENO SPHERE", "THE SAME PLACE IN A WORSE WORLD", "THROUGH THE HEART OF THE WORLD", "THE EDGE OF THE WORLD", "THE ROOF OF THE WORLD", "WORLDWIDE PAIN", "BLOODRED COINS OF RUINATION")
|
smlua_text_utils_course_acts_replace(COURSE_TTC, "14 VENENO SPHERE", "THE SAME PLACE IN A WORSE WORLD", "THROUGH THE HEART OF THE WORLD", "THE EDGE OF THE WORLD", "THE ROOF OF THE WORLD", "WORLDWIDE PAIN", "BLOODRED COINS OF RUINATION")
|
||||||
smlua_text_utils_course_acts_replace(COURSE_RR, "15 CRUDELO SPHERE", "THE NIGHTMARE BEGINS", "JUST GO CRAZY", "STRAIGHT FROM HELL", "TRAUMATISING EXPERIENCE", "MORBID DEADLY PUZZLE", "BLOODY SCREAM OF RAGE")
|
smlua_text_utils_course_acts_replace(COURSE_RR, "15 CRUDELO SPHERE", "THE NIGHTMARE BEGINS", "JUST GO CRAZY", "STRAIGHT FROM HELL", "TRAUMATISING EXPERIENCE", "MORBID DEADLY PUZZLE", "BLOODY SCREAM OF RAGE")
|
||||||
|
|
||||||
smlua_text_utils_secret_star_replace(15, " BOWSER'S BEAUTIFUL BACKYARD")
|
smlua_text_utils_secret_star_replace(COURSE_BITDW, " BOWSER'S BEAUTIFUL BACKYARD")
|
||||||
smlua_text_utils_secret_star_replace(16, " BOWSER'S QUICKSAND PIT")
|
smlua_text_utils_secret_star_replace(COURSE_BITFS, " BOWSER'S QUICKSAND PIT")
|
||||||
smlua_text_utils_secret_star_replace(17, " ZTAR ZANCTUARY")
|
smlua_text_utils_secret_star_replace(COURSE_BITS, " ZTAR ZANCTUARY")
|
||||||
smlua_text_utils_secret_star_replace(18, " OLD SUPPLY SLIDE")
|
smlua_text_utils_secret_star_replace(COURSE_PSS, " OLD SUPPLY SLIDE")
|
||||||
smlua_text_utils_secret_star_replace(19, " TOXIC TERRACE")
|
smlua_text_utils_secret_star_replace(COURSE_COTMC, " TOXIC TERRACE")
|
||||||
smlua_text_utils_secret_star_replace(20, " DEVIL'S PIT")
|
smlua_text_utils_secret_star_replace(COURSE_TOTWC, " DEVIL'S PIT")
|
||||||
smlua_text_utils_secret_star_replace(21, " DUST DESTINATION")
|
smlua_text_utils_secret_star_replace(COURSE_VCUTM, " DUST DESTINATION")
|
||||||
smlua_text_utils_secret_star_replace(22, " LAKE OF THE LORDS")
|
smlua_text_utils_secret_star_replace(COURSE_WMOTR, " LAKE OF THE LORDS")
|
||||||
smlua_text_utils_secret_star_replace(23, " TRIARC-BRIDGE")
|
smlua_text_utils_secret_star_replace(COURSE_SA, " TRIARC-BRIDGE")
|
||||||
smlua_text_utils_secret_star_replace(24, "")
|
smlua_text_utils_secret_star_replace(COURSE_CAKE_END, "")
|
||||||
|
|
||||||
smlua_text_utils_castle_secret_stars_replace(" BONUSSTARS")
|
smlua_text_utils_castle_secret_stars_replace(" BONUSSTARS")
|
||||||
smlua_text_utils_extra_text_replace(0, "BONUS STAR")
|
smlua_text_utils_extra_text_replace(0, "BONUS STAR")
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -9,6 +9,7 @@
|
||||||
gLevelValues.entryLevel = LEVEL_CASTLE_COURTYARD
|
gLevelValues.entryLevel = LEVEL_CASTLE_COURTYARD
|
||||||
gLevelValues.exitCastleLevel = LEVEL_CASTLE_COURTYARD
|
gLevelValues.exitCastleLevel = LEVEL_CASTLE_COURTYARD
|
||||||
gLevelValues.exitCastleWarpNode = 0x40
|
gLevelValues.exitCastleWarpNode = 0x40
|
||||||
|
gLevelValues.skipCreditsAt = LEVEL_BOB
|
||||||
|
|
||||||
---------------------
|
---------------------
|
||||||
-- behavior values --
|
-- behavior values --
|
||||||
|
|
|
||||||
|
|
@ -871,11 +871,11 @@ static void koopa_the_quick_act_after_race(void) {
|
||||||
}
|
}
|
||||||
} else if (o->parentObj->oKoopaRaceEndpointRaceStatus != 0) {
|
} else if (o->parentObj->oKoopaRaceEndpointRaceStatus != 0) {
|
||||||
if (o->oKoopaTheQuickRaceIndex == 0) {
|
if (o->oKoopaTheQuickRaceIndex == 0) {
|
||||||
f32* starPos = gLevelValues.starPositions.KoopaBobStarPos;
|
f32* starPos = gLevelValues.starPositions.KoopaBobStarPos;
|
||||||
spawn_default_star(starPos[0], starPos[1], starPos[2]);
|
spawn_default_star(starPos[0], starPos[1], starPos[2]);
|
||||||
} else {
|
} else {
|
||||||
f32* starPos = gLevelValues.starPositions.KoopaThiStarPos;
|
f32* starPos = gLevelValues.starPositions.KoopaThiStarPos;
|
||||||
spawn_default_star(starPos[0], starPos[1], starPos[2]);
|
spawn_default_star(starPos[0], starPos[1], starPos[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
o->parentObj->oKoopaRaceEndpointRaceStatus = 0;
|
o->parentObj->oKoopaRaceEndpointRaceStatus = 0;
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ struct LevelValues gLevelValues = {
|
||||||
.exitCastleLevel = LEVEL_CASTLE,
|
.exitCastleLevel = LEVEL_CASTLE,
|
||||||
.exitCastleArea = 1,
|
.exitCastleArea = 1,
|
||||||
.exitCastleWarpNode = 0x1F,
|
.exitCastleWarpNode = 0x1F,
|
||||||
|
.skipCreditsAt = (LEVEL_MAX+1),
|
||||||
.starPositions = {
|
.starPositions = {
|
||||||
.KoopaBobStarPos = { 3030.0f, 4500.0f, -4600.0f },
|
.KoopaBobStarPos = { 3030.0f, 4500.0f, -4600.0f },
|
||||||
.KoopaThiStarPos = { 7100.0f, -1300.0f, -6000.0f },
|
.KoopaThiStarPos = { 7100.0f, -1300.0f, -6000.0f },
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ struct LevelValues {
|
||||||
enum LevelNum exitCastleLevel;
|
enum LevelNum exitCastleLevel;
|
||||||
s16 exitCastleArea;
|
s16 exitCastleArea;
|
||||||
u8 exitCastleWarpNode;
|
u8 exitCastleWarpNode;
|
||||||
|
enum LevelNum skipCreditsAt;
|
||||||
struct StarPositions starPositions;
|
struct StarPositions starPositions;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -573,6 +573,11 @@ void warp_credits(void) {
|
||||||
gCurrCreditsEntry = &sCreditsSequence[0];
|
gCurrCreditsEntry = &sCreditsSequence[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((gCurrCreditsEntry != NULL) && (gCurrCreditsEntry->levelNum == gLevelValues.skipCreditsAt)) {
|
||||||
|
lvl_skip_credits();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (s32 i = 0; i < MAX_PLAYERS; i++) {
|
for (s32 i = 0; i < MAX_PLAYERS; i++) {
|
||||||
vec3s_set(gPlayerSpawnInfos[i].startPos, gCurrCreditsEntry->marioPos[0],
|
vec3s_set(gPlayerSpawnInfos[i].startPos, gCurrCreditsEntry->marioPos[0],
|
||||||
gCurrCreditsEntry->marioPos[1], gCurrCreditsEntry->marioPos[2]);
|
gCurrCreditsEntry->marioPos[1], gCurrCreditsEntry->marioPos[2]);
|
||||||
|
|
@ -967,26 +972,36 @@ void initiate_delayed_warp(void) {
|
||||||
|
|
||||||
case WARP_OP_CREDITS_START:
|
case WARP_OP_CREDITS_START:
|
||||||
gCurrCreditsEntry = &sCreditsSequence[0];
|
gCurrCreditsEntry = &sCreditsSequence[0];
|
||||||
// instance players in the credits
|
|
||||||
gCurrActStarNum = 99;
|
if ((gCurrCreditsEntry != NULL) && (gCurrCreditsEntry->levelNum == gLevelValues.skipCreditsAt)) {
|
||||||
gCurrActNum = 99;
|
lvl_skip_credits();
|
||||||
initiate_warp(gCurrCreditsEntry->levelNum, gCurrCreditsEntry->areaIndex,
|
} else {
|
||||||
WARP_NODE_CREDITS_START, 0);
|
// instance players in the credits
|
||||||
|
gCurrActStarNum = 99;
|
||||||
|
gCurrActNum = 99;
|
||||||
|
initiate_warp(gCurrCreditsEntry->levelNum, gCurrCreditsEntry->areaIndex,
|
||||||
|
WARP_NODE_CREDITS_START, 0);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WARP_OP_CREDITS_NEXT:
|
case WARP_OP_CREDITS_NEXT:
|
||||||
sound_banks_disable(SEQ_PLAYER_SFX, SOUND_BANKS_ALL);
|
sound_banks_disable(SEQ_PLAYER_SFX, SOUND_BANKS_ALL);
|
||||||
|
|
||||||
gCurrCreditsEntry += 1;
|
gCurrCreditsEntry += 1;
|
||||||
gCurrActNum = gCurrCreditsEntry->unk02 & 0x07;
|
|
||||||
if ((gCurrCreditsEntry + 1)->levelNum == LEVEL_NONE) {
|
|
||||||
destWarpNode = WARP_NODE_CREDITS_END;
|
|
||||||
} else {
|
|
||||||
destWarpNode = WARP_NODE_CREDITS_NEXT;
|
|
||||||
}
|
|
||||||
|
|
||||||
initiate_warp(gCurrCreditsEntry->levelNum, gCurrCreditsEntry->areaIndex,
|
if ((gCurrCreditsEntry != NULL) && (gCurrCreditsEntry->levelNum == gLevelValues.skipCreditsAt)) {
|
||||||
destWarpNode, 0);
|
lvl_skip_credits();
|
||||||
|
} else {
|
||||||
|
gCurrActNum = gCurrCreditsEntry->unk02 & 0x07;
|
||||||
|
if ((gCurrCreditsEntry + 1)->levelNum == LEVEL_NONE) {
|
||||||
|
destWarpNode = WARP_NODE_CREDITS_END;
|
||||||
|
} else {
|
||||||
|
destWarpNode = WARP_NODE_CREDITS_NEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
initiate_warp(gCurrCreditsEntry->levelNum, gCurrCreditsEntry->areaIndex,
|
||||||
|
destWarpNode, 0);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
@ -1566,3 +1581,12 @@ void fake_lvl_init_from_save_file(void) {
|
||||||
|
|
||||||
gChangeLevel = gLevelValues.entryLevel;
|
gChangeLevel = gLevelValues.entryLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void lvl_skip_credits(void) {
|
||||||
|
gCurrCreditsEntry = NULL;
|
||||||
|
gCurrActStarNum = 0;
|
||||||
|
gCurrActNum = 0;
|
||||||
|
gChangeLevel = gLevelValues.entryLevel;
|
||||||
|
gMarioStates[0].health = 0x880;
|
||||||
|
play_transition(0x09, 0x14, 0x00, 0x00, 0x00);
|
||||||
|
}
|
||||||
|
|
@ -160,5 +160,6 @@ void star_select_finish_selection(void);
|
||||||
s32 lvl_exiting_credits(UNUSED s16 arg0, UNUSED s32 arg1);
|
s32 lvl_exiting_credits(UNUSED s16 arg0, UNUSED s32 arg1);
|
||||||
|
|
||||||
void fake_lvl_init_from_save_file(void);
|
void fake_lvl_init_from_save_file(void);
|
||||||
|
void lvl_skip_credits(void);
|
||||||
|
|
||||||
#endif // LEVEL_UPDATE_H
|
#endif // LEVEL_UPDATE_H
|
||||||
|
|
|
||||||
|
|
@ -1531,12 +1531,7 @@ void update_mario_inputs(struct MarioState *m) {
|
||||||
/* End of developer stuff */
|
/* End of developer stuff */
|
||||||
|
|
||||||
if ((m->action == ACT_END_PEACH_CUTSCENE || m->action == ACT_CREDITS_CUTSCENE) && m->controller->buttonPressed & START_BUTTON) {
|
if ((m->action == ACT_END_PEACH_CUTSCENE || m->action == ACT_CREDITS_CUTSCENE) && m->controller->buttonPressed & START_BUTTON) {
|
||||||
gCurrCreditsEntry = NULL;
|
lvl_skip_credits();
|
||||||
gCurrActStarNum = 0;
|
|
||||||
gCurrActNum = 0;
|
|
||||||
gChangeLevel = gLevelValues.entryLevel;
|
|
||||||
m->health = 0x880;
|
|
||||||
play_transition(0x09, 0x14, 0x00, 0x00, 0x00);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m->playerIndex == 0) {
|
if (m->playerIndex == 0) {
|
||||||
|
|
|
||||||
|
|
@ -666,12 +666,13 @@ static struct LuaObjectField sLakituStateFields[LUA_LAKITU_STATE_FIELD_COUNT] =
|
||||||
{ "yaw", LVT_S16, offsetof(struct LakituState, yaw), false, LOT_NONE },
|
{ "yaw", LVT_S16, offsetof(struct LakituState, yaw), false, LOT_NONE },
|
||||||
};
|
};
|
||||||
|
|
||||||
#define LUA_LEVEL_VALUES_FIELD_COUNT 5
|
#define LUA_LEVEL_VALUES_FIELD_COUNT 6
|
||||||
static struct LuaObjectField sLevelValuesFields[LUA_LEVEL_VALUES_FIELD_COUNT] = {
|
static struct LuaObjectField sLevelValuesFields[LUA_LEVEL_VALUES_FIELD_COUNT] = {
|
||||||
{ "entryLevel", LVT_S32, offsetof(struct LevelValues, entryLevel), false, LOT_NONE },
|
{ "entryLevel", LVT_S32, offsetof(struct LevelValues, entryLevel), false, LOT_NONE },
|
||||||
{ "exitCastleArea", LVT_S16, offsetof(struct LevelValues, exitCastleArea), false, LOT_NONE },
|
{ "exitCastleArea", LVT_S16, offsetof(struct LevelValues, exitCastleArea), false, LOT_NONE },
|
||||||
{ "exitCastleLevel", LVT_S32, offsetof(struct LevelValues, exitCastleLevel), false, LOT_NONE },
|
{ "exitCastleLevel", LVT_S32, offsetof(struct LevelValues, exitCastleLevel), false, LOT_NONE },
|
||||||
{ "exitCastleWarpNode", LVT_U8, offsetof(struct LevelValues, exitCastleWarpNode), false, LOT_NONE },
|
{ "exitCastleWarpNode", LVT_U8, offsetof(struct LevelValues, exitCastleWarpNode), false, LOT_NONE },
|
||||||
|
{ "skipCreditsAt", LVT_S32, offsetof(struct LevelValues, skipCreditsAt), false, LOT_NONE },
|
||||||
{ "starPositions", LVT_COBJECT, offsetof(struct LevelValues, starPositions), true, LOT_STARPOSITIONS },
|
{ "starPositions", LVT_COBJECT, offsetof(struct LevelValues, starPositions), true, LOT_STARPOSITIONS },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -710,7 +711,7 @@ static struct LuaObjectField sMarioBodyStateFields[LUA_MARIO_BODY_STATE_FIELD_CO
|
||||||
{ "wingFlutter", LVT_S8, offsetof(struct MarioBodyState, wingFlutter), false, LOT_NONE },
|
{ "wingFlutter", LVT_S8, offsetof(struct MarioBodyState, wingFlutter), false, LOT_NONE },
|
||||||
};
|
};
|
||||||
|
|
||||||
#define LUA_MARIO_STATE_FIELD_COUNT 72
|
#define LUA_MARIO_STATE_FIELD_COUNT 73
|
||||||
static struct LuaObjectField sMarioStateFields[LUA_MARIO_STATE_FIELD_COUNT] = {
|
static struct LuaObjectField sMarioStateFields[LUA_MARIO_STATE_FIELD_COUNT] = {
|
||||||
{ "action", LVT_U32, offsetof(struct MarioState, action), false, LOT_NONE },
|
{ "action", LVT_U32, offsetof(struct MarioState, action), false, LOT_NONE },
|
||||||
{ "actionArg", LVT_U32, offsetof(struct MarioState, actionArg), false, LOT_NONE },
|
{ "actionArg", LVT_U32, offsetof(struct MarioState, actionArg), false, LOT_NONE },
|
||||||
|
|
@ -750,6 +751,7 @@ static struct LuaObjectField sMarioStateFields[LUA_MARIO_STATE_FIELD_COUNT] = {
|
||||||
{ "interactObj", LVT_COBJECT_P, offsetof(struct MarioState, interactObj), false, LOT_OBJECT },
|
{ "interactObj", LVT_COBJECT_P, offsetof(struct MarioState, interactObj), false, LOT_OBJECT },
|
||||||
{ "invincTimer", LVT_S16, offsetof(struct MarioState, invincTimer), false, LOT_NONE },
|
{ "invincTimer", LVT_S16, offsetof(struct MarioState, invincTimer), false, LOT_NONE },
|
||||||
{ "isSnoring", LVT_U8, offsetof(struct MarioState, isSnoring), false, LOT_NONE },
|
{ "isSnoring", LVT_U8, offsetof(struct MarioState, isSnoring), false, LOT_NONE },
|
||||||
|
{ "knockbackTimer", LVT_U8, offsetof(struct MarioState, knockbackTimer), false, LOT_NONE },
|
||||||
{ "marioBodyState", LVT_COBJECT_P, offsetof(struct MarioState, marioBodyState), false, LOT_MARIOBODYSTATE },
|
{ "marioBodyState", LVT_COBJECT_P, offsetof(struct MarioState, marioBodyState), false, LOT_MARIOBODYSTATE },
|
||||||
{ "marioObj", LVT_COBJECT_P, offsetof(struct MarioState, marioObj), false, LOT_OBJECT },
|
{ "marioObj", LVT_COBJECT_P, offsetof(struct MarioState, marioObj), false, LOT_OBJECT },
|
||||||
{ "minimumBoneY", LVT_F32, offsetof(struct MarioState, minimumBoneY), false, LOT_NONE },
|
{ "minimumBoneY", LVT_F32, offsetof(struct MarioState, minimumBoneY), false, LOT_NONE },
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue