Path: blob/master/SonicMania/Objects/TMZ/TMZ2Outro.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: TMZ2Outro Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectTMZ2Outro *TMZ2Outro;1011void TMZ2Outro_Update(void)12{13RSDK_THIS(TMZ2Outro);1415TMZ2Outro_SetupCutscene();16self->active = ACTIVE_NEVER;1718HUD_MoveOut();19}2021void TMZ2Outro_LateUpdate(void) {}2223void TMZ2Outro_StaticUpdate(void) {}2425void TMZ2Outro_Draw(void) {}2627void TMZ2Outro_Create(void *data)28{29RSDK_THIS(TMZ2Outro);3031self->active = ACTIVE_NORMAL;32foreach_all(EscapeCar, car) { self->escapeCar = car; }33}3435void TMZ2Outro_StageLoad(void)36{37TMZ2Outro->sfxAlarm = RSDK.GetSfx("TMZ3/Alarm.wav");38TMZ2Outro->sfxCarRev = RSDK.GetSfx("TMZ1/CarRev.wav");39TMZ2Outro->sfxGrab = RSDK.GetSfx("Global/Grab.wav");40TMZ2Outro->sfxRumble = RSDK.GetSfx("Stage/Rumble.wav");41TMZ2Outro->sfxDrop = RSDK.GetSfx("Stage/Drop.wav");42TMZ2Outro->sfxImpact = RSDK.GetSfx("Stage/Impact2.wav");43TMZ2Outro->sfxRubyGet = RSDK.GetSfx("TMZ3/RubyGet.wav");4445TMZ2Outro->playerID = ID_NONE;46}4748void TMZ2Outro_SetupCutscene(void)49{50RSDK_THIS(TMZ2Outro);5152#if MANIA_USE_PLUS53if (globals->gameMode != MODE_ENCORE) {54#endif55CutsceneSeq_StartSequence(self, TMZ2Outro_Cutscene_SetupOutro, TMZ2Outro_Cutscene_WatchEggman, TMZ2Outro_Cutscene_EggmanFall,56TMZ2Outro_Cutscene_StartAlert, TMZ2Outro_Cutscene_TimeToEscape, TMZ2Outro_Cutscene_HurryToCar,57TMZ2Outro_Cutscene_StartFadeOut, TMZ2Outro_Cutscene_FadeOut, TMZ2Outro_Cutscene_FinishSequence, StateMachine_None);58#if MANIA_USE_PLUS59}60else {61if (SaveGame_AllChaosEmeralds()) {62CutsceneSeq_StartSequence(self, TMZ2Outro_Cutscene_SetupOutro, TMZ2Outro_Cutscene_WatchEggman, TMZ2Outro_Cutscene_EggmanFall,63TMZ2Outro_Cutscene_StartRubyRampage, TMZ2Outro_Cutscene_OuttaHere, TMZ2Outro_Cutscene_TeamEscape,64TMZ2Outro_Cutscene_FadeOut, TMZ2Outro_Cutscene_FinishSequence, StateMachine_None);65}66else {67self->heavyKing = CutsceneHBH_GetEntity(HBH_KINGTMZ2);68CutsceneSeq_StartSequence(self, TMZ2Outro_Cutscene_SetupOutro, TMZ2Outro_Cutscene_WatchEggman, TMZ2Outro_Cutscene_EggmanFall,69TMZ2Outro_Cutscene_StartRubyRampage, TMZ2Outro_Cutscene_Panic, TMZ2Outro_Cutscene_OuttaHere_BadEnd,70TMZ2Outro_Cutscene_FadeOut, TMZ2Outro_Cutscene_FinishSequence, StateMachine_None);71}72foreach_all(TMZFlames, flames) { destroyEntity(flames); }73}74#endif7576#if MANIA_USE_PLUS77CutsceneSeq_SetSkipType(SKIPTYPE_DISABLED);78#endif79}8081bool32 TMZ2Outro_Cutscene_SetupOutro(EntityCutsceneSeq *host)82{83TMZ2Outro->playerID = globals->playerID;8485foreach_active(Player, player)86{87player->stateInput = StateMachine_None;88if (player->superState == SUPERSTATE_SUPER)89player->superState = SUPERSTATE_FADEOUT;9091CutsceneSeq_LockAllPlayerControl();92}9394foreach_all(BoundsMarker, marker) { destroyEntity(marker); }9596for (int32 c = 0; c < 0x100; ++c) RSDK.SetPaletteEntry(7, c, RSDK.GetPaletteEntry(1, c) & 0xFF0000);9798return true;99}100101bool32 TMZ2Outro_Cutscene_WatchEggman(EntityCutsceneSeq *host)102{103bool32 finishedMoving = true;104105foreach_active(Player, player)106{107if (player->sidekick && player->characterID == ID_KNUCKLES && !CHECK_CHARACTER_ID(ID_KNUCKLES, 1)) {108if (player->stateInput != TMZ2Outro_PlayerStateInput_Escape) {109Zone->playerBoundActiveR[0] = false;110player->stateInput = TMZ2Outro_PlayerStateInput_Escape;111}112}113else {114int32 targetPos = PhantomEgg->boundsM + (player->playerID << 21);115116if (player->position.x >= targetPos + 0x300000) {117if (player->position.x <= targetPos + 0x700000) {118player->left = false;119player->right = false;120121if (abs(player->groundVel) < 0x8000) {122player->groundVel = 0;123player->direction = FLIP_X;124player->up = true;125continue;126}127else {128player->groundVel -= (player->groundVel >> 5);129}130}131else {132player->left = true;133player->right = false;134}135}136else {137player->left = false;138player->right = true;139}140141finishedMoving = false;142}143}144145if (finishedMoving) {146foreach_active(Player, player2)147{148if (player2->sidekick && (player2->characterID != ID_KNUCKLES || CHECK_CHARACTER_ID(ID_KNUCKLES, 2)))149player2->stateInput = Player_Input_P2_AI;150}151}152153return finishedMoving;154}155156void TMZ2Outro_PlayerStateInput_Escape(void)157{158RSDK_THIS(Player);159160self->up = false;161self->down = false;162self->left = false;163self->right = true;164self->jumpPress = false;165self->jumpHold = false;166167if (self->position.x >= (2760 << 16)) {168self->visible = false;169self->interaction = false;170self->tileCollisions = TILECOLLISION_NONE;171self->right = false;172}173}174175bool32 TMZ2Outro_Cutscene_EggmanFall(EntityCutsceneSeq *host)176{177bool32 eggmanOnGround = false;178179foreach_active(Eggman, eggman)180{181if (eggman->onGround) {182RSDK.SetSpriteAnimation(Eggman->aniFrames, 8, &eggman->animator, true, 0);183foreach_active(Player, player) { player->up = false; }184185eggmanOnGround = true;186foreach_break;187}188}189190return eggmanOnGround;191}192193bool32 TMZ2Outro_Cutscene_StartAlert(EntityCutsceneSeq *host)194{195if (host->timer == 120) {196RSDK.PlaySfx(TMZ2Outro->sfxAlarm, true, 255);197198foreach_active(TMZAlert, alert)199{200alert->alpha = 16 * RSDK.Rand(-32, -8);201alert->state = TMZAlert_State_Activating;202}203204return true;205}206207return false;208}209bool32 TMZ2Outro_Cutscene_TimeToEscape(EntityCutsceneSeq *host)210{211RSDK.SetLimitedFade(0, 7, 1, (RSDK.Cos256(4 * host->timer) >> 1) + 128, 0, 256);212213if (!(host->timer & 7))214Camera_ShakeScreen(0, 0, 4);215216if (host->timer == 128) {217EntityPlayer *player1 = RSDK_GET_ENTITY(SLOT_PLAYER1, Player);218player1->right = true;219220Zone->cameraBoundsR[0] += 832;221Zone->playerBoundActiveR[0] = false;222223return true;224}225226return false;227}228229bool32 TMZ2Outro_Cutscene_HurryToCar(EntityCutsceneSeq *host)230{231RSDK_THIS(TMZ2Outro);232233RSDK.SetLimitedFade(0, 7, 1, (RSDK.Cos256(4 * host->timer) >> 1) + 128, 0, 256);234235if (!(host->timer & 7))236Camera_ShakeScreen(0, 0, 4);237238EntityPlayer *player1 = RSDK_GET_ENTITY(SLOT_PLAYER1, Player);239EntityEscapeCar *escapeCar = self->escapeCar;240241if (escapeCar->position.x - player1->position.x < 0x1800000)242player1->right = false;243244if (escapeCar->position.x - player1->position.x < 0xC00000) {245player1->jumpPress = player1->onGround;246player1->jumpHold = true;247}248249if (host->timer == 248)250RSDK.PlaySfx(TMZ2Outro->sfxGrab, false, 255);251252if (host->timer == 384) {253Zone->cameraBoundsR[0] = 0x2000;254255EntityCamera *camera = RSDK_GET_ENTITY(SLOT_CAMERA1, Camera);256camera->position.x = (camera->boundsR - ScreenInfo->center.x) << 16;257camera->boundsR = 0x2000;258camera->state = StateMachine_None;259260self->velocity.x = 0;261return true;262}263264return false;265}266bool32 TMZ2Outro_Cutscene_StartFadeOut(EntityCutsceneSeq *host)267{268RSDK_THIS(TMZ2Outro);269270RSDK.SetLimitedFade(0, 7, 1, (RSDK.Cos256(4 * host->timer) >> 1) + 128, 0, 256);271272if (host->timer == 15)273RSDK.PlaySfx(TMZ2Outro->sfxCarRev, false, 255);274275if (!(host->timer & 7))276Camera_ShakeScreen(0, 0, 4);277278EntityCamera *camera = RSDK_GET_ENTITY(SLOT_CAMERA1, Camera);279280if (self->velocity.x < 0x170000)281self->velocity.x += 0x2000;282283camera->position.x += self->velocity.x;284285if (host->timer == 200) {286Music_FadeOut(0.0125);287RSDK.PlaySfx(PhantomEgg->sfxExplosion3, false, 255);288}289290if (host->timer == 260)291RSDK.PlaySfx(PhantomEgg->sfxExplosion3, false, 255);292293if (host->timer == 320) {294EntityFXFade *fxFade = CREATE_ENTITY(FXFade, INT_TO_VOID(0xF0F0F0), self->position.x, self->position.y);295fxFade->speedIn = 32;296fxFade->wait = 90;297fxFade->speedOut = 16;298fxFade->fadeOutBlack = true;299300RSDK.PlaySfx(PhantomEgg->sfxExplosion3, false, 255);301302return true;303}304305return false;306}307308#if MANIA_USE_PLUS309bool32 TMZ2Outro_Cutscene_StartRubyRampage(EntityCutsceneSeq *host)310{311if (host->timer == 60) {312foreach_active(PhantomRuby, ruby)313{314int32 pos = ScreenInfo->position.x + (SaveGame_AllChaosEmeralds() ? 64 : 96);315ruby->startPos.x = pos << 16;316ruby->startPos.y = (ScreenInfo->position.y + ScreenInfo->center.y) << 16;317ruby->velocity.y = 0;318ruby->isPermanent = true;319ruby->drawGroup = Zone->objectDrawGroup[1];320ruby->active = ACTIVE_NORMAL;321ruby->state = PhantomRuby_State_MoveToPos;322}323}324325if (host->timer > 60) {326foreach_active(Player, player)327{328if (player->position.x >= (ScreenInfo->center.x - 64 + ScreenInfo->position.x) << 16) {329player->left = true;330player->right = false;331332if (player->groundVel < -0x20000)333player->groundVel = -0x20000;334}335else {336player->up = true;337player->left = false;338player->right = false;339player->groundVel = 0;340}341}342}343344if (host->timer == 120) {345foreach_active(TMZAlert, alert)346{347alert->alpha = 16 * RSDK.Rand(-32, -8);348alert->state = TMZAlert_State_Activating;349}350351for (int32 i = 0; i < 7; ++i) RSDK.SetPaletteEntry(2, i - 96, TMZ2Outro->colors[i]);352353if (SaveGame_AllChaosEmeralds()) {354CREATE_ENTITY(RubyPortal, RubyPortal_State_EncoreEnd, (ScreenInfo->position.x + 64) << 16,355(ScreenInfo->position.y + ScreenInfo->center.y) << 16);356}357358return true;359}360361return false;362}363bool32 TMZ2Outro_Cutscene_Panic(EntityCutsceneSeq *host)364{365if (host->timer == 90) {366foreach_active(Eggman, eggman)367{368RSDK.SetSpriteAnimation(Eggman->aniFrames, 9, &eggman->animator, true, 0);369eggman->direction = FLIP_NONE;370eggman->state = Eggman_State_WalkOffScreen;371eggman->velocity.x = 0x10000;372RSDK.ObjectTileGrip(eggman, Zone->collisionLayers, CMODE_FLOOR, eggman->collisionPlane, 0, 0x1C0000, 14);373}374}375376if (host->timer < 120) {377foreach_active(Player, player)378{379if (player->position.x >= (ScreenInfo->center.x - 64 + ScreenInfo->position.x) << 16) {380player->left = true;381player->right = false;382383if (player->groundVel < -0x20000)384player->groundVel = -0x20000;385}386else {387player->up = true;388player->left = false;389player->right = false;390player->groundVel = 0;391}392}393}394else if (host->timer == 256) {395foreach_active(Player, player)396{397player->up = false;398player->state = Player_State_Static;399RSDK.SetSpriteAnimation(player->aniFrames, ANI_BALANCE_1 + player->playerID, &player->animator, false, 0);400}401402RSDK.PlaySfx(TMZ2Outro->sfxRumble, false, 255);403RSDK.SetChannelAttributes(RSDK.PlaySfx(TMZ2Outro->sfxCarRev, false, 255), 1.0, 0.75, 1.0);404Camera_ShakeScreen(0, 0, 4);405Zone->playerBoundActiveR[0] = false;406}407else {408if (host->timer == 290) {409foreach_active(Player, player)410{411player->state = Player_State_Ground;412player->left = false;413player->right = true;414}415416return true;417}418}419420return false;421}422bool32 TMZ2Outro_Cutscene_OuttaHere_BadEnd(EntityCutsceneSeq *host)423{424RSDK_THIS(TMZ2Outro);425426if (host->timer == 120) {427Music_FadeOut(0.0125);428429foreach_active(Player, player) { player->active = ACTIVE_NEVER; }430431CutsceneHBH_KingTMZ2Setup();432433if (self->heavyKing) {434self->heavyKing->visible = true;435self->heavyKing->collisionPlane = 1;436RSDK.PlaySfx(TMZ2Outro->sfxDrop, false, 255);437}438}439440if (host->timer == 166)441RSDK.PlaySfx(TMZ2Outro->sfxImpact, false, 255);442443if (host->timer == 240) {444if (self->heavyKing) {445RSDK.SetSpriteAnimation(self->heavyKing->aniFrames, 3, &self->heavyKing->mainAnimator, false, 0);446447foreach_active(PhantomRuby, ruby)448{449ruby->startPos.y -= 0x100000;450ruby->state = PhantomRuby_State_MoveToPos;451}452}453}454455if (host->timer == 256) {456foreach_active(PhantomRuby, ruby)457{458EntityFXSpinRay *spinRay = CREATE_ENTITY(FXSpinRay, NULL, ruby->position.x, ruby->position.y);459spinRay->parent = (Entity *)ruby;460spinRay->r = 240;461spinRay->g = 0;462spinRay->b = 240;463464RSDK.PlaySfx(TMZ2Outro->sfxRubyGet, false, 255);465}466}467468if (host->timer == 408) {469if (self->heavyKing) {470RSDK.SetSpriteAnimation(self->heavyKing->aniFrames, 4, &self->heavyKing->mainAnimator, false, 0);471472foreach_active(PhantomRuby, ruby)473{474ruby->startPos.y += 0x180000;475ruby->state = PhantomRuby_State_MoveToPos;476}477}478}479480if (host->timer == 420) {481EntityFXFade *fxFade = CREATE_ENTITY(FXFade, INT_TO_VOID(0xF0F0F0), self->position.x, self->position.y);482fxFade->speedIn = 32;483fxFade->wait = 90;484fxFade->speedOut = 16;485fxFade->fadeOutBlack = true;486fxFade->isPermanent = true;487488PhantomRuby_PlaySfx(RUBYSFX_ATTACK1);489return true;490}491492return false;493}494bool32 TMZ2Outro_Cutscene_OuttaHere(EntityCutsceneSeq *host)495{496if (host->timer >= 120) {497if (host->timer == 240) {498foreach_active(Player, player)499{500player->up = false;501player->onGround = false;502player->velocity.x = 0x20000;503player->velocity.y = -0x40000;504RSDK.SetSpriteAnimation(player->aniFrames, ANI_HURT, &player->animator, false, 0);505}506507Zone->cameraBoundsR[0] = 0x2000;508Zone->playerBoundActiveR[0] = false;509}510else if (host->timer == 290) {511foreach_active(Player, player)512{513player->left = false;514player->right = true;515player->groundVel = 0x40000;516player->topSpeed = 0x50000;517player->drawGroup = Zone->playerDrawGroup[1];518}519}520}521else {522foreach_active(Player, player)523{524if (player->position.x >= (ScreenInfo->center.x - 64 + ScreenInfo->position.x) << 16) {525player->left = true;526player->right = false;527528if (player->groundVel < -0x20000)529player->groundVel = -0x20000;530}531else {532player->up = true;533player->left = false;534player->right = false;535player->groundVel = 0;536}537}538}539540if (host->timer == 90) {541foreach_active(Eggman, eggman)542{543RSDK.SetSpriteAnimation(Eggman->aniFrames, 9, &eggman->animator, true, 0);544545eggman->direction = FLIP_NONE;546eggman->state = Eggman_State_WalkOffScreen;547eggman->velocity.x = 0x10000;548549RSDK.ObjectTileGrip(eggman, Zone->collisionLayers, CMODE_FLOOR, eggman->collisionPlane, 0, 0x1C0000, 14);550}551}552553if (host->timer == 300) {554foreach_active(RubyPortal, portal)555{556portal->velocity.x = 0x20000;557portal->isPermanent = true;558portal->active = ACTIVE_NORMAL;559}560561RSDK_GET_ENTITY(SLOT_CAMERA1, Camera)->state = StateMachine_None;562563return true;564}565566return false;567}568bool32 TMZ2Outro_Cutscene_TeamEscape(EntityCutsceneSeq *host)569{570RSDK_THIS(TMZ2Outro);571572if (!(Zone->timer & 7))573Camera_ShakeScreen(0, 0, 4);574575if (!(Zone->timer & 0x1F))576RSDK.PlaySfx(TMZ2Outro->sfxRumble, false, 255);577578foreach_active(RubyPortal, portal)579{580if (portal->velocity.x < 0x71000)581portal->velocity.x += 0x2000;582}583584EntityCamera *camera = RSDK_GET_ENTITY(SLOT_CAMERA1, Camera);585if (host->timer >= 400)586camera->position.x += 0x50000;587else588camera->position.x += 0x70000;589590if (host->timer == 120)591RSDK.PlaySfx(TMZ2Outro->sfxCarRev, false, 255);592593if (host->timer == 320) {594EntityPlayer *player1 = RSDK_GET_ENTITY(SLOT_PLAYER1, Player);595Player_ChangeCharacter(player1, ID_SONIC);596597EntityPlayer *player2 = RSDK_GET_ENTITY(SLOT_PLAYER2, Player);598RSDK.CopyEntity(player2, player1, false);599player2->playerID = 1;600Player_ChangeCharacter(player2, ID_TAILS);601602EntityPlayer *player3 = RSDK_GET_ENTITY(SLOT_PLAYER4, Player);603RSDK.CopyEntity(player3, player1, false);604player3->playerID = 3;605Player_ChangeCharacter(player3, ID_KNUCKLES);606607EntityPlayer *player4 = RSDK_GET_ENTITY(SLOT_PLAYER5, Player);608RSDK.CopyEntity(player4, player1, false);609player4->playerID = 4;610Player_ChangeCharacter(player4, ID_MIGHTY);611612EntityPlayer *player5 = RSDK_GET_ENTITY(SLOT_PLAYER6, Player);613RSDK.CopyEntity(player5, player1, false);614player5->playerID = 5;615Player_ChangeCharacter(player5, ID_RAY);616617SceneInfo->timeEnabled = true;618619Player_TryTransform(player1, 0xFF);620EntitySuperSparkle *sparkle = RSDK_GET_ENTITY(Player->playerCount, SuperSparkle);621RSDK.ResetEntity(sparkle, SuperSparkle->classID, player1);622623Player->playerCount = 6;624int32 offsetX = 0;625for (int32 i = 0; i < Player->playerCount; ++i) {626if (i != 2) {627EntityPlayer *player = RSDK_GET_ENTITY(i, Player);628player->groundVel = 0x100000;629player->topSpeed = 0x100000;630player->rings = 100;631if (i)632player->sidekick = true;633player->position.x += offsetX;634offsetX -= 0x200000;635player->stateInput = StateMachine_None;636}637}638639Zone->deathBoundary[0] = 0x8000000;640RSDK.PlaySfx(Player->sfxTransform2, false, 255);641Music_FadeOut(0.0125);642}643644if (host->timer == 420)645RSDK.PlaySfx(TMZ2Outro->sfxDrop, false, 255);646647if (host->timer == 512) {648649EntityFXFade *fxFade = CREATE_ENTITY(FXFade, INT_TO_VOID(0xF0F0F0), self->position.x, self->position.y);650fxFade->speedIn = 32;651fxFade->wait = 90;652fxFade->speedOut = 16;653fxFade->fadeOutBlack = 1;654fxFade->isPermanent = true;655656RSDK.SetChannelAttributes(RSDK.PlaySfx(PhantomRuby->sfxL[0], false, 0), 1.0, -1.0, 1.0);657RSDK.SetChannelAttributes(RSDK.PlaySfx(PhantomRuby->sfxR[0], false, 0), 1.0, 1.0, 1.0);658return true;659}660661return false;662}663#endif664665bool32 TMZ2Outro_Cutscene_FadeOut(EntityCutsceneSeq *host)666{667RSDK.StopSfx(TMZ2Outro->sfxAlarm);668669return host->timer == 180;670}671bool32 TMZ2Outro_Cutscene_FinishSequence(EntityCutsceneSeq *host)672{673bool32 hasGoodEnding = false;674675#if MANIA_USE_PLUS676if (!(SceneInfo->filter & FILTER_ENCORE))677#endif678hasGoodEnding = (CHECK_CHARACTER_ID(ID_SONIC, 1) || (CHECK_CHARACTER_ID(ID_KNUCKLES, 1) && CHECK_CHARACTER_ID(ID_KNUCKLES, 2)))679&& SaveGame_AllChaosEmeralds();680681bool32 isSaveSlot = false;682if (!hasGoodEnding)683isSaveSlot = globals->saveSlotID != NO_SAVE_SLOT;684685if (isSaveSlot) {686if (!host->timer) {687globals->playerID = TMZ2Outro->playerID;688TMZ2Outro->finishedSaving = false;689690SaveGame_SaveProgress();691if (Zone_IsZoneLastAct())692GameProgress_MarkZoneCompleted(Zone_GetZoneID());693694GameProgress_GiveEnding(1);695SaveGame_SaveFile(TMZ2Outro_SaveFileCB);696697UIWaitSpinner_StartWait();698}699700if (!TMZ2Outro->finishedSaving)701return false;702else703UIWaitSpinner_FinishWait();704}705706if (hasGoodEnding) {707++SceneInfo->listPos;708RSDK.LoadScene();709return true;710}711else {712globals->playerID = TMZ2Outro->playerID;713#if MANIA_USE_PLUS714if (globals->gameMode == MODE_ENCORE) {715RSDK.SetScene("Presentation", "Credits");716}717else {718#endif719switch (GET_CHARACTER_ID(1)) {720default:721case ID_SONIC: RSDK.SetScene("Videos", "Bad End - Sonic"); break;722723case ID_TAILS: RSDK.SetScene("Videos", "Bad End - Tails"); break;724725case ID_KNUCKLES:726if (CHECK_CHARACTER_ID(ID_KNUCKLES, 2))727RSDK.SetScene("Videos", "True End?");728else729RSDK.SetScene("Videos", "Bad End - Knux");730break;731732#if MANIA_USE_PLUS733case ID_MIGHTY: RSDK.SetScene("Videos", "Bad End - Mighty"); break;734735case ID_RAY: RSDK.SetScene("Videos", "Bad End - Ray"); break;736#endif737}738#if MANIA_USE_PLUS739}740#endif741742API_UnlockAchievement(&achievementList[ACH_GAME_CLEARED]);743RSDK.LoadScene();744745return true;746}747748return false;749}750751#if MANIA_USE_PLUS752void TMZ2Outro_SaveFileCB(bool32 success) { TMZ2Outro->finishedSaving = true; }753#else754void TMZ2Outro_SaveFileCB(void) { TMZ2Outro->finishedSaving = true; }755#endif756757#if GAME_INCLUDE_EDITOR758void TMZ2Outro_EditorDraw(void) {}759760void TMZ2Outro_EditorLoad(void) {}761#endif762763void TMZ2Outro_Serialize(void) {}764765766