From 4d38b8ed6efb0d6eefe930dd4b34e4ceabc416d9 Mon Sep 17 00:00:00 2001 From: cawtds <38510667+cawtds@users.noreply.github.com> Date: Tue, 24 Feb 2026 15:37:57 +0100 Subject: [PATCH] Refactor/sea gallop (#119) * add battle frontier option * update latin_small --- .../BattleFrontier_OutsideWest/scripts.inc | 55 ++-------------- data/maps/BirthIsland_Harbor/scripts.inc | 2 +- data/maps/NavelRock_Harbor/scripts.inc | 2 +- data/maps/VermilionCity/scripts.inc | 62 ++++++++++++++++-- graphics/fonts/latin_small.png | Bin 3285 -> 4621 bytes include/constants/flags.h | 2 +- include/constants/seagallop.h | 26 ++++---- src/script_menu.c | 13 +++- src/seagallop.c | 55 +++++++++------- src/text.c | 17 ++++- 10 files changed, 137 insertions(+), 97 deletions(-) diff --git a/data/maps/BattleFrontier_OutsideWest/scripts.inc b/data/maps/BattleFrontier_OutsideWest/scripts.inc index 7f7e6a52f..0ac2ddcaa 100644 --- a/data/maps/BattleFrontier_OutsideWest/scripts.inc +++ b/data/maps/BattleFrontier_OutsideWest/scripts.inc @@ -15,16 +15,12 @@ BattleFrontier_OutsideWest_EventScript_FerryAttendant:: goto_if_eq VAR_RESULT, FALSE, BattleFrontier_OutsideWest_EventScript_NoSSTicket message BattleFrontier_OutsideWest_Text_WhereWouldYouLikeToGo waitmessage - goto BattleFrontier_OutsideWest_EventScript_ChooseFerryDestination - end - -BattleFrontier_OutsideWest_EventScript_ChooseFerryDestination:: - multichoicedefault 18, 6, MULTI_SSTIDAL_BATTLE_FRONTIER, 2, FALSE + setvar VAR_0x8004, SEAGALLOP_NAVEL_ROCK + multichoice 20, 8, MULTICHOICE_SEAGALLOP_VERMILION, FALSE switch VAR_RESULT - case 0, BattleFrontier_OutsideWest_EventScript_FerryToSlateport - case 1, BattleFrontier_OutsideWest_EventScript_FerryToLilycove - case 2, BattleFrontier_OutsideWest_EventScript_CancelFerrySelect - case MULTI_B_PRESSED, BattleFrontier_OutsideWest_EventScript_CancelFerrySelect + case 0, EventScript_SailToVermilionCity + case 1, EventScript_CancelSail + case MULTI_B_PRESSED, EventScript_CancelSail end BattleFrontier_OutsideWest_EventScript_NoSSTicket:: @@ -32,47 +28,6 @@ BattleFrontier_OutsideWest_EventScript_NoSSTicket:: release end -BattleFrontier_OutsideWest_EventScript_FerryToSlateport:: - msgbox BattleFrontier_OutsideWest_Text_SlateportItIs, MSGBOX_YESNO - goto_if_eq VAR_RESULT, NO, BattleFrontier_OutsideWest_EventScript_ChooseNewFerryDestination - msgbox BattleFrontier_OutsideWest_Text_PleaseBoardFerry, MSGBOX_DEFAULT - call BattleFrontier_OutsideWest_EventScript_BoardFerry - warp MAP_VERMILION_CITY, 8, 11 - waitstate - release - end - -BattleFrontier_OutsideWest_EventScript_FerryToLilycove:: - msgbox BattleFrontier_OutsideWest_Text_LilycoveItIs, MSGBOX_YESNO - goto_if_eq VAR_RESULT, NO, BattleFrontier_OutsideWest_EventScript_ChooseNewFerryDestination - msgbox BattleFrontier_OutsideWest_Text_PleaseBoardFerry, MSGBOX_DEFAULT - call BattleFrontier_OutsideWest_EventScript_BoardFerry - warp MAP_VERMILION_CITY, 8, 11 - waitstate - release - end - -BattleFrontier_OutsideWest_EventScript_ChooseNewFerryDestination:: - message BattleFrontier_OutsideWest_Text_ThenWhereWouldYouLikeToGo - waitmessage - goto BattleFrontier_OutsideWest_EventScript_ChooseFerryDestination - end - -BattleFrontier_OutsideWest_EventScript_BoardFerry:: - closemessage - applymovement VAR_LAST_TALKED, Common_Movement_WalkInPlaceFasterDown - waitmovement 0 - delay 30 - hideobjectat LOCALID_FRONTIER_FERRY_ATTENDANT, MAP_BATTLE_FRONTIER_OUTSIDE_WEST - setvar VAR_0x8004, LOCALID_FRONTIER_SS_TIDAL - call Common_EventScript_FerryDepartIsland - return - -BattleFrontier_OutsideWest_EventScript_CancelFerrySelect:: - msgbox BattleFrontier_OutsideWest_Text_SailWithUsAnotherTime, MSGBOX_DEFAULT - release - end - BattleFrontier_OutsideWest_EventScript_BattleDomeSign:: msgbox BattleFrontier_OutsideWest_Text_BattleDomeSign, MSGBOX_SIGN end diff --git a/data/maps/BirthIsland_Harbor/scripts.inc b/data/maps/BirthIsland_Harbor/scripts.inc index 0d51e3e06..67c94065f 100644 --- a/data/maps/BirthIsland_Harbor/scripts.inc +++ b/data/maps/BirthIsland_Harbor/scripts.inc @@ -11,5 +11,5 @@ BirthIsland_Harbor_EventScript_Sailor:: switch VAR_RESULT case 0, EventScript_SailToVermilionCity case 1, EventScript_CancelSail - case 127, EventScript_CancelSail + case MULTI_B_PRESSED, EventScript_CancelSail end diff --git a/data/maps/NavelRock_Harbor/scripts.inc b/data/maps/NavelRock_Harbor/scripts.inc index 305f0556e..fe7bb2da3 100644 --- a/data/maps/NavelRock_Harbor/scripts.inc +++ b/data/maps/NavelRock_Harbor/scripts.inc @@ -11,5 +11,5 @@ NavelRock_Harbor_EventScript_Sailor:: switch VAR_RESULT case 0, EventScript_SailToVermilionCity case 1, EventScript_CancelSail - case 127, EventScript_CancelSail + case MULTI_B_PRESSED, EventScript_CancelSail end diff --git a/data/maps/VermilionCity/scripts.inc b/data/maps/VermilionCity/scripts.inc index 580560a5d..5fa0d0239 100644 --- a/data/maps/VermilionCity/scripts.inc +++ b/data/maps/VermilionCity/scripts.inc @@ -70,12 +70,58 @@ VermilionCity_EventScript_CheckHasAuroraTicket:: VermilionCity_EventScript_CheckSeagallopPresent:: setvar VAR_0x8004, SEAGALLOP_VERMILION_CITY + goto_if_set FLAG_BATTLE_FRONTIER_UNLOCKED, VermilionCity_EventScript_ChooseFrontierUnlocked goto_if_ge VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 5, VermilionCity_EventScript_ChooseSeagallopDestRainbowPass goto_if_ge VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 1, VermilionCity_EventScript_ChooseSeagallopDestTriPass msgbox VermilionCity_Text_TheShipSetSail release end +VermilionCity_EventScript_ChooseFrontierUnlocked:: + goto_if_questlog EventScript_ReleaseEnd + special QuestLog_CutRecording + message VermilionCity_Text_BoardSeagallopFerry + waitmessage + dynmultipush Seagallop_SeviiIslands, 0 + dynmultipush Seagallop_BattleFrontier, 1 + call VermilionCity_EventScript_CheckHasMysticTicket + call_if_eq VAR_RESULT, TRUE, VermilionCity_AddMysticTicket + call VermilionCity_EventScript_CheckHasAuroraTicket + call_if_eq VAR_RESULT, TRUE, VermilionCity_AddAuroraTicket + dynmultipush Seagallop_Cancel, 4 + dynmultistack 0, 0, FALSE, 5, FALSE, 0, NULL + switch VAR_RESULT + case 0, EventScript_SeviiDestinationsPage1 + case 1, EventScript_SailToBattleFrontier + case 2, EventScript_SailToNavelRock + case 3, EventScript_SailToBirthIsland + case 4, EventScript_CancelSail + case MULTI_B_PRESSED, EventScript_CancelSail + end + +VermilionCity_AddMysticTicket:: + dynmultipush Seagallop_NavelRock, 2 + return + +VermilionCity_AddAuroraTicket:: + dynmultipush Seagallop_BirthIsland, 3 + return + +Seagallop_SeviiIslands:: + .string "SEVII ISLANDS$" + +Seagallop_NavelRock:: + .string "NAVEL ROCK$" + +Seagallop_BirthIsland:: + .string "BIRTH ISLAND$" + +Seagallop_BattleFrontier:: + .string "BATTLE FRONTIER$" + +Seagallop_Cancel:: + .string "CANCEL$" + VermilionCity_EventScript_ChooseSeagallopDestRainbowPass:: goto_if_questlog EventScript_ReleaseEnd special QuestLog_CutRecording @@ -100,7 +146,7 @@ VermilionCity_EventScript_HasMysticTicket:: case 0, EventScript_SeviiDestinationsPage1 case 1, EventScript_SailToNavelRock case 2, EventScript_CancelSail - case 127, EventScript_CancelSail + case MULTI_B_PRESSED, EventScript_CancelSail end VermilionCity_EventScript_ShowMysticTicket:: @@ -117,7 +163,7 @@ VermilionCity_EventScript_HasAuroraTicket:: case 0, EventScript_SeviiDestinationsPage1 case 1, EventScript_SailToBirthIsland case 2, EventScript_CancelSail - case 127, EventScript_CancelSail + case MULTI_B_PRESSED, EventScript_CancelSail end VermilionCity_EventScript_ShowAuroraTicket:: @@ -136,7 +182,7 @@ VermilionCity_EventScript_HasMysticAndAuroraTickets:: case 1, EventScript_SailToNavelRock case 2, EventScript_SailToBirthIsland case 3, EventScript_CancelSail - case 127, EventScript_CancelSail + case MULTI_B_PRESSED, EventScript_CancelSail end EventScript_SailToNavelRock:: @@ -153,6 +199,13 @@ EventScript_SailToBirthIsland:: goto EventScript_SetSail end +EventScript_SailToBattleFrontier:: + msgbox VermilionCity_Text_Seagallop12Departing + setvar VAR_0x8004, SEAGALLOP_VERMILION_CITY + setvar VAR_0x8006, SEAGALLOP_BATTLE_FRONTIER + goto EventScript_SetSail + end + VermilionCity_EventScript_ChooseSeagallopDestTriPass:: message VermilionCity_Text_BoardSeagallopTriPass waitmessage @@ -163,7 +216,7 @@ VermilionCity_EventScript_ChooseSeagallopDestTriPass:: case 1, EventScript_SailToTwoIsland2 case 2, EventScript_SailToThreeIsland2 case 3, EventScript_CancelSail - case 127, EventScript_CancelSail + case MULTI_B_PRESSED, EventScript_CancelSail end @ Unreachable @@ -208,6 +261,7 @@ VermilionCity_EventScript_DontHaveSSTicket:: VermilionCity_EventScript_CheckSeagallopPresentTrigger:: setvar VAR_0x8004, SEAGALLOP_VERMILION_CITY + goto_if_set FLAG_BATTLE_FRONTIER_UNLOCKED, VermilionCity_EventScript_ChooseFrontierUnlocked goto_if_ge VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 5, VermilionCity_EventScript_ChooseSeagallopDestRainbowPass goto_if_ge VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 1, VermilionCity_EventScript_ChooseSeagallopDestTriPass msgbox VermilionCity_Text_TheShipSetSail diff --git a/graphics/fonts/latin_small.png b/graphics/fonts/latin_small.png index 7a79f23891d7306ba1ae0e0d64f7790d568632c8..31c4444dc4694fad3f6f0ea7d1edaeb3e3f822fa 100644 GIT binary patch literal 4621 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 Hmx%uW701uP literal 3285 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 TIXYbE00000NkvXXu0mjfw`?7G diff --git a/include/constants/flags.h b/include/constants/flags.h index a5aacaa74..2d3d8bde6 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -206,7 +206,7 @@ #define FLAG_HIDE_BATTLE_TOWER_MULTI_BATTLE_PARTNER_ALT_2 0x0BC #define FLAG_HIDE_BATTLE_FRONTIER_RECEPTION_GATE_SCOTT 0x0BD #define FLAG_CANCEL_BATTLE_ROOM_CHALLENGE 0x0BE -#define FLAG_0x0BF 0x0BF +#define FLAG_BATTLE_FRONTIER_UNLOCKED 0x0BF #define FLAG_0x0C0 0x0C0 #define FLAG_0x0C1 0x0C1 #define FLAG_0x0C2 0x0C2 diff --git a/include/constants/seagallop.h b/include/constants/seagallop.h index 68e847445..d6752c348 100644 --- a/include/constants/seagallop.h +++ b/include/constants/seagallop.h @@ -1,17 +1,21 @@ #ifndef GUARD_CONSTANTS_SEAGALLOP_H #define GUARD_CONSTANTS_SEAGALLOP_H -#define SEAGALLOP_VERMILION_CITY 0 -#define SEAGALLOP_ONE_ISLAND 1 -#define SEAGALLOP_TWO_ISLAND 2 -#define SEAGALLOP_THREE_ISLAND 3 -#define SEAGALLOP_FOUR_ISLAND 4 -#define SEAGALLOP_FIVE_ISLAND 5 -#define SEAGALLOP_SIX_ISLAND 6 -#define SEAGALLOP_SEVEN_ISLAND 7 -#define SEAGALLOP_CINNABAR_ISLAND 8 -#define SEAGALLOP_NAVEL_ROCK 9 -#define SEAGALLOP_BIRTH_ISLAND 10 +enum SeagallopLocation +{ + SEAGALLOP_VERMILION_CITY, + SEAGALLOP_ONE_ISLAND, + SEAGALLOP_TWO_ISLAND, + SEAGALLOP_THREE_ISLAND, + SEAGALLOP_FOUR_ISLAND, + SEAGALLOP_FIVE_ISLAND, + SEAGALLOP_SIX_ISLAND, + SEAGALLOP_SEVEN_ISLAND, + SEAGALLOP_CINNABAR_ISLAND, + SEAGALLOP_NAVEL_ROCK, + SEAGALLOP_BIRTH_ISLAND, + SEAGALLOP_BATTLE_FRONTIER, +}; #define SEAGALLOP_MORE 254 diff --git a/src/script_menu.c b/src/script_menu.c index bed5f0d3e..6c7ad6bd3 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -1168,6 +1168,16 @@ static void MultichoiceDynamic_MoveCursor(s32 itemIndex, bool8 onInit, struct Li } } +u32 GetMultiChoiceWindowHeight(u8 argc, u8 maxBeforeScroll) +{ + u32 windowHeight; + u8 numItems = argc < maxBeforeScroll ? argc : maxBeforeScroll; + + windowHeight = numItems * GetFontAttribute(sScriptableListMenuTemplate.fontId, FONTATTR_MAX_LETTER_HEIGHT); + + return (windowHeight + 7) / 8; +} + static void DrawMultichoiceMenuDynamic(u8 left, u8 top, u8 argc, struct ListMenuItem *items, bool8 ignoreBPress, u32 initialRow, u8 maxBeforeScroll, u32 callbackSet) { u32 i; @@ -1183,7 +1193,8 @@ static void DrawMultichoiceMenuDynamic(u8 left, u8 top, u8 argc, struct ListMenu width = DisplayTextAndGetWidth(items[i].name, width); } LoadMessageBoxAndBorderGfx(); - windowHeight = (argc < maxBeforeScroll) ? argc * 2 : maxBeforeScroll * 2; + windowHeight = GetMultiChoiceWindowHeight(argc, maxBeforeScroll); + newWidth = ConvertPixelWidthToTileWidth(width); left = ScriptMenu_AdjustLeftCoordFromWidth(left, newWidth); windowId = CreateWindowFromRect(left, top, newWidth, windowHeight); diff --git a/src/seagallop.c b/src/seagallop.c index 8d00eadaf..4e17f8562 100644 --- a/src/seagallop.c +++ b/src/seagallop.c @@ -61,17 +61,18 @@ static const struct BgTemplate sBGTemplates[] = { static const s8 sSeag[][4] = { // Map X Y - [SEAGALLOP_VERMILION_CITY] = {MAP(MAP_VERMILION_CITY), 0x17, 0x20}, - [SEAGALLOP_ONE_ISLAND] = {MAP(MAP_ONE_ISLAND_HARBOR), 0x08, 0x05}, - [SEAGALLOP_TWO_ISLAND] = {MAP(MAP_TWO_ISLAND_HARBOR), 0x08, 0x05}, - [SEAGALLOP_THREE_ISLAND] = {MAP(MAP_THREE_ISLAND_HARBOR), 0x08, 0x05}, - [SEAGALLOP_FOUR_ISLAND] = {MAP(MAP_FOUR_ISLAND_HARBOR), 0x08, 0x05}, - [SEAGALLOP_FIVE_ISLAND] = {MAP(MAP_FIVE_ISLAND_HARBOR), 0x08, 0x05}, - [SEAGALLOP_SIX_ISLAND] = {MAP(MAP_SIX_ISLAND_HARBOR), 0x08, 0x05}, - [SEAGALLOP_SEVEN_ISLAND] = {MAP(MAP_SEVEN_ISLAND_HARBOR), 0x08, 0x05}, - [SEAGALLOP_CINNABAR_ISLAND] = {MAP(MAP_CINNABAR_ISLAND), 0x15, 0x07}, - [SEAGALLOP_NAVEL_ROCK] = {MAP(MAP_NAVEL_ROCK_HARBOR), 0x08, 0x05}, - [SEAGALLOP_BIRTH_ISLAND] = {MAP(MAP_BIRTH_ISLAND_HARBOR), 0x08, 0x05} + [SEAGALLOP_VERMILION_CITY] = {MAP(MAP_VERMILION_CITY), 23, 32}, + [SEAGALLOP_ONE_ISLAND] = {MAP(MAP_ONE_ISLAND_HARBOR), 8, 5}, + [SEAGALLOP_TWO_ISLAND] = {MAP(MAP_TWO_ISLAND_HARBOR), 8, 5}, + [SEAGALLOP_THREE_ISLAND] = {MAP(MAP_THREE_ISLAND_HARBOR), 8, 5}, + [SEAGALLOP_FOUR_ISLAND] = {MAP(MAP_FOUR_ISLAND_HARBOR), 8, 5}, + [SEAGALLOP_FIVE_ISLAND] = {MAP(MAP_FIVE_ISLAND_HARBOR), 8, 5}, + [SEAGALLOP_SIX_ISLAND] = {MAP(MAP_SIX_ISLAND_HARBOR), 8, 5}, + [SEAGALLOP_SEVEN_ISLAND] = {MAP(MAP_SEVEN_ISLAND_HARBOR), 8, 5}, + [SEAGALLOP_CINNABAR_ISLAND] = {MAP(MAP_CINNABAR_ISLAND), 21, 7}, + [SEAGALLOP_NAVEL_ROCK] = {MAP(MAP_NAVEL_ROCK_HARBOR), 8, 5}, + [SEAGALLOP_BIRTH_ISLAND] = {MAP(MAP_BIRTH_ISLAND_HARBOR), 8, 5}, + [SEAGALLOP_BATTLE_FRONTIER] = {MAP(MAP_BATTLE_FRONTIER_OUTSIDE_WEST), 20, 68}, }; // Bitpacked array. In the commented section, right-most bit is the @@ -95,7 +96,8 @@ static const u16 sTravelDirectionMatrix[] = { [SEAGALLOP_SEVEN_ISLAND] = 0x440, // 10001000000 [SEAGALLOP_CINNABAR_ISLAND] = 0x7ff, // 11111111111 [SEAGALLOP_NAVEL_ROCK] = 0x6e0, // 11011100000 - [SEAGALLOP_BIRTH_ISLAND] = 0x000 // 00000000000 + [SEAGALLOP_BIRTH_ISLAND] = 0x000, // 00000000000 + [SEAGALLOP_BATTLE_FRONTIER] = 0x000, // 00000000000 }; static const union AnimCmd sSpriteAnims_Ferry_WB[] = { @@ -470,23 +472,26 @@ u8 GetSeagallopNumber(void) if (originId == SEAGALLOP_BIRTH_ISLAND || destId == SEAGALLOP_BIRTH_ISLAND) return 12; - if ((originId == SEAGALLOP_ONE_ISLAND - || originId == SEAGALLOP_TWO_ISLAND - || originId == SEAGALLOP_THREE_ISLAND) - && (destId == SEAGALLOP_ONE_ISLAND - || destId == SEAGALLOP_TWO_ISLAND + if (originId == SEAGALLOP_BATTLE_FRONTIER || destId == SEAGALLOP_BATTLE_FRONTIER) + return 14; + + if ((originId == SEAGALLOP_ONE_ISLAND + || originId == SEAGALLOP_TWO_ISLAND + || originId == SEAGALLOP_THREE_ISLAND) + && (destId == SEAGALLOP_ONE_ISLAND + || destId == SEAGALLOP_TWO_ISLAND || destId == SEAGALLOP_THREE_ISLAND)) return 2; - if ((originId == SEAGALLOP_FOUR_ISLAND - || originId == SEAGALLOP_FIVE_ISLAND) - && (destId == SEAGALLOP_FOUR_ISLAND + if ((originId == SEAGALLOP_FOUR_ISLAND + || originId == SEAGALLOP_FIVE_ISLAND) + && (destId == SEAGALLOP_FOUR_ISLAND || destId == SEAGALLOP_FIVE_ISLAND)) return 3; - if ((originId == SEAGALLOP_SIX_ISLAND - || originId == SEAGALLOP_SEVEN_ISLAND) - && (destId == SEAGALLOP_SIX_ISLAND + if ((originId == SEAGALLOP_SIX_ISLAND + || originId == SEAGALLOP_SEVEN_ISLAND) + && (destId == SEAGALLOP_SIX_ISLAND || destId == SEAGALLOP_SEVEN_ISLAND)) return 5; @@ -495,8 +500,8 @@ u8 GetSeagallopNumber(void) bool8 IsPlayerLeftOfVermilionSailor(void) { - if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_VERMILION_CITY) - && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_VERMILION_CITY) + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAP_VERMILION_CITY) + && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAP_VERMILION_CITY) && gSaveBlock1Ptr->pos.x < 24) return TRUE; diff --git a/src/text.c b/src/text.c index c2db973e5..0d27532d8 100644 --- a/src/text.c +++ b/src/text.c @@ -2255,10 +2255,21 @@ void DecompressGlyph_Small(u16 glyphId, bool32 isJapanese) } else { - glyphs = gFontSmallLatinGlyphs + (0x10 * glyphId); - DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop); - DecompressGlyphTile(glyphs + 0x8, gCurGlyph.gfxBufferBottom); + glyphs = gFontSmallLatinGlyphs + (0x20 * glyphId); gCurGlyph.width = gFontSmallLatinGlyphWidths[glyphId]; + if (gCurGlyph.width <= 8) + { + DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop); + DecompressGlyphTile(glyphs + 0x10, gCurGlyph.gfxBufferBottom); + } + else + { + DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop); + DecompressGlyphTile(glyphs + 0x8, gCurGlyph.gfxBufferTop + 8); + DecompressGlyphTile(glyphs + 0x10, gCurGlyph.gfxBufferBottom); + DecompressGlyphTile(glyphs + 0x18, gCurGlyph.gfxBufferBottom + 8); + } + gCurGlyph.height = 13; } }