diff --git a/data/event_scripts.s b/data/event_scripts.s index 3b360926e..38294f0d1 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -1100,3 +1100,5 @@ Common_EventScript_LegendaryFlewAway:: .include "data/maps/Route117North/scripts.inc" .include "data/maps/Route117South/scripts.inc" + + .include "data/maps/Route117South_PokeBreedersHouse/scripts.inc" diff --git a/data/layouts/Route117/map.bin b/data/layouts/Route117/map.bin index f2215df91..f44861787 100644 --- a/data/layouts/Route117/map.bin +++ b/data/layouts/Route117/map.bin @@ -7,4 +7,4 @@ 2¸¡¡¡º02000000000000000000000000000IIIIIIIHI0000IJ0111111100000Ì¡º200011111111111111100000000002202020200000000 1!1)1)1)1)1*1000000000011!1!1!1)1x2y2x2y2x2y2x2y2!1!1!111000000002200202011111111!1"1000000000011111!1!1!1!1*10ÖÕÔÕÔÕÔ×(1)1!1!1!11110000022020202 !!!!!!!!1"100°±² 20000(1)1!1!1!1!1!1!1*10Î1óòóòóòóòÏ10(1!1!1!1)1*10000022200000(1)1)1)1)1)1)1)1)1*100¸¡Â²200000(1)1!1!1!1"100ÖÕÔÕÔÕÔÕÔ×00 1!1*1000000020202000000000000000¸¡¡Â±²000000(1!1!1"100ÜÝäåäåäòóç0 1"100000000II@@@@II8II000II:0 0 0¸¡¡¡¡º0200000 1!1!110ÔÕK1L5L5L5M1ÔÕ001!1"1000000ÆÆ00ÆÇÆÆ00@22 22 222B 0 0 0¸¡¡¡¡Â±²0 0 0 00(1!1!1"10æç11111äç00 1!1*1000ÆÆÆÆÆ0ÇÆÆÆÆÆÆ@222 22 22B 0 0 0¸¡¡¡¡¡¡º 0 0 0 0 00 1!1!1100000000001!1"100ÆÆÆÆÆÆÆÆÆÆÆÆÆÆÆ@2222 22 -2B 0 0 0¸¡¡¡¡¡¡º 0 0 0 0 0 0(1!1!1!11111111111!1!1*100ÆÆÆÆÆÆÆÆÆÆH0IIIIIIJ@@@¸¡¡¡¡¡¡º%0%0 0 0 0 0 0(1)1)1)1)1)1)1)1!1!1)1)1)1)1*100ÆÆÆÆÆÆÆÆÇÇÇ00000000000000ÆÆÆ¸¡¡¡¡¡¡ºÆÆ%0%0 0 0 000000000 1"1000000ÆÆÆÆÆÆÆÆÆÆÆÆÆ0ÆÆÆÆÆ0ÆÆÆÆÆ0ÆÆÆ¸¡¡¡¡¡¡ºÆÆÆÆ%0%0%000000000 1"100000ÆÆÆÆÆÇÇÇÇÇ \ No newline at end of file +2B 0 0 0¸¡¡¡¡¡¡º 0 0 0 0 0 0(1!1!1!11111111111!1!1*100ÆÆÆÆÆÆÆÆÆÆH0IIIIIIJ@@@¸¡¡¡¡¡¡º%0%0 0 0 0 0 0(1)1)1)1)1)1)1)1)1)1)1!1!1)1*100ÆÆÆÆÆÆÆÆÇÇÇ00000000000000ÆÆÆ¸¡¡¡¡¡¡ºÆÆ%0%0 0 0 000000000000 1"1000ÆÆÆÆÆÆÆÆÆÆÆÆÆ0ÆÆÆÆÆ0ÆÆÆÆÆ0ÆÆÆ¸¡¡¡¡¡¡ºÆÆÆÆ%0%0%000000000000 1"100ÆÆÆÆÆÇÇÇÇÇ \ No newline at end of file diff --git a/data/layouts/Route117South/map.bin b/data/layouts/Route117South/map.bin index 78fccfb30..10bc78830 100644 --- a/data/layouts/Route117South/map.bin +++ b/data/layouts/Route117South/map.bin @@ -1 +1 @@ -¸¡¡¡¡¡¡ºÆÆÆÆÆÆÆÆÆÆÆÆ00 1"1ÇÇÇÇÇÇÇÇǸ¡¡¡¡¡¡Â±±±²ÆÆÆÆÆÆÆÆÆÆÆÆ2 1"100ÇÇÇ000Ǹ¡¡¡¡¡¡¡¡¡¡ºÆÆÆÆ00 1"1 2000000000¸-¡¡¡¡¡¡¡¡¡ºÆÆÆ000Î1Ï100000 1"1000000€‘‘‘Ç0000Ƹ¡¡¡¡¡¡¡¡ºÆÆ0000Ö×00001!1"1Î1Ï10000ˆ000000ÆÆ¸¡¡¡¡¡¡¡¡º0ÆÆ0000äå0001!1!1*1Ö×0000ˆÎ1Ï100ÇÇÇÆÆ¸¡¡¡¡¡¡¡¡º0ÆÆÆ0000000 1!1*10Þß0022ˆÖ×00ÆÆ¸¡¡¡¡¡¡¡¡º00ÆÆÆ2000000 1"100ÔÕ0022ˆäå0ƒ2„2„2„2Æ000¸¡¡¡¡¡º 000000000 1"100äå0000ˆ000‹ŒŒŒÆ 0 0 00¸¡¡¡¡¡º 0 00000001111!1!111111111²000 ¤¡£Æ 0 0 0 0¸¡¡¡¡¡º 0 0 002200 1!1)1)1)1)1)1)1)1)1)1)1!1!1111¨¬©«Æ 0 0 0 0¸¡¡¡¡¡º 0 0 002201!1"10000000000(1)1)1!1!111120Æ 0 0 0 0¸¡¡¡¡¡º 0 000001!1!1*1000220000000º(1)1)1)1*100Æ00 0 0¸¡¡¡¡¡º 000011!1!1*100Î1Ï1000000220ˆ000000ÇÆÆÆ0000000000011!1!1)1*1200Ö×000000220ˆ222222ÇÆÆÆÆ0000111111!1!1)1*100000äå000200000ˆ222222ÇÆÆÆÆÆÆÆ0(1)1)1)1)1)1)1*1000000000000000000�‘‘‘‘‘‘ÇÆÆÆÆÆÆÆÆ0000 20000000000000ÆÇÆÇÆÇÆÇ0000000ÇÆÆÆÆÆÆÆÆÆÇÆÇ000ÆÇÆÇ00ÆÇÆÇÆÇÆÇÆÇÆÇÆÇ00ÆÇÆÇÆÆÆÆÆÆÆÆÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇ \ No newline at end of file +¸¡¡¡¡¡¡ºÆÆÆÆÆÆÆÆÆÆÆÆ00 1"1ÇÇÇÇǸ¡¡¡¡¡¡Â±±±²ÆÆÆÆÆÆÆÆÆÆÆÆ2 1"1000þ00000Ǹ¡¡¡¡¡¡¡¡¡¡ºÆÆÆÆ00 1"1 200000000000¸-¡¡¡¡¡¡¡¡¡ºÆÆÆ000Î1Ï100000 1"1000000€‘‘‘Ç0000Ƹ¡¡¡¡¡¡¡¡ºÆÆ0000Ö×00001!1"1Î1Ï10000ˆ000000ÆÆ¸¡¡¡¡¡¡¡¡º0ÆÆ0000äå0001!1!1*1Ö×0000ˆÎ1Ï100ÇÇÇÆÆ¸¡¡¡¡¡¡¡¡º0ÆÆÆ0000000 1!1*10Þß0022ˆÖ×00ÆÆ¸¡¡¡¡¡¡¡¡º00ÆÆÆ2000000 1"100ÔÕ0022ˆäå0ƒ2„2„2„2Æ000¸¡¡¡¡¡º 000000000 1"100äå0000ˆ000‹ŒŒŒÆ 0 0 00¸¡¡¡¡¡º 0 00000001111!1!111111111²000 ¤¡£Æ 0 0 0 0¸¡¡¡¡¡º 0 0 002200 1!1)1)1)1)1)1)1)1)1)1)1!1!1111¨¬2©«Æ 0 0 0 0¸¡¡¡¡¡º 0 0 002201!1"10000000000(1)1)1!1!111120Æ 0 0 0 0¸¡¡¡¡¡º 0 000001!1!1*1000220000000º(1)1)1)1*100Æ00 0 0¸¡¡¡¡¡º 000011!1!1*100Î1Ï1000000220ˆ000000ÇÆÆÆ0000000000011!1!1)1*1200Ö×000000220ˆ222222ÇÆÆÆÆ0000111111!1!1)1*100000äå000200000ˆ2222222ÇÆÆÆÆÆÆÆ0(1)1)1)1)1)1)1*1000000000000000000�‘‘‘‘‘‘ÇÆÆÆÆÆÆÆÆ0000 20000000000000ÆÇÆÇÆÇÆÇ0000000ÇÆÆÆÆÆÆÆÆÆÇÆÇ000ÆÇÆÇ00ÆÇÆÇÆÇÆÇÆÇÆÇÆÇ00ÆÇÆÇÆÆÆÆÆÆÆÆÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇÆÇ \ No newline at end of file diff --git a/data/layouts/Route117South_PokeBreedersHouse/border.bin b/data/layouts/Route117South_PokeBreedersHouse/border.bin new file mode 100644 index 000000000..f496f458e Binary files /dev/null and b/data/layouts/Route117South_PokeBreedersHouse/border.bin differ diff --git a/data/layouts/Route117South_PokeBreedersHouse/map.bin b/data/layouts/Route117South_PokeBreedersHouse/map.bin new file mode 100644 index 000000000..812a0922f --- /dev/null +++ b/data/layouts/Route117South_PokeBreedersHouse/map.bin @@ -0,0 +1 @@ +°±²¤¥¸¹º˜$2$2t2u2˜ˆ2‰2Š282$2$2Y2)2)2)2)2)2)2)2)2)2)2)2!2)2)2)2)2)2)2D2NOD2)2!2)2)2)2)2)2)2D2VWD2)2Y2)2)2)2)2)2)2)2)2)2)2)2 333333333333#333322333333 \ No newline at end of file diff --git a/data/layouts/layouts.json b/data/layouts/layouts.json index dadcc3aa4..d9f384e0d 100644 --- a/data/layouts/layouts.json +++ b/data/layouts/layouts.json @@ -4610,6 +4610,16 @@ "secondary_tileset": "gTileset_Mauville", "border_filepath": "data/layouts/Route117South/border.bin", "blockdata_filepath": "data/layouts/Route117South/map.bin" + }, + { + "id": "LAYOUT_ROUTE117SOUTH_POKE_BREEDERS_HOUSE", + "name": "Route117South_PokeBreedersHouse_Layout", + "width": 12, + "height": 9, + "primary_tileset": "gTileset_Building", + "secondary_tileset": "gTileset_GenericBuilding", + "border_filepath": "data/layouts/Route117South_PokeBreedersHouse/border.bin", + "blockdata_filepath": "data/layouts/Route117South_PokeBreedersHouse/map.bin" } ] } diff --git a/data/maps/Route117South/map.json b/data/maps/Route117South/map.json index a09300c08..e03240f71 100644 --- a/data/maps/Route117South/map.json +++ b/data/maps/Route117South/map.json @@ -30,7 +30,7 @@ "movement_range_y": 0, "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", - "script": "NULL", + "script": "Route117South_EventScript_PondMan", "flag": "0" }, { @@ -64,12 +64,12 @@ "x": 39, "y": 15, "elevation": 0, - "movement_type": "MOVEMENT_TYPE_NONE", - "movement_range_x": 0, - "movement_range_y": 0, + "movement_type": "MOVEMENT_TYPE_WANDER_AROUND", + "movement_range_x": 4, + "movement_range_y": 4, "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", - "script": "NULL", + "script": "Route117South_EventScript_Azurill", "flag": "0" }, { @@ -82,7 +82,7 @@ "movement_range_y": 0, "trainer_type": "TRAINER_TYPE_NONE", "trainer_sight_or_berry_tree_id": "0", - "script": "NULL", + "script": "Route117South_EventScript_Abra", "flag": "0" }, { @@ -97,10 +97,29 @@ "trainer_sight_or_berry_tree_id": "3", "script": "Route117South_EventScript_Philis", "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL", + "x": 35, + "y": 1, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_NONE", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "Route117South_EventScript_ItemRareCandy", + "flag": "FLAG_ITEM_ROUTE_117South_RARECANDY" } ], "warp_events": [ - + { + "x": 39, + "y": 10, + "elevation": 0, + "dest_map": "MAP_ROUTE117SOUTH_POKE_BREEDERS_HOUSE", + "dest_warp_id": "0" + } ], "coord_events": [ diff --git a/data/maps/Route117South/scripts.inc b/data/maps/Route117South/scripts.inc index 8ad1f1696..7ccf69b57 100644 --- a/data/maps/Route117South/scripts.inc +++ b/data/maps/Route117South/scripts.inc @@ -21,7 +21,7 @@ Route117South_Text_MarikaIntro: .string "together.$" Route117South_Text_MarikaDefeat: - .string "We lost?!?.$" + .string "We lost?!?$" Route117South_Text_MarikaPostBattle: .string "Battling together really tests our bond.$" @@ -33,17 +33,77 @@ Route117South_EventScript_Marika:: Route117South_Text_MartinaIntro: - .string "Me and my girlfriend always battle\n" - .string "together.$" + .string "Nothing can stop us when were together!$" Route117South_Text_MartinaDefeat: .string "We lost?!?.$" Route117South_Text_MartinaPostBattle: - .string "Battling together really tests our bond.$" + .string "This wasn't a stop, just a road bump.$" Route117South_EventScript_Martina:: trainerbattle_single TRAINER_MARTINA, Route117South_Text_MartinaIntro, Route117South_Text_MartinaDefeat msgbox Route117South_Text_MartinaPostBattle, MSGBOX_AUTOCLOSE end +Route117South_Text_PondMan: + .string "I used to work at the POKéMON Daycare.\p" + .string "I never did figure out where those eggs\n" + .string "were comming from...\p" + .string "I'm convienced that POKéMON are not real\n" + .string "creatures. They must be manufactured\l" + .string "in a lab somewhere.$" + +Route117South_EventScript_PondMan:: + msgbox Route117South_Text_PondMan, MSGBOX_NPC + end + +Route117South_EventScript_Azurill:: + playmoncry SPECIES_AZURILL, 0 + waitmoncry + end + +Route117South_EventScript_Abra:: + playmoncry SPECIES_ABRA, 0 + waitmoncry + fadescreen FADE_FROM_WHITE + random 7 + call_if_eq VAR_RESULT, 0, Route117South_Abra0 + call_if_eq VAR_RESULT, 1, Route117South_Abra1 + call_if_eq VAR_RESULT, 2, Route117South_Abra2 + call_if_eq VAR_RESULT, 3, Route117South_Abra3 + call_if_eq VAR_RESULT, 4, Route117South_Abra4 + call_if_eq VAR_RESULT, 5, Route117South_Abra5 + call_if_eq VAR_RESULT, 6, Route117South_Abra5 + //setobjectxy 5, 25, 12 + //showobjectat 5, MAP_ROUTE117SOUTH + //addobject 5 + end + +Route117South_Abra0:: + setobjectxy 5, 17, 11 + end + +Route117South_Abra1:: + setobjectxy 5, 25, 12 + end + +Route117South_Abra2:: + setobjectxy 5, 35, 15 + end + +Route117South_Abra3:: + setobjectxy 5, 2, 8 + end + +Route117South_Abra4:: + setobjectxy 5, 35, 4 + end + +Route117South_Abra5:: + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_ExclamationMark + waitmovement 0 + warp MAP_ROUTE117SOUTH, 40, 3 + end + + diff --git a/data/maps/Route117South_PokeBreedersHouse/map.json b/data/maps/Route117South_PokeBreedersHouse/map.json new file mode 100644 index 000000000..38d565fc0 --- /dev/null +++ b/data/maps/Route117South_PokeBreedersHouse/map.json @@ -0,0 +1,92 @@ +{ + "id": "MAP_ROUTE117SOUTH_POKE_BREEDERS_HOUSE", + "name": "Route117South_PokeBreedersHouse", + "layout": "LAYOUT_ROUTE117SOUTH_POKE_BREEDERS_HOUSE", + "music": "MUS_ROUTE110", + "region_map_section": "MAPSEC_ROUTE_117", + "requires_flash": false, + "weather": "WEATHER_NONE", + "map_type": "MAP_TYPE_INDOOR", + "allow_cycling": false, + "allow_escaping": false, + "allow_running": true, + "show_map_name": false, + "battle_scene": "MAP_BATTLE_SCENE_NORMAL", + "connections": 0, + "object_events": [ + { + "graphics_id": "OBJ_EVENT_GFX_OLD_WOMAN", + "x": 7, + "y": 4, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_FACE_RIGHT", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "Route117PokeBreedersHouse_EventScript_oldwoman", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_CHANSEY", + "x": 10, + "y": 4, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_FACE_DOWN_UP_AND_LEFT", + "movement_range_x": 1, + "movement_range_y": 1, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "Route117PokeBreedersHouse_EventScript_chansey", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_MAGBY", + "x": 3, + "y": 4, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_WANDER_AROUND", + "movement_range_x": 3, + "movement_range_y": 3, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "Route117PokeBreedersHouse_EventScript_magby", + "flag": "0" + }, + { + "graphics_id": "OBJ_EVENT_GFX_OLD_MAN", + "x": 9, + "y": 2, + "elevation": 0, + "movement_type": "MOVEMENT_TYPE_FACE_UP", + "movement_range_x": 0, + "movement_range_y": 0, + "trainer_type": "TRAINER_TYPE_NONE", + "trainer_sight_or_berry_tree_id": "0", + "script": "Route117PokeBreedersHouse_EventScript_oldman", + "flag": "0" + } + ], + "warp_events": [ + { + "x": 4, + "y": 8, + "elevation": 0, + "dest_map": "MAP_ROUTE117SOUTH", + "dest_warp_id": "0" + }, + { + "x": 5, + "y": 8, + "elevation": 0, + "dest_map": "MAP_ROUTE117SOUTH", + "dest_warp_id": "0" + } + ], + "coord_events": [ + + ], + "bg_events": [ + + ] +} diff --git a/data/maps/Route117South_PokeBreedersHouse/scripts.inc b/data/maps/Route117South_PokeBreedersHouse/scripts.inc new file mode 100644 index 000000000..c16f8bb46 --- /dev/null +++ b/data/maps/Route117South_PokeBreedersHouse/scripts.inc @@ -0,0 +1,145 @@ +Route117South_PokeBreedersHouse_MapScripts:: + .byte 0 + + +Route117PokeBreedersHouse_text_oldman: + .string "First I can't hear anything anymore.\n" + .string "Then I can't see anything anymore.\p" + .string "How is an oldman supposed to get his\n" + .string "entertainment these days?$" + +Route117PokeBreedersHouse_EventScript_oldman:: + msgbox Route117PokeBreedersHouse_text_oldman, MSGBOX_NPC + end + +Route117PokeBreedersHouse_EventScript_magby:: + playmoncry SPECIES_MAGBY, 0 + waitmoncry + setflag FLAG_BEAT_ESTHER + end + +Route117PokeBreedersHouse_text_chansey: + .string "CHANSEY is trying to give you something.\n" + .string "Do you want to take it?$" + +Route117PokeBreedersHouse_text_chanseySad: + .string "It looks disheartened...$" + +Route117PokeBreedersHouse_EventScript_chansey:: + lock + faceplayer + playmoncry SPECIES_CHANSEY, 0 + waitmoncry + release + goto_if_set FLAG_GOT_LUCKY_EGG, Route117PokeBreedersHouse_EventScript_chansey_noitem + msgbox Route117PokeBreedersHouse_text_chansey, MSGBOX_YESNO + goto_if_eq VAR_RESULT, YES, Route117PokeBreedersHouse_EventScript_chanseyItem + msgbox Route117PokeBreedersHouse_text_chanseySad, MSGBOX_NPC + end + +Route117PokeBreedersHouse_text_chansey_noitem: + .string "CHANSEY is happily humming along.$" + end + +Route117PokeBreedersHouse_EventScript_chansey_noitem:: + msgbox Route117PokeBreedersHouse_text_chansey_noitem, MSGBOX_NPC + end + +Route117PokeBreedersHouse_text_chansey_nospace: + .string "Your BAG is full.$" + +Route117PokeBreedersHouse_EventScript_chansey_nospace:: + msgbox Route117PokeBreedersHouse_text_chansey_nospace MSGBOX_NPC + end + +Route117PokeBreedersHouse_EventScript_chanseyItem:: + checkitemspace ITEM_LUCKY_EGG, 1 + call_if_eq VAR_RESULT, FALSE, Route117PokeBreedersHouse_EventScript_chansey_nospace + giveitem ITEM_LUCKY_EGG + setflag FLAG_GOT_LUCKY_EGG + msgbox Route117PokeBreedersHouse_text_chansey_noitem, MSGBOX_NPC + end + + +Route117PokeBreedersHouse_text_oldwoman: + .string "Oh, I can see the glint in your eyes.\p" + .string "Yes, yes you've got the look.$" + +Route117PokeBreedersHouse_text_oldwoman_egg: + .string "Aha, I have an idea.\p" + .string "I used to be quite the POKéMON Breeder\n" + .string "you know.\p" + .string "I even recently recieved this\n" + .string "POKéMON Egg from an old friend of mine.\p" + .string "If you can beat me in a POKéMON battle\n" + .string "I will give you this egg.\p" + .string "But don't think for a second that I will\n" + .string "go easy on you.$" + +Route117PokeBreedersHouse_text_oldwoman_battle: + .string "What do you say, will you battle me?$" + + +Route117PokeBreedersHouse_text_oldwoman_battle_no: + .string "That's too bad... let me know if you\n" + .string "change you mind.$" + +Route117PokeBreedersHouse_EventScript_oldwoman:: + goto_if_set FLAG_BEAT_ESTHER, Route117PokeBreedersHouse_EventScript_oldwoman_post + msgbox Route117PokeBreedersHouse_text_oldwoman, MSGBOX_NPC + playse SE_PIN + applymovement 1, Common_Movement_ExclamationMark + waitmovement 0 + delay 30 + msgbox Route117PokeBreedersHouse_text_oldwoman_egg, MSGBOX_NPC + msgbox Route117PokeBreedersHouse_text_oldwoman_battle, MSGBOX_YESNO + goto_if_eq VAR_RESULT, YES, Route117PokeBreedersHouse_EventScript_oldman_battle + msgbox Route117PokeBreedersHouse_text_oldwoman_battle_no, MSGBOX_NPC + end + +Route117PokeBreedersHouse_text_oldwoman_battle_yes: + .string "Don't hold back!$" + +Route117PokeBreedersHouse_text_esther_defeat: + .string "Ah, the memories.$" + +Route117PokeBreedersHouse_EventScript_oldman_battle:: + trainerbattle_single TRAINER_ESTHER, Route117PokeBreedersHouse_text_oldwoman_battle_yes, Route117PokeBreedersHouse_text_esther_defeat, Route117PokeBreedersHouse_EventScript_oldwoman_giveegg + end + +Route117PokeBreedersHouse_text_oldwoman_post: + .string "Screw getting old, I'm going to start\n" + .string "raising POKéMON again.\p" + .string "Take care of that Egg!$" + +Route117PokeBreedersHouse_EventScript_oldwoman_post:: + goto_if_unset FLAG_GOT_EGG_FROM_OLDLADY, Route117PokeBreedersHouse_EventScript_oldwoman_giveegg + msgbox Route117PokeBreedersHouse_text_oldwoman_post, MSGBOX_NPC + end + +Route117PokeBreedersHouse_text_oldwoman_giveegg: + .string "That was amazing! My heart hasn't raced\n" + .string "like that in years.\p" + .string "Take this egg.\n" + .string "You've earned it.$" + +Route117PokeBreedersHouse_EventScript_oldwoman_giveegg:: + setflag FLAG_BEAT_ESTHER + msgbox Route117PokeBreedersHouse_text_oldwoman_giveegg, MSGBOX_NPC + getpartysize + goto_if_eq VAR_RESULT, 6 Route117PokeBreedersHouse_EventScript_oldwoman_partyFull + setflag FLAG_GOT_EGG_FROM_OLDLADY + playfanfare MUS_OBTAIN_ITEM + message LavaridgeTown_Text_ReceivedTheEgg + waitfanfare + giveegg SPECIES_CYNDAQUIL + release + end + +Route117PokeBreedersHouse_text_oldwoman_partyFull: + .string "Oh, it seems that your party is full.\p" + .string "I'll hang on to this for now.$" + +Route117PokeBreedersHouse_EventScript_oldwoman_partyFull:: + msgbox Route117PokeBreedersHouse_text_oldwoman_partyFull, MSGBOX_NPC + end \ No newline at end of file diff --git a/data/maps/map_groups.json b/data/maps/map_groups.json index 5a8ab7dd4..4aa13e418 100644 --- a/data/maps/map_groups.json +++ b/data/maps/map_groups.json @@ -330,7 +330,8 @@ "Route116_TunnelersRestHouse" ], "gMapGroup_IndoorRoute117": [ - "Route117_PokemonDayCare" + "Route117_PokemonDayCare", + "Route117South_PokeBreedersHouse" ], "gMapGroup_IndoorRoute121": [ "Route121_SafariZoneEntrance" diff --git a/data/scripts/item_ball_scripts.inc b/data/scripts/item_ball_scripts.inc index e484b6c7c..57d2c0069 100644 --- a/data/scripts/item_ball_scripts.inc +++ b/data/scripts/item_ball_scripts.inc @@ -169,6 +169,10 @@ Route117_EventScript_ItemGreatBall:: Route117_EventScript_ItemRevive:: finditem ITEM_REVIVE end + +Route117South_EventScript_ItemRareCandy:: + finditem ITEM_RARE_CANDY + end Route118_EventScript_ItemHyperPotion:: finditem ITEM_HYPER_POTION diff --git a/include/config/battle.h b/include/config/battle.h index e121681d6..069c08dc6 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -11,7 +11,7 @@ // Exp and stat settings #define B_EXP_CATCH GEN_LATEST // In Gen6+, Pokémon get experience from catching. -#define B_TRAINER_EXP_MULTIPLIER GEN_3 // In Gen7+, trainer battles no longer give a 1.5 multiplier to EXP gain. +#define B_TRAINER_EXP_MULTIPLIER GEN_LATEST // In Gen7+, trainer battles no longer give a 1.5 multiplier to EXP gain. #define B_SPLIT_EXP GEN_LATEST // In Gen6+, all participating mon get full experience. #define B_SCALED_EXP GEN_LATEST // In Gen5 and Gen7+, experience is weighted by level difference. #define B_BADGE_BOOST GEN_LATEST // In Gen4+, Gym Badges no longer boost a Pokémon's stats. @@ -91,7 +91,7 @@ // Draining abilities will not heal but will prevent damage. In Gen6+, Heal Block prevents the use of most HP-draining moves. #define B_ROOTED_GROUNDING GEN_LATEST // In Gen4+, Ingrain causes the affected Pokémon to become grounded. #define B_METRONOME_MOVES GEN_LATEST // This config will determine up to which generation will Metronome pull moves from. -#define B_TELEPORT_BEHAVIOR GEN_LATEST // In Gen7+, starting with Pokémon LGPE, Teleport allows the user to swap out with another party member. +#define B_TELEPORT_BEHAVIOR GEN_3 // In Gen7+, starting with Pokémon LGPE, Teleport allows the user to swap out with another party member. #define B_BEAT_UP GEN_LATEST // In Gen5+, Beat Up uses a different formula to calculate its damage, and deals Dark-type damage. Prior to Gen 5, each hit also announces the party member's name. #define B_DARK_VOID_FAIL GEN_LATEST // In Gen7+, only Darkrai can use Dark Void. #define B_BURN_HIT_THAW GEN_LATEST // In Gen6+, damaging moves with a chance of burn will thaw the target, regardless if they're fire-type moves or not. diff --git a/include/constants/flags.h b/include/constants/flags.h index a73565daf..7e28b2332 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1237,10 +1237,10 @@ #define FLAG_ITEM_ROUTE_116Ext_LEAFSTONE 0x4A3 // Unused Flag #define FLAG_BAYLEAF_ENCOUNTERED 0x4A4 // Unused Flag #define FLAG_DEFEATED_RUSTBORO_GYM_KATECOLE 0x4A5 // Unused Flag -#define FLAG_UNUSED_0x4A6 0x4A6 // Unused Flag -#define FLAG_UNUSED_0x4A7 0x4A7 // Unused Flag -#define FLAG_UNUSED_0x4A8 0x4A8 // Unused Flag -#define FLAG_UNUSED_0x4A9 0x4A9 // Unused Flag +#define FLAG_GOT_LUCKY_EGG 0x4A6 // Unused Flag +#define FLAG_GOT_EGG_FROM_OLDLADY 0x4A7 // Unused Flag +#define FLAG_BEAT_ESTHER 0x4A8 // Unused Flag +#define FLAG_ITEM_ROUTE_117South_RARECANDY 0x4A9 // Unused Flag #define FLAG_UNUSED_0x4AA 0x4AA // Unused Flag #define FLAG_UNUSED_0x4AB 0x4AB // Unused Flag #define FLAG_UNUSED_0x4AC 0x4AC // Unused Flag diff --git a/include/constants/layouts.h b/include/constants/layouts.h index 8026cd0a1..19553eb30 100755 --- a/include/constants/layouts.h +++ b/include/constants/layouts.h @@ -466,5 +466,6 @@ #define LAYOUT_ROUTE101WEST 459 #define LAYOUT_ROUTE117NORTH 460 #define LAYOUT_ROUTE117SOUTH 461 +#define LAYOUT_ROUTE117SOUTH_POKE_BREEDERS_HOUSE 462 #endif // GUARD_CONSTANTS_LAYOUTS_H diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h index 89118fdd2..49e77ebcc 100755 --- a/include/constants/map_groups.h +++ b/include/constants/map_groups.h @@ -300,7 +300,8 @@ #define MAP_ROUTE116_TUNNELERS_REST_HOUSE (0 | (21 << 8)) // gMapGroup_IndoorRoute117 -#define MAP_ROUTE117_POKEMON_DAY_CARE (0 | (22 << 8)) +#define MAP_ROUTE117_POKEMON_DAY_CARE (0 | (22 << 8)) +#define MAP_ROUTE117SOUTH_POKE_BREEDERS_HOUSE (1 | (22 << 8)) // gMapGroup_IndoorRoute121 #define MAP_ROUTE121_SAFARI_ZONE_ENTRANCE (0 | (23 << 8)) diff --git a/include/constants/opponents.h b/include/constants/opponents.h index 44dec18f4..0bacd8802 100644 --- a/include/constants/opponents.h +++ b/include/constants/opponents.h @@ -869,6 +869,7 @@ #define TRAINER_MARTINA 875 #define TRAINER_PHILIS 876 #define TRAINER_MARIKA 877 +#define TRAINER_ESTHER 878 // NOTE: Because each Trainer uses a flag to determine when they are defeated, there is only space for 9 additional trainers before trainer flag space overflows // More space can be made by shifting flags around in constants/flags.h or changing how trainer flags are handled diff --git a/src/data/map_group_count.h b/src/data/map_group_count.h index 3fe54931d..5e80aed9f 100644 --- a/src/data/map_group_count.h +++ b/src/data/map_group_count.h @@ -1 +1 @@ -static const u8 MAP_GROUP_COUNT[] = {69, 5, 5, 6, 7, 8, 9, 7, 7, 14, 8, 19, 10, 23, 13, 15, 15, 2, 2, 2, 3, 1, 1, 1, 114, 61, 89, 2, 1, 13, 1, 1, 3, 1, 0}; +static const u8 MAP_GROUP_COUNT[] = {69, 5, 5, 6, 7, 8, 9, 7, 7, 14, 8, 19, 10, 23, 13, 15, 15, 2, 2, 2, 3, 1, 2, 1, 114, 61, 89, 2, 1, 13, 1, 1, 3, 1, 0}; diff --git a/src/data/trainer_parties.h b/src/data/trainer_parties.h index c0ba73ad0..2a4508946 100644 --- a/src/data/trainer_parties.h +++ b/src/data/trainer_parties.h @@ -162,7 +162,7 @@ static const struct TrainerMonNoItemDefaultMoves sParty_philis[] = { static const struct TrainerMonNoItemDefaultMoves sParty_marika[] = { { - .iv = 255, + .iv = 50, .lvl = 21, .species = SPECIES_PLUSLE, }, @@ -175,17 +175,48 @@ static const struct TrainerMonNoItemDefaultMoves sParty_marika[] = { static const struct TrainerMonNoItemDefaultMoves sParty_martina[] = { { - .iv = 255, + .iv = 50, .lvl = 21, .species = SPECIES_PICHU, }, { - .iv = 255, + .iv = 100, .lvl = 23, .species = SPECIES_ELEKID, } }; +static const struct TrainerMonItemCustomMoves sParty_esther[] = { + { + .iv = 100, + .lvl = 21, + .species = SPECIES_ROSELIA, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_TOXIC_SPIKES, MOVE_MAGICAL_LEAF, MOVE_SUNNY_DAY, MOVE_SYNTHESIS} + }, + { + .iv = 100, + .lvl = 22, + .species = SPECIES_BELLOSSOM, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_SLEEP_POWDER, MOVE_SOLAR_BEAM, MOVE_SUNNY_DAY, MOVE_SYNTHESIS} + }, + { + .iv = 100, + .lvl = 21, + .species = SPECIES_PONYTA, + .heldItem = ITEM_CHESTO_BERRY, + .moves = {MOVE_FLAME_CHARGE, MOVE_SOLAR_BEAM, MOVE_REST, MOVE_SLEEP_TALK} + }, + { + .iv = 150, + .lvl = 23, + .species = SPECIES_TROPIUS, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_FLY, MOVE_GIGA_DRAIN, MOVE_SUNNY_DAY, MOVE_SYNTHESIS} + } +}; + static const struct TrainerMonNoItemDefaultMoves sParty_Sawyer1[] = { { .iv = 0, diff --git a/src/data/trainers.h b/src/data/trainers.h index af1be5a45..440f10d08 100644 --- a/src/data/trainers.h +++ b/src/data/trainers.h @@ -10410,4 +10410,15 @@ const struct Trainer gTrainers[] = { .aiFlags = 0, .party = NO_ITEM_DEFAULT_MOVES(sParty_marika), }, + [TRAINER_ESTHER] = + { + .trainerClass = TRAINER_CLASS_PKMN_BREEDER, + .encounterMusic_gender = TRAINER_ENCOUNTER_MUSIC_INTENSE, + .trainerPic = TRAINER_PIC_EXPERT_F, + .trainerName = _("ESTHER"), + .items = {ITEM_SUPER_POTION, ITEM_FULL_RESTORE, ITEM_X_ATTACK}, + .doubleBattle = FALSE, + .aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SMART_SWITCHING | AI_FLAG_ACE_POKEMON, + .party = ITEM_CUSTOM_MOVES(sParty_esther), + }, }; diff --git a/src/data/wild_encounters.json b/src/data/wild_encounters.json index 40655029e..b6b0e0735 100755 --- a/src/data/wild_encounters.json +++ b/src/data/wild_encounters.json @@ -12760,6 +12760,160 @@ } ] } + }, + { + "map": "MAP_ROUTE117SOUTH", + "base_label": "gRoute117South0", + "land_mons": { + "encounter_rate": 20, + "mons": [ + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_RATTATA" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_MARILL" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_ODDISH" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_SCYTHER" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_SCYTHER" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_PINSIR" + }, + { + "min_level": 14, + "max_level": 14, + "species": "SPECIES_PINSIR" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_VOLBEAT" + }, + { + "min_level": 13, + "max_level": 13, + "species": "SPECIES_SEEDOT" + } + ] + }, + "water_mons": { + "encounter_rate": 4, + "mons": [ + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_MARILL" + }, + { + "min_level": 10, + "max_level": 20, + "species": "SPECIES_MARILL" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_MARILL" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MARILL" + }, + { + "min_level": 20, + "max_level": 30, + "species": "SPECIES_GOLDEEN" + } + ] + }, + "fishing_mons": { + "encounter_rate": 30, + "mons": [ + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 5, + "max_level": 10, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_MAGIKARP" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_GOLDEEN" + }, + { + "min_level": 10, + "max_level": 30, + "species": "SPECIES_CORPHISH" + }, + { + "min_level": 25, + "max_level": 30, + "species": "SPECIES_CORPHISH" + }, + { + "min_level": 30, + "max_level": 35, + "species": "SPECIES_CORPHISH" + }, + { + "min_level": 20, + "max_level": 25, + "species": "SPECIES_CORPHISH" + }, + { + "min_level": 35, + "max_level": 40, + "species": "SPECIES_CORPHISH" + }, + { + "min_level": 40, + "max_level": 45, + "species": "SPECIES_CORPHISH" + } + ] + } } ] },