Path: blob/master/SonicMania/Objects/Credits/EncoreGoodEnd.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: EncoreGoodEnd Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89#if MANIA_USE_PLUS10ObjectEncoreGoodEnd *EncoreGoodEnd;1112void EncoreGoodEnd_Update(void)13{14RSDK_THIS(EncoreGoodEnd);1516if (!self->activated) {17foreach_active(Player, player)18{19if (Player_CheckCollisionTouch(player, self, &self->hitbox)) {20CutsceneSeq_StartSequence(self, EncoreGoodEnd_Cutscene_MoveToPlace, EncoreGoodEnd_Cutscene_WaitForMovementFinish,21EncoreGoodEnd_Cutscene_ClinkGlasses, EncoreGoodEnd_Cutscene_KingAppear,22EncoreGoodEnd_Cutscene_ThanksForPlaying, EncoreGoodEnd_Cutscene_FinishCutscene, StateMachine_None);23#if MANIA_USE_PLUS24CutsceneSeq_SetSkipTypeCallback(EncoreGoodEnd_Cutscene_SkipCB);25#endif2627self->activated = true;28}29}30}31}3233void EncoreGoodEnd_LateUpdate(void) {}3435void EncoreGoodEnd_StaticUpdate(void) {}3637void EncoreGoodEnd_Draw(void) {}3839void EncoreGoodEnd_Create(void *data)40{41RSDK_THIS(EncoreGoodEnd);4243if (!SceneInfo->inEditor) {44INIT_ENTITY(self);45self->active = ACTIVE_NORMAL;46CutsceneRules_SetupEntity(self, &self->size, &self->hitbox);4748SceneInfo->timeEnabled = false;49EncoreGoodEnd->unused1 = 0;50Player->playerCount = 4;5152EncoreGoodEnd_SetupDecorations();53}54}5556void EncoreGoodEnd_StageLoad(void) { EncoreGoodEnd->sfxSnap = RSDK.GetSfx("SPZ/ShBugSnap.wav"); }5758void EncoreGoodEnd_SetupDecorations(void)59{60int32 id = 0;61foreach_all(Decoration, decor)62{63if (id >= E_END_COUNT)64break;6566if (id == E_END_ICECREAM_CONE)67decor->drawFX = FX_NONE;68if (id >= E_END_ICECREAM_CONE)69decor->visible = false;7071EncoreGoodEnd->decorations[id++] = decor;72}73}7475void EncoreGoodEnd_SetupPlayer(int32 playerID)76{77switch (playerID) {78default: break;7980case ID_SONIC: EncoreGoodEnd->decorations[E_END_SONIC]->visible = false; break;8182case ID_TAILS:83EncoreGoodEnd->decorations[E_END_TAILS]->visible = false;84RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_STOOL_STILL, &EncoreGoodEnd->decorations[E_END_STOOLT]->animator, false, 0);85break;8687case ID_KNUCKLES:88EncoreGoodEnd->decorations[E_END_KNUX]->visible = false;89EncoreGoodEnd->decorations[E_END_GLASSK]->visible = false;90break;9192case ID_MIGHTY:93EncoreGoodEnd->decorations[E_END_MIGHTY]->visible = false;94EncoreGoodEnd->decorations[E_END_GLASSM]->visible = false;95break;9697case ID_RAY:98EncoreGoodEnd->decorations[E_END_RAY]->visible = false;99RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_STOOL_STILL, &EncoreGoodEnd->decorations[E_END_STOOLR]->animator, false, 0);100break;101}102}103104void EncoreGoodEnd_StatePlayer_MoveToPos(void)105{106RSDK_THIS(Player);107108self->velocity.x = 0x18000;109self->groundVel = 0x18000;110111int32 playerID = HUD_CharacterIndexFromID(self->characterID);112113if (self->position.x >= EncoreGoodEnd->decorations[playerID + E_END_SONIC]->position.x) {114self->position.x = EncoreGoodEnd->decorations[playerID + E_END_SONIC]->position.x;115116self->velocity.x = 0;117self->groundVel = 0;118119switch (self->characterID) {120case ID_SONIC:121self->visible = false;122EncoreGoodEnd->decorations[playerID + E_END_SONIC]->visible = true;123RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_SONICLAYDOWN,124&EncoreGoodEnd->decorations[playerID + E_END_SONIC]->animator, true, 0);125self->velocity.x = 0;126self->groundVel = 0;127self->state = EncoreGoodEnd_StatePlayer_EndingSonic;128break;129130case ID_TAILS:131case ID_KNUCKLES:132case ID_MIGHTY:133case ID_RAY:134self->jumpPress = true;135Player_State_Ground();136self->jumpPress = false;137self->state = EncoreGoodEnd_StatePlayer_EndingIdle;138self->nextAirState = EncoreGoodEnd_StatePlayer_EndingIdle;139self->nextGroundState = Player_State_Static;140break;141142default: break;143}144}145else {146Player_State_Ground();147}148}149150void EncoreGoodEnd_StatePlayer_EndingIdle(void)151{152RSDK_THIS(Player);153154Player_State_Air();155156if (self->velocity.y > 0) {157int32 playerID = HUD_CharacterIndexFromID(self->characterID);158159if (self->position.y >= (EncoreGoodEnd->decorations[playerID + E_END_SONIC]->position.y - 0x80000)) {160self->position.y = (EncoreGoodEnd->decorations[playerID + E_END_SONIC]->position.y - 0x80000);161self->velocity.y = 0;162self->visible = false;163164EncoreGoodEnd->decorations[playerID + E_END_SONIC]->visible = true;165switch (self->characterID) {166default:167case ID_SONIC: self->state = Player_State_Static; break;168169case ID_TAILS:170RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_TAILSSPIN,171&EncoreGoodEnd->decorations[playerID + E_END_SONIC]->animator, true, 0);172RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_STOOL, &EncoreGoodEnd->decorations[E_END_STOOLT]->animator, true, 0);173self->state = Player_State_Static;174break;175176case ID_KNUCKLES:177RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_KNUXSITDOWN,178&EncoreGoodEnd->decorations[playerID + E_END_SONIC]->animator, true, 0);179EncoreGoodEnd->decorations[E_END_GLASSK]->visible = true;180RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_KNUXSITDOWNG, &EncoreGoodEnd->decorations[E_END_GLASSK]->animator,181true, 0);182EncoreGoodEnd->decorations[E_END_GLASSK]->animator.speed = 0;183self->state = Player_State_Static;184break;185186case ID_MIGHTY:187RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_MIGHTYSITDOWN,188&EncoreGoodEnd->decorations[playerID + E_END_SONIC]->animator, true, 0);189EncoreGoodEnd->decorations[E_END_GLASSM]->visible = true;190RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_MIGHTYSITDOWNG, &EncoreGoodEnd->decorations[E_END_GLASSM]->animator,191true, 0);192EncoreGoodEnd->decorations[E_END_GLASSM]->animator.speed = 0;193self->state = Player_State_Static;194break;195196case ID_RAY:197RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_RAYSPIN, &EncoreGoodEnd->decorations[playerID + E_END_SONIC]->animator,198true, 0);199RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_STOOL, &EncoreGoodEnd->decorations[E_END_STOOLR]->animator, true, 0);200self->state = Player_State_Static;201break;202}203}204}205}206207void EncoreGoodEnd_StatePlayer_EndingSonic(void)208{209RSDK_THIS(Player);210211EntityDecoration *playerDecor = EncoreGoodEnd->decorations[E_END_SONIC];212213switch (self->abilityValues[0]) {214case 0:215if (EncoreGoodEnd->decorations[E_END_SONIC]->animator.frameID == 8) {216self->abilityValues[0] = 1;217EncoreGoodEnd->decorations[E_END_ICECREAM_CONE]->visible = true;218EncoreGoodEnd->decorations[E_END_ICECREAM_CONE]->velocity.y = -0x40000;219self->abilityValues[1] = 0;220}221break;222223case 1:224if (++self->abilityValues[1] >= 15) {225self->abilityValues[1] = 0;226self->abilityValues[0] = 2;227EncoreGoodEnd->decorations[E_END_ICECREAM_PINK]->visible = true;228EncoreGoodEnd->decorations[E_END_ICECREAM_PINK]->velocity.y = -0x40000;229}230break;231232case 2:233if (++self->abilityValues[1] >= 15) {234self->abilityValues[1] = 0;235self->abilityValues[0] = 3;236EncoreGoodEnd->decorations[E_END_ICECREAM_GREEN]->visible = true;237EncoreGoodEnd->decorations[E_END_ICECREAM_GREEN]->velocity.y = -0x40000;238}239break;240241case 3:242if (++self->abilityValues[1] >= 15) {243self->abilityValues[1] = 0;244self->abilityValues[0] = 4;245EncoreGoodEnd->decorations[E_END_ICECREAM_PINK2]->visible = true;246EncoreGoodEnd->decorations[E_END_ICECREAM_PINK2]->velocity.y = -0x40000;247}248break;249250case 4:251if (EncoreGoodEnd->decorations[E_END_SONIC]->animator.frameID >= 22)252self->state = Player_State_Static;253break;254255default: break;256}257258int32 anim = playerDecor->animator.frameID;259if (anim == ANI_RUN || anim == ANI_SKID || anim == ANI_DROPDASH)260playerDecor->animator.speed = 0;261262// Sonic's Ice creams263if (EncoreGoodEnd->decorations[E_END_ICECREAM_CONE]->visible) {264if (EncoreGoodEnd->decorations[E_END_ICECREAM_CONE]->velocity.y < 0) {265self->direction = FLIP_Y;266}267else {268EncoreGoodEnd->decorations[E_END_ICECREAM_CONE]->drawGroup = Zone->playerDrawGroup[1];269self->direction = FLIP_NONE;270}271272EncoreGoodEnd->decorations[E_END_ICECREAM_CONE]->position.y += EncoreGoodEnd->decorations[E_END_ICECREAM_CONE]->velocity.y;273EncoreGoodEnd->decorations[E_END_ICECREAM_CONE]->velocity.y += 0x3800;274275if (EncoreGoodEnd->decorations[E_END_ICECREAM_CONE]->position.y >= playerDecor->position.y) {276EncoreGoodEnd->decorations[E_END_ICECREAM_CONE]->visible = false;277278++playerDecor->animator.frameID;279playerDecor->animator.speed = 1;280}281}282283if (EncoreGoodEnd->decorations[E_END_ICECREAM_PINK]->visible) {284if (EncoreGoodEnd->decorations[E_END_ICECREAM_PINK]->velocity.y < 0) {285self->direction = FLIP_Y;286}287else {288EncoreGoodEnd->decorations[E_END_ICECREAM_PINK]->drawGroup = Zone->playerDrawGroup[1];289self->direction = FLIP_NONE;290}291292EncoreGoodEnd->decorations[E_END_ICECREAM_PINK]->position.y += EncoreGoodEnd->decorations[E_END_ICECREAM_PINK]->velocity.y;293EncoreGoodEnd->decorations[E_END_ICECREAM_PINK]->velocity.y += 0x3800;294295if (EncoreGoodEnd->decorations[E_END_ICECREAM_PINK]->position.y >= playerDecor->position.y) {296EncoreGoodEnd->decorations[E_END_ICECREAM_PINK]->visible = false;297298++playerDecor->animator.frameID;299playerDecor->animator.speed = 1;300}301}302303if (EncoreGoodEnd->decorations[E_END_ICECREAM_GREEN]->visible) {304if (EncoreGoodEnd->decorations[E_END_ICECREAM_GREEN]->velocity.y < 0) {305self->direction = FLIP_Y;306}307else {308EncoreGoodEnd->decorations[E_END_ICECREAM_GREEN]->drawGroup = Zone->playerDrawGroup[1];309self->direction = FLIP_NONE;310}311312EncoreGoodEnd->decorations[E_END_ICECREAM_GREEN]->position.y += EncoreGoodEnd->decorations[E_END_ICECREAM_GREEN]->velocity.y;313EncoreGoodEnd->decorations[E_END_ICECREAM_GREEN]->velocity.y += 0x3800;314315if (EncoreGoodEnd->decorations[E_END_ICECREAM_GREEN]->position.y >= playerDecor->position.y - 0x40000) {316EncoreGoodEnd->decorations[E_END_ICECREAM_GREEN]->visible = false;317318++playerDecor->animator.frameID;319playerDecor->animator.speed = 1;320}321}322323if (EncoreGoodEnd->decorations[E_END_ICECREAM_PINK2]->visible == 1) {324if (EncoreGoodEnd->decorations[E_END_ICECREAM_PINK2]->velocity.y < 0) {325self->direction = FLIP_Y;326}327else {328EncoreGoodEnd->decorations[E_END_ICECREAM_PINK2]->drawGroup = Zone->playerDrawGroup[1];329self->direction = FLIP_NONE;330}331332EncoreGoodEnd->decorations[E_END_ICECREAM_PINK2]->position.y += EncoreGoodEnd->decorations[E_END_ICECREAM_PINK2]->velocity.y;333EncoreGoodEnd->decorations[E_END_ICECREAM_PINK2]->velocity.y += 0x3800;334335if (EncoreGoodEnd->decorations[E_END_ICECREAM_PINK2]->position.y >= playerDecor->position.y - 0x80000) {336EncoreGoodEnd->decorations[E_END_ICECREAM_PINK2]->visible = false;337338++playerDecor->animator.frameID;339playerDecor->animator.speed = 1;340}341}342}343344bool32 EncoreGoodEnd_Cutscene_MoveToPlace(EntityCutsceneSeq *host)345{346RSDK_THIS(EncoreGoodEnd);347MANIA_GET_PLAYER(player1, player2, camera);348349if (!host->timer) {350player1->state = Player_State_Static;351player1->stateInput = StateMachine_None;352353CutsceneSeq_LockAllPlayerControl();354EncoreGoodEnd_SetupPlayer(player1->characterID);355EncoreGoodEnd_SetupPlayer(player2->characterID);356357camera->target = (Entity *)EncoreGoodEnd->decorations[E_END_SONIC];358self->position.y = EncoreGoodEnd->decorations[E_END_KING]->position.y;359360EncoreGoodEnd->decorations[E_END_KING]->position.y += 0x500000;361RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_SONICLAYDOWN, &EncoreGoodEnd->decorations[E_END_SONIC]->animator, true, 21);362363foreach_all(UICreditsText, label) { label->active = ACTIVE_NEVER; }364}365else if (host->timer == 120) {366player1->position.x = 0x300000;367player1->velocity.x = 0x30000;368player1->groundVel = 0x30000;369player1->drawGroup = Zone->playerDrawGroup[1];370player1->state = Player_State_Ground;371372if (player2->classID == Player->classID) {373player2->position.x = -0x800000;374player2->velocity.x = 0x30000;375player2->groundVel = 0x30000;376player2->drawGroup = Zone->playerDrawGroup[1];377player2->state = Player_State_Ground;378player2->stateInput = StateMachine_None;379}380}381else if (host->timer > 120 && player1->groundVel <= 0x18000) {382player1->state = EncoreGoodEnd_StatePlayer_MoveToPos;383if (player2->classID == Player->classID)384player2->state = EncoreGoodEnd_StatePlayer_MoveToPos;385386return true;387}388return false;389}390391bool32 EncoreGoodEnd_Cutscene_WaitForMovementFinish(EntityCutsceneSeq *host)392{393EntityPlayer *player1 = RSDK_GET_ENTITY(SLOT_PLAYER1, Player);394EntityPlayer *player2 = RSDK_GET_ENTITY(SLOT_PLAYER2, Player);395396return player1->state == Player_State_Static && (player2->state == Player_State_Static || player2->classID != Player->classID);397}398399bool32 EncoreGoodEnd_Cutscene_ClinkGlasses(EntityCutsceneSeq *host)400{401if (host->timer == 60) {402RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_KNUXCLINK, &EncoreGoodEnd->decorations[E_END_KNUX]->animator, true, 0);403RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_KNUXCLINKG, &EncoreGoodEnd->decorations[E_END_GLASSK]->animator, true, 0);404RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_MIGHTYCLINK, &EncoreGoodEnd->decorations[E_END_MIGHTY]->animator, true, 0);405RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_MIGHTYCLINKG, &EncoreGoodEnd->decorations[E_END_GLASSM]->animator, true, 0);406}407else if (host->timer == 120) {408RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_KNUXBREATHE, &EncoreGoodEnd->decorations[E_END_KNUX]->animator, true, 0);409RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_KNUXSITDOWNG, &EncoreGoodEnd->decorations[E_END_GLASSK]->animator, true, 0);410RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_MIGHTYBREATHE, &EncoreGoodEnd->decorations[E_END_MIGHTY]->animator, true, 0);411RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_MIGHTYSITDOWNG, &EncoreGoodEnd->decorations[E_END_GLASSM]->animator, true, 0);412}413else if (host->timer == 180) {414EncoreGoodEnd->decorations[E_END_KING]->velocity.y = -0x60000;415return true;416}417418return false;419}420421bool32 EncoreGoodEnd_Cutscene_KingAppear(EntityCutsceneSeq *host)422{423RSDK_THIS(EncoreGoodEnd);424425EntityDecoration *decor = EncoreGoodEnd->decorations[E_END_KING];426decor->position.y += decor->velocity.y;427decor->velocity.y += 0x3800;428429if (decor->velocity.y > 0) {430if (decor->position.y >= self->position.y) {431decor->position.y = self->position.y;432433RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_SONICSHOCKED, &EncoreGoodEnd->decorations[E_END_SONIC]->animator, true, 0);434RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_TAILSSHOCKED, &EncoreGoodEnd->decorations[E_END_TAILS]->animator, true, 0);435RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_KNUXSHOCKED, &EncoreGoodEnd->decorations[E_END_KNUX]->animator, true, 0);436RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_MIGHTYSHOCKED, &EncoreGoodEnd->decorations[E_END_MIGHTY]->animator, true, 0);437438EncoreGoodEnd->decorations[E_END_RAY]->direction = FLIP_NONE;439RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_RAYSHOCKED, &EncoreGoodEnd->decorations[E_END_RAY]->animator, true, 0);440RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_STOOL_STILL, &EncoreGoodEnd->decorations[E_END_STOOLT]->animator, false, 0);441RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_STOOL_STILL, &EncoreGoodEnd->decorations[E_END_STOOLR]->animator, false, 0);442RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_KNUXICECREAMSHOCK, &EncoreGoodEnd->decorations[E_END_GLASSK]->animator, true,4430);444445EncoreGoodEnd->decorations[E_END_GLASSK]->drawFX |= FX_SCALE;446EncoreGoodEnd->decorations[E_END_GLASSK]->position.x += 0x80000;447EncoreGoodEnd->decorations[E_END_GLASSK]->rotation = -32;448449RSDK.SetSpriteAnimation(Decoration->aniFrames, E_END_DECOR_MIGHTYICECREAMSHOCK, &EncoreGoodEnd->decorations[E_END_GLASSM]->animator, true,4500);451EncoreGoodEnd->decorations[E_END_GLASSM]->drawFX |= FX_SCALE;452EncoreGoodEnd->decorations[E_END_GLASSM]->position.x -= 0x80000;453EncoreGoodEnd->decorations[E_END_GLASSM]->rotation = 32;454455foreach_all(UICreditsText, label)456{457label->active = ACTIVE_NORMAL;458label->state = UICreditsText_State_SetupCharPos;459label->drawGroup = Zone->hudDrawGroup;460}461462EntityFXFade *fxFade = CREATE_ENTITY(FXFade, INT_TO_VOID(0xF0F0F0), self->position.x, self->position.y);463fxFade->speedIn = 256;464fxFade->speedOut = 64;465fxFade->drawGroup = Zone->objectDrawGroup[1];466RSDK.PlaySfx(EncoreGoodEnd->sfxSnap, false, 255);467return true;468}469}470471return false;472}473474bool32 EncoreGoodEnd_Cutscene_ThanksForPlaying(EntityCutsceneSeq *host)475{476RSDK_THIS(EncoreGoodEnd);477478if (host->timer < 22) {479foreach_active(Decoration, decor)480{481if (decor->type >= 25) {482decor->drawGroup = Zone->objectDrawGroup[1] + 1;483484if (decor->position.y >= self->position.y)485decor->position.y -= 0x20000;486else487decor->position.y += 0x20000;488}489}490491RSDK.SetActivePalette(0, 0, ScreenInfo->size.y);492RSDK.SetActivePalette(1, 2 * host->timer, ScreenInfo->size.y - 2 * host->timer);493}494495return host->timer == 240;496}497498bool32 EncoreGoodEnd_Cutscene_FinishCutscene(EntityCutsceneSeq *host)499{500if (API.CheckDLC(DLC_PLUS))501RSDK.SetScene("Presentation", "Encore Summary");502else503RSDK.SetScene("Presentation", "Menu");504505Zone_StartFadeOut(10, 0x000000);506Music_FadeOut(0.025);507508return true;509}510511void EncoreGoodEnd_Cutscene_SkipCB(void) { EncoreGoodEnd_Cutscene_FinishCutscene(NULL); }512513#if GAME_INCLUDE_EDITOR514void EncoreGoodEnd_EditorDraw(void) {}515516void EncoreGoodEnd_EditorLoad(void)517{518RSDK_ACTIVE_VAR(Decoration, type);519RSDK_ENUM_VAR("Stool", E_END_DECOR_STOOL);520RSDK_ENUM_VAR("Ice Cream (Pink)", E_END_DECOR_ICECREAM_PINK);521RSDK_ENUM_VAR("Ice Cream (Green)", E_END_DECOR_ICECREAM_GREEN);522RSDK_ENUM_VAR("Ice Cream (Cone)", E_END_DECOR_ICECREAM_CONE);523RSDK_ENUM_VAR("King", E_END_DECOR_KING);524RSDK_ENUM_VAR("Ray Spin", E_END_DECOR_RAYSPIN);525RSDK_ENUM_VAR("Ray Shocked", E_END_DECOR_RAYSHOCKED);526RSDK_ENUM_VAR("Sonic Lay Down", E_END_DECOR_SONICLAYDOWN);527RSDK_ENUM_VAR("Sonic Shocked", E_END_DECOR_SONICSHOCKED);528RSDK_ENUM_VAR("Knux Breathe", E_END_DECOR_KNUXBREATHE);529RSDK_ENUM_VAR("Knux Clink", E_END_DECOR_KNUXCLINK);530RSDK_ENUM_VAR("Knux Clink (Glass)", E_END_DECOR_KNUXCLINKG);531RSDK_ENUM_VAR("Knux Shocked", E_END_DECOR_KNUXSHOCKED);532RSDK_ENUM_VAR("Knux Sit Down", E_END_DECOR_KNUXSITDOWN);533RSDK_ENUM_VAR("Knux Sit Down (Glass)", E_END_DECOR_KNUXSITDOWNG);534RSDK_ENUM_VAR("Mighty Breathe", E_END_DECOR_MIGHTYBREATHE);535RSDK_ENUM_VAR("Mighty Clink", E_END_DECOR_MIGHTYCLINK);536RSDK_ENUM_VAR("Mighty Clink (Glass)", E_END_DECOR_MIGHTYCLINKG);537RSDK_ENUM_VAR("Mighty Sit Down", E_END_DECOR_MIGHTYSITDOWN);538RSDK_ENUM_VAR("Mighty Sit Down (Glass)", E_END_DECOR_MIGHTYSITDOWNG);539RSDK_ENUM_VAR("Mighty Shocked", E_END_DECOR_MIGHTYSHOCKED);540RSDK_ENUM_VAR("Tails Shocked", E_END_DECOR_TAILSSHOCKED);541RSDK_ENUM_VAR("Tails Spin", E_END_DECOR_TAILSSPIN);542RSDK_ENUM_VAR("Stool (Still)", E_END_DECOR_STOOL_STILL);543RSDK_ENUM_VAR("Knux Cream Shock", E_END_DECOR_KNUXICECREAMSHOCK);544RSDK_ENUM_VAR("Mighty Cream Shock", E_END_DECOR_MIGHTYICECREAMSHOCK);545RSDK_ENUM_VAR("Letterbox 1", E_END_DECOR_LETTERBOX1);546RSDK_ENUM_VAR("Letterbox 2", E_END_DECOR_LETTERBOX2);547}548#endif549550void EncoreGoodEnd_Serialize(void) { RSDK_EDITABLE_VAR(EncoreGoodEnd, VAR_VECTOR2, size); }551#endif552553554