diff --git a/.all-contributorsrc b/.all-contributorsrc
index 8ae6daf62cf6..3d356bbc9759 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -642,6 +642,24 @@
"contributions": [
"code"
]
+ },
+ {
+ "login": "LogicalLlama",
+ "name": "LogicalLlama",
+ "avatar_url": "https://avatars.githubusercontent.com/u/248230900?v=4",
+ "profile": "https://github.com/LogicalLlama",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "KnightGallade",
+ "name": "KnightGallade",
+ "avatar_url": "https://avatars.githubusercontent.com/u/189022270?v=4",
+ "profile": "https://github.com/KnightGallade",
+ "contributions": [
+ "bug"
+ ]
}
],
"contributorsPerLine": 7,
diff --git a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml
index 03c9151c06d2..c7ee0fea5af1 100644
--- a/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml
+++ b/.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml
@@ -43,18 +43,15 @@ body:
label: Version
description: What version of pokeemerald-expansion are you using?
options:
- - 1.14.3 (Latest release)
+ - 1.15.0 (Latest release)
- master (default, unreleased bugfixes)
- upcoming (Edge)
+ - 1.14.4
+ - 1.14.3
- 1.14.2
- 1.14.1
- 1.14.0
- - 1.13.4
- - 1.13.3
- - 1.13.2
- - 1.13.1
- - 1.13.0
- - pre-1.13.0
+ - pre-1.14.0
validations:
required: true
- type: input
diff --git a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml
index 395f0d590c4e..feb5a1e0795b 100644
--- a/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml
+++ b/.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml
@@ -43,18 +43,15 @@ body:
label: Version
description: What version of pokeemerald-expansion are you using?
options:
- - 1.14.3 (Latest release)
+ - 1.15.0 (Latest release)
- master (default, unreleased bugfixes)
- upcoming (Edge)
+ - 1.14.4
+ - 1.14.3
- 1.14.2
- 1.14.1
- 1.14.0
- - 1.13.4
- - 1.13.3
- - 1.13.2
- - 1.13.1
- - 1.13.0
- - pre-1.13.0
+ - pre-1.14.0
validations:
required: true
- type: input
diff --git a/.github/ISSUE_TEMPLATE/04_other_errors.yaml b/.github/ISSUE_TEMPLATE/04_other_errors.yaml
index 732281edcaad..728aa1711da9 100644
--- a/.github/ISSUE_TEMPLATE/04_other_errors.yaml
+++ b/.github/ISSUE_TEMPLATE/04_other_errors.yaml
@@ -43,18 +43,15 @@ body:
label: Version
description: What version of pokeemerald-expansion are you using?
options:
- - 1.14.3 (Latest release)
+ - 1.15.0 (Latest release)
- master (default, unreleased bugfixes)
- upcoming (Edge)
+ - 1.14.4
+ - 1.14.3
- 1.14.2
- 1.14.1
- 1.14.0
- - 1.13.4
- - 1.13.3
- - 1.13.2
- - 1.13.1
- - 1.13.0
- - pre-1.13.0
+ - pre-1.14.0
validations:
required: true
- type: input
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index bb069cf6c04a..32dfac0c4f1c 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -12,11 +12,11 @@ jobs:
if: github.actor != 'allcontributors[bot]'
runs-on: ubuntu-latest
env:
- GAME_VERSION: EMERALD
GAME_REVISION: 0
GAME_LANGUAGE: ENGLISH
COMPARE: 0
UNUSED_ERROR: 1
+ DEPRECATED_ERROR: 1
steps:
- name: Checkout
uses: actions/checkout@v2
@@ -27,12 +27,15 @@ jobs:
sudo apt install -y binutils-arm-none-eabi gcc-arm-none-eabi libnewlib-arm-none-eabi libpng-dev python3
# build-essential and git are already installed
- - name: ROM
+ - name: ROM (Emerald)
env:
COMPARE: 0
+ GAME_VERSION: EMERALD
run: make -j${nproc} -O all
- name: Release
+ env:
+ GAME_VERSION: EMERALD
run: |
make tidy
make -j${nproc} release
@@ -40,10 +43,24 @@ jobs:
- name: Test
env:
+ GAME_VERSION: EMERALD
TEST: 1
run: |
make -j${nproc} check
+ - name: ROM (Firered)
+ env:
+ COMPARE: 0
+ run: |
+ make clean
+ make firered -j${nproc} -O
+
+ - name: ROM (Leafgreen)
+ env:
+ COMPARE: 0
+ run: |
+ make leafgreen -j${nproc} -O
+
docs_validate:
if: github.actor != 'allcontributors[bot]'
runs-on: ubuntu-latest
diff --git a/.gitignore b/.gitignore
index 66cf272e5fcd..6acae9231f75 100644
--- a/.gitignore
+++ b/.gitignore
@@ -42,13 +42,18 @@ prefabs.json
*.sym
*.js
/pokeemerald-*.png
+/pokefirered-*.png
+/pokeleafgreen-*.png
src/data/map_group_count.h
include/constants/heal_locations.h
include/constants/script_commands.h
tools/trainerproc/trainerproc
src/data/battle_partners.h
+src/data/pokemon/teachable_learnsets.h
src/data/trainers.h
+src/data/trainers_frlg.h
src/data/debug_trainers.h
+src/data/tutor_moves.h
test/battle/trainer_control.h
tools/compresSmol/compresSmol
tools/compresSmol/compresSmolTilemap
diff --git a/CREDITS.md b/CREDITS.md
index 7d9e48d70ec8..133208fa95a0 100644
--- a/CREDITS.md
+++ b/CREDITS.md
@@ -92,6 +92,8 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
 SabataLunar 🎨 |
 PacFire 🎨 |
 ChrispyChris27 💻 |
+  LogicalLlama 🐛 |
+  KnightGallade 🐛 |
diff --git a/Makefile b/Makefile
index 8160f6e1e14d..41335f273cb1 100644
--- a/Makefile
+++ b/Makefile
@@ -37,6 +37,8 @@ TEST ?= 0
ANALYZE ?= 0
# Count unused warnings as errors. Used by RH-Hideout's repo
UNUSED_ERROR ?= 0
+# Count deprecated warnings as errors. Used by RH-Hideout's repo
+DEPRECATED_ERROR ?= 0
# Adds -Og and -g flags, which optimize the build for debugging and include debug info respectively
DEBUG ?= 0
# Adds -flto flag, which increases link time but results in a more efficient binary (especially in audio processing)
@@ -183,6 +185,13 @@ ifeq ($(UNUSED_ERROR),0)
override CFLAGS += -Wno-error=unused-variable -Wno-error=unused-const-variable -Wno-error=unused-parameter -Wno-error=unused-function -Wno-error=unused-but-set-parameter -Wno-error=unused-but-set-variable -Wno-error=unused-value -Wno-error=unused-local-typedefs
endif
endif
+
+ifeq ($(DEPRECATED_ERROR),0)
+ ifneq ($(GITHUB_REPOSITORY_OWNER),rh-hideout)
+ override CFLAGS += -Wno-error=deprecated-declarations
+ endif
+endif
+
LIBPATH := -L "$(dir $(shell $(PATH_ARMCC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(PATH_ARMCC) -mthumb -print-file-name=libnosys.a))" -L "$(dir $(shell $(PATH_ARMCC) -mthumb -print-file-name=libc.a))"
LIB := $(LIBPATH) -lc -lnosys -lgcc -L../../libagbsyscall -lagbsyscall
# Enable debug info if set
@@ -231,7 +240,9 @@ endif
LEARNSET_HELPERS_DIR := $(TOOLS_DIR)/learnset_helpers
LEARNSET_HELPERS_DATA_DIR := $(LEARNSET_HELPERS_DIR)/porymoves_files
LEARNSET_HELPERS_BUILD_DIR := $(LEARNSET_HELPERS_DIR)/build
-ALL_LEARNABLES_JSON := $(LEARNSET_HELPERS_BUILD_DIR)/all_learnables.json
+ALL_LEARNABLES_JSON := $(DATA_SRC_SUBDIR)/pokemon/all_learnables.json
+ALL_TUTORS_JSON := $(LEARNSET_HELPERS_BUILD_DIR)/all_tutors.json
+ALL_TEACHING_TYPES_JSON := $(LEARNSET_HELPERS_BUILD_DIR)/all_teaching_types.json
# wild_encounters.h is generated by a Python script
WILD_ENCOUNTERS_TOOL_DIR := $(TOOLS_DIR)/wild_encounters
@@ -246,10 +257,6 @@ $(DATA_SRC_SUBDIR)/wild_encounters.h: $(DATA_SRC_SUBDIR)/wild_encounters.json $(
$(INCLUDE_DIRS)/constants/script_commands.h: $(MISC_TOOL_DIR)/make_scr_cmd_constants.py $(DATA_ASM_SUBDIR)/script_cmd_table.inc
python3 $(MISC_TOOL_DIR)/make_scr_cmd_constants.py
-$(C_BUILDDIR)/wild_encounter.o: c_dep += $(DATA_SRC_SUBDIR)/wild_encounters.h
-$(C_BUILDDIR)/trainer_see.o: c_dep += $(INCLUDE_DIRS)/constants/script_commands.h
-$(C_BUILDDIR)/vs_seeker.o: c_dep += $(INCLUDE_DIRS)/constants/script_commands.h
-
PERL := perl
SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c
@@ -262,7 +269,7 @@ MAKEFLAGS += --no-print-directory
# Delete files that weren't built properly
.DELETE_ON_ERROR:
-RULES_NO_SCAN += libagbsyscall clean clean-assets tidy tidymodern tidycheck tidyrelease generated clean-generated
+RULES_NO_SCAN += libagbsyscall clean clean-assets tidy tidymodern tidycheck tidyrelease generated clean-generated clean-teachables clean-teachables_intermediates
.PHONY: all rom agbcc modern compare check debug release
.PHONY: $(RULES_NO_SCAN)
@@ -386,7 +393,7 @@ clean-assets:
tidy: tidymodern tidycheck tidydebug tidyrelease
tidymodern:
- rm -f $(ROM_NAME) $(ELF_NAME) $(MAP_NAME)
+ rm -f poke*.gba poke*.elf poke*.map
rm -rf $(OBJ_DIR_NAME)
tidycheck:
@@ -434,11 +441,19 @@ generated: $(AUTO_GEN_TARGETS)
%.smol: % ; $(SMOL) -w $< $@
%.rl: % ; $(GFX) $< $@
-clean-generated:
+clean-teachables_intermediates:
+ rm -f $(DATA_SRC_SUBDIR)/tutor_moves.h
+ rm -f $(DATA_SRC_SUBDIR)/pokemon/teachable_learnsets.h
+ @rm -Rf $(LEARNSET_HELPERS_BUILD_DIR)
+ @echo "rm -Rf "
+
+clean-generated: clean-teachables_intermediates
@rm -f $(AUTO_GEN_TARGETS)
@echo "rm -f "
- @rm -f $(ALL_LEARNABLES_JSON)
- @echo "rm -f "
+
+clean-teachables: clean-teachables_intermediates
+ rm -f $(ALL_LEARNABLES_JSON)
+ @touch $(C_SUBDIR)/pokemon.c
$(C_BUILDDIR)/librfu_intr.o: CFLAGS := -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast
$(C_BUILDDIR)/berry_crush.o: override CFLAGS += -Wno-address-of-packed-member
@@ -454,6 +469,8 @@ $(TEST_BUILDDIR)/%.o: CFLAGS := -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mt
# Dependency rules (for the *.c & *.s sources to .o files)
# Have to be explicit or else missing files won't be reported.
+$(C_BUILDDIR)/move_relearner.o: $(C_SUBDIR)/move_relearner.c $(DATA_SRC_SUBDIR)/tutor_moves.h
+$(C_BUILDDIR)/pokemon.o: $(C_SUBDIR)/pokemon.c $(DATA_SRC_SUBDIR)/pokemon/teachable_learnsets.h
# As a side effect, they're evaluated immediately instead of when the rule is invoked.
# It doesn't look like $(shell) can be deferred so there might not be a better way (Icedude_907: there is soon).
@@ -473,6 +490,7 @@ $(C_BUILDDIR)/%.d: $(C_SUBDIR)/%.c
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I tools/agbcc/include $<
ifneq ($(NODEP),1)
+-include $(ALL_TUTORS_JSON), $(ALL_TEACHING_TYPES_JSON),
-include $(addprefix $(OBJ_DIR)/,$(C_SRCS:.c=.d))
endif
@@ -528,16 +546,25 @@ $(OBJ_DIR)/sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt)
$(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt
$(RAMSCRGEN) ewram_data $< ENGLISH > $@
-TEACHABLE_DEPS := $(ALL_LEARNABLES_JSON) $(shell find data/ -type f -name '*.inc') $(INCLUDE_DIRS)/constants/tms_hms.h $(INCLUDE_DIRS)/config/pokemon.h $(C_SUBDIR)/pokemon.c
+TEACHABLE_DEPS := $(ALL_LEARNABLES_JSON) $(INCLUDE_DIRS)/constants/tms_hms.h $(INCLUDE_DIRS)/config/pokemon.h $(DATA_SRC_SUBDIR)/pokemon/special_movesets.json $(INCLUDE_DIRS)/config/pokedex_plus_hgss.h $(LEARNSET_HELPERS_DIR)/make_teachables.py
$(LEARNSET_HELPERS_BUILD_DIR):
@mkdir -p $@
-$(ALL_LEARNABLES_JSON): $(wildcard $(LEARNSET_HELPERS_DATA_DIR)/*.json) | $(LEARNSET_HELPERS_BUILD_DIR)
+$(ALL_LEARNABLES_JSON): | $(wildcard $(LEARNSET_HELPERS_DATA_DIR)/*.json)
python3 $(LEARNSET_HELPERS_DIR)/make_learnables.py $(LEARNSET_HELPERS_DATA_DIR) $@
-$(DATA_SRC_SUBDIR)/pokemon/teachable_learnsets.h: $(TEACHABLE_DEPS)
- python3 $(LEARNSET_HELPERS_DIR)/make_teachables.py $<
+$(ALL_TUTORS_JSON): $(shell find data/ -type f -name '*.inc') $(LEARNSET_HELPERS_DIR)/make_tutors.py | $(LEARNSET_HELPERS_BUILD_DIR)
+ python3 $(LEARNSET_HELPERS_DIR)/make_tutors.py $@
+
+$(ALL_TEACHING_TYPES_JSON): $(wildcard $(DATA_SRC_SUBDIR)/pokemon/species_info/*_families.h) $(LEARNSET_HELPERS_DIR)/make_teaching_types.py | $(LEARNSET_HELPERS_BUILD_DIR)
+ python3 $(LEARNSET_HELPERS_DIR)/make_teaching_types.py $@
+
+$(DATA_SRC_SUBDIR)/pokemon/teachable_learnsets.h: $(TEACHABLE_DEPS) | $(ALL_TUTORS_JSON) $(ALL_TEACHING_TYPES_JSON)
+ python3 $(LEARNSET_HELPERS_DIR)/make_teachables.py $(LEARNSET_HELPERS_BUILD_DIR)
+
+$(DATA_SRC_SUBDIR)/tutor_moves.h: $(DATA_SRC_SUBDIR)/pokemon/special_movesets.json | $(ALL_TUTORS_JSON)
+ python3 $(LEARNSET_HELPERS_DIR)/make_teachables.py --tutors $(LEARNSET_HELPERS_BUILD_DIR)
# Linker script
LD_SCRIPT := ld_script_modern.ld
diff --git a/README.md b/README.md
index 11666a16a53a..856488d749fc 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,28 @@
+# Pokémon Emerald Game Corner Expansion
+
+Hello! This is a tweaked version of Chris Piche's Game Corner Expansion feature branch made by me, AGSMGMaster64.
+Currently, this adds a new config file that uses some flags by default but can be configured to other flags if necessary.
+Some new music and changes to the Mauville Corner have been made as well, so keep that in mind if you plan to merge this into your
+existing project. Credits to AsparagusEduardo for the basis of this merge here, I just mainly tweaked things around to help
+out any developers who may want to use this as well.
+
+Updated to pokeemerald-expansion v1.12.0
+
+To pull from this branch here, just simply use these commands here:
+```
+git remote add AGSMG https://github.com/agsmgmaster64/worldlinkdeluxe-ame/
+git pull AGSMG gacha-expansion
+```
+
+
+Below is the rest of the original description from Chris Piche himself:
+
+More specifically, this adds 4 pinball mini-games, Flappy Bird, Block Stacker, Snake, Blackjack, Voltorb Flip, Plinko, Mauville Derby, and Gacha Machines into the Game Corner.
+
+Big thank you to huderlem (Pokemon Pinball to Emerald), and Pokeabbie (Voltorb Flip from Emerald Rogue). All I really did for these was some graphics, music, and code to work with coins. They deserve the real credits here.
+Also thank you to Viperio, who made an initial Snake for Pokemon Emerald that I based my code on.
+
+...
# About `pokeemerald-expansion`
  
@@ -17,7 +42,7 @@
If you use **`pokeemerald-expansion`**, please credit **RHH (Rom Hacking Hideout)**. Optionally, include the version number for clarity.
```
-Based off RHH's pokeemerald-expansion 1.14.3 https://github.com/rh-hideout/pokeemerald-expansion/
+Based off RHH's pokeemerald-expansion 1.15.0 https://github.com/rh-hideout/pokeemerald-expansion/
```
Please consider [crediting all contributors](CREDITS.md) involved in the project!
diff --git a/asm/macros.inc b/asm/macros.inc
index 95bb4e31b040..90ea1ea9ab68 100644
--- a/asm/macros.inc
+++ b/asm/macros.inc
@@ -4,6 +4,7 @@
.include "asm/macros/map.inc"
.include "asm/macros/field_effect_script.inc"
.include "asm/macros/trainer_hill.inc"
+ .include "asm/macros/trainer_tower.inc"
.include "asm/macros/battle_tent.inc"
.include "asm/macros/battle_frontier/apprentice.inc"
.include "asm/macros/battle_frontier/battle_arena.inc"
diff --git a/asm/macros/battle_anim_script.inc b/asm/macros/battle_anim_script.inc
index c24a6b82535f..17d0ca3e7f2a 100644
--- a/asm/macros/battle_anim_script.inc
+++ b/asm/macros/battle_anim_script.inc
@@ -648,3 +648,7 @@
.macro shake_battle_platforms priority=2, x_offset:req, y_offset:req, shakes:req, delay:req
createvisualtask AnimTask_ShakeBattlePlatforms, \priority, \x_offset, \y_offset, \shakes, \delay
.endm
+
+ .macro create_surf_wave priority=2, palette:req
+ createvisualtask AnimTask_CreateSurfWave, \priority, \palette
+ .endm
diff --git a/asm/macros/battle_frontier/battle_tower.inc b/asm/macros/battle_frontier/battle_tower.inc
index 6c9e606dde22..f3abc0cfd47d 100644
--- a/asm/macros/battle_frontier/battle_tower.inc
+++ b/asm/macros/battle_frontier/battle_tower.inc
@@ -98,14 +98,13 @@
waitstate
.endm
- .macro multi_do type:req, partnerId:req
+ .macro multi_do type:req
special ReducePlayerPartyToSelectedMons
setvar VAR_0x8004, FRONTIER_UTIL_FUNC_SET_DATA
setvar VAR_0x8005, FRONTIER_DATA_SELECTED_MON_ORDER
special CallFrontierUtilFunc @ saves the mon order, so the non-selected mons get restored afterwards
setvar VAR_0x8004, SPECIAL_BATTLE_MULTI
setvar VAR_0x8005, \type | MULTI_BATTLE_CHOOSE_MONS
- setvar VAR_0x8006, \partnerId
special DoSpecialTrainerBattle
waitstate
setvar VAR_0x8004, FRONTIER_UTIL_FUNC_SAVE_PARTY
@@ -115,26 +114,26 @@
.macro multi_2_vs_2 trainer1Id:req, trainer1LoseText:req, trainer2Id:req, trainer2LoseText:req, partnerId:req
special SavePlayerParty
- trainerbattle TRAINER_BATTLE_SET_TRAINERS_FOR_MULTI_BATTLE, OBJ_ID_NONE, \trainer1Id, NULL, \trainer1LoseText, NULL, OBJ_ID_NONE, \trainer2Id, NULL, \trainer2LoseText, NULL, NULL, NULL, FALSE, TRUE, FALSE, FALSE
- multi_do MULTI_BATTLE_2_VS_2, \partnerId
+ setmultitrainerbattle \trainer1Id, \trainer1LoseText, \trainer2Id, \trainer2LoseText, \partnerId
+ multi_do MULTI_BATTLE_2_VS_2
.endm
.macro multi_2_vs_1 trainer1Id:req, trainer1LoseText:req, partnerId:req
special SavePlayerParty
- trainerbattle TRAINER_BATTLE_SET_TRAINERS_FOR_MULTI_BATTLE, OBJ_ID_NONE, \trainer1Id, NULL, \trainer1LoseText, NULL, OBJ_ID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, TRUE, FALSE, FALSE
- multi_do MULTI_BATTLE_2_VS_1, \partnerId
+ setmultitrainerbattle \trainer1Id, \trainer1LoseText, TRAINER_NONE, NULL, \partnerId
+ multi_do MULTI_BATTLE_2_VS_1
.endm
@ Wild mons need to be assigned to gEnemyParty 0 and 3 slots, other slots need to be cleared out.
.macro multi_wild partnerId:req
special SavePlayerParty
- multi_do MULTI_BATTLE_2_VS_WILD, \partnerId
+ setmultitrainerbattle TRAINER_NONE, NULL, TRAINER_NONE, NULL, \partnerId
+ multi_do MULTI_BATTLE_2_VS_WILD
.endm
- .macro multi_do_fixed type:req, partnerId:req
+ .macro multi_do_fixed type:req
setvar VAR_0x8004, SPECIAL_BATTLE_MULTI
setvar VAR_0x8005, \type
- setvar VAR_0x8006, \partnerId
special DoSpecialTrainerBattle
waitstate
setvar VAR_0x8004, FRONTIER_UTIL_FUNC_SAVE_PARTY
@@ -144,18 +143,19 @@
.macro multi_fixed_2_vs_2 trainer1Id:req, trainer1LoseText:req, trainer2Id:req, trainer2LoseText:req, partnerId:req
special SavePlayerParty
- trainerbattle TRAINER_BATTLE_SET_TRAINERS_FOR_MULTI_BATTLE, OBJ_ID_NONE, \trainer1Id, NULL, \trainer1LoseText, NULL, OBJ_ID_NONE, \trainer2Id, NULL, \trainer2LoseText, NULL, NULL, NULL, FALSE, TRUE, FALSE, FALSE
- multi_do_fixed MULTI_BATTLE_2_VS_2, \partnerId
+ setmultitrainerbattle \trainer1Id, \trainer1LoseText, \trainer2Id, \trainer2LoseText, \partnerId
+ multi_do_fixed MULTI_BATTLE_2_VS_2
.endm
.macro multi_fixed_2_vs_1 trainer1Id:req, trainer1LoseText:req, partnerId:req
special SavePlayerParty
- trainerbattle TRAINER_BATTLE_SET_TRAINERS_FOR_MULTI_BATTLE, OBJ_ID_NONE, \trainer1Id, NULL, \trainer1LoseText, NULL, OBJ_ID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, TRUE, FALSE, FALSE
- multi_do_fixed MULTI_BATTLE_2_VS_1, \partnerId
+ setmultitrainerbattle \trainer1Id, \trainer1LoseText, TRAINER_NONE, NULL, \partnerId
+ multi_do_fixed MULTI_BATTLE_2_VS_1
.endm
@ Wild mons need to be assigned to gEnemyParty 0 and 3 slots, other slots need to be cleared out.
.macro multi_fixed_wild partnerId:req
special SavePlayerParty
- multi_do_fixed MULTI_BATTLE_2_VS_WILD, \partnerId
+ setmultitrainerbattle TRAINER_NONE, NULL, TRAINER_NONE, NULL, \partnerId
+ multi_do_fixed MULTI_BATTLE_2_VS_WILD
.endm
diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc
index d8a8be7612f9..8b16680f67e2 100644
--- a/asm/macros/battle_script.inc
+++ b/asm/macros/battle_script.inc
@@ -3,21 +3,22 @@
.byte B_SCR_OP_ATTACKCANCELER
.endm
- .macro accuracycheck failInstr:req, move:req
+ .macro accuracycheck failInstr:req
.byte B_SCR_OP_ACCURACYCHECK
.4byte \failInstr
- .2byte \move
.endm
.macro printattackstring
.byte B_SCR_OP_PRINTATTACKSTRING
.endm
- .macro unused_0x3
- .byte B_SCR_OP_UNUSED_0x3
+ .macro printselectionstringfromtable ptr:req
+ .byte B_SCR_OP_PRINTSELECTIONSTRINGFROMTABLE
+ .4byte \ptr
.endm
.macro critcalc
+ .warning "critcalc macro has been deprecated, please remove from scripts"
.byte B_SCR_OP_CRITCALC
.endm
@@ -29,10 +30,6 @@
.byte B_SCR_OP_TYPECALC
.endm
- .macro adjustdamage
- .byte B_SCR_OP_ADJUSTDAMAGE
- .endm
-
.macro multihitresultmessage
.byte B_SCR_OP_MULTIHITRESULTMESSAGE
.endm
@@ -42,31 +39,31 @@
.endm
.macro waitanimation
- .byte 0xa
+ .byte B_SCR_OP_WAITANIMATION
.endm
.macro healthbarupdate battler:req updateState:req
- .byte 0xb
+ .byte B_SCR_OP_HEALTHBARUPDATE
.byte \battler
.byte \updateState
.endm
.macro datahpupdate battler:req updateState:req
- .byte 0xc
+ .byte B_SCR_OP_DATAHPUPDATE
.byte \battler
.byte \updateState
.endm
.macro critmessage
- .byte 0xd
+ .byte B_SCR_OP_CRITMESSAGE
.endm
.macro effectivenesssound
- .byte 0xe
+ .byte B_SCR_OP_EFFECTIVENESSSOUND
.endm
.macro resultmessage
- .byte 0xf
+ .byte B_SCR_OP_RESULTMESSAGE
.endm
.macro printstring id:req
@@ -93,15 +90,12 @@
.4byte \ptr
.endm
- .macro printselectionstringfromtable ptr:req
- .byte B_SCR_OP_PRINTSELECTIONSTRINGFROMTABLE
- .4byte \ptr
+ .macro setpreattackadditionaleffect
+ .byte B_SCR_OP_SETPREATTACKADDITIONALEFFECT
.endm
.macro setadditionaleffects
- 1:
.byte B_SCR_OP_SETADDITIONALEFFECTS
- jumpifhalfword CMP_EQUAL, sMOVE_EFFECT, MOVE_EFFECT_CONTINUE, 1b
.endm
.macro seteffectprimary battler:req, effectBattler:req, moveEffect=0
@@ -143,38 +137,38 @@
.endm
.macro dofaintanimation battler:req
- .byte 0x1a
+ .byte B_SCR_OP_DOFAINTANIMATION
.byte \battler
.endm
.macro cleareffectsonfaint battler:req
- .byte 0x1b
+ .byte B_SCR_OP_CLEAREFFECTSONFAINT
.byte \battler
.endm
.macro jumpifstatus battler:req, flags:req, jumpInstr:req
- .byte 0x1c
+ .byte B_SCR_OP_JUMPIFSTATUS
.byte \battler
.4byte \flags
.4byte \jumpInstr
.endm
.macro jumpifvolatile battler:req, volatile:req, jumpInstr:req
- .byte 0x1d
+ .byte B_SCR_OP_JUMPIFVOLATILE
.byte \battler
.byte \volatile
.4byte \jumpInstr
.endm
.macro jumpifability battler:req, ability:req, jumpInstr:req
- .byte 0x1e
+ .byte B_SCR_OP_JUMPIFABILITY
.byte \battler
.2byte \ability
.4byte \jumpInstr
.endm
.macro jumpifsideaffecting battler:req, flags:req, jumpInstr:req
- .byte 0x1f
+ .byte B_SCR_OP_JUMPIFSIDEAFFECTING
.byte \battler
.4byte \flags
.4byte \jumpInstr
@@ -252,7 +246,7 @@
.endm
.macro jumpifhalfword comparison:req, halfwordPtr:req, value:req, jumpInstr:req
- .byte 0x2a
+ .byte B_SCR_OP_JUMPIFHALFWORD
.byte \comparison
.4byte \halfwordPtr
.2byte \value
@@ -260,7 +254,7 @@
.endm
.macro jumpifword comparison:req, wordPtr:req, value:req, jumpInstr:req
- .byte 0x2b
+ .byte B_SCR_OP_JUMPIFWORD
.byte \comparison
.4byte \wordPtr
.4byte \value
@@ -268,7 +262,7 @@
.endm
.macro jumpifarrayequal array1:req, array2:req, size:req, jumpInstr:req
- .byte 0x2c
+ .byte B_SCR_OP_JUMPIFARRAYEQUAL
.4byte \array1
.4byte \array2
.byte \size
@@ -276,7 +270,7 @@
.endm
.macro jumpifarraynotequal array1:req, array2:req, size:req, jumpInstr:req
- .byte 0x2d
+ .byte B_SCR_OP_JUMPIFARRAYNOTEQUAL
.4byte \array1
.4byte \array2
.byte \size
@@ -284,13 +278,13 @@
.endm
.macro setbyte bytePtr:req, value:req
- .byte 0x2e
+ .byte B_SCR_OP_SETBYTE
.4byte \bytePtr
.byte \value
.endm
.macro addbyte bytePtr:req, value:req
- .byte 0x2f
+ .byte B_SCR_OP_ADDBYTE
.4byte \bytePtr
.byte \value
.endm
@@ -362,27 +356,27 @@
.endm
.macro waitstate
- .byte 0x3a
+ .byte B_SCR_OP_WAITSTATE
.endm
- .macro isdmgblockedbydisguise
- .byte 0x3b
+ .macro tryselfconfusiondmgformchange
+ .byte B_SCR_OP_TRYSELFCONFUSIONDMGFORMCHANGE
.endm
.macro return
- .byte 0x3c
+ .byte B_SCR_OP_RETURN
.endm
.macro end
- .byte 0x3d
+ .byte B_SCR_OP_END
.endm
.macro end2
- .byte 0x3e
+ .byte B_SCR_OP_END2
.endm
.macro end3
- .byte 0x3f
+ .byte B_SCR_OP_END3
.endm
.macro call instr:req
@@ -425,8 +419,9 @@
.4byte \jumpInstr
.endm
- .macro unused_0x48
- .byte B_SCR_OP_UNUSED_0x48
+ .macro trainerslidein position:req
+ .byte B_SCR_OP_TRAINERSLIDEIN
+ .byte \position
.endm
.macro moveend endMode:req, endState:req
@@ -468,33 +463,33 @@
.endm
.macro sethealblock failInstr:req
- .byte 0x4a
+ .byte B_SCR_OP_SETHEALBLOCK
.4byte \failInstr
.endm
.macro returnatktoball
- .byte 0x4b
+ .byte B_SCR_OP_RETURNATKTOBALL
.endm
.macro getswitchedmondata battler:req
- .byte 0x4c
+ .byte B_SCR_OP_GETSWITCHEDMONDATA
.byte \battler
.endm
.macro switchindataupdate battler:req
- .byte 0x4d
+ .byte B_SCR_OP_SWITCHINDATAUPDATE
.byte \battler
.endm
.macro switchinanim battler:req, dontClearTransform:req, dontClearSubstitute:req
- .byte 0x4e
+ .byte B_SCR_OP_SWITCHINANIM
.byte \battler
.byte \dontClearTransform
.byte \dontClearSubstitute
.endm
.macro jumpifcantswitch battler:req, jumpInstr:req
- .byte 0x4f
+ .byte B_SCR_OP_JUMPIFCANTSWITCH
.byte \battler
.4byte \jumpInstr
.endm
@@ -516,9 +511,8 @@
.byte \battler
.endm
- .macro trainerslidein position:req
- .byte B_SCR_OP_TRAINERSLIDEIN
- .byte \position
+ .macro switchinevents
+ .byte B_SCR_OP_SWITCHINEVENTS
.endm
.macro playse song:req
@@ -554,31 +548,31 @@
.endm
.macro yesnoboxlearnmove forgotMoveInstr:req
- .byte 0x5a
+ .byte B_SCR_OP_YESNOBOXLEARNMOVE
.4byte \forgotMoveInstr
.endm
.macro yesnoboxstoplearningmove noInstr:req
- .byte 0x5b
+ .byte B_SCR_OP_YESNOBOXSTOPLEARNINGMOVE
.4byte \noInstr
.endm
.macro hitanimation battler:req
- .byte 0x5c
+ .byte B_SCR_OP_HITANIMATION
.byte \battler
.endm
.macro getmoneyreward
- .byte 0x5d
+ .byte B_SCR_OP_GETMONEYREWARD
.endm
.macro updatebattlermoves battler:req
- .byte 0x5e
+ .byte B_SCR_OP_UPDATEBATTLERMOVES
.byte \battler
.endm
.macro swapattackerwithtarget
- .byte 0x5f
+ .byte B_SCR_OP_SWAPATTACKERWITHTARGET
.endm
.macro incrementgamestat stat:req
@@ -612,6 +606,16 @@
statusanimation \battler, \volatile, TRUE
.endm
+ .macro futuresighttargetfailure failInstr:req
+ .byte B_SCR_OP_FUTURESIGHTTARGETFAILURE
+ .4byte \failInstr
+ .endm
+
+ .macro getpossiblenexttarget jumpInstr:req
+ .byte B_SCR_OP_GETPOSSIBLENEXTTARGET
+ .4byte \jumpInstr
+ .endm
+
.macro yesnobox
.byte B_SCR_OP_YESNOBOX
.endm
@@ -626,28 +630,28 @@
.endm
.macro removeitem battler:req
- .byte 0x6a
+ .byte B_SCR_OP_REMOVEITEM
.byte \battler
.endm
.macro atknameinbuff1
- .byte 0x6b
+ .byte B_SCR_OP_ATKNAMEINBUFF1
.endm
.macro drawlvlupbox
- .byte 0x6c
+ .byte B_SCR_OP_DRAWLVLUPBOX
.endm
.macro resetsentmonsvalue
- .byte 0x6d
+ .byte B_SCR_OP_RESETSENTMONSVALUE
.endm
.macro setatktoplayer0
- .byte 0x6e
+ .byte B_SCR_OP_SETATKTOPLAYER0
.endm
.macro makevisible battler:req
- .byte 0x6f
+ .byte B_SCR_OP_MAKEVISIBLE
.byte \battler
.endm
@@ -679,10 +683,6 @@
.byte B_SCR_OP_USEITEMONOPPONENT
.endm
- .macro unused_0x78
- .byte B_SCR_OP_UNUSED_0x78
- .endm
-
.macro setprotectlike
.byte B_SCR_OP_SETPROTECTLIKE
.endm
@@ -696,31 +696,26 @@
.endm
.macro jumpifnexttargetvalid jumpInstr:req
- .byte 0x7a
+ .byte B_SCR_OP_JUMPIFNEXTTARGETVALID
.4byte \jumpInstr
.endm
.macro tryhealhalfhealth battler:req, failInstr:req
- .byte 0x7b
+ .byte B_SCR_OP_TRYHEALHALFHEALTH
.byte \battler
.4byte \failInstr
.endm
- .macro trymirrormove
- .byte 0x7c
- .endm
-
- .macro setfieldweather weather:req
- .byte 0x7d
- .byte \weather
+ .macro setfieldweather
+ .byte B_SCR_OP_SETFIELDWEATHER
.endm
.macro setreflect
- .byte 0x7e
+ .byte B_SCR_OP_SETREFLECT
.endm
.macro setseeded
- .byte 0x7f
+ .byte B_SCR_OP_SETSEEDED
.endm
.macro manipulatedamage mode:req
@@ -732,22 +727,13 @@
.byte B_SCR_OP_TRYSETREST
.endm
- .macro unused_0x82
- .byte B_SCR_OP_UNUSED_0x82
- .endm
-
- .macro unused_0x83
- .byte B_SCR_OP_UNUSED_0x83
- .endm
-
.macro jumpifuproarwakes jumpInstr:req
.byte B_SCR_OP_JUMPIFUPROARWAKES
.4byte \jumpInstr
.endm
- .macro stockpile id:req
+ .macro stockpile
.byte B_SCR_OP_STOCKPILE
- .byte \id
.endm
.macro stockpiletobasedamage
@@ -759,14 +745,6 @@
.4byte \failInstr
.endm
- .macro removestockpilecounters
- callnative BS_RemoveStockpileCounters
- .endm
-
- .macro unused_0x88
- .byte B_SCR_OP_UNUSED_0x88
- .endm
-
.macro statbuffchange battler:req, flags:req, failInstr:req, stats=0
.byte B_SCR_OP_STATBUFFCHANGE
.byte \battler
@@ -776,15 +754,15 @@
.endm
.macro normalisebuffs
- .byte 0x8a
+ .byte B_SCR_OP_NORMALISEBUFFS
.endm
.macro setbide
- .byte 0x8b
+ .byte B_SCR_OP_SETBIDE
.endm
.macro twoturnmoveschargestringandanimation
- .byte 0x8c
+ .byte B_SCR_OP_TWOTURNMOVESCHARGESTRINGANDANIMATION
.4byte 1f @animation then attack string
@default - attack string then animation
printsavedstring
@@ -801,15 +779,15 @@
.endm
.macro trynonvolatilestatus
- .byte 0x8d
+ .byte B_SCR_OP_TRYNONVOLATILESTATUS
.endm
.macro initmultihitstring
- .byte 0x8e
+ .byte B_SCR_OP_INITMULTIHITSTRING
.endm
.macro forcerandomswitch failInstr:req
- .byte 0x8f
+ .byte B_SCR_OP_FORCERANDOMSWITCH
.4byte \failInstr
.endm
@@ -861,205 +839,161 @@
.endm
.macro setfocusenergy battler:req
- .byte 0x9a
+ .byte B_SCR_OP_SETFOCUSENERGY
.byte \battler
.endm
.macro transformdataexecution
- .byte 0x9b
+ .byte B_SCR_OP_TRANSFORMDATAEXECUTION
.endm
.macro setsubstitute
- .byte 0x9c
+ .byte B_SCR_OP_SETSUBSTITUTE
.endm
.macro mimicattackcopy failInstr:req
- .byte 0x9d
+ .byte B_SCR_OP_MIMICATTACKCOPY
.4byte \failInstr
.endm
.macro setcalledmove
- .byte 0x9e
- .endm
-
- .macro unused_0x9f
- .byte 0x9f
- .endm
-
- .macro unused_0xA0
- .byte 0xa0
- .endm
-
- .macro counterdamagecalculator failInstr:req
- .byte 0xa1
- .4byte \failInstr
- .endm
-
- .macro mirrorcoatdamagecalculator failInstr:req
- .byte 0xa2
- .4byte \failInstr
+ .byte B_SCR_OP_SETCALLEDMOVE
.endm
.macro disablelastusedattack failInstr:req
- .byte 0xa3
+ .byte B_SCR_OP_DISABLELASTUSEDATTACK
.4byte \failInstr
.endm
.macro trysetencore failInstr:req
- .byte 0xa4
+ .byte B_SCR_OP_TRYSETENCORE
.4byte \failInstr
.endm
.macro painsplitdmgcalc failInstr:req
- .byte 0xa5
+ .byte B_SCR_OP_PAINSPLITDMGCALC
.4byte \failInstr
.endm
.macro settypetorandomresistance failInstr:req
- .byte 0xa6
+ .byte B_SCR_OP_SETTYPETORANDOMRESISTANCE
.4byte \failInstr
.endm
.macro setalwayshitflag
- .byte 0xa7
+ .byte B_SCR_OP_SETALWAYSHITFLAG
.endm
.macro copymovepermanently failInstr:req
- .byte 0xa8
- .4byte \failInstr
- .endm
-
- .macro trychoosesleeptalkmove failInstr:req
- .byte 0xa9
+ .byte B_SCR_OP_COPYMOVEPERMANENTLY
.4byte \failInstr
.endm
- .macro trysetdestinybond failInstr:req
- .byte 0xaa
- .4byte \failInstr
- .endm
-
- .macro unused_0xab
- .byte 0xab
- .endm
-
.macro settailwind failInstr:req
- .byte 0xac
+ .byte B_SCR_OP_SETTAILWIND
.4byte \failInstr
.endm
.macro tryspiteppreduce failInstr:req
- .byte 0xad
+ .byte B_SCR_OP_TRYSPITEPPREDUCE
.4byte \failInstr
.endm
.macro healpartystatus
- .byte 0xae
+ .byte B_SCR_OP_HEALPARTYSTATUS
.endm
.macro cursetarget failInstr:req
- .byte 0xaf
+ .byte B_SCR_OP_CURSETARGET
.4byte \failInstr
.endm
.macro trysetspikes failInstr:req
- .byte 0xb0
+ .byte B_SCR_OP_TRYSETSPIKES
.4byte \failInstr
.endm
.macro setvolatile battler:req, volatile:req, value=TRUE
- .byte 0xb1
+ .byte B_SCR_OP_SETVOLATILE
.byte \battler
.byte \volatile
.byte \value
.endm
.macro trysetperishsong failInstr:req
- .byte 0xb2
+ .byte B_SCR_OP_TRYSETPERISHSONG
.4byte \failInstr
.endm
- .macro handlerollout
- .byte 0xb3
- .endm
-
.macro jumpifconfusedandstatmaxed stat:req, jumpInstr:req
- .byte 0xb4
+ .byte B_SCR_OP_JUMPIFCONFUSEDANDSTATMAXED
.byte \stat
.4byte \jumpInstr
.endm
- .macro handlefurycutter
- .byte 0xb5
- .endm
-
.macro setembargo failInstr:req
- .byte 0xb6
+ .byte B_SCR_OP_SETEMBARGO
.4byte \failInstr
.endm
.macro presentdamagecalculation
- .byte 0xb7
+ .byte B_SCR_OP_PRESENTDAMAGECALCULATION
.endm
.macro setsafeguard
- .byte 0xb8
- .endm
-
- .macro magnitudedamagecalculation
- .byte 0xb9
+ .byte B_SCR_OP_SETSAFEGUARD
.endm
.macro jumpifnopursuitswitchdmg jumpInstr:req
- .byte 0xba
+ .byte B_SCR_OP_JUMPIFNOPURSUITSWITCHDMG
.4byte \jumpInstr
.endm
.macro tryactivateitem battler:req, flag:req
- .byte 0xbb
+ .byte B_SCR_OP_TRYACTIVATEITEM
.byte \battler
.byte \flag
.endm
.macro halvehp failInstr:req
- .byte 0xbc
+ .byte B_SCR_OP_HALVEHP
.4byte \failInstr
.endm
.macro copyfoestats
- .byte 0xbd
+ .byte B_SCR_OP_COPYFOESTATS
.endm
.macro rapidspinfree
- .byte 0xbe
+ .byte B_SCR_OP_RAPIDSPINFREE
.endm
.macro recoverbasedonsunlight failInstr:req
- .byte 0xc0
+ .byte B_SCR_OP_RECOVERBASEDONSUNLIGHT
.4byte \failInstr
.endm
.macro setstickyweb failInstr:req
- .byte 0xc1
+ .byte B_SCR_OP_SETSTICKYWEB
.4byte \failInstr
.endm
.macro selectfirstvalidtarget
- .byte 0xc2
+ .byte B_SCR_OP_SELECTFIRSTVALIDTARGET
.endm
.macro setfutureattack
- .byte 0xc3
+ .byte B_SCR_OP_SETFUTUREATTACK
.endm
.macro trydobeatup endInstr:req, failInstr:req
- .byte 0xc4
+ .byte B_SCR_OP_TRYDOBEATUP
.4byte \endInstr
.4byte \failInstr
.endm
.macro setsemiinvulnerablebit clear=FALSE
- .byte 0xc5
+ .byte B_SCR_OP_SETSEMIINVULNERABLEBIT
.byte \clear
.endm
@@ -1067,289 +1001,221 @@
setsemiinvulnerablebit TRUE
.endm
- .macro tryfiretwoturnmovenowbyeffect battler:req, checkChargeTurnEffects:req, jumpInstr:req
- .byte 0xc6
- .byte \battler
- .byte \checkChargeTurnEffects
- .4byte \jumpInstr
- .endm
-
- .macro tryfiretwoturnmovewithoutcharging battler:req, jumpInstr:req
- tryfiretwoturnmovenowbyeffect \battler, TRUE, \jumpInstr
- .endm
-
- .macro tryfiretwoturnmoveaftercharging battler:req, jumpInstr:req
- tryfiretwoturnmovenowbyeffect \battler, FALSE, \jumpInstr
- .endm
-
- .macro unused_0xC7
- .byte 0xc7
- .endm
-
- .macro unused_c8
- .byte 0xc8
- .endm
-
.macro trymemento failInstr:req
- .byte 0xc9
+ .byte B_SCR_OP_TRYMEMENTO
.4byte \failInstr
.endm
.macro setforcedtarget
- .byte 0xca
- .endm
-
- .macro unused_0xcb battler:req
- .byte 0xcb
- .byte \battler
- .endm
-
- .macro callenvironmentattack
- .byte 0xcc
+ .byte B_SCR_OP_SETFORCEDTARGET
.endm
.macro curestatuswithmove failInstr:req
- .byte 0xcd
+ .byte B_SCR_OP_CURESTATUSWITHMOVE
.4byte \failInstr
.endm
.macro settorment failInstr:req
- .byte 0xce
+ .byte B_SCR_OP_SETTORMENT
.4byte \failInstr
.endm
- .macro jumpifnodamage jumpInstr:req
- .byte 0xcf
- .4byte \jumpInstr
- .endm
-
.macro settaunt failInstr:req
- .byte 0xd0
+ .byte B_SCR_OP_SETTAUNT
.4byte \failInstr
.endm
.macro trysethelpinghand failInstr:req
- .byte 0xd1
+ .byte B_SCR_OP_TRYSETHELPINGHAND
.4byte \failInstr
.endm
.macro tryswapitems failInstr:req
- .byte 0xd2
+ .byte B_SCR_OP_TRYSWAPITEMS
.4byte \failInstr
.endm
.macro trycopyability battler:req, failInstr:req
- .byte 0xd3
+ .byte B_SCR_OP_TRYCOPYABILITY
.byte \battler
.4byte \failInstr
.endm
.macro trywish failInstr:req
- .byte 0xd4
+ .byte B_SCR_OP_TRYWISH
.4byte \failInstr
.endm
.macro settoxicspikes failInstr:req
- .byte 0xd5
+ .byte B_SCR_OP_SETTOXICSPIKES
.4byte \failInstr
.endm
.macro setgastroacid failInstr:req
- .byte 0xd6
+ .byte B_SCR_OP_SETGASTROACID
.4byte \failInstr
.endm
.macro setyawn failInstr:req
- .byte 0xd7
- .4byte \failInstr
- .endm
-
- .macro setdamagetohealthdifference failInstr:req
- .byte 0xd8
+ .byte B_SCR_OP_SETYAWN
.4byte \failInstr
.endm
.macro setroom
- .byte 0xd9
+ .byte B_SCR_OP_SETROOM
.endm
.macro tryswapabilities failInstr:req
- .byte 0xda
+ .byte B_SCR_OP_TRYSWAPABILITIES
.4byte \failInstr
.endm
.macro tryimprison failInstr:req
- .byte 0xdb
+ .byte B_SCR_OP_TRYIMPRISON
.4byte \failInstr
.endm
.macro setstealthrock failInstr:req
- .byte 0xdc
+ .byte B_SCR_OP_SETSTEALTHROCK
.4byte \failInstr
.endm
.macro trysetvolatile battler:req, _volatile:req, failInstr:req
- .byte 0xdd
+ .byte B_SCR_OP_TRYSETVOLATILE
.byte \battler
.byte \_volatile
.4byte \failInstr
.endm
- .macro assistattackselect failInstr:req
- .byte 0xde
- .4byte \failInstr
- .endm
-
.macro trysetmagiccoat failInstr:req
- .byte 0xdf
+ .byte B_SCR_OP_TRYSETMAGICCOAT
.4byte \failInstr
.endm
.macro trysetsnatch failInstr:req
- .byte 0xe0
+ .byte B_SCR_OP_TRYSETSNATCH
.4byte \failInstr
.endm
- .macro unused2 ptr:req
- .byte 0xe1
- .4byte \ptr
- .endm
-
.macro switchoutabilities battler:req
- .byte 0xe2
+ .byte B_SCR_OP_SWITCHOUTABILITIES
.byte \battler
.endm
.macro jumpifhasnohp battler:req, jumpInstr:req
- .byte 0xe3
+ .byte B_SCR_OP_JUMPIFHASNOHP
.byte \battler
.4byte \jumpInstr
.endm
- .macro unused_0xE4
- .byte 0xe4
- .endm
-
.macro pickup
- .byte 0xe5
- .endm
-
- .macro unused_0xE6
- .byte 0xe6
- .endm
-
- .macro unused_0xE7
- .byte 0xe7
+ .byte B_SCR_OP_PICKUP
.endm
.macro settypebasedhalvers failInstr:req
- .byte 0xe8
+ .byte B_SCR_OP_SETTYPEBASEDHALVERS
.4byte \failInstr
.endm
.macro jumpifsubstituteblocks jumpInstr:req
- .byte 0xe9
+ .byte B_SCR_OP_JUMPIFSUBSTITUTEBLOCKS
.4byte \jumpInstr
.endm
.macro tryrecycleitem failInstr:req
- .byte 0xea
+ .byte B_SCR_OP_TRYRECYCLEITEM
.4byte \failInstr
.endm
.macro settypetoenvironment failInstr:req
- .byte 0xeb
+ .byte B_SCR_OP_SETTYPETOENVIRONMENT
.4byte \failInstr
.endm
.macro pursuitdoubles failInstr:req
- .byte 0xec
+ .byte B_SCR_OP_PURSUITDOUBLES
.4byte \failInstr
.endm
.macro snatchsetbattlers
- .byte 0xed
- .endm
-
- .macro removescreens
- .byte 0xee
+ .byte B_SCR_OP_SNATCHSETBATTLERS
.endm
.macro handleballthrow
- .byte 0xef
+ .byte B_SCR_OP_HANDLEBALLTHROW
.endm
.macro givecaughtmon passInstr:req
- .byte 0xf0
+ .byte B_SCR_OP_GIVECAUGHTMON
.4byte \passInstr
.endm
.macro trysetcaughtmondexflags failInstr:req
- .byte 0xf1
+ .byte B_SCR_OP_TRYSETCAUGHTMONDEXFLAGS
.4byte \failInstr
.endm
.macro displaydexinfo
- .byte 0xf2
+ .byte B_SCR_OP_DISPLAYDEXINFO
.endm
.macro trygivecaughtmonnick
- .byte 0xf3
+ .byte B_SCR_OP_TRYGIVECAUGHTMONNICK
.endm
- .macro unused_0xf4
- .byte 0xf4
+ .macro sortbattlers
+ .byte B_SCR_OP_SORTBATTLERS
.endm
.macro removeattackerstatus1
- .byte 0xf5
+ .byte B_SCR_OP_REMOVEATTACKERSTATUS1
.endm
.macro finishaction
- .byte 0xf6
+ .byte B_SCR_OP_FINISHACTION
.endm
.macro finishturn
- .byte 0xf7
+ .byte B_SCR_OP_FINISHTURN
.endm
.macro trainerslideout position:req
- .byte 0xf8
+ .byte B_SCR_OP_TRAINERSLIDEOUT
.byte \position
.endm
.macro settelekinesis failInstr:req
- .byte 0xf9
+ .byte B_SCR_OP_SETTELEKINESIS
.4byte \failInstr
.endm
.macro swapstatstages stat:req
- .byte 0xfa
+ .byte B_SCR_OP_SWAPSTATSTAGES
.byte \stat
.endm
.macro averagestats stat:req
- .byte 0xfb
+ .byte B_SCR_OP_AVERAGESTATS
.byte \stat
.endm
.macro jumpifcaptivateaffected jumpInstr:req
- .byte 0xfc
+ .byte B_SCR_OP_JUMPIFCAPTIVATEAFFECTED
.4byte \jumpInstr
.endm
.macro setnonvolatilestatus trigger:req
- .byte 0xfd
+ .byte B_SCR_OP_SETNONVOLATILESTATUS
.byte \trigger
.endm
.macro tryoverwriteability failInstr:req
- .byte 0xfe
+ .byte B_SCR_OP_TRYOVERWRITEABILITY
.4byte \failInstr
.endm
.macro callnative func:req
- .byte 0xff
+ .byte B_SCR_OP_CALLNATIVE
.4byte \func
.endm
@@ -1373,11 +1239,6 @@
callnative BS_JumpIfIntimidateAbilityPrevented
.endm
- .macro metalburstdamagecalculator failInstr:req
- callnative BS_CalcMetalBurstDmg
- .4byte \failInstr
- .endm
-
.macro allyswitchswapbattlers
callnative BS_AllySwitchSwapBattler
.endm
@@ -1446,7 +1307,7 @@
@ Used by effects that may proc Symbiosis but do not call removeitem.
.macro trysymbiosis battler:req
callnative BS_TrySymbiosis
- .byte \battler
+ .byte \battler
.endm
@ returns B_SIDE_x to gBattleCommunication[0]
@@ -1461,43 +1322,17 @@
.4byte \ptr
.endm
- .macro jumpifcantloseitem battler:req, ptr:req
+ .macro jumpifcantloseitem ptr:req
callnative BS_JumpIfCantLoseItem
- .byte \battler
.4byte \ptr
.endm
- .macro handlemegaevo battler:req, case:req
- callnative BS_HandleMegaEvolution
- .byte \battler
- .byte \case
- .endm
-
- .macro handleprimalreversion battler:req, case:req
- callnative BS_HandlePrimalReversion
- .byte \battler
- .byte \case
- .endm
-
- .macro handleultraburst battler:req, case:req
- callnative BS_HandleUltraBurst
- .byte \battler
- .byte \case
- .endm
-
.macro jumpifshelltrap battler:req, jumpInstr:req
callnative BS_JumpIfShellTrap
.byte \battler
.4byte \jumpInstr
.endm
- .macro jumpifelectricabilityaffected battler:req, ability:req, jumpInstr:req
- callnative BS_JumpIfElectricAbilityAffected
- .byte \battler
- .2byte \ability
- .4byte \jumpInstr
- .endm
-
.macro setterrain failInstr:req
callnative BS_SetTerrain
.4byte \failInstr
@@ -1627,14 +1462,6 @@
.4byte \jumpInstr
.endm
- .macro trygulpmissile
- callnative BS_TryGulpMissile
- .endm
-
- .macro tryactivategulpmissile
- callnative BS_TryActivateGulpMissile
- .endm
-
.macro tryquash failInstr:req
callnative BS_TryQuash
.4byte \failInstr
@@ -1659,23 +1486,19 @@
.4byte \jumpInstr
.endm
- .macro ficklebeamdamagecalculation
- callnative BS_FickleBeamDamageCalculation
- .endm
-
.macro trytarshot failInstr:req
callnative BS_TryTarShot
.4byte \failInstr
.endm
- .macro jumpifteainvulnerable battler:req, jumpInstr:req
- callnative BS_TeatimeInvul
+ .macro jumpifnoberry battler:req, jumpInstr:req
+ callnative BS_JumpIfNoBerry
.byte \battler
.4byte \jumpInstr
.endm
- .macro jumpifteanoberry failInstr:req
- callnative BS_TeatimeTargets
+ .macro checkteatimetargets failInstr:req
+ callnative BS_CheckTeaTimeTargets
.4byte \failInstr
.endm
@@ -1695,9 +1518,9 @@
.byte \battler
.endm
- .macro resetterrainabilityflags
- callnative BS_ResetTerrainAbilityFlags
- .endm
+ .macro resetterrainabilityflags
+ callnative BS_ResetTerrainAbilityFlags
+ .endm
@ Stores Healing Wish effect.
.macro storehealingwish battler:req
@@ -1742,11 +1565,6 @@
callnative BS_RemoveTerrain
.endm
- .macro tryspectralthiefsteal jumpInstr:req
- callnative BS_TrySpectralThiefSteal
- .4byte \jumpInstr
- .endm
-
.macro spectralthiefprintstats
callnative BS_SpectralThiefPrintStats
.endm
@@ -1873,10 +1691,6 @@
manipulatedamage DMG_1_8_TARGET_HP
.endm
- .macro dmgtomaxattackerhp
- manipulatedamage DMG_FULL_ATTACKER_HP
- .endm
-
.macro jumpifflowerveil jumpInstr:req
jumpifnottype BS_TARGET, TYPE_GRASS, 1f
jumpifability BS_TARGET_SIDE, ABILITY_FLOWER_VEIL, \jumpInstr
@@ -1900,11 +1714,6 @@
.byte \battler
.endm
- .macro trysynchronoise jumpInstr:req
- callnative BS_TrySynchronoise
- .4byte \jumpInstr
- .endm
-
.macro jumpifroarfails jumpInstr:req
callnative BS_JumpIfRoarFails
.4byte \jumpInstr
@@ -1969,11 +1778,6 @@
.byte \battler
.endm
- .macro setspriteignore0hp ignore0HP:req
- callnative BS_SetSpriteIgnore0Hp
- .byte \ignore0HP
- .endm
-
.macro updatenick
callnative BS_UpdateNick
.endm
@@ -2119,12 +1923,14 @@
callnative BS_InstantHpDrop
.endm
- .macro clearstatus
+ .macro clearstatus battler:req
callnative BS_ClearStatus
+ .byte \battler
.endm
- .macro restoremovepp
+ .macro restoremovepp battler:req
callnative BS_RestoreMovePp
+ .byte \battler
.endm
.macro tryactivatereceiver battler:req
@@ -2169,10 +1975,11 @@
.4byte \failInstr
.endm
- .macro handleformchange battler:req, case_:req
+ .macro handleformchange battler:req, caseId:req, bufferSpeciesName=TRUE
callnative BS_HandleFormChange
.byte \battler
- .byte \case_
+ .byte \caseId
+ .byte \bufferSpeciesName
.endm
.macro tryautotomize failInstr:req
@@ -2289,20 +2096,6 @@
.4byte \failInstr
.endm
- .macro jumpifunder200 jumpInstr:req
- callnative BS_JumpIfUnder200
- .4byte \jumpInstr
- .endm
-
- .macro setskydrop
- callnative BS_SetSkyDrop
- .endm
-
- .macro clearskydrop failInstr:req
- callnative BS_ClearSkyDrop
- .4byte \failInstr
- .endm
-
.macro skydropyawn
callnative BS_SkyDropYawn
.endm
@@ -2325,11 +2118,6 @@
.4byte \failInstr
.endm
- .macro jumpifnotrototilleraffected jumpInstr:req
- callnative BS_JumpIfNotRototillerAffected
- .4byte \jumpInstr
- .endm
-
.macro consumeberry battler:req, fromBattler:req
callnative BS_ConsumeBerry
.byte \battler
@@ -2363,20 +2151,14 @@
.4byte \failInstr
.endm
- .macro setpoltergeistmessage failInstr:req
+ .macro setpoltergeistmessage
callnative BS_SetPoltergeistMessage
- .4byte \failInstr
.endm
.macro tryresetnegativestatstages
callnative BS_TryResetNegativeStatStages
.endm
- .macro jumpiflastuseditemberry jumpInstr:req
- callnative BS_JumpIfLastUsedItemBerry
- .4byte \jumpInstr
- .endm
-
.macro savebattleritem
callnative BS_SaveBattlerItem
.endm
@@ -2465,7 +2247,8 @@
.4byte \jumpInstr
.endm
- @ Absorbs Toxic Spikes when a grounded Poison-type faints to entry hazards.
- .macro tryabsorbtoxicspikesonfaint
- callnative BS_TryAbsorbToxicSpikesOnFaint
+ .macro tryactivateabilitywithabilityshield battler:req, switchedItems=FALSE
+ callnative BS_TryActivateAbilityWithAbilityShield
+ .byte \battler
+ .byte \switchedItems
.endm
diff --git a/asm/macros/event.inc b/asm/macros/event.inc
index 8868f83f7dd8..a7f4cbf04994 100644
--- a/asm/macros/event.inc
+++ b/asm/macros/event.inc
@@ -58,6 +58,8 @@
STD_FIND_ITEM = 1
STD_OBTAIN_DECORATION = 7
STD_REGISTER_MATCH_CALL = 8
+ STD_PUT_ITEM_AWAY = 11
+ STD_RECEIVED_ITEM = 12
@ Calls the script in gStdScripts at index function.
.macro callstd function:req
@@ -644,6 +646,10 @@
.endif
.endm
+ .macro waitmovementall
+ callnative Script_waitmovementall, requests_effects=1
+ .endm
+
@ Attempts to despawn the specified (localId) object on the specified map.
@ It also sets the object's visibility flag if it has one.
@ If no map is specified, then the current map is used.
@@ -726,7 +732,7 @@
OBJ_ID_NONE = 0
@ Configures the arguments for a trainer battle, then jumps to the appropriate script in scripts/trainer_battle.inc
- .macro trainerbattle type:req localIdA:req, trainer_a:req, intro_text_a:req, lose_text_a:req, event_script_a:req, localIdB:req, trainer_b:req, intro_text_b:req, lose_text_b:req, event_script_b:req, victory_text:req, cannot_battle:req, isDouble:req, playMusicA:req, playMusicB:req, isRematch:req
+ .macro trainerbattle type:req localIdA:req, trainer_a:req, intro_text_a:req, lose_text_a:req, event_script_a:req, localIdB:req, trainer_b:req, intro_text_b:req, lose_text_b:req, event_script_b:req, victory_text:req, cannot_battle:req, isDouble:req, playMusicA:req, playMusicB:req, isRematch:req, rival_battle_flags=0
.byte SCR_OP_TRAINERBATTLE
.set trainerbattle_flags, 0
.ifgt \isDouble; .set trainerbattle_flags, trainerbattle_flags | (1 << 0); .endif
@@ -747,6 +753,7 @@
.4byte \event_script_b @ retAddrB
.4byte \victory_text @ victoryText
.4byte \cannot_battle @ cannotBattle
+ .byte \rival_battle_flags @ rivalBattleFlags
.endm
NO_MUSIC = FALSE
@@ -796,6 +803,11 @@
trainerbattle TRAINER_BATTLE_TWO_TRAINERS_NO_INTRO, OBJ_ID_NONE, \trainer_a, NULL, \lose_text_a, NULL, OBJ_ID_NONE, \trainer_b, NULL, \lose_text_b, NULL, NULL, NULL, FALSE, TRUE, FALSE, FALSE
.endm
+ @ Starts a trainer battle with victory text if the player loses. If flags is nonzero, the player will be healed after battle (and its assumed to be the tutorial battle)
+ .macro trainerbattle_earlyrival trainer:req, flags:req, lose_text:req, victory_text:req
+ trainerbattle TRAINER_BATTLE_EARLY_RIVAL, OBJ_ID_NONE, \trainer, NULL, \lose_text, NULL, OBJ_ID_NONE, TRAINER_NONE, NULL, NULL, NULL, \victory_text, NULL, FALSE, TRUE, FALSE, FALSE, \flags
+ .endm
+
@ Starts a trainer battle using the battle information stored in RAM (usually by the scripts in trainer_battle.inc, which
@ are run by trainerbattle), and blocks script execution until the battle finishes.
.macro dotrainerbattle
@@ -1014,9 +1026,9 @@
.2byte \level
.ifnb \item; .set givemon_flags, givemon_flags | (1 << 0); .endif
.ifnb \ball; .set givemon_flags, givemon_flags | (1 << 1); .endif
- .ifnb \nature; .set givemon_flags, givemon_flags | (1 << 2); .endif
+ .set givemon_flags, givemon_flags | (1 << 2);
.ifnb \abilityNum; .set givemon_flags, givemon_flags | (1 << 3); .endif
- .ifnb \gender; .set givemon_flags, givemon_flags | (1 << 4); .endif
+ .set givemon_flags, givemon_flags | (1 << 4);
.ifnb \hpEv; .set givemon_flags, givemon_flags | (1 << 5); .endif
.ifnb \atkEv; .set givemon_flags, givemon_flags | (1 << 6); .endif
.ifnb \defEv; .set givemon_flags, givemon_flags | (1 << 7); .endif
@@ -1040,9 +1052,9 @@
.4byte givemon_flags
.ifnb \item; .2byte \item; .endif
.ifnb \ball; .2byte \ball; .endif
- .ifnb \nature; .2byte \nature; .endif
+ .ifnb \nature; .2byte \nature; .else; .2byte NATURE_MAY_SYNCHRONIZE; .endif
.ifnb \abilityNum; .2byte \abilityNum; .endif
- .ifnb \gender; .2byte \gender; .endif
+ .ifnb \gender; .2byte \gender; .else; .2byte MON_GENDER_MAY_CUTE_CHARM; .endif
.ifnb \hpEv; .2byte \hpEv; .endif
.ifnb \atkEv; .2byte \atkEv; .endif
.ifnb \defEv; .2byte \defEv; .endif
@@ -1906,6 +1918,12 @@
.2byte \id
.endm
+ @ Gets the width of the specified message in the Braille font and sets the result to VAR_0x8004.
+ .macro getbraillestringwidth msg:req
+ .byte SCR_OP_GETBRAILLESTRINGWIDTH
+ .4byte \msg
+ .endm
+
.macro dynmultistack left:req, top:req, ignoreBPress:req, maxBeforeScroll:req, shouldSort:req, initialSelected:req, callbacks:req
_dynmultichoice \left, \top, \ignoreBPress, \maxBeforeScroll, \shouldSort, \initialSelected, \callbacks, NULL
.endm
@@ -2083,6 +2101,13 @@
callstd STD_FIND_ITEM
.endm
+ @ Prints the message "{PLAYER} put the {ITEM} in the {POCKET}." The item name is pluralized, if applicable.
+ .macro putitemaway item:req, amount=1
+ setorcopyvar VAR_0x8000, \item
+ setorcopyvar VAR_0x8001, \amount
+ callstd STD_PUT_ITEM_AWAY
+ .endm
+
@ Equivalent to giveitem but for a single decoration.
.macro givedecoration decoration:req
setorcopyvar VAR_0x8000, \decoration
@@ -2125,6 +2150,11 @@
.4byte \func
.endm
+ .macro setdynamicswitchaifunc func:req
+ callnative ScriptSetDynamicAiSwitchFunc, requests_effects=1
+ .4byte \func
+ .endm
+
@ Set up a totem boost for the next battle.
@ 'battler' is the position of the mon you want to gain a boost. see B_POSITION_xx in include/constants/battle.h.
@ The rest of the arguments are the stat change values to each stat.
@@ -2274,6 +2304,12 @@
.2byte \slot
.endm
+ @ Sets the hp to 0 for the Pokémon in \slot.
+ .macro setko slot:req
+ callnative Script_SetKO, requests_effects=1
+ .2byte \slot
+ .endm
+
@ Sets VAR_RESULT to the Pokémon in \slot's Tera Type
.macro checkteratype slot:req
callnative CheckTeraType, requests_effects=1
@@ -2340,7 +2376,7 @@
@ ============================ @
@ FAKE RTC MACROS
@ Will only function if OW_USE_FAKE_RTC is true. If it has any additional requirements, it will be listed accordingly.
-
+
@ When OW_USE_FAKE_RTC is true and OW_FLAG_PAUSE_TIME is assigned, this macro will stop the flow of time.
.macro pausefakertc
callnative Script_PauseFakeRtc, requests_effects=1
@@ -2593,6 +2629,68 @@
cant_see_if 5
.endm
+ .macro setmultitrainerbattle trainer_a:req, lose_text_a:req, trainer_b:req, lose_text_b:req, partnerId:req
+ callnative SetMultiTrainerBattle
+ .2byte \trainer_a
+ .4byte \lose_text_a
+ .2byte \trainer_b
+ .4byte \lose_text_b
+ .2byte \partnerId
+ .endm
+
+ @ facility version of `trainerbattle` macro. Used in Battle Pyramid and Trainer Hill
+ .macro facilitytrainerbattle facility:req
+ callnative FacilityTrainerBattle
+ .byte \facility
+ .endm
+
+ @ immediately starts a battle of the given facility
+ .macro dofacilitytrainerbattle facility:req
+ callnative DoFacilityTrainerBattle
+ .byte \facility
+ .endm
+
+ .macro ingame_trade tradeId:req wantTradeMsg:req, declineTradeJump:req, wrongMonJump:req, tradeCompleteMsg:req
+ setvar VAR_0x8005, \tradeId
+ specialvar VAR_0x8009, GetInGameTradeSpeciesInfo
+ msgbox \wantTradeMsg, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, \declineTradeJump
+ chooseboxmon SELECT_PC_MON_TRADE
+ waitstate
+ goto_if_eq VAR_0x8004, PARTY_NOTHING_CHOSEN, \declineTradeJump
+ specialvar VAR_0x800B, GetTradeSpecies
+ goto_if_ne VAR_0x800B, VAR_0x8009, \wrongMonJump
+ special CreateInGameTradePokemon
+ special DoInGameTradeScene
+ waitstate
+ msgbox \tradeCompleteMsg, MSGBOX_DEFAULT
+ .endm
+
+ .macro move_tutor moveId:req, wantTeachingMsg:req, monSelectMsg:req, declinedJmp:req, taughtJmp:req, flagId=0
+ .if \flagId
+ goto_if_set \flagId, \taughtJmp
+ .endif
+ msgbox \wantTeachingMsg, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, \declinedJmp
+ .if \flagId
+ call MoveTutor_EventScript_CanOnlyBeLearnedOnce
+ goto_if_eq VAR_RESULT, NO, \declinedJmp
+ .endif
+ msgbox \monSelectMsg, MSGBOX_DEFAULT
+ setvar VAR_0x8005, \moveId
+ call MoveTutor_EventScript_OpenBox
+ goto_if_eq VAR_RESULT, FALSE, \declinedJmp
+ .if \flagId
+ setflag \flagId
+ .endif
+ goto \taughtJmp
+ .endm
+
+ .macro chooseboxmon selectionType=SELECT_PC_MON_NORMAL
+ callnative ChooseBoxMon
+ .byte \selectionType
+ .endm
+
@ Follower NPCs
@ Sets an existing NPC up to follow the player.
@@ -2617,7 +2715,7 @@
.2byte \battlePartner
.4byte \script
updatefollowingmon
- 1:
+ 1:
.else
.error "setfollowernpc unavailable with FNPC_ENABLE_NPC_FOLLOWERS defined as FALSE"
.endif
@@ -2710,3 +2808,49 @@
callnative ScrCmd_istmrelearneractive, requests_effects=1
.4byte \destination
.endm
+
+ @ Sets a starting status for the next battle. Can be stacked.
+ .macro setstartingstatus status:req
+ callnative ScrCmd_setstartingstatus
+ .byte \status
+ .endm
+
+@ FRLG
+
+
+ @ Prints the provided message after playing the fanfare music (can only be MUS_LEVEL_UP or MUS_RG_OBTAIN_KEY_ITEM).
+ @ It then prints the message shown by using putitemaway.
+ .macro msgreceiveditem msg:req, item:req, amount=1, fanfare=MUS_LEVEL_UP
+ loadword 0, \msg
+ setorcopyvar VAR_0x8000, \item
+ setorcopyvar VAR_0x8001, \amount
+ setorcopyvar VAR_0x8002, \fanfare
+ callstd STD_RECEIVED_ITEM
+ .endm
+
+ @ Adds the specified item to the bag, then prints a message with fanfare. See description of msgreceiveditem.
+ .macro giveitem_msg msg:req, item:req, amount=1, fanfare=MUS_LEVEL_UP
+ additem \item, \amount
+ msgreceiveditem \msg, \item, \amount, \fanfare
+ .endm
+
+ @ Depends on the provided function. With the default argument, unlocks the specified entry in the Fame Checker.
+ .macro famechecker person:req, index:req, function=SetFlavorTextFlagFromSpecialVars
+ setvar VAR_0x8004, \person
+ setvar VAR_0x8005, \index
+ special \function
+ .endm
+
+ @ Sets the 'defeated' flag for all trainers in the specified gym.
+ .macro set_gym_trainers_frlg gym:req
+ setvar VAR_0x8008, \gym
+ call Common_EventScript_SetGymTrainers_Frlg
+ .endm
+
+ @ Prints a braille message, then waits for users input.
+ .macro braillemessage_wait text:req
+ setvar VAR_0x8006, 0
+ braillemessage \text
+ getbraillestringwidth \text
+ call EventScript_BrailleCursorWaitButton
+ .endm
diff --git a/asm/macros/map.inc b/asm/macros/map.inc
index 04a749026a7b..204055335566 100644
--- a/asm/macros/map.inc
+++ b/asm/macros/map.inc
@@ -46,12 +46,10 @@
.endm
@ Defines an object event template for map data, to be used by a clone object. Mirrors the struct layout of ObjectEventTemplate in include/global.fieldmap.h
- @ NOTE: The handling for this type of event does not exist in Emerald by default; it is exclusive to FRLG.
.macro clone_event index:req, gfx:req, x:req, y:req, target_local_id:req, target_map_id:req
.byte \index
- .byte \gfx
+ .2byte \gfx
.byte OBJ_KIND_CLONE
- .space 1 @ Padding
.2byte \x, \y
.byte \target_local_id
.space 3 @ Padding
@@ -91,17 +89,12 @@
@ Defines a generic background event for map data. Mirrors the struct layout of BgEvent in include/global.fieldmap.h
@ 'kind' is any BG_EVENT_* constant (see include/constants/event_bg.h).
@ 'arg6' and 'arg7' are used differently depending on the bg event type. See macros below
- .macro bg_event x:req, y:req, elevation:req, kind:req, arg6:req, arg7
+ .macro bg_event x:req, y:req, elevation:req, kind:req, arg6:req
.2byte \x, \y
.byte \elevation
.byte \kind
.space 2 @ Padding
- .if \kind != BG_EVENT_HIDDEN_ITEM
- .4byte \arg6
- .else
- .2byte \arg6
- .2byte \arg7
- .endif
+ .4byte \arg6
inc _num_signs
.endm
@@ -111,11 +104,17 @@
.endm
@ Defines a background hidden item event for map data
- .macro bg_hidden_item_event x:req, y:req, elevation:req, item:req, flag:req
+ .macro bg_hidden_item_event x:req, y:req, elevation:req, item:req, flag:req, quantity=1, underfoot=FALSE
.if \flag < FLAG_HIDDEN_ITEMS_START
.error "Hidden Item flag \flag is too small. Must be >= FLAG_HIDDEN_ITEMS_START."
.endif
- bg_event \x, \y, \elevation, BG_EVENT_HIDDEN_ITEM, \item, ((\flag) - FLAG_HIDDEN_ITEMS_START)
+ .if \item >= (1 << 12)
+ .error "quantity \quantity too large"
+ .endif
+ .if \quantity >= (1 << 7)
+ .error "quantity \quantity too large"
+ .endif
+ bg_event \x, \y, \elevation, BG_EVENT_HIDDEN_ITEM, \item | (((\flag) - FLAG_HIDDEN_ITEMS_START) << 11)| (\quantity << 24) | (\underfoot << 31)
.endm
@ Defines a background secret base event for map data
diff --git a/asm/macros/trainer_tower.inc b/asm/macros/trainer_tower.inc
new file mode 100644
index 000000000000..94d9efe77565
--- /dev/null
+++ b/asm/macros/trainer_tower.inc
@@ -0,0 +1,133 @@
+ @ Sets NPC gfx and the floor layout depending on current challenge and floor
+ .macro ttower_initfloor
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_INIT_FLOOR
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Buffers the opponents battle speech to gStringVar4. speech is any TRAINER_TOWER_TEXT_*.
+ .macro ttower_getspeech speech:req, trainer=0xFF
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_SPEECH
+ setvar VAR_0x8005, \speech
+ .if \trainer >= VARS_START && \trainer != 0xFF
+ copyvar VAR_0x8006, \trainer
+ .elseif \trainer != 0xFF
+ setvar VAR_0x8006, \trainer
+ .endif
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Starts a trainer tower battle. VAR_0x8005 is unused
+ .macro ttower_dobattle
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_DO_BATTLE
+ setvar VAR_0x8005, 0
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Returns the current challenge type (CHALLENGE_TYPE_*). Mixed challenges use different types for each floor. If VAR_0x8005 is != FALSE, does nothing
+ .macro ttower_getchallengetype
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_CHALLENGE_TYPE
+ setvar VAR_0x8005, FALSE
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Adds 1 to the number of floors cleared (all trainers on floor defeated)
+ .macro ttower_clearedfloor
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_CLEARED_FLOOR
+ special CallTrainerTowerFunc
+ .endm
+
+ @ TRUE if the trainers on this floor were already beaten, FALSE otherwise
+ .macro ttower_isfloorcleared
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_FLOOR_CLEARED
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Initializes the Trainer Tower challenge and starts the timer
+ .macro ttower_startchallenge
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_START_CHALLENGE
+ special CallTrainerTowerFunc
+ .endm
+
+ @ 0 if not spoken to yet, 1 if spoken to but not received prize, 2 if received prize
+ .macro ttower_getownerstate
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_OWNER_STATE
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Tries to give prize. 0 if given successfully, 1 if no room for prize, 2 if giving prize should be skipped
+ .macro ttower_giveprize
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GIVE_PRIZE
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Checks the final challenge time. 0 if new record, 1 if not, 2 if time has already been checked
+ .macro ttower_checkfinaltime
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_CHECK_FINAL_TIME
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Resumes the challenge timer (or starts, if the timer is 0)
+ .macro ttower_resumetimer
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_RESUME_TIMER
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Sets that the player lost the challenge
+ .macro ttower_setlost
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_SET_LOST
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Returns the status of the current Trainer Tower challenge (CHALLENGE_STATUS_*)
+ .macro ttower_getchallengestatus
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_CHALLENGE_STATUS
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Buffers the current challenge time (min in gStringVar1, sec in gStringVar2, fraction sec in gStringVar3)
+ .macro ttower_gettime
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_TIME
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Unused. Displays Trainer Tower results. Handled by ShowBattleRecords instead
+ .macro ttower_showresults
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_SHOW_RESULTS
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Unused. See above
+ .macro ttower_closeresults
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_CLOSE_RESULTS
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Returns the eligibility of the players party for a double battle (using GetMonsStateToDoubles)
+ .macro ttower_checkdoubles
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_CHECK_DOUBLES
+ special CallTrainerTowerFunc
+ .endm
+
+ @ For the unused E-Reader challenges, gets the number of floors used. Otherwise returns FALSE (all floors used)
+ .macro ttower_getnumfloors
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_NUM_FLOORS
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Dummied, always returns FALSE
+ .macro ttower_shouldexit
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_SHOULD_WARP_TO_COUNTER
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Plays the encounter music for the trainer number in VAR_TEMP_1
+ .macro ttower_encountermusic
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_ENCOUNTER_MUSIC
+ special CallTrainerTowerFunc
+ .endm
+
+ @ TRUE if the player reached the Battle Tower owner, FALSE otherwise
+ .macro ttower_getbeatchallenge
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_BEAT_CHALLENGE
+ special CallTrainerTowerFunc
+ .endm
diff --git a/charmap.txt b/charmap.txt
index dd2123f8f93b..f7591c29d351 100644
--- a/charmap.txt
+++ b/charmap.txt
@@ -350,6 +350,7 @@ ARCHIE = FD 0A
MAXIE = FD 0B
KYOGRE = FD 0C
GROUDON = FD 0D
+REGION = FD 0E
@ battle string placeholders
@@ -435,10 +436,10 @@ DYNAMIC = F7
@ more text functions
-COLOR = FC 01 @ use a color listed below right after
-HIGHLIGHT = FC 02 @ same as fc 01
-SHADOW = FC 03 @ same as fc 01
-COLOR_HIGHLIGHT_SHADOW = FC 04 @ takes 3 bytes
+COLOR = FC 01 @ use a color listed below right after. sets base text color
+HIGHLIGHT = FC 02 @ same as fc 01. sets background and accent color
+SHADOW = FC 03 @ same as fc 01. sets shadow color
+COLOR_HIGHLIGHT_SHADOW = FC 04 @ takes 3 colors
PALETTE = FC 05 @ used in credits
FONT = FC 06 @ Given a font id, or use font constants below instead
RESET_FONT = FC 07
@@ -460,6 +461,9 @@ ENG = FC 16
PAUSE_MUSIC = FC 17
RESUME_MUSIC = FC 18
SPEAKER = FC 19
+ACCENT = FC 1A @ same as FC 01. sets accent color
+BACKGROUND = FC 1B @ same as FC 01. sets background color
+TEXT_COLORS = FC 1C @ takes 3 colors: text base color, shadow and accent
@ Speaker names, the order must be matching with include/constants/speaker_names.h
NAME_NONE = 00
@@ -479,6 +483,9 @@ FONT_SMALL_NARROWER = FC 06 0B
FONT_SHORT_NARROW = FC 06 0C
FONT_SHORT_NARROWER = FC 06 0D
+FONT_MALE = FC 06 01
+FONT_FEMALE = FC 06 01
+
@ colors
TRANSPARENT = 00
diff --git a/constants/constants.inc b/constants/constants.inc
index 1f8f1cda2e22..e7561f429342 100644
--- a/constants/constants.inc
+++ b/constants/constants.inc
@@ -1,3 +1,2 @@
.include "constants/gba_constants.inc"
.include "constants/global.inc"
- .include "constants/tms_hms.inc"
diff --git a/constants/tms_hms.inc b/constants/tms_hms.inc
deleted file mode 100644
index 4ce6d903285c..000000000000
--- a/constants/tms_hms.inc
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef GUARD_CONSTANTS_TMS_HMS_INC
-#define GUARD_CONSTANTS_TMS_HMS_INC
-
-#include "constants/tms_hms.h"
-
-/* Expands to:
-* enum_start ITEM_TM01
-* enum ITEM_TM_FOCUS_PUNCH
-* ...
-* enum_start ITEM_HM01
-* enum ITEM_HM_CUT
-* ... */
-#define EQUIV_TM(id) enum ITEM_TM_ ## id;
-#define EQUIV_HM(id) enum ITEM_HM_ ## id;
- enum_start ITEM_TM01
-FOREACH_TM(EQUIV_TM)
- enum_start ITEM_HM01
-FOREACH_HM(EQUIV_HM)
-#undef EQUIV_TM
-#undef EQUIV_HM
-
-#endif @ GUARD_CONSTANTS_TMS_HMS_INC
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index 78f45c1c6177..e2cdc9b158a3 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -14,6 +14,112 @@
.section script_data, "aw", %progbits
+gBattleAnimGeneral_MonScared::
+ createvisualtask AnimTask_SetAttackerTargetLeftPos, 2, 1
+ waitforvisualfinish
+ loadspritegfx ANIM_TAG_SWEAT_BEAD
+ simple_palette_blend unused_subpriority_offset=0, selector=F_PAL_TARGET, delay=2, initial_blend_y=0, target_blend_y=10, color=RGB(0, 23, 25)
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 10, 1
+ delay 20
+ createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 0, 1
+ playsewithpan SE_M_SKETCH, SOUND_PAN_TARGET
+ createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1
+ createvisualtask AnimTask_StretchTargetUp, 3
+ waitforvisualfinish
+ simple_palette_blend unused_subpriority_offset=0, selector=F_PAL_TARGET, delay=2, initial_blend_y=10, target_blend_y=0, color=RGB(0, 23, 25)
+ waitforvisualfinish
+ end
+
+gBattleAnimGeneral_GhostGetOut::
+ createvisualtask AnimTask_SetAttackerTargetLeftPos, 2, 1
+ waitforvisualfinish
+ fadetobg BG_GHOST
+ waitbgfadeout
+ monbg_static ANIM_ATTACKER
+ createvisualtask AnimTask_GhostGetOut, 2
+ waitbgfadein
+ loopsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET, 20, 3
+ waitforvisualfinish
+ clearmonbg_static ANIM_ATTACKER
+ delay 1
+ loadspritegfx ANIM_TAG_SWEAT_BEAD
+ simple_palette_blend unused_subpriority_offset=0, selector=F_PAL_TARGET, delay=-1, initial_blend_y=0, target_blend_y=6, color=RGB(21, 22, 26)
+ createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 0, 1
+ createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1
+ createvisualtask AnimTask_StretchTargetUp, 3
+ waitforvisualfinish
+ simple_palette_blend unused_subpriority_offset=0, selector=F_PAL_TARGET, delay=-1, initial_blend_y=6, target_blend_y=0, color=RGB(21, 22, 26)
+ waitforvisualfinish
+ restorebg
+ waitbgfadein
+ end
+
+gBattleAnimGeneral_SilphScoped::
+ monbg ANIM_ATTACKER
+ playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER
+ waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48
+ createvisualtask AnimTask_TransformMon, 3, SPECIES_GFX_CHANGE_GHOST_UNVEIL
+ waitsound
+ waitforvisualfinish
+ clearmonbg ANIM_ATTACKER
+ end
+
+gBattleAnimGeneral_SafariRockThrow::
+ createvisualtask AnimTask_SetAttackerTargetLeftPos, 2, 0
+ waitforvisualfinish
+ loadspritegfx ANIM_TAG_ROCKS
+ loadspritegfx ANIM_TAG_IMPACT
+ delay 0
+ waitplaysewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER, 22
+ createsprite sSafariRockSpriteTemplate, ANIM_TARGET, 3, -17, 14, 8, 0
+ delay 50
+ monbg ANIM_DEF_PARTNER
+ setalpha 12, 8
+ delay 0
+ playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET
+ create_basic_hitsplat_sprite ANIM_TARGET, 2, x=-4, y=-20, relative_to=1, animation=2
+ waitforvisualfinish
+ clearmonbg ANIM_DEF_PARTNER
+ blendoff
+ waitforvisualfinish
+ end
+
+gBattleAnimGeneral_SafariReaction::
+ createvisualtask AnimTask_SafariGetReaction, 2
+ waitforvisualfinish
+ jumpreteq B_MSG_MON_WATCHING, SafariReaction_WatchingCarefully
+ jumpreteq B_MSG_MON_ANGRY, SafariReaction_Angry
+ jumpreteq B_MSG_MON_EATING, SafariReaction_Eating
+ end
+
+SafariReaction_WatchingCarefully:
+ playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET
+ createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, 96, 0, 2
+ waitforvisualfinish
+ playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET
+ createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, -96, 0, 2
+ end
+
+SafariReaction_Angry:
+ loadspritegfx ANIM_TAG_ANGER
+ createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -20
+ playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET
+ waitforvisualfinish
+ delay 12
+ createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -20
+ playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET
+ end
+
+SafariReaction_Eating:
+ playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET
+ createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 8, 136, 0, 2
+ waitforvisualfinish
+ playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET
+ createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 8, 136, 0, 2
+ end
+
@@@@@@@@@@@@@@@@@@@@@@@ GEN 4 @@@@@@@@@@@@@@@@@@@@@@@
gBattleAnimMove_Roost::
loadspritegfx ANIM_TAG_WHITE_FEATHER
@@ -1042,14 +1148,14 @@ gBattleAnimGeneral_AquaRingHeal::
createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 12, 0, 25, 0
setalpha 8, 8
playsewithpan SE_M_MILK_DRINK, SOUND_PAN_ATTACKER
- createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 0
+ createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 0, FALSE
delay 4
- createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 0
+ createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 0, FALSE
delay 4
- createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 0
+ createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 0, FALSE
waitforvisualfinish
playsewithpan SE_SHINY, SOUND_PAN_ATTACKER
- blend_color_cycle selector=F_PAL_ATK_SIDE, delay=0, num_blends=2, initial_blend_y=0, target_blend_y=10, color=RGB_WHITE
+ blend_color_cycle selector=F_PAL_ATTACKER, delay=0, num_blends=2, initial_blend_y=0, target_blend_y=10, color=RGB_WHITE
waitforvisualfinish
clearmonbg ANIM_ATK_PARTNER
blendoff
@@ -1830,7 +1936,7 @@ SetGigaImpactPlayerBG:
fadetobg BG_GIGA_IMPACT_PLAYER
goto GigaImpactContinuity
SetGigaImpactContestsBG:
- fadetobg BG_GIGA_IMPACT_CONTEST
+ fadetobg BG_GIGA_IMPACT_CONTESTS
goto GigaImpactContinuity
GigaImpactContinuity:
playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER
@@ -3585,7 +3691,7 @@ gBattleAnimMove_SpacialRend::
delay 2
createsprite gSpacialRendBladesTemplate, ANIM_ATTACKER, 3, 0, 0, 0x38, 12
waitforvisualfinish
- fadetobgfromset BG_SPACIAL_REND_ON_OPPONENT BG_SPACIAL_REND_ON_PLAYER BG_SPACIAL_REND_ON_OPPONENT
+ fadetobgfromset BG_SPACIAL_REND_OPPONENT BG_SPACIAL_REND_PLAYER BG_SPACIAL_REND_OPPONENT
waitbgfadein
loopsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET, 3, 5
createsprite gSpacialRendBladesTemplate2, ANIM_TARGET, 1, 0, 10, SOUND_PAN_ATTACKER, 0xb0, 0x28
@@ -3678,7 +3784,7 @@ gBattleAnimMove_MagmaStorm::
loopsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET, 5, 8
createvisualtask AnimTask_SeismicTossBgAccelerateDownAtEnd, 3
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 47, 1
- blend_color_cycle selector=(F_PAL_ATTACKER | F_PAL_TARGET), delay=2, num_blends=2, initial_blend_y=0, target_blend_y=11, color=RGB(22, 9, 7)
+ blend_color_cycle selector=(F_PAL_ATTACKER | F_PAL_TARGET), delay=2, num_blends=2, initial_blend_y=0, target_blend_y=12, color=RGB(22, 9, 7)
call FireSpinEffect
call FireSpinEffect
call FireSpinEffect
@@ -4303,7 +4409,7 @@ FlameBurstSpread:
gBattleAnimMove_SludgeWave::
panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
- createvisualtask AnimTask_CreateSurfWave, 2, ANIM_SURF_PAL_SLUDGE_WAVE
+ create_surf_wave palette=ANIM_SURF_PAL_SLUDGE_WAVE
waitforvisualfinish
end
@@ -11768,20 +11874,9 @@ gBattleAnimMove_PsychicFangs::
monbg ANIM_TARGET
call SetPsychicBackground
setalpha 12, 8
- choosetwoturnanim PsychicFangsRegular PsychicFangsDestroyWall
-PsychicFangsRegular:
- playsewithpan SE_M_BITE, SOUND_PAN_TARGET
- create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=0xffe0, y=0xffe0, animation=0x1, x_velocity=0x333/256, y_velocity=0x333/256, half_duration=0xa
- create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=0x20, y=0x20, animation=0x5, x_velocity=0xfccd/256, y_velocity=0xfccd/256, half_duration=0xa
- delay 10
- create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=-8, y=0, relative_to=ANIM_TARGET, animation=1
- createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 5, 2
- delay 16
- playsewithpan SE_M_BITE, SOUND_PAN_TARGET
- create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=0x20, y=0xffe0, animation=0x7, x_velocity=0xfccd/256, y_velocity=0x333/256, half_duration=0xa
- create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=0xffe0, y=0x20, animation=0x3, x_velocity=0x333/256, y_velocity=0xfccd/256, half_duration=0xa
- delay 10
- create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=8, y=0, relative_to=ANIM_TARGET, animation=1
+ choosetwoturnanim PsychicFangsNormal, PsychicFangsShatteredWall
+PsychicFangsNormal:
+ call PsychicFangsCommon
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 8, 4, 2
PsychicFangsEnd:
playsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET
@@ -11790,28 +11885,28 @@ PsychicFangsEnd:
blendoff
call UnsetPsychicBg
end
-PsychicFangsDestroyWall:
- createsprite gBrickBreakWallSpriteTemplate, ANIM_ATTACKER, 3, 0x1, 0x0, 0x0, 0x21, 0xa
+PsychicFangsShatteredWall:
+ createsprite gBrickBreakWallSpriteTemplate, ANIM_ATTACKER, 3, ANIM_TARGET, 0, 0, 33, 10
+ call PsychicFangsCommon
+ call BreakScreens
+ createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 8, 4, 2
+ delay 16
+ goto PsychicFangsEnd
+
+PsychicFangsCommon:
playsewithpan SE_M_BITE, SOUND_PAN_TARGET
- create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=0xffe0, y=0xffe0, animation=0x1, x_velocity=0x333/256, y_velocity=0x333/256, half_duration=0xa
- create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=0x20, y=0x20, animation=0x5, x_velocity=0xfccd/256, y_velocity=0xfccd/256, half_duration=0xa
+ create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=-32, y=-32, animation=1, x_velocity=819/256, y_velocity=819/256, half_duration=10
+ create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=32, y=32, animation=5, x_velocity=-819/256, y_velocity=-819/256, half_duration=10
delay 10
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=-8, y=0, relative_to=ANIM_TARGET, animation=1
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 5, 2
delay 16
playsewithpan SE_M_BITE, SOUND_PAN_TARGET
- create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=0x20, y=0xffe0, animation=0x7, x_velocity=0xfccd/256, y_velocity=0x333/256, half_duration=0xa
- create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=0xffe0, y=0x20, animation=0x3, x_velocity=0x333/256, y_velocity=0xfccd/256, half_duration=0xa
+ create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=32, y=-32, animation=7, x_velocity=-819/256, y_velocity=819/256, half_duration=10
+ create_sharp_teeth_sprite ANIM_ATTACKER, 2, x=-32, y=32, animation=3, x_velocity=819/256, y_velocity=-819/256, half_duration=10
delay 10
create_basic_hitsplat_sprite ANIM_ATTACKER, 2, x=8, y=0, relative_to=ANIM_TARGET, animation=1
- createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x0, 0xfff8, 0xfff4
- createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x1, 0x8, 0xfff4
- createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x2, 0xfff8, 0xc
- createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 0x1, 0x3, 0x8, 0xc
- playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET
- createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 8, 4, 2
- delay 16
- goto PsychicFangsEnd
+ return
gBattleAnimMove_StompingTantrum::
loadspritegfx ANIM_TAG_ROCKS @rock colour
@@ -12780,7 +12875,7 @@ gBattleAnimMove_ZippyZap::
gBattleAnimMove_SplishySplash::
loadspritegfx ANIM_TAG_SPARK_2
- createvisualtask AnimTask_CreateSurfWave, 2, ANIM_SURF_PAL_SURF
+ create_surf_wave palette=ANIM_SURF_PAL_SURF
delay 24
panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
waitforvisualfinish
@@ -14291,7 +14386,7 @@ gBattleAnimMove_Eternabeam::
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_HYDRO_PUMP, 0, 12, 12, RGB(31, 4, 10) @Pinkish Red
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_ROUND_SHADOW, 0, 13, 13, RGB(31, 4, 10) @Pinkish Red
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_EXPLOSION, 0, 12, 12, RGB(11, 1, 22)
- fadetobgfromset BG_SPACIAL_REND_ON_OPPONENT BG_SPACIAL_REND_ON_PLAYER BG_SPACIAL_REND_ON_OPPONENT
+ fadetobgfromset BG_SPACIAL_REND_OPPONENT BG_SPACIAL_REND_PLAYER BG_SPACIAL_REND_OPPONENT
playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER
invisible ANIM_ATTACKER
createsprite gDevastatingDrakeDrakeUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0x04E0, 36, 21, 1, ANIM_ATTACKER
@@ -14718,8 +14813,8 @@ gBattleAnimMove_RisingVoltage::
loadspritegfx ANIM_TAG_LIGHTNING
monbg ANIM_ATTACKER
setalpha 12, 8
- createvisualtask AnimTask_GetBattleEnvironment, 0x5,
- jumpargeq 0x0, BG_ELECTRIC_TERRAIN, ANIM_RISING_VOLTAGE_STRONGER
+ createvisualtask AnimTask_GetFieldTerrain, 0x5,
+ jumpargeq 0, STATUS_FIELD_ELECTRIC_TERRAIN, ANIM_RISING_VOLTAGE_STRONGER
ANIM_RISING_VOLTAGE_NORMAL:
createvisualtask AnimTask_BlendBattleAnimPal, 2, F_PAL_BG, 1, 0, 4, RGB_BLACK @;To black
waitforvisualfinish
@@ -17071,33 +17166,13 @@ gBattleAnimMove_RagingBull::
loadspritegfx ANIM_TAG_TORN_METAL
choosetwoturnanim RagingBullNormal, RagingBullShatteredWall
RagingBullNormal:
- monbg ANIM_TARGET
- setalpha 12, 8
- createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2
- loopsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 4, 2
- createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, -20, -28
- delay 20
- createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28
- waitforvisualfinish
- createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 2, 4
- waitforvisualfinish
- playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
+ call RagingBullCommon1
call SetImpactBackground
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4
delay 3
waitforvisualfinish
- playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
- create_basic_hitsplat_sprite ANIM_TARGET, 4, x=-10, y=0, relative_to=ANIM_TARGET, animation=0
- createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -32, 0, 0, 3
- waitforvisualfinish
- createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 0
- createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 0
- createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 4, 0, 12, 1
- createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1
- waitforvisualfinish
- createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 1
- createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 1
- waitforvisualfinish
+ call RagingBullCommon2
+RagingBullEnd:
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5
delay 3
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7
@@ -17107,6 +17182,17 @@ RagingBullNormal:
clearmonbg ANIM_TARGET
end
RagingBullShatteredWall:
+ call RagingBullCommon1
+ call SetImpactBackground
+ createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4
+ delay 3
+ waitforvisualfinish
+ createsprite gBrickBreakWallSpriteTemplate, ANIM_ATTACKER, 3, ANIM_TARGET, 0, 0, 90, 10
+ call RagingBullCommon2
+ call BreakScreens
+ goto RagingBullEnd
+
+RagingBullCommon1:
monbg ANIM_TARGET
setalpha 12, 8
createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2
@@ -17118,11 +17204,9 @@ RagingBullShatteredWall:
createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 2, 4
waitforvisualfinish
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
- call SetImpactBackground
- createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 20, 0, 0, 4
- delay 3
- waitforvisualfinish
- createsprite gBrickBreakWallSpriteTemplate, ANIM_ATTACKER, 3, ANIM_TARGET, 0, 0, 90, 10
+ return
+
+RagingBullCommon2:
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
create_basic_hitsplat_sprite ANIM_TARGET, 4, x=-10, y=0, relative_to=ANIM_TARGET, animation=0
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -32, 0, 0, 3
@@ -17135,19 +17219,7 @@ RagingBullShatteredWall:
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 1
createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 1
waitforvisualfinish
- createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, -8, -12
- createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 1, 8, -12
- createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 2, -8, 12
- createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 3, 8, 12
- playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5
- delay 3
- createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7
- waitforvisualfinish
- restorebg
- waitbgfadein
- clearmonbg ANIM_TARGET
- end
+ return
gBattleAnimMove_UpperHand::
loadspritegfx ANIM_TAG_SHADOW_BALL
@@ -18335,7 +18407,7 @@ FickleBeamRegular:
end
FickleBeamIntense:
loadspritegfx ANIM_TAG_ORBS
- fadetobgfromset BG_SPACIAL_REND_ON_OPPONENT BG_SPACIAL_REND_ON_PLAYER BG_SPACIAL_REND_ON_OPPONENT
+ fadetobgfromset BG_SPACIAL_REND_OPPONENT BG_SPACIAL_REND_PLAYER BG_SPACIAL_REND_OPPONENT
waitbgfadein
delay 10
playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_ATTACKER
@@ -22470,11 +22542,11 @@ gBattleAnimMove_Safeguard::
monbg ANIM_ATK_PARTNER
setalpha 8, 8
playsewithpan SE_M_MILK_DRINK, SOUND_PAN_ATTACKER
- createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2
+ createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2, TRUE
delay 4
- createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2
+ createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2, TRUE
delay 4
- createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2
+ createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2, TRUE
waitforvisualfinish
playsewithpan SE_SHINY, SOUND_PAN_ATTACKER
blend_color_cycle selector=F_PAL_ATK_SIDE, delay=0, num_blends=2, initial_blend_y=0, target_blend_y=10, color=RGB_WHITE
@@ -24376,36 +24448,37 @@ gBattleAnimMove_BrickBreak::
loadspritegfx ANIM_TAG_TORN_METAL
choosetwoturnanim BrickBreakNormal, BrickBreakShatteredWall
BrickBreakNormal:
- monbg ANIM_TARGET
- setalpha 12, 8
- createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 8
- delay 4
- delay 1
- create_basic_hitsplat_sprite ANIM_ATTACKER, 3, x=-18, y=-18, relative_to=ANIM_TARGET, animation=1
- playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET
- delay 20
- createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 8
- delay 5
- create_basic_hitsplat_sprite ANIM_ATTACKER, 3, x=18, y=18, relative_to=ANIM_TARGET, animation=1
- playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET
- delay 20
- createvisualtask AnimTask_WindUpLunge, 2, ANIM_ATTACKER, -24, 0, 24, 10, 24, 3
- simple_palette_blend selector=F_PAL_BG, delay=2, initial_blend_y=0, target_blend_y=6, color=RGB_BLACK
- delay 37
- create_basic_hitsplat_sprite ANIM_ATTACKER, 3, x=0, y=0, relative_to=ANIM_TARGET, animation=1
- createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 10, 1, 0
- playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
- waitforvisualfinish
+ call BrickBreakCommon1
+ call BrickBreakCommon2
+BrickBreakEnd:
simple_palette_blend selector=F_PAL_BG, delay=2, initial_blend_y=6, target_blend_y=0, color=RGB_BLACK
waitforvisualfinish
clearmonbg ANIM_TARGET
end
BrickBreakShatteredWall:
+ call BrickBreakCommon1
+ createsprite gBrickBreakWallSpriteTemplate, ANIM_ATTACKER, 3, ANIM_TARGET, 0, 0, 90, 10
+ call BrickBreakCommon2
+ call BreakScreens
+ waitforvisualfinish
+ goto BrickBreakEnd
+
+BrickBreakCommon1:
monbg ANIM_TARGET
setalpha 12, 8
createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 8
delay 4
- createsprite gBrickBreakWallSpriteTemplate, ANIM_ATTACKER, 3, ANIM_TARGET, 0, 0, 90, 10
+ return
+
+BreakScreens:
+ createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, -8, -12
+ createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 1, 8, -12
+ createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 2, -8, 12
+ createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 3, 8, 12
+ playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET
+ return
+
+BrickBreakCommon2:
delay 1
create_basic_hitsplat_sprite ANIM_ATTACKER, 3, x=-18, y=-18, relative_to=ANIM_TARGET, animation=1
playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET
@@ -24422,16 +24495,7 @@ BrickBreakShatteredWall:
createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 10, 1, 0
playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET
waitforvisualfinish
- createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, -8, -12
- createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 1, 8, -12
- createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 2, -8, 12
- createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 3, 8, 12
- playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET
- waitforvisualfinish
- simple_palette_blend selector=F_PAL_BG, delay=2, initial_blend_y=6, target_blend_y=0, color=RGB_BLACK
- waitforvisualfinish
- clearmonbg ANIM_TARGET
- end
+ return
gBattleAnimMove_Yawn::
loadspritegfx ANIM_TAG_PINK_CLOUD
@@ -25680,7 +25744,7 @@ SnoreEffect:
playsewithpan SE_M_SNORE, SOUND_PAN_ATTACKER
createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 7, ANIM_ATTACKER, 1
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 7, 1
- shake_mon_or_platform velocity=6, shake_timer=1, shake_duration=14, type=0, battler_selector=0
+ shake_mon_or_platform velocity=6, shake_timer=1, shake_duration=14, type=0
createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, -42, -38, 24, 0, 0
createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, -42, 24, 0, 0
createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 42, -38, 24, 0, 0
@@ -26953,7 +27017,7 @@ gBattleAnimMove_Crabhammer::
end
gBattleAnimMove_Surf::
- createvisualtask AnimTask_CreateSurfWave, 2, ANIM_SURF_PAL_SURF
+ create_surf_wave palette=ANIM_SURF_PAL_SURF
delay 24
panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
waitforvisualfinish
@@ -27521,7 +27585,7 @@ gBattleAnimMove_RazorLeaf::
end
gBattleAnimMove_NaturePower::
- @ No actual animation, uses the animation of a move from gBattleEnvironmentInfo.naturePower instead
+ @ No actual animation, uses the animation of a move from src/data/battle_environment.h instead
gBattleAnimMove_AncientPower::
loadspritegfx ANIM_TAG_ROCKS
@@ -28870,8 +28934,9 @@ gBattleAnimMove_SpitUp::
createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 192, 12
createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 224, 12
delay 5
- jumpifmoveturn 2, SpitUpStrong
- jumpifmoveturn 3, SpitUpStrongest
+ createvisualtask AnimTask_GetStockpileCounter, 2
+ jumpreteq 2, SpitUpStrong
+ jumpreteq 3, SpitUpStrongest
SpitUpContinue:
delay 5
createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 8, 1, 0
@@ -29255,7 +29320,7 @@ ArmThrustLeft:
gBattleAnimMove_MuddyWater::
panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
- createvisualtask AnimTask_CreateSurfWave, 2, ANIM_SURF_PAL_MUDDY_WATER
+ create_surf_wave palette=ANIM_SURF_PAL_MUDDY_WATER
waitforvisualfinish
end
@@ -30304,49 +30369,7 @@ gBattleAnimMove_SkyUppercut::
end
gBattleAnimMove_SecretPower::
- createvisualtask AnimTask_GetFieldTerrain, 5
- jumpargeq 0, STATUS_FIELD_MISTY_TERRAIN, gBattleAnimMove_FairyWind
- jumpargeq 0, STATUS_FIELD_GRASSY_TERRAIN, gBattleAnimMove_NeedleArm
- jumpargeq 0, STATUS_FIELD_ELECTRIC_TERRAIN, gBattleAnimMove_ThunderShock
- jumpargeq 0, STATUS_FIELD_PSYCHIC_TERRAIN, gBattleAnimMove_Confusion
- createvisualtask AnimTask_GetBattleEnvironment, 5
- jumpargeq 0, BATTLE_ENVIRONMENT_GRASS, gBattleAnimMove_NeedleArm
- jumpargeq 0, BATTLE_ENVIRONMENT_LONG_GRASS, gBattleAnimMove_MagicalLeaf
- jumpargeq 0, BATTLE_ENVIRONMENT_SAND, gBattleAnimMove_MudShot
- jumpargeq 0, BATTLE_ENVIRONMENT_UNDERWATER, gBattleAnimMove_Waterfall
- jumpargeq 0, BATTLE_ENVIRONMENT_WATER, gBattleAnimMove_Surf
- jumpargeq 0, BATTLE_ENVIRONMENT_POND, gBattleAnimMove_BubbleBeam
- jumpargeq 0, BATTLE_ENVIRONMENT_MOUNTAIN, gBattleAnimMove_RockThrow
- jumpargeq 0, BATTLE_ENVIRONMENT_CAVE, gBattleAnimMove_Bite
- jumpargeq 0, BATTLE_ENVIRONMENT_BUILDING, gBattleAnimMove_Strength
- jumpargeq 0, BATTLE_ENVIRONMENT_SOARING, gBattleAnimMove_Gust
- jumpargeq 0, BATTLE_ENVIRONMENT_SKY_PILLAR, gBattleAnimMove_Gust
- jumpargeq 0, BATTLE_ENVIRONMENT_BURIAL_GROUND, gBattleAnimMove_ShadowSneak
- jumpargeq 0, BATTLE_ENVIRONMENT_PUDDLE, gBattleAnimMove_MudShot
- jumpargeq 0, BATTLE_ENVIRONMENT_MARSH, gBattleAnimMove_MudShot
- jumpargeq 0, BATTLE_ENVIRONMENT_SWAMP, gBattleAnimMove_MudShot
- jumpargeq 0, BATTLE_ENVIRONMENT_ICE, gBattleAnimMove_IceShard
- jumpargeq 0, BATTLE_ENVIRONMENT_VOLCANO, gBattleAnimMove_Incinerate
- jumpargeq 0, BATTLE_ENVIRONMENT_DISTORTION_WORLD, gBattleAnimMove_Pound
- jumpargeq 0, BATTLE_ENVIRONMENT_SPACE, gBattleAnimMove_Swift
- jumpargeq 0, BATTLE_ENVIRONMENT_ULTRA_SPACE, gBattleAnimMove_Psywave
-.if B_SECRET_POWER_ANIMATION >= GEN_7
- jumpargeq 0, BATTLE_ENVIRONMENT_SNOW, gBattleAnimMove_IceShard
- jumpargeq 0, BATTLE_ENVIRONMENT_BUILDING, gBattleAnimMove_SpitUp
- goto gBattleAnimMove_SpitUp
-.elseif B_SECRET_POWER_ANIMATION >= GEN_6
- jumpargeq 0, BATTLE_ENVIRONMENT_SNOW, gBattleAnimMove_Avalanche
- jumpargeq 0, BATTLE_ENVIRONMENT_BUILDING, gBattleAnimMove_BodySlam
- goto gBattleAnimMove_BodySlam
-.elseif B_SECRET_POWER_ANIMATION >= GEN_4
- jumpargeq 0, BATTLE_ENVIRONMENT_SNOW, gBattleAnimMove_Avalanche
- jumpargeq 0, BATTLE_ENVIRONMENT_BUILDING, gBattleAnimMove_BodySlam
- goto gBattleAnimMove_MudSlap
-.else
- jumpargeq 0, BATTLE_ENVIRONMENT_SNOW, gBattleAnimMove_Avalanche
- jumpargeq 0, BATTLE_ENVIRONMENT_BUILDING, gBattleAnimMove_Strength
- goto gBattleAnimMove_Slam
-.endif
+ @ No actual animation, uses the animation of a move from src/data/battle_environment.h instead
gBattleAnimMove_Twister::
loadspritegfx ANIM_TAG_LEAF
@@ -31114,7 +31137,7 @@ Status_MagmaStorm:
loopsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET, 5, 8
createvisualtask AnimTask_SeismicTossBgAccelerateDownAtEnd, 3
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 47, 1
- blend_color_cycle selector=(F_PAL_ATTACKER | F_PAL_TARGET), delay=2, num_blends=2, initial_blend_y=0, target_blend_y=11, color=RGB(22, 9, 7)
+ blend_color_cycle selector=(F_PAL_ATTACKER | F_PAL_TARGET), delay=2, num_blends=2, initial_blend_y=0, target_blend_y=12, color=RGB(22, 9, 7)
call FireSpinEffect
call FireSpinEffect
call FireSpinEffect
@@ -31459,6 +31482,8 @@ gBattleAnimGeneral_SimpleHeal::
gBattleAnimGeneral_IllusionOff::
monbg ANIM_TARGET
+ playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER
+ waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48
createvisualtask AnimTask_TransformMon, 2, SPECIES_GFX_CHANGE_ILLUSION_OFF
waitforvisualfinish
clearmonbg ANIM_TARGET
@@ -31466,11 +31491,27 @@ gBattleAnimGeneral_IllusionOff::
gBattleAnimGeneral_FormChange::
monbg ANIM_ATTACKER
+ playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER
+ waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48
createvisualtask AnimTask_TransformMon, 2, SPECIES_GFX_CHANGE_FORM_CHANGE
waitforvisualfinish
clearmonbg ANIM_ATTACKER
end
+gBattleAnimGeneral_FormChangeDisguise::
+ playsewithpan SE_CONTEST_CONDITION_LOSE, SOUND_PAN_TARGET
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 10, 1
+ waitforvisualfinish
+ playsewithpan SE_CONTEST_CURTAIN_FALL, SOUND_PAN_TARGET
+ goto gBattleAnimGeneral_FormChangeInstant
+
+gBattleAnimGeneral_FormChangeInstant::
+ monbg ANIM_ATTACKER
+ createvisualtask AnimTask_TransformMon, 2, SPECIES_GFX_CHANGE_FORM_CHANGE_INSTANT
+ waitforvisualfinish
+ clearmonbg ANIM_ATTACKER
+ end
+
gBattleAnimGeneral_SlideOffScreen::
createvisualtask AnimTask_SlideOffScreen, 5, ANIM_TARGET, 3
waitforvisualfinish
@@ -31783,7 +31824,7 @@ gBattleAnimGeneral_PowerConstruct::
loadspritegfx ANIM_TAG_ZYGARDE_HEXES @hexagon
loadspritegfx ANIM_TAG_VERTICAL_HEX @arrow
loadspritegfx ANIM_TAG_FLYING_DIRT
- createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SNORE_Z, 0, 10, 10, RGB(8, 20, 26) @Green
+ createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SNORE_Z, 0, 10, 10, RGB(8, 14, 1) @Green
monbg ANIM_ATTACKER
setalpha 12, 8
loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 13, 3
@@ -32452,7 +32493,7 @@ FinishAcidDownpour:
createsprite gAcidDownpourReversalSpriteTemplate, ANIM_ATTACKER, 2, 0x1a, 0xd2
delay 32
panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
- createvisualtask AnimTask_CreateSurfWave, 0x2, ANIM_SURF_PAL_SLUDGE_WAVE
+ create_surf_wave priority=0x2, palette=ANIM_SURF_PAL_SLUDGE_WAVE
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, (RGB(28, 3, 22) | RGB_ALPHA)
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 50, 1
call AcidDownpourFlare
@@ -33347,7 +33388,7 @@ gBattleAnimMove_HydroVortex::
loadspritegfx ANIM_TAG_WATER_ORB @whirlpool
createvisualtask AnimTask_AllBattlersInvisibleExceptAttackerAndTarget, 0xA
waitforvisualfinish
- createvisualtask AnimTask_CreateSurfWave, 0x2, 0x0
+ create_surf_wave priority=0x2, palette=0x0
delay 24
panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
waitforvisualfinish
@@ -33883,10 +33924,10 @@ ShatteredPsycheFinish:
restorebg
createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 15, 1
createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, ANIM_TARGET, 1
- createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0x0 @ -8, -12
- createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, 0x1, 0x1, 0x0, 0x0
- createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, 0x1, 0x2, 0x0, 0x0
- createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, 0x1, 0x3, 0x0, 0x0
+ createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0, 0, 0 @ -8, -12
+ createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 1, 0, 0
+ createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 2, 0, 0
+ createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 3, 0, 0
waitbgfadeout
createvisualtask AnimTask_AllBattlersVisible, 0xA
waitforvisualfinish
@@ -34064,10 +34105,10 @@ SubzeroSlammerFinish:
loadspritegfx ANIM_TAG_TORN_METAL
playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET
delay 3
- createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, 0x1, 0x0, 0x0, 0x0 @ -8, -12
- createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, 0x1, 0x1, 0x0, 0x0
- createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, 0x1, 0x2, 0x0, 0x0
- createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, 0x1, 0x3, 0x0, 0x0
+ createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 0, 0, 0 @ -8, -12
+ createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 1, 0, 0
+ createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 2, 0, 0
+ createsprite gBrickBreakWallShardSpriteTemplate ANIM_TARGET, 2, ANIM_TARGET, 3, 0, 0
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 8, 28
call SubzeroSlammerExplosion
call SubzeroSlammerExplosion
@@ -34401,7 +34442,7 @@ gBattleAnimMove_BlackHoleEclipse::
delay 3
createsprite gBlackHoleEclipseWispSpriteTemplate, ANIM_ATTACKER, 4, 0x0, 0x10, 0x3
waitforvisualfinish
- fadetobg BG_BLACKHOLE_ECLIPSE
+ fadetobg BG_BLACK_HOLE_ECLIPSE
playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET
loadspritegfx ANIM_TAG_VERTICAL_HEX @red
createsprite gBlackHoleEclipseRedRingSpriteTemplate, ANIM_ATTACKER, 3, 0x0, 0x0, 0x100, 0x0
diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s
index 7abeade1dae4..2000ef4e8498 100644
--- a/data/battle_scripts_1.s
+++ b/data/battle_scripts_1.s
@@ -4,6 +4,7 @@
#include "constants/battle.h"
#include "constants/pokemon.h"
#include "constants/battle_arena.h"
+#include "constants/battle_move_resolution.h"
#include "constants/battle_script_commands.h"
#include "constants/battle_anim.h"
#include "constants/battle_string_ids.h"
@@ -21,16 +22,17 @@
.section script_data, "aw", %progbits
-BattleScript_EffectFickleBeam::
- attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- ficklebeamdamagecalculation
- goto BattleScript_HitFromCritCalc
-BattleScript_FickleBeamDoubled::
+BattleScript_FickleBeamMessage::
pause B_WAIT_TIME_SHORTEST
printstring STRINGID_FICKLEBEAMDOUBLED
waitmessage B_WAIT_TIME_LONG
- goto BattleScript_HitFromCritCalc
+ return
+
+BattleScript_MagnitudeMessage::
+ pause B_WAIT_TIME_SHORT
+ printstring STRINGID_MAGNITUDESTRENGTH
+ waitmessage B_WAIT_TIME_LONG
+ return
BattleScript_Terastallization::
@ TODO: no string prints in S/V, but right now this helps with clarity
@@ -47,14 +49,13 @@ BattleScript_Terastallization::
BattleScript_TeraFormChange::
@ TODO: no string prints in S/V, but right now this helps with clarity
printstring STRINGID_PKMNSTORINGENERGY
- handleformchange BS_ATTACKER, 0
+ handleformchange BS_ATTACKER, 0, FALSE @ Prevent species name from overriting type name
handleformchange BS_ATTACKER, 1
playanimation BS_ATTACKER, B_ANIM_TERA_CHARGE
waitanimation
applyterastallization
playanimation BS_ATTACKER, B_ANIM_TERA_ACTIVATE
waitanimation
- handleformchange BS_ATTACKER, 2
printstring STRINGID_PKMNTERASTALLIZEDINTO
waitmessage B_WAIT_TIME_LONG
switchinabilities BS_ATTACKER
@@ -79,7 +80,7 @@ BattleScript_LowerAtkSpAtkEnd:
BattleScript_EffectSpicyExtract::
attackcanceler
jumpifsubstituteblocks BattleScript_ButItFailed
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
jumpifstat BS_TARGET, CMP_LESS_THAN, STAT_ATK, MAX_STAT_STAGE, BattleScript_SpicyExtract_CheckShouldSkipAttackAnim
jumpifstat BS_TARGET, CMP_GREATER_THAN, STAT_DEF, MIN_STAT_STAGE, BattleScript_SpicyExtract_CheckShouldSkipAttackAnim
goto BattleScript_ButItFailed
@@ -143,6 +144,7 @@ BattleScript_EffectShedTail::
switchinanim BS_ATTACKER, FALSE, TRUE
waitstate
switchineffects BS_ATTACKER
+ switchinevents
end
BattleScript_EffectPsychicNoise::
@@ -204,12 +206,6 @@ BattleScript_EffectDoodleMoveEnd:
restoreattacker
goto BattleScript_MoveEnd
-BattleScript_EffectGlaiveRush::
- call BattleScript_EffectHit_Ret
- jumpifmoveresultflags MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_TryFaintMon
- setvolatile BS_ATTACKER, VOLATILE_GLAIVE_RUSH, 2
- goto BattleScript_TryFaintMon
-
BattleScript_SyrupBombActivates::
printstring STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP
waitmessage B_WAIT_TIME_LONG
@@ -225,49 +221,6 @@ BattleScript_SyrupBombEndTurn::
BattleScript_SyrupBombTurnDmgEnd:
end2
-BattleScript_EffectChillyReception::
- printstring STRINGID_PKMNTELLCHILLINGRECEPTIONJOKE
- waitmessage B_WAIT_TIME_LONG
- attackcanceler
- jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN_PRIMAL, BattleScript_EffectChillyReceptionBlockedByPrimalSun
- jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_RAIN_PRIMAL, BattleScript_EffectChillyReceptionBlockedByPrimalRain
- jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_EffectChillyReceptionBlockedByStrongWinds
- call BattleScript_EffectChillyReceptionPlayAnimation
- #if B_PREFERRED_ICE_WEATHER == B_ICE_WEATHER_HAIL
- setfieldweather BATTLE_WEATHER_HAIL
- #else
- setfieldweather BATTLE_WEATHER_SNOW
- #endif
- call BattleScript_MoveWeatherChangeRet
- goto BattleScript_MoveSwitch
-BattleScript_EffectChillyReceptionPlayAnimation:
- attackanimation
- waitanimation
- return
-BattleScript_EffectChillyReceptionBlockedByPrimalSun:
- call BattleScript_EffectChillyReceptionTrySwitchWeatherFailed
- call BattleScript_ExtremelyHarshSunlightWasNotLessenedRet
- goto BattleScript_MoveSwitch
-BattleScript_EffectChillyReceptionBlockedByPrimalRain:
- call BattleScript_EffectChillyReceptionTrySwitchWeatherFailed
- call BattleScript_NoReliefFromHeavyRainRet
- goto BattleScript_MoveSwitch
-BattleScript_EffectChillyReceptionBlockedByStrongWinds:
- call BattleScript_EffectChillyReceptionTrySwitchWeatherFailed
- call BattleScript_MysteriousAirCurrentBlowsOnRet
- goto BattleScript_MoveSwitch
-BattleScript_EffectChillyReceptionTrySwitchWeatherFailed:
- jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_ButItFailed
- jumpifcantswitch SWITCH_IGNORE_ESCAPE_PREVENTION | BS_ATTACKER, BattleScript_ButItFailed
- call BattleScript_EffectChillyReceptionPlayAnimation
- return
-
-BattleScript_CheckPrimalWeather:
- jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN_PRIMAL, BattleScript_ExtremelyHarshSunlightWasNotLessened
- jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_RAIN_PRIMAL, BattleScript_NoReliefFromHeavyRain
- jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_MysteriousAirCurrentBlowsOn
- return
-
BattleScript_MoveSwitchPursuitEnd:
call BattleScript_MoveSwitchPursuitRet
end
@@ -280,7 +233,7 @@ BattleScript_MoveSwitchPursuitRet:
jumpifnopursuitswitchdmg BattleScript_MoveSwitchOpenPartyScreen
return
-BattleScript_MoveSwitch:
+BattleScript_MoveSwitch::
jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_MoveSwitchEnd
jumpifcantswitch SWITCH_IGNORE_ESCAPE_PREVENTION | BS_ATTACKER, BattleScript_MoveSwitchEnd
printstring STRINGID_PKMNWENTBACK
@@ -290,6 +243,7 @@ BattleScript_MoveSwitchOpenPartyScreen::
switchinanim BS_ATTACKER, FALSE, FALSE
waitstate
switchineffects BS_ATTACKER
+ switchinevents
BattleScript_MoveSwitchEnd:
end
@@ -371,7 +325,6 @@ BattleScript_EffectHit_Pledge::
printstring STRINGID_THETWOMOVESBECOMEONE
waitmessage B_WAIT_TIME_LONG
call BattleScript_EffectHit_RetFromAccCheck
- tryfaintmon BS_TARGET
return
BattleScript_MoveEffectSaltCure::
@@ -392,9 +345,9 @@ BattleScript_SaltCureExtraDamage::
BattleScript_EffectCorrosiveGas::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
jumpifsubstituteblocks BattleScript_CorrosiveGasFail
- jumpifcantloseitem BS_TARGET, BattleScript_CorrosiveGasFail
+ jumpifcantloseitem BattleScript_CorrosiveGasFail
attackanimation
waitanimation
jumpifability BS_TARGET, ABILITY_STICKY_HOLD, BattleScript_StickyHoldActivates
@@ -440,121 +393,41 @@ BattleScript_EffectRevivalBlessingSendOut:
switchinanim BS_SCRIPTING, FALSE, FALSE
waitstate
switchineffects BS_SCRIPTING
+ switchinevents
goto BattleScript_MoveEnd
BattleScript_StealthRockActivates::
- setstealthrock BattleScript_MoveEnd
+ setstealthrock BattleScript_StealthRockActivatesRet
printfromtable gDmgHazardsStringIds
waitmessage B_WAIT_TIME_LONG
+BattleScript_StealthRockActivatesRet:
return
BattleScript_SpikesActivates::
- trysetspikes BattleScript_MoveEnd
+ trysetspikes BattleScript_SpikesActivatesRet
printfromtable gDmgHazardsStringIds
waitmessage B_WAIT_TIME_LONG
+BattleScript_SpikesActivatesRet:
return
-BattleScript_EffectAttackUpUserAlly::
- jumpifnoally BS_ATTACKER, BattleScript_EffectAttackUp
- attackcanceler
- jumpifstat BS_ATTACKER, CMP_NOT_EQUAL, STAT_ATK, MAX_STAT_STAGE, BattleScript_EffectAttackUpUserAlly_Works
- jumpifstat BS_ATTACKER_PARTNER, CMP_EQUAL, STAT_ATK, MAX_STAT_STAGE, BattleScript_ButItFailed
-BattleScript_EffectAttackUpUserAlly_Works:
- attackanimation
- waitanimation
- setstatchanger STAT_ATK, 1, FALSE
- statbuffchange BS_ATTACKER, STAT_CHANGE_ALLOW_PTR, BattleScript_EffectAttackUpUserAlly_TryAlly
- printfromtable gStatUpStringIds
- waitmessage B_WAIT_TIME_LONG
-BattleScript_EffectAttackUpUserAlly_TryAlly:
- setallytonexttarget BattleScript_EffectAttackUpUserAlly_TryAlly_
-BattleScript_EffectAttackUpUserAlly_End:
- goto BattleScript_MoveEnd
-BattleScript_EffectAttackUpUserAlly_TryAlly_:
- jumpifblockedbysoundproof BS_ATTACKER_PARTNER, BattleScript_EffectAttackUpUserAlly_TryAllyBlocked
- setstatchanger STAT_ATK, 1, FALSE
- statbuffchange BS_TARGET, STAT_CHANGE_ALLOW_PTR, BattleScript_EffectAttackUpUserAlly_End
- jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_CHANGE, BattleScript_EffectAttackUpUserAlly_AllyString
- pause B_WAIT_TIME_SHORTEST
- printstring STRINGID_TARGETSTATWONTGOHIGHER
- waitmessage B_WAIT_TIME_LONG
- goto BattleScript_EffectAttackUpUserAlly_End
-BattleScript_EffectAttackUpUserAlly_AllyString:
- printfromtable gStatUpStringIds
- waitmessage B_WAIT_TIME_LONG
- goto BattleScript_EffectAttackUpUserAlly_End
-
-BattleScript_EffectAttackUpUserAlly_TryAllyBlocked:
- copybyte sBATTLER, gBattlerTarget
- call BattleScript_AbilityPopUpTarget
- printstring STRINGID_PKMNSXBLOCKSY2
- waitmessage B_WAIT_TIME_LONG
- goto BattleScript_MoveEnd
-
BattleScript_EffectTeatime::
attackcanceler
- jumpifteanoberry BattleScript_ButItFailed
-@ at least one battler is affected
+ checkteatimetargets BattleScript_ButItFailed
attackanimation
waitanimation
- setbyte gBattlerTarget, 0
-BattleScript_TeatimeLoop:
- jumpifelectricabilityaffected BS_TARGET, ABILITY_LIGHTNING_ROD, BattleScript_Teatimerod
- jumpifelectricabilityaffected BS_TARGET, ABILITY_VOLT_ABSORB, BattleScript_Teatimesorb
- jumpifelectricabilityaffected BS_TARGET, ABILITY_MOTOR_DRIVE, BattleScript_Teatimemotor
- jumpifteainvulnerable BS_TARGET, BattleScript_Teatimevul @ in semi-invulnerable state OR held item is not a Berry
- setbyte sBERRY_OVERRIDE, TRUE @ override the requirements for eating berries
- consumeberry BS_TARGET, TRUE @ consume the berry, then restore the item from changedItems
+ movevaluescleanup
+ goto BattleScript_EffectTeatimeGetTarget
+BattleScript_EffectTeatimeNextTarget:
+ jumpifnoberry BS_TARGET, BattleScript_EffectTeatimeGetTarget
+ setbyte sBERRY_OVERRIDE, TRUE @ override the requirements for eating berries
+ consumeberry BS_TARGET, TRUE @ consume the berry, then restore the item from changedItems
setbyte sBERRY_OVERRIDE, FALSE
removeitem BS_TARGET
- moveendto MOVEEND_NEXT_TARGET
- jumpifnexttargetvalid BattleScript_TeatimeLoop
- moveendcase MOVEEND_CLEAR_BITS
- goto BattleScript_MoveEnd
-BattleScript_Teatimevul:
- moveendto MOVEEND_NEXT_TARGET
- jumpifnexttargetvalid BattleScript_TeatimeLoop
- moveendcase MOVEEND_CLEAR_BITS
- goto BattleScript_MoveEnd
-BattleScript_Teatimesorb:
- call BattleScript_AbilityPopUpTarget
- tryhealquarterhealth BS_TARGET, BattleScript_Teatimesorb_end
- healthbarupdate BS_TARGET, PASSIVE_HP_UPDATE
- datahpupdate BS_TARGET, PASSIVE_HP_UPDATE
- printstring STRINGID_PKMNREGAINEDHEALTH
- waitmessage B_WAIT_TIME_LONG
-BattleScript_Teatimesorb_end:
- moveendto MOVEEND_NEXT_TARGET
- jumpifnexttargetvalid BattleScript_TeatimeLoop
- moveendcase MOVEEND_CLEAR_BITS
- goto BattleScript_MoveEnd
-BattleScript_Teatimerod:
- call BattleScript_AbilityPopUpTarget
- setstatchanger STAT_SPATK, 1, FALSE
- statbuffchange BS_TARGET, STAT_CHANGE_ALLOW_PTR, BattleScript_TeatimeBuffer
- jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TeatimeBuffer
- printfromtable gStatUpStringIds
- waitmessage B_WAIT_TIME_LONG
- moveendto MOVEEND_NEXT_TARGET
- jumpifnexttargetvalid BattleScript_TeatimeLoop
- moveendcase MOVEEND_CLEAR_BITS
- goto BattleScript_MoveEnd
-BattleScript_Teatimemotor:
- call BattleScript_AbilityPopUpTarget
- setstatchanger STAT_SPEED, 1, FALSE
- statbuffchange BS_TARGET, STAT_CHANGE_ALLOW_PTR, BattleScript_TeatimeBuffer
- jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TeatimeBuffer
- printfromtable gStatUpStringIds
- waitmessage B_WAIT_TIME_LONG
- moveendto MOVEEND_NEXT_TARGET
- jumpifnexttargetvalid BattleScript_TeatimeLoop
- moveendcase MOVEEND_CLEAR_BITS
- goto BattleScript_MoveEnd
-BattleScript_TeatimeBuffer:
- moveendto MOVEEND_NEXT_TARGET
- jumpifnexttargetvalid BattleScript_TeatimeLoop
- moveendcase MOVEEND_CLEAR_BITS
- goto BattleScript_MoveEnd
+ moveendcase MOVEEND_NEXT_TARGET
+BattleScript_EffectTeatimeGetTarget:
+ getpossiblenexttarget BattleScript_EffectTeatimeNextTarget
+ moveendfrom MOVEEND_ITEM_EFFECTS_ATTACKER_2
+ end
BattleScript_AffectionBasedEndurance::
playanimation BS_TARGET, B_ANIM_AFFECTION_HANGED_ON
@@ -589,7 +462,7 @@ BattleScript_AffectionBasedStatus_HealFrostbiteString:
printstring STRINGID_ATTACKERHEALEDITSFROSTBITE
BattleScript_AffectionBasedStatusHeal_Continue:
waitmessage B_WAIT_TIME_LONG
- clearstatus
+ clearstatus BS_ATTACKER
waitstate
updatestatusicon BS_ATTACKER
waitstate
@@ -611,7 +484,7 @@ BattleScript_EffectShellTrap::
BattleScript_EffectCourtChange::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
swapsidestatuses
attackanimation
waitanimation
@@ -632,61 +505,13 @@ BattleScript_BeakBlastBurn::
call BattleScript_MoveEffectBurn
return
-BattleScript_EffectSkyDrop::
- attackcanceler
- jumpifvolatile BS_ATTACKER, VOLATILE_MULTIPLETURNS, BattleScript_SkyDropTurn2
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- jumpifsubstituteblocks BattleScript_ButItFailed
- jumpiftargetally BattleScript_ButItFailed
- jumpifunder200 BattleScript_SkyDropWork
- pause B_WAIT_TIME_SHORT
- printstring STRINGID_TARGETTOOHEAVY
- waitmessage B_WAIT_TIME_LONG
- goto BattleScript_MoveEnd
-
-BattleScript_SkyDropWork:
- setskydrop
- call BattleScript_FirstChargingTurnAfterAttackString
- goto BattleScript_MoveEnd
-BattleScript_SkyDropTurn2:
- call BattleScript_TwoTurnMovesSecondTurnRet
- clearskydrop BattleScript_SkyDropChangedTarget
- jumpiftype BS_TARGET, TYPE_FLYING, BattleScript_SkyDropFlyingType
- goto BattleScript_HitFromCritCalc
-BattleScript_SkyDropFlyingType:
- makevisible BS_TARGET
- printstring STRINGID_ITDOESNTAFFECT
- waitmessage B_WAIT_TIME_LONG
- makevisible BS_ATTACKER
- jumpifvolatile BS_TARGET, VOLATILE_CONFUSION, BattleScript_SkyDropFlyingAlreadyConfused
- jumpifvolatile BS_TARGET, VOLATILE_LOCK_CONFUSE, BattleScript_SkyDropFlyingConfuseLock
- goto BattleScript_MoveEnd
-BattleScript_SkyDropChangedTarget:
- pause B_WAIT_TIME_SHORT
- setmoveresultflags MOVE_RESULT_FAILED
- resultmessage
- waitmessage B_WAIT_TIME_LONG
- makevisible BS_ATTACKER
- goto BattleScript_MoveEnd
-
-BattleScript_SkyDropFlyingConfuseLock:
- seteffectprimary BS_ATTACKER, BS_TARGET, MOVE_EFFECT_CONFUSION
-BattleScript_SkyDropFlyingAlreadyConfused:
- clearvolatile BS_TARGET, VOLATILE_LOCK_CONFUSE
- jumpifvolatile BS_TARGET, VOLATILE_CONFUSION, BattleScript_MoveEnd
- setbyte BS_ATTACKER, BS_TARGET
- goto BattleScript_ThrashConfuses
-
BattleScript_EffectFling::
attackcanceler
- setlastuseditem BS_ATTACKER
- accuracycheck BattleScript_FlingMissed, ACC_CURR_MOVE
+ accuracycheck BattleScript_FlingMissed
pause B_WAIT_TIME_SHORT
printstring STRINGID_PKMNFLUNG
waitmessage B_WAIT_TIME_SHORT
- critcalc
damagecalc
- adjustdamage
removeitem BS_ATTACKER
attackanimation
waitanimation
@@ -699,11 +524,10 @@ BattleScript_EffectFling::
waitmessage B_WAIT_TIME_MED
resultmessage
waitmessage B_WAIT_TIME_MED
- jumpiflastuseditemberry BattleScript_EffectFlingConsumeBerry
tryflingholdeffect
goto BattleScript_FlingEnd
-BattleScript_EffectFlingConsumeBerry:
+BattleScript_EffectFlingConsumeBerry::
savebattleritem
battleritemtolastuseditem
setbyte sBERRY_OVERRIDE, 1 @ override the requirements for eating berries
@@ -713,7 +537,6 @@ BattleScript_EffectFlingConsumeBerry:
setbyte sBERRY_OVERRIDE, 0
restorebattleritem
BattleScript_FlingEnd:
- tryfaintmon BS_TARGET
trysymbiosis BS_ATTACKER
goto BattleScript_MoveEnd
@@ -721,6 +544,13 @@ BattleScript_FlingFailConsumeItem::
removeitem BS_ATTACKER
goto BattleScript_ButItFailed
+BattleScript_TargetAvoidsAttackConsumeFlingItem::
+ pause B_WAIT_TIME_SHORT
+ printfromtable gMissStringIds
+ waitmessage B_WAIT_TIME_LONG
+ removeitem BS_ATTACKER
+ return
+
BattleScript_FlingBlockedByShieldDust::
printstring STRINGID_ITEMWASUSEDUP
waitmessage B_WAIT_TIME_LONG
@@ -743,7 +573,7 @@ BattleScript_EffectClangorousSoul::
BattleScript_EffectOctolock::
attackcanceler
jumpifsubstituteblocks BattleScript_ButItFailed
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
trysetoctolock BattleScript_ButItFailed
attackanimation
waitanimation
@@ -766,16 +596,16 @@ BattleScript_OctlockTurnDmgEnd:
BattleScript_EffectPoltergeist::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- setpoltergeistmessage BattleScript_ButItFailed
+ accuracycheck BattleScript_MoveMissedPause
+ setpoltergeistmessage
printstring STRINGID_ABOUTTOUSEPOLTERGEIST
waitmessage B_WAIT_TIME_LONG
- goto BattleScript_HitFromCritCalc
+ goto BattleScript_HitFromDamageCalc
BattleScript_EffectTarShot::
attackcanceler
jumpifsubstituteblocks BattleScript_ButItFailed
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
cantarshotwork BattleScript_ButItFailed
setstatchanger STAT_SPEED, 1, TRUE
attackanimation
@@ -791,7 +621,7 @@ BattleScript_TryTarShot:
BattleScript_EffectNoRetreat::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
jumpifvolatile BS_TARGET, VOLATILE_NO_RETREAT, BattleScript_ButItFailed
setvolatile BS_TARGET, VOLATILE_NO_RETREAT
attackanimation
@@ -867,7 +697,7 @@ BattleScript_StuffCheeksEnd:
BattleScript_EffectDecorate::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
jumpifstat BS_TARGET, CMP_NOT_EQUAL, STAT_ATK, MAX_STAT_STAGE, BattleScript_DecorateBoost
jumpifstat BS_TARGET, CMP_NOT_EQUAL, STAT_SPATK, MAX_STAT_STAGE, BattleScript_DecorateBoost
goto BattleScript_ButItFailed
@@ -894,7 +724,6 @@ BattleScript_EffectCoaching::
setallytonexttarget EffectCoaching_CheckAllyStats
goto BattleScript_ButItFailed
EffectCoaching_CheckAllyStats:
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
jumpifstat BS_TARGET, CMP_NOT_EQUAL, STAT_ATK, MAX_STAT_STAGE, BattleScript_CoachingWorks
jumpifstat BS_TARGET, CMP_NOT_EQUAL, STAT_DEF, MAX_STAT_STAGE, BattleScript_CoachingWorks
goto BattleScript_ButItFailed @ ally at max atk, def
@@ -944,38 +773,38 @@ BattleScript_JungleHealingTryRestoreAlly:
goto BattleScript_MoveEnd
BattleScript_EffectLifeDew::
- attackcanceler
- jumpiffullhp BS_ATTACKER, BattleScript_EffectLifeDewCheckPartner
- copybyte gBattlerTarget, gBattlerAttacker
- attackanimation
- waitanimation
- call BattleScript_EffectLifeDewHealing
- jumpifabsent BS_ATTACKER_PARTNER, BattleScript_EffectLifeDewEnd
- jumpiffullhp BS_ATTACKER_PARTNER, BattleScript_EffectLifeDewEnd
- setallytonexttarget BattleScript_EffectLifeDewNextTarget
+ attackcanceler
+ jumpiffullhp BS_ATTACKER, BattleScript_EffectLifeDewCheckPartner
+ copybyte gBattlerTarget, gBattlerAttacker
+ attackanimation
+ waitanimation
+ call BattleScript_EffectLifeDewHealing
+ jumpifabsent BS_ATTACKER_PARTNER, BattleScript_EffectLifeDewEnd
+ jumpiffullhp BS_ATTACKER_PARTNER, BattleScript_EffectLifeDewEnd
+ setallytonexttarget BattleScript_EffectLifeDewNextTarget
BattleScript_EffectLifeDewNextTarget:
- call BattleScript_EffectLifeDewHealing
+ call BattleScript_EffectLifeDewHealing
BattleScript_EffectLifeDewEnd:
- goto BattleScript_MoveEnd
+ goto BattleScript_MoveEnd
BattleScript_EffectLifeDewCheckPartner:
- jumpifabsent BS_ATTACKER_PARTNER, BattleScript_ButItFailed
- jumpiffullhp BS_ATTACKER_PARTNER, BattleScript_ButItFailed
- attackanimation
- waitanimation
- setallytonexttarget BattleScript_EffectLifeDewNextTarget
+ jumpifabsent BS_ATTACKER_PARTNER, BattleScript_ButItFailed
+ jumpiffullhp BS_ATTACKER_PARTNER, BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ setallytonexttarget BattleScript_EffectLifeDewNextTarget
BattleScript_EffectLifeDewHealing:
- tryhealquarterhealth BS_TARGET, BattleScript_EffectLifeDewEnd
- healthbarupdate BS_TARGET, PASSIVE_HP_UPDATE
- datahpupdate BS_TARGET, PASSIVE_HP_UPDATE
- printstring STRINGID_PKMNREGAINEDHEALTH
- waitmessage B_WAIT_TIME_LONG
- return
+ tryhealquarterhealth BS_TARGET, BattleScript_EffectLifeDewEnd
+ healthbarupdate BS_TARGET, PASSIVE_HP_UPDATE
+ datahpupdate BS_TARGET, PASSIVE_HP_UPDATE
+ printstring STRINGID_PKMNREGAINEDHEALTH
+ waitmessage B_WAIT_TIME_LONG
+ return
BattleScript_EffectAllySwitch::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
tryallyswitch BattleScript_ButItFailed
attackanimation
waitanimation
@@ -987,7 +816,7 @@ BattleScript_EffectAllySwitch::
BattleScript_EffectFairyLock::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
trysetfairylock BattleScript_ButItFailed
attackanimation
waitanimation
@@ -1017,7 +846,6 @@ BattleScript_DefDown_Ret:
BattleScript_EffectPurify::
attackcanceler
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_PurifyWorks
goto BattleScript_ButItFailed
BattleScript_PurifyWorks:
@@ -1034,51 +862,22 @@ BattleScript_EffectStrengthSap::
setstatchanger STAT_ATK, 1, TRUE
attackcanceler
jumpifsubstituteblocks BattleScript_ButItFailed
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- jumpifstat BS_TARGET, CMP_NOT_EQUAL, STAT_ATK, MIN_STAT_STAGE, BattleScript_StrengthSapTryLower
- pause B_WAIT_TIME_SHORT
- statbuffchange BS_TARGET, STAT_CHANGE_ALLOW_PTR, BattleScript_MoveEnd
- printfromtable gStatDownStringIds
- waitmessage B_WAIT_TIME_LONG
- setmoveresultflags MOVE_RESULT_MISSED @ TODO: Is this even necessary?
- goto BattleScript_MoveEnd
-BattleScript_StrengthSapTryLower:
- getstatvalue STAT_ATK
- jumpiffullhp BS_ATTACKER, BattleScript_StrengthSapMustLower
-BattleScript_StrengthSapAnimation:
+ accuracycheck BattleScript_MoveMissedPause
+ jumpifstatignorecontrary BS_TARGET, CMP_EQUAL, STAT_ATK, MIN_STAT_STAGE, BattleScript_StrengthSapPrintStatMessage
attackanimation
waitanimation
- statbuffchange BS_TARGET, STAT_CHANGE_ALLOW_PTR, BattleScript_StrengthSapHp
- jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_CHANGE_EMPTY, BattleScript_StrengthSapHp
+ getstatvalue STAT_ATK
+ statbuffchange BS_TARGET, STAT_CHANGE_ALLOW_PTR, BattleScript_MoveEnd
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_CHANGE_EMPTY, BattleScript_MoveEnd
printfromtable gStatDownStringIds
waitmessage B_WAIT_TIME_LONG
-@ Drain HP without lowering a stat
-BattleScript_StrengthSapHp:
- jumpifability BS_TARGET, ABILITY_LIQUID_OOZE, BattleScript_StrengthSapManipulateDmg
- jumpifvolatile BS_ATTACKER, VOLATILE_HEAL_BLOCK, BattleScript_MoveEnd
- jumpiffullhp BS_ATTACKER, BattleScript_MoveEnd
-BattleScript_StrengthSapManipulateDmg:
- manipulatedamage DMG_BIG_ROOT
- jumpifability BS_TARGET, ABILITY_LIQUID_OOZE, BattleScript_StrengthSapLiquidOoze
- healthbarupdate BS_ATTACKER, PASSIVE_HP_UPDATE
- datahpupdate BS_ATTACKER, PASSIVE_HP_UPDATE
- printstring STRINGID_PKMNENERGYDRAINED
- waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
-BattleScript_StrengthSapLiquidOoze:
- call BattleScript_AbilityPopUpTarget
- manipulatedamage DMG_CHANGE_SIGN
- setbyte cMULTISTRING_CHOOSER, B_MSG_ABSORB_OOZE
- healthbarupdate BS_ATTACKER, PASSIVE_HP_UPDATE
- datahpupdate BS_ATTACKER, PASSIVE_HP_UPDATE
- printfromtable gAbsorbDrainStringIds
+BattleScript_StrengthSapPrintStatMessage:
+ pause B_WAIT_TIME_SHORT
+ statbuffchange BS_TARGET, STAT_CHANGE_ALLOW_PTR, BattleScript_MoveEnd
+ printfromtable gStatDownStringIds
waitmessage B_WAIT_TIME_LONG
- tryfaintmon BS_ATTACKER
goto BattleScript_MoveEnd
-BattleScript_StrengthSapMustLower:
- statbuffchange BS_TARGET, STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_ONLY_CHECKING, BattleScript_MoveEnd
- jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_CHANGE_EMPTY, BattleScript_MoveEnd
- goto BattleScript_StrengthSapAnimation
BattleScript_MoveEffectIncinerate::
printstring STRINGID_INCINERATEBURN
@@ -1095,7 +894,7 @@ BattleScript_MoveEffectBugBite::
bicword gHitMarker, HITMARKER_DISABLE_ANIMATION
setbyte sBERRY_OVERRIDE, 0
restoretarget
- trysymbiosis BS_TARGET
+ trysymbiosis BS_TARGET
return
BattleScript_MoveEffectCoreEnforcer::
@@ -1142,38 +941,12 @@ BattleScript_VCreateTrySpeed:
BattleScript_VCreateStatLossRet:
return
-BattleScript_SpectralThiefSteal::
- setbyte sB_ANIM_TURN, 1
- playmoveanimation MOVE_SPECTRAL_THIEF
- waitanimation
- setbyte sB_ANIM_TURN, 0
- printstring STRINGID_SPECTRALTHIEFSTEAL
- waitmessage B_WAIT_TIME_LONG
- setbyte sB_ANIM_ARG2, 0
- spectralthiefprintstats
- flushtextbox
- goto BattleScript_EffectSpectralThiefFromDamage
-
-BattleScript_EffectSpectralThief::
- attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- typecalc
- tryspectralthiefsteal BattleScript_SpectralThiefSteal
-BattleScript_EffectSpectralThiefFromDamage:
- critcalc
- damagecalc
- adjustdamage
- call BattleScript_Hit_RetFromAtkAnimation
- tryfaintmon BS_TARGET
- moveendall
- end
-
BattleScript_EffectPartingShot::
attackcanceler
jumpifstat BS_TARGET, CMP_GREATER_THAN, STAT_ATK, MIN_STAT_STAGE, BattleScript_EffectPartingShotTryAtk
jumpifstat BS_TARGET, CMP_EQUAL, STAT_SPATK, MIN_STAT_STAGE, BattleScript_EffectPartingShotCantLowerMultipleStats
BattleScript_EffectPartingShotTryAtk:
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
attackanimation
waitanimation
setbyte sB_ANIM_TARGETS_HIT, 0
@@ -1226,7 +999,6 @@ BattleScript_EffectPartingShotPrintWontDecreaseContrary:
BattleScript_EffectPowder::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, NO_ACC_CALC_CHECK_LOCK_ON
jumpifvolatile BS_TARGET, VOLATILE_POWDER, BattleScript_ButItFailed
setvolatile BS_TARGET, VOLATILE_POWDER
attackanimation
@@ -1353,7 +1125,7 @@ BattleScript_MoveEffectFeint::
BattleScript_EffectThirdType::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
trythirdtype BattleScript_ButItFailed
attackanimation
waitanimation
@@ -1364,6 +1136,7 @@ BattleScript_EffectThirdType::
BattleScript_EffectFlowerShield::
attackcanceler
savetarget
+ setbyte gBattlerTarget, 0
selectfirstvalidtarget
BattleScript_FlowerShieldIsAnyValidTarget:
jumpifvolatile BS_TARGET, VOLATILE_SEMI_INVULNERABLE, BattleScript_FlowerShieldCheckNextTarget
@@ -1396,7 +1169,7 @@ BattleScript_FlowerShieldMoveTargetEnd:
moveendto MOVEEND_NEXT_TARGET
jumpifnexttargetvalid BattleScript_FlowerShieldLoop
restoretarget
- moveendfrom MOVEEND_ITEM_EFFECTS_ATTACKER_1
+ moveendfrom MOVEEND_ITEM_EFFECTS_ATTACKER_2
end
BattleScript_EffectRototiller::
@@ -1405,14 +1178,12 @@ BattleScript_EffectRototiller::
@ at least one battler is affected
attackanimation
waitanimation
- savetarget
- setbyte gBattlerTarget, 0
+ goto BattleScript_EffectRototillerGetTarget
BattleScript_RototillerLoop:
- movevaluescleanup
jumpifstat BS_TARGET, CMP_LESS_THAN, STAT_ATK, MAX_STAT_STAGE, BattleScript_RototillerCheckAffected
jumpifstat BS_TARGET, CMP_EQUAL, STAT_SPATK, MAX_STAT_STAGE, BattleScript_RototillerCantRaiseMultipleStats
BattleScript_RototillerCheckAffected:
- jumpifnotrototilleraffected BattleScript_RototillerNoEffect
+ jumpifmoveresultflags MOVE_RESULT_NO_EFFECT, BattleScript_EffectRototillerGetTarget
setstatchanger STAT_ATK, 1, FALSE
statbuffchange BS_TARGET, STAT_CHANGE_ALLOW_PTR, BattleScript_RototillerTrySpAtk, BIT_SPATK
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_CHANGE, BattleScript_RototillerTrySpAtk
@@ -1420,45 +1191,51 @@ BattleScript_RototillerCheckAffected:
waitmessage B_WAIT_TIME_LONG
BattleScript_RototillerTrySpAtk::
setstatchanger STAT_SPATK, 1, FALSE
- statbuffchange BS_TARGET, STAT_CHANGE_ALLOW_PTR, BattleScript_RototillerMoveTargetEnd
- jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_CHANGE, BattleScript_RototillerMoveTargetEnd
+ statbuffchange BS_TARGET, STAT_CHANGE_ALLOW_PTR, BattleScript_EffectRototillerMoves
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_CHANGE, BattleScript_EffectRototillerMoves
printfromtable gStatUpStringIds
waitmessage B_WAIT_TIME_LONG
-BattleScript_RototillerMoveTargetEnd:
- moveendto MOVEEND_NEXT_TARGET
- addbyte gBattlerTarget, 1
- jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_RototillerLoop
- restoretarget
+BattleScript_EffectRototillerMoves:
+ moveendcase MOVEEND_NEXT_TARGET
+BattleScript_EffectRototillerGetTarget:
+ getpossiblenexttarget BattleScript_RototillerLoop
+ moveendfrom MOVEEND_ITEM_EFFECTS_ATTACKER_2
end
BattleScript_RototillerCantRaiseMultipleStats:
+ saveattacker
copybyte gBattlerAttacker, gBattlerTarget
printstring STRINGID_STATSWONTINCREASE2
+ restoreattacker
waitmessage B_WAIT_TIME_LONG
- goto BattleScript_RototillerMoveTargetEnd
+ goto BattleScript_EffectRototillerGetTarget
BattleScript_RototillerNoEffect:
pause B_WAIT_TIME_SHORT
printstring STRINGID_NOEFFECTONTARGET
waitmessage B_WAIT_TIME_LONG
- goto BattleScript_RototillerMoveTargetEnd
+ goto BattleScript_EffectRototillerGetTarget
BattleScript_EffectBestow::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, NO_ACC_CALC_CHECK_LOCK_ON
jumpifsubstituteblocks BattleScript_ButItFailed
trybestow BattleScript_ButItFailed
attackanimation
waitanimation
printstring STRINGID_BESTOWITEMGIVING
waitmessage B_WAIT_TIME_LONG
+ tryactivateabilitywithabilityshield BS_TARGET, FALSE
tryactivateitem BS_TARGET, ACTIVATION_ON_USABLE_AGAIN
trysymbiosis BS_ATTACKER
goto BattleScript_MoveEnd
+BattleScript_ActivateSwitchInAbility::
+ switchinabilities BS_SCRIPTING
+ return
+
BattleScript_EffectAfterYou::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
tryafteryou BattleScript_ButItFailed
attackanimation
waitanimation
@@ -1476,7 +1253,7 @@ BattleScript_MoveEffectFlameBurst::
BattleScript_EffectPowerTrick::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
powertrick
attackanimation
waitanimation
@@ -1486,7 +1263,7 @@ BattleScript_EffectPowerTrick::
BattleScript_EffectPsychoShift::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
jumpifstatus BS_ATTACKER, STATUS1_ANY, BattleScript_EffectPsychoShiftCanWork
goto BattleScript_ButItFailed
BattleScript_EffectPsychoShiftCanWork:
@@ -1506,13 +1283,6 @@ BattleScript_EffectPsychoShiftCanWork:
updatestatusicon BS_ATTACKER
goto BattleScript_MoveEnd
-BattleScript_EffectSynchronoise::
- attackcanceler
- pause B_WAIT_TIME_MED
- trysynchronoise BattleScript_MoveEnd
- accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
- goto BattleScript_HitFromCritCalc
-
BattleScript_ItDoesntAffectFoe::
savetarget
copybyte gBattlerTarget, sBATTLER
@@ -1541,7 +1311,7 @@ BattleScript_DefogAfterSubstituteCheck:
BattleScript_DefogIfCanClearHazards:
trydefog FALSE, BattleScript_ButItFailed
BattleScript_DefogWorks:
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
jumpifgenconfiglowerthan CONFIG_B_DEFOG_EFFECT_CLEARING, GEN_5, BattleScript_DefogWorksAfterSubstituteCheck
jumpifsubstituteblocks BattleScript_DefogTryHazardsWithAnim
BattleScript_DefogWorksAfterSubstituteCheck:
@@ -1632,7 +1402,7 @@ BattleScript_EffectToxicThread::
attackcanceler
jumpifsubstituteblocks BattleScript_ButItFailed
checknonvolatiletrigger MOVE_EFFECT_POISON, BattleScript_EffectStatDownFromAccCheck
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
attackanimation
waitanimation
setstatchanger STAT_SPEED, 1, TRUE
@@ -1652,6 +1422,7 @@ BattleScript_ToxicThreadTryPsn::
BattleScript_EffectVenomDrench::
attackcanceler
+ jumpifsubstituteblocks BattleScript_ButItFailed
jumpifstatus BS_TARGET, STATUS1_PSN_ANY, BattleScript_EffectVenomDrenchCanBeUsed
goto BattleScript_ButItFailed
BattleScript_EffectVenomDrenchCanBeUsed:
@@ -1659,7 +1430,7 @@ BattleScript_EffectVenomDrenchCanBeUsed:
jumpifstat BS_TARGET, CMP_GREATER_THAN, STAT_SPATK, MIN_STAT_STAGE, BattleScript_VenomDrenchDoMoveAnim
jumpifstat BS_TARGET, CMP_EQUAL, STAT_SPEED, MIN_STAT_STAGE, BattleScript_CantLowerMultipleStats
BattleScript_VenomDrenchDoMoveAnim::
- accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ accuracycheck BattleScript_ButItFailed
attackanimation
waitanimation
setstatchanger STAT_ATK, 1, TRUE
@@ -1687,7 +1458,7 @@ BattleScript_EffectNobleRoar::
jumpifstat BS_TARGET, CMP_GREATER_THAN, STAT_ATK, MIN_STAT_STAGE, BattleScript_NobleRoarDoMoveAnim
jumpifstat BS_TARGET, CMP_EQUAL, STAT_SPATK, MIN_STAT_STAGE, BattleScript_CantLowerMultipleStats
BattleScript_NobleRoarDoMoveAnim::
- accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ accuracycheck BattleScript_ButItFailed
attackanimation
waitanimation
setstatchanger STAT_ATK, 1, TRUE
@@ -1779,7 +1550,7 @@ BattleScript_GrowthEnd:
BattleScript_EffectSoak::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
jumpifability BS_TARGET, ABILITY_MULTITYPE, BattleScript_ButItFailed
jumpifability BS_TARGET, ABILITY_RKS_SYSTEM, BattleScript_ButItFailed
jumpifsubstituteblocks BattleScript_ButItFailed
@@ -1792,7 +1563,7 @@ BattleScript_EffectSoak::
BattleScript_EffectReflectType::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
tryreflecttype BattleScript_ButItFailed
attackanimation
waitanimation
@@ -1802,7 +1573,7 @@ BattleScript_EffectReflectType::
BattleScript_EffectElectrify::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
tryelectrify BattleScript_ButItFailed
attackanimation
waitanimation
@@ -1978,7 +1749,6 @@ BattleScript_EffectPsychicTerrain::
BattleScript_EffectTopsyTurvy::
attackcanceler
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
jumpifstat BS_TARGET, CMP_NOT_EQUAL, STAT_ATK, 6, BattleScript_EffectTopsyTurvyWorks
jumpifstat BS_TARGET, CMP_NOT_EQUAL, STAT_DEF, 6, BattleScript_EffectTopsyTurvyWorks
jumpifstat BS_TARGET, CMP_NOT_EQUAL, STAT_SPATK, 6, BattleScript_EffectTopsyTurvyWorks
@@ -1996,7 +1766,7 @@ BattleScript_EffectTopsyTurvyWorks:
BattleScript_EffectIonDeluge::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
orword gFieldStatuses, STATUS_FIELD_ION_DELUGE
attackanimation
waitanimation
@@ -2006,7 +1776,7 @@ BattleScript_EffectIonDeluge::
BattleScript_EffectQuash::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
tryquash BattleScript_ButItFailed
attackanimation
waitanimation
@@ -2018,7 +1788,6 @@ BattleScript_EffectHealPulse::
attackcanceler
jumpifvolatile BS_ATTACKER, VOLATILE_HEAL_BLOCK, BattleScript_MoveUsedHealBlockPrevents @ stops pollen puff
jumpifvolatile BS_TARGET, VOLATILE_HEAL_BLOCK, BattleScript_MoveUsedHealBlockPrevents
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
jumpifsubstituteblocks BattleScript_ButItFailed
tryhealpulse BattleScript_AlreadyAtFullHp
attackanimation
@@ -2031,7 +1800,7 @@ BattleScript_EffectHealPulse::
BattleScript_EffectEntrainment::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
tryentrainment BattleScript_ButItFailed
attackanimation
waitanimation
@@ -2053,15 +1822,6 @@ BattleScript_EffectLuckyChant::
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
-BattleScript_EffectMetalBurst::
- attackcanceler
- metalburstdamagecalculator BattleScript_ButItFailed
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- typecalc
- clearmoveresultflags MOVE_RESULT_NOT_VERY_EFFECTIVE | MOVE_RESULT_SUPER_EFFECTIVE
- adjustdamage
- goto BattleScript_HitFromAtkAnimation
-
BattleScript_EffectHealingWish::
attackcanceler
jumpifcantswitch SWITCH_IGNORE_ESCAPE_PREVENTION | BS_ATTACKER, BattleScript_ButItFailed
@@ -2072,11 +1832,10 @@ BattleScript_EffectHealingWish::
tryfaintmon BS_ATTACKER
storehealingwish BS_ATTACKER
jumpifgenconfiglowerthan CONFIG_B_HEALING_WISH_SWITCH, GEN_5, BattleScript_EffectHealingWishGen4
-BattleScript_EffectHealingWishEnd:
- moveendall
- end
+ goto BattleScript_MoveEnd
+
BattleScript_EffectHealingWishGen4:
- openpartyscreen BS_ATTACKER, BattleScript_EffectHealingWishEnd
+ openpartyscreen BS_ATTACKER, BattleScript_MoveEnd
waitstate
switchhandleorder BS_ATTACKER, 2
returnatktoball
@@ -2092,26 +1851,25 @@ BattleScript_EffectHealingWishGen4:
switchinanim BS_ATTACKER, FALSE, TRUE
waitstate
switchineffects BS_ATTACKER
- goto BattleScript_EffectHealingWishEnd
+ switchinevents
+ goto BattleScript_MoveEnd
BattleScript_HealingWishActivates::
setbyte cMULTISTRING_CHOOSER, 0
goto BattleScript_EffectHealingWishRestore
BattleScript_LunarDanceActivates::
setbyte cMULTISTRING_CHOOSER, 1
- restoremovepp
+ restoremovepp BS_SCRIPTING
BattleScript_EffectHealingWishRestore:
printfromtable gHealingWishStringIds
waitmessage B_WAIT_TIME_LONG
- playanimation BS_ATTACKER, B_ANIM_WISH_HEAL
+ playanimation BS_SCRIPTING, B_ANIM_WISH_HEAL
waitanimation
- dmgtomaxattackerhp
- manipulatedamage DMG_CHANGE_SIGN
- healthbarupdate BS_ATTACKER, PASSIVE_HP_UPDATE
- datahpupdate BS_ATTACKER, PASSIVE_HP_UPDATE
- clearstatus
+ healthbarupdate BS_SCRIPTING, PASSIVE_HP_UPDATE
+ datahpupdate BS_SCRIPTING, PASSIVE_HP_UPDATE
+ clearstatus BS_SCRIPTING,
waitstate
- updatestatusicon BS_ATTACKER
+ updatestatusicon BS_SCRIPTING
waitstate
printstring STRINGID_HEALINGWISHHEALED
waitmessage B_WAIT_TIME_LONG
@@ -2119,7 +1877,7 @@ BattleScript_EffectHealingWishRestore:
BattleScript_EffectOverwriteAbility::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
tryoverwriteability BattleScript_ButItFailed
attackanimation
waitanimation
@@ -2136,7 +1894,6 @@ BattleScript_EffectOverwriteAbility::
BattleScript_EffectPowerSplit::
attackcanceler
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
averagestats STAT_ATK
averagestats STAT_SPATK
attackanimation
@@ -2147,7 +1904,6 @@ BattleScript_EffectPowerSplit::
BattleScript_EffectGuardSplit::
attackcanceler
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
averagestats STAT_DEF
averagestats STAT_SPDEF
attackanimation
@@ -2158,7 +1914,6 @@ BattleScript_EffectGuardSplit::
BattleScript_EffectHeartSwap::
attackcanceler
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
swapstatstages STAT_ATK
swapstatstages STAT_DEF
swapstatstages STAT_SPEED
@@ -2174,7 +1929,6 @@ BattleScript_EffectHeartSwap::
BattleScript_EffectPowerSwap::
attackcanceler
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
swapstatstages STAT_ATK
swapstatstages STAT_SPATK
attackanimation
@@ -2185,7 +1939,6 @@ BattleScript_EffectPowerSwap::
BattleScript_EffectGuardSwap::
attackcanceler
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
swapstatstages STAT_DEF
swapstatstages STAT_SPDEF
attackanimation
@@ -2196,7 +1949,6 @@ BattleScript_EffectGuardSwap::
BattleScript_EffectSpeedSwap::
attackcanceler
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
swapstats STAT_SPEED
attackanimation
waitanimation
@@ -2206,7 +1958,6 @@ BattleScript_EffectSpeedSwap::
BattleScript_EffectTelekinesis::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, NO_ACC_CALC_CHECK_LOCK_ON
settelekinesis BattleScript_ButItFailed
attackanimation
waitanimation
@@ -2234,7 +1985,7 @@ BattleScript_EffectStickyWeb::
BattleScript_EffectGastroAcid::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
jumpifvolatile BS_TARGET, VOLATILE_GASTRO_ACID, BattleScript_ButItFailed
setgastroacid BattleScript_ButItFailed
attackanimation
@@ -2312,7 +2063,7 @@ BattleScript_EffectAquaRing::
BattleScript_EffectEmbargo::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
setembargo BattleScript_ButItFailed
attackanimation
waitanimation
@@ -2357,7 +2108,7 @@ BattleScript_TryTailwindAbilitiesLoop_WindPower:
BattleScript_EffectMiracleEye::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
jumpifgenconfiglowerthan CONFIG_B_MIRACLE_EYE_FAIL, GEN_5, BattleScript_MiracleEyeSet
jumpifvolatile BS_TARGET, VOLATILE_MIRACLE_EYE, BattleScript_ButItFailed
BattleScript_MiracleEyeSet:
@@ -2407,12 +2158,12 @@ BattleScript_EffectCaptivate::
jumpifcaptivateaffected BattleScript_CaptivateCheckAcc
goto BattleScript_ButItFailed
BattleScript_CaptivateCheckAcc:
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
goto BattleScript_EffectStatDownFromStatBuffChange
BattleScript_EffectHealBlock::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
jumpifability BS_TARGET_SIDE, ABILITY_AROMA_VEIL, BattleScript_AromaVeilProtects
sethealblock BattleScript_ButItFailed
attackanimation
@@ -2438,27 +2189,21 @@ BattleScript_EffectPlaceholder::
BattleScript_EffectHit::
attackcanceler
BattleScript_HitFromAccCheck::
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
-BattleScript_HitFromCritCalc::
- critcalc
+ accuracycheck BattleScript_MoveMissedPause
+ copybyte gEffectBattler, gBattlerAttacker
+ setpreattackadditionaleffect
+BattleScript_HitFromDamageCalc::
damagecalc
- adjustdamage
-BattleScript_HitFromAtkAnimation::
call BattleScript_Hit_RetFromAtkAnimation
-BattleScript_TryFaintMon::
- tryfaintmon BS_TARGET
BattleScript_MoveEnd::
moveendall
end
-BattleScript_EffectHit_Ret::
- attackcanceler
BattleScript_EffectHit_RetFromAccCheck::
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
-BattleScript_EffectHit_RetFromCritCalc::
- critcalc
+ accuracycheck BattleScript_MoveMissedPause
+ copybyte gEffectBattler, gBattlerAttacker
+ setpreattackadditionaleffect
damagecalc
- adjustdamage
BattleScript_Hit_RetFromAtkAnimation::
attackanimation
waitanimation
@@ -2474,15 +2219,6 @@ BattleScript_Hit_RetFromAtkAnimation::
setadditionaleffects
return
-BattleScript_EffectNaturalGift::
- attackcanceler
- jumpifnotberry BS_ATTACKER, BattleScript_ButItFailed
- jumpifword CMP_COMMON_BITS, gFieldStatuses, STATUS_FIELD_MAGIC_ROOM, BattleScript_ButItFailed
- jumpifability BS_ATTACKER, ABILITY_KLUTZ, BattleScript_ButItFailed
- jumpifvolatile BS_ATTACKER, VOLATILE_EMBARGO, BattleScript_ButItFailed
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- call BattleScript_HitFromCritCalc
-
BattleScript_MakeMoveMissed::
setmoveresultflags MOVE_RESULT_MISSED
BattleScript_MoveMissedPause::
@@ -2605,14 +2341,10 @@ BattleScript_EffectAbsorb::
BattleScript_EffectAbsorbRet:
return
-BattleScript_EffectExplosion::
- attackcanceler
+BattleScript_Explosion::
tryexplosion
setatkhptozero
- waitstate
- jumpiffainted BS_TARGET, TRUE, BattleScript_MoveEnd
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- goto BattleScript_HitFromCritCalc
+ return
BattleScript_FaintAttackerForExplosion::
tryfaintmon BS_ATTACKER
@@ -2662,7 +2394,7 @@ BattleScript_EffectEvasionUp::
BattleScript_EffectStatUp::
attackcanceler
BattleScript_EffectStatUpAfterAtkCanceler::
- statbuffchange BS_ATTACKER, STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_ONLY_CHECKING, BattleScript_StatUpEnd
+ statbuffchange BS_TARGET, STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_ONLY_CHECKING, BattleScript_StatUpEnd
jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_CHANGE, BattleScript_StatUpAttackAnim
pause B_WAIT_TIME_SHORT
setmoveresultflags MOVE_RESULT_MISSED @ TODO: Is this even necessary?
@@ -2671,10 +2403,13 @@ BattleScript_StatUpAttackAnim::
attackanimation
waitanimation
BattleScript_StatUpDoAnim::
- statbuffchange BS_ATTACKER, STAT_CHANGE_ALLOW_PTR, BattleScript_StatUpEnd
+ statbuffchange BS_TARGET, STAT_CHANGE_ALLOW_PTR, BattleScript_StatUpEnd
BattleScript_StatUpPrintString::
+ saveattacker
+ copybyte gBattlerAttacker, gBattlerTarget
printfromtable gStatUpStringIds
waitmessage B_WAIT_TIME_LONG
+ restoreattacker
BattleScript_StatUpEnd::
goto BattleScript_MoveEnd
@@ -2709,11 +2444,13 @@ BattleScript_EffectSpecialDefenseDown::
BattleScript_EffectEvasionDown::
setstatchanger STAT_EVASION, 1, TRUE
+ goto BattleScript_EffectStatDown
+
BattleScript_EffectStatDown:
attackcanceler
jumpifsubstituteblocks BattleScript_ButItFailed
BattleScript_EffectStatDownFromAccCheck:
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
BattleScript_EffectStatDownFromStatBuffChange:
statbuffchange BS_TARGET, STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_ONLY_CHECKING, BattleScript_StatDownEnd
jumpifbyte CMP_LESS_THAN, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_CHANGE, BattleScript_StatDownDoAnim
@@ -2794,8 +2531,7 @@ BattleScript_EffectRoar::
jumpifability BS_TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut
jumpifvolatile BS_TARGET, VOLATILE_ROOT, BattleScript_PrintMonIsRooted
jumpiftargetdynamaxed BattleScript_RoarBlockedByDynamax
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_ButItFailed
forcerandomswitch BattleScript_ButItFailed
@@ -2894,18 +2630,6 @@ BattleScript_AbilityPreventsRest::
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
-BattleScript_EffectOHKO::
- attackcanceler
- typecalc
- jumpifmovehadnoeffect BattleScript_HitFromAtkAnimation
- tryKO BattleScript_KOFail
- goto BattleScript_HitFromAtkAnimation
-BattleScript_KOFail::
- pause B_WAIT_TIME_LONG
- printfromtable gKOFailedStringIds
- waitmessage B_WAIT_TIME_LONG
- goto BattleScript_MoveEnd
-
BattleScript_RecoilIfMiss::
printstring STRINGID_PKMNCRASHED
waitmessage B_WAIT_TIME_LONG
@@ -2942,7 +2666,7 @@ BattleScript_EffectConfuse::
jumpifsubstituteblocks BattleScript_ButItFailed
jumpifvolatile BS_TARGET, VOLATILE_CONFUSION, BattleScript_AlreadyConfused
jumpifterrainaffected BS_TARGET, STATUS_FIELD_MISTY_TERRAIN, BattleScript_MistyTerrainPrevents
- accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ accuracycheck BattleScript_ButItFailed
jumpifsafeguard BattleScript_SafeguardProtected
attackanimation
waitanimation
@@ -3063,30 +2787,8 @@ BattleScript_AlreadyParalyzed::
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
-BattleScript_PowerHerbActivation:
- playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
- printstring STRINGID_POWERHERB
- waitmessage B_WAIT_TIME_LONG
- removeitem BS_ATTACKER
- return
-
-BattleScript_EffectTwoTurnsAttack::
- jumpifvolatile BS_ATTACKER, VOLATILE_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
- tryfiretwoturnmovewithoutcharging BS_ATTACKER, BattleScript_EffectHit @ e.g. Solar Beam
- call BattleScript_FirstChargingTurn
- tryfiretwoturnmoveaftercharging BS_ATTACKER, BattleScript_TwoTurnMovesSecondTurn @ e.g. Electro Shot
- jumpifholdeffect BS_ATTACKER, HOLD_EFFECT_POWER_HERB, BattleScript_TwoTurnMovesSecondPowerHerbActivates, TRUE
- goto BattleScript_MoveEnd
-
BattleScript_EffectGeomancy::
- jumpifvolatile BS_ATTACKER, VOLATILE_MULTIPLETURNS, BattleScript_GeomancySecondTurn
- call BattleScript_FirstChargingTurn
- jumpifnoholdeffect BS_ATTACKER, HOLD_EFFECT_POWER_HERB, BattleScript_MoveEnd
- call BattleScript_PowerHerbActivation
-BattleScript_GeomancySecondTurn:
attackcanceler
- setbyte sB_ANIM_TURN, 1
- clearvolatile BS_ATTACKER, VOLATILE_MULTIPLETURNS
jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_SPATK, MAX_STAT_STAGE, BattleScript_GeomancyDoMoveAnim
jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_SPDEF, MAX_STAT_STAGE, BattleScript_GeomancyDoMoveAnim
jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPEED, MAX_STAT_STAGE, BattleScript_CantRaiseMultipleStats
@@ -3113,28 +2815,22 @@ BattleScript_GeomancyTrySpeed::
BattleScript_GeomancyEnd::
goto BattleScript_MoveEnd
-BattleScript_FirstChargingTurn::
- attackcanceler
+BattleScript_PowerHerbActivation::
+ playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
+ printstring STRINGID_POWERHERB
+ waitmessage B_WAIT_TIME_LONG
+ removeitem BS_ATTACKER
+ return
+
+BattleScript_TwoTurnMoveCharging::
waitmessage B_WAIT_TIME_LONG
-BattleScript_FirstChargingTurnAfterAttackString:
- setsemiinvulnerablebit @ only for moves with EFFECT_SEMI_INVULNERABLE/EFFECT_SKY_DROP
- setchargingturn
twoturnmoveschargestringandanimation
setadditionaleffects @ only onChargeTurnOnly effects will work here
return
-BattleScript_TwoTurnMovesSecondPowerHerbActivates:
- call BattleScript_PowerHerbActivation
- trygulpmissile @ Edge case for Cramorant ability Gulp Missile
-BattleScript_FromTwoTurnMovesSecondTurnRet:
- call BattleScript_TwoTurnMovesSecondTurnRet
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- goto BattleScript_HitFromCritCalc
-
-BattleScript_TwoTurnMovesSecondTurn::
- attackcanceler
- call BattleScript_TwoTurnMovesSecondTurnRet
- goto BattleScript_HitFromAccCheck
+BattleScript_SkyDropCharging::
+ call BattleScript_TwoTurnMoveCharging
+ goto BattleScript_MoveEnd
BattleScript_TwoTurnMovesSecondTurnRet:
setbyte sB_ANIM_TURN, 1
@@ -3143,46 +2839,69 @@ BattleScript_TwoTurnMovesSecondTurnRet:
clearsemiinvulnerablebit @ only for moves with EFFECT_SEMI_INVULNERABLE/EFFECT_SKY_DROP
return
-BattleScript_EffectSubstitute::
- attackcanceler
- waitstate
- jumpifvolatile BS_ATTACKER, VOLATILE_SUBSTITUTE, BattleScript_AlreadyHasSubstitute
- setsubstitute
- jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_SUBSTITUTE_FAILED, BattleScript_SubstituteString
- attackanimation
- waitanimation
- healthbarupdate BS_ATTACKER, PASSIVE_HP_UPDATE
- datahpupdate BS_ATTACKER, PASSIVE_HP_UPDATE
-BattleScript_SubstituteString::
+BattleScript_SkyDropTargetTooHeavy::
pause B_WAIT_TIME_SHORT
- printfromtable gSubstituteUsedStringIds
- waitmessage B_WAIT_TIME_LONG
- goto BattleScript_MoveEnd
-BattleScript_AlreadyHasSubstitute::
- setalreadystatusedmoveattempt
- pause B_WAIT_TIME_SHORT
- printstring STRINGID_PKMNHASSUBSTITUTE
+ printstring STRINGID_TARGETTOOHEAVY
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
-BattleScript_MoveUsedMustRecharge::
- printstring STRINGID_PKMNMUSTRECHARGE
+BattleScript_SkyDropFlyingType::
+ makevisible BS_TARGET
+ printstring STRINGID_ITDOESNTAFFECT
+ waitmessage B_WAIT_TIME_LONG
+ makevisible BS_ATTACKER
+ jumpifvolatile BS_TARGET, VOLATILE_CONFUSION, BattleScript_SkyDropFlyingAlreadyConfused
+ jumpifvolatile BS_TARGET, VOLATILE_RAMPAGE_TURNS, BattleScript_SkyDropFlyingConfuseLock
+ return
+
+BattleScript_SkyDropFlyingConfuseLock:
+ seteffectprimary BS_ATTACKER, BS_TARGET, MOVE_EFFECT_CONFUSION
+BattleScript_SkyDropFlyingAlreadyConfused:
+ clearvolatile BS_TARGET, VOLATILE_RAMPAGE_TURNS
+ jumpifvolatile BS_TARGET, VOLATILE_CONFUSION, BattleScript_SkyDropFlyingAlreadyConfusedRet
+ setbyte BS_ATTACKER, BS_TARGET
+ call BattleScript_ThrashConfusesRet
+BattleScript_SkyDropFlyingAlreadyConfusedRet:
+ return
+
+BattleScript_SkyDropNoTarget::
+ pause B_WAIT_TIME_SHORT
+ setmoveresultflags MOVE_RESULT_FAILED
+ resultmessage
waitmessage B_WAIT_TIME_LONG
+ makevisible BS_ATTACKER
goto BattleScript_MoveEnd
-BattleScript_EffectRage::
+BattleScript_EffectSubstitute::
attackcanceler
- accuracycheck BattleScript_RageMiss, ACC_CURR_MOVE
- seteffectprimary BS_ATTACKER, BS_TARGET, MOVE_EFFECT_RAGE
- goto BattleScript_HitFromCritCalc
-BattleScript_RageMiss::
- clearvolatile BS_ATTACKER, VOLATILE_RAGE
- goto BattleScript_MoveMissedPause
+ waitstate
+ jumpifvolatile BS_ATTACKER, VOLATILE_SUBSTITUTE, BattleScript_AlreadyHasSubstitute
+ setsubstitute
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_SUBSTITUTE_FAILED, BattleScript_SubstituteString
+ attackanimation
+ waitanimation
+ healthbarupdate BS_ATTACKER, PASSIVE_HP_UPDATE
+ datahpupdate BS_ATTACKER, PASSIVE_HP_UPDATE
+BattleScript_SubstituteString::
+ pause B_WAIT_TIME_SHORT
+ printfromtable gSubstituteUsedStringIds
+ waitmessage B_WAIT_TIME_LONG
+ goto BattleScript_MoveEnd
+BattleScript_AlreadyHasSubstitute::
+ setalreadystatusedmoveattempt
+ pause B_WAIT_TIME_SHORT
+ printstring STRINGID_PKMNHASSUBSTITUTE
+ waitmessage B_WAIT_TIME_LONG
+ goto BattleScript_MoveEnd
+
+BattleScript_MoveUsedMustRecharge::
+ printstring STRINGID_PKMNMUSTRECHARGE
+ waitmessage B_WAIT_TIME_LONG
+ goto BattleScript_MoveEnd
BattleScript_EffectMimic::
attackcanceler
jumpifsubstituteblocks BattleScript_ButItFailed
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
mimicattackcopy BattleScript_ButItFailed
attackanimation
waitanimation
@@ -3194,7 +2913,7 @@ BattleScript_EffectLeechSeed::
attackcanceler
pause B_WAIT_TIME_SHORT
jumpifsubstituteblocks BattleScript_ButItFailed
- accuracycheck BattleScript_DoLeechSeed, ACC_CURR_MOVE
+ accuracycheck BattleScript_DoLeechSeed
BattleScript_DoLeechSeed::
setseeded
attackanimation
@@ -3214,7 +2933,6 @@ BattleScript_EffectDoNothing::
BattleScript_EffectHoldHands::
attackcanceler
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
jumpifbyteequal gBattlerTarget, gBattlerAttacker, BattleScript_ButItFailed
attackanimation
waitanimation
@@ -3238,7 +2956,7 @@ BattleScript_EffectHappyHour::
BattleScript_EffectDisable::
attackcanceler
jumpifability BS_TARGET_SIDE, ABILITY_AROMA_VEIL, BattleScript_AromaVeilProtects
- accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ accuracycheck BattleScript_ButItFailed
disablelastusedattack BattleScript_ButItFailed
attackanimation
waitanimation
@@ -3246,18 +2964,9 @@ BattleScript_EffectDisable::
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
-BattleScript_EffectCounter::
- attackcanceler
- counterdamagecalculator BattleScript_ButItFailed
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- typecalc
- clearmoveresultflags MOVE_RESULT_NOT_VERY_EFFECTIVE | MOVE_RESULT_SUPER_EFFECTIVE
- adjustdamage
- goto BattleScript_HitFromAtkAnimation
-
BattleScript_EffectEncore::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
jumpifability BS_TARGET_SIDE, ABILITY_AROMA_VEIL, BattleScript_AromaVeilProtects
trysetencore BattleScript_ButItFailed
attackanimation
@@ -3268,7 +2977,6 @@ BattleScript_EffectEncore::
BattleScript_EffectPainSplit::
attackcanceler
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
painsplitdmgcalc BattleScript_ButItFailed
attackanimation
waitanimation
@@ -3280,16 +2988,6 @@ BattleScript_EffectPainSplit::
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
-BattleScript_EffectSnore::
- attackcanceler
- jumpifhalfword CMP_EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoSnore
- printstring STRINGID_PKMNFASTASLEEP
- waitmessage B_WAIT_TIME_LONG
- statusanimation BS_ATTACKER
-BattleScript_DoSnore::
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- goto BattleScript_HitFromCritCalc
-
BattleScript_EffectConversion2::
attackcanceler
settypetorandomresistance BattleScript_ButItFailed
@@ -3302,7 +3000,7 @@ BattleScript_EffectConversion2::
BattleScript_EffectLockOn::
attackcanceler
jumpifsubstituteblocks BattleScript_ButItFailed
- accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ accuracycheck BattleScript_ButItFailed
setalwayshitflag
attackanimation
waitanimation
@@ -3335,7 +3033,7 @@ BattleScript_MoveEffectEerieSpell::
BattleScript_EffectSpite::
attackcanceler
- accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ accuracycheck BattleScript_ButItFailed
tryspiteppreduce BattleScript_ButItFailed
attackanimation
waitanimation
@@ -3360,7 +3058,7 @@ BattleScript_HealBellSoundproof::
waitmessage B_WAIT_TIME_LONG
BattleScript_CheckHealBellMon2Unaffected::
jumpifbyte CMP_NO_COMMON_BITS, cMULTISTRING_CHOOSER, B_MSG_BELL_SOUNDPROOF_PARTNER, BattleScript_PartyHealEnd
- printstring STRINGID_PKMNSXBLOCKSY2
+ printstring STRINGID_PKMNSXBLOCKSY
waitmessage B_WAIT_TIME_LONG
BattleScript_PartyHealEnd::
updatestatusicon BS_ATTACKER_WITH_PARTNER
@@ -3378,7 +3076,6 @@ BattleScript_MoveEffectAromatherapy::
BattleScript_EffectMeanLook::
attackcanceler
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
jumpifvolatile BS_TARGET, VOLATILE_ESCAPE_PREVENTION, BattleScript_ButItFailed
jumpifsubstituteblocks BattleScript_ButItFailed
jumpifgenconfiglowerthan CONFIG_B_GHOSTS_ESCAPE, GEN_6, BattleScript_EffectMeanLookGen5
@@ -3394,7 +3091,7 @@ BattleScript_EffectMeanLookGen5:
BattleScript_EffectNightmare::
attackcanceler
jumpifsubstituteblocks BattleScript_ButItFailed
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
jumpifvolatile BS_TARGET, VOLATILE_NIGHTMARE, BattleScript_ButItFailed
jumpifstatus BS_TARGET, STATUS1_SLEEP, BattleScript_NightmareWorked
jumpifability BS_TARGET, ABILITY_COMATOSE, BattleScript_NightmareWorked
@@ -3450,7 +3147,6 @@ BattleScript_GhostCurse::
getmovetarget
BattleScript_DoGhostCurse::
attackcanceler
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
cursetarget BattleScript_ButItFailed
setbyte sB_ANIM_TURN, 0
attackanimation
@@ -3483,7 +3179,7 @@ BattleScript_EffectSpikes::
BattleScript_EffectForesight::
attackcanceler
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
+ accuracycheck BattleScript_ButItFailed
jumpifgenconfiglowerthan CONFIG_B_FORESIGHT_FAIL, GEN_3, BattleScript_ForesightFailCheck
jumpifgenconfiglowerthan CONFIG_B_FORESIGHT_FAIL, GEN_5, BattleScript_ForesightSet
BattleScript_ForesightFailCheck:
@@ -3500,52 +3196,16 @@ BattleScript_IdentifiedFoe:
BattleScript_EffectPerishSong::
attackcanceler
trysetperishsong BattleScript_ButItFailed
- savetarget
attackanimation
waitanimation
printstring STRINGID_FAINTINTHREE
waitmessage B_WAIT_TIME_LONG
- setbyte gBattlerTarget, 0
-BattleScript_PerishSongLoop::
- jumpifblockedbysoundproof BS_TARGET, BattleScript_PerishSongBlocked
- jumpifpranksterblocked BattleScript_PerishSongNotAffected
-BattleScript_PerishSongLoopIncrement::
- addbyte gBattlerTarget, 1
- jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_PerishSongLoop
- restoretarget
goto BattleScript_MoveEnd
-BattleScript_PerishSongBlocked::
- copybyte sBATTLER, gBattlerTarget
- printstring STRINGID_PKMNSXBLOCKSY2
- waitmessage B_WAIT_TIME_LONG
- goto BattleScript_PerishSongLoopIncrement
-
-BattleScript_PerishSongNotAffected:
- printstring STRINGID_ITDOESNTAFFECT
- waitmessage B_WAIT_TIME_LONG
- goto BattleScript_PerishSongLoopIncrement
-
-BattleScript_EffectSandstorm::
- attackcanceler
- call BattleScript_CheckPrimalWeather
- setfieldweather BATTLE_WEATHER_SANDSTORM
- goto BattleScript_MoveWeatherChange
-
-BattleScript_EffectRollout::
- attackcanceler
- jumpifvolatile BS_ATTACKER, VOLATILE_MULTIPLETURNS, BattleScript_RolloutCheckAccuracy
-BattleScript_RolloutCheckAccuracy::
- accuracycheck BattleScript_RolloutHit, ACC_CURR_MOVE
-BattleScript_RolloutHit::
- typecalc
- handlerollout
- goto BattleScript_HitFromCritCalc
-
BattleScript_EffectSwagger::
attackcanceler
jumpifsubstituteblocks BattleScript_MakeMoveMissed
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
jumpifconfusedandstatmaxed STAT_ATK, BattleScript_ButItFailed
attackanimation
waitanimation
@@ -3560,17 +3220,6 @@ BattleScript_SwaggerTryConfuse:
seteffectprimary BS_ATTACKER, BS_TARGET, MOVE_EFFECT_CONFUSION
goto BattleScript_MoveEnd
-BattleScript_EffectFuryCutter::
- attackcanceler
- accuracycheck BattleScript_FuryCutterHit, ACC_CURR_MOVE
-BattleScript_FuryCutterHit:
- handlefurycutter
- critcalc
- damagecalc
- jumpifmovehadnoeffect BattleScript_FuryCutterHit
- adjustdamage
- goto BattleScript_HitFromAtkAnimation
-
BattleScript_TryDestinyKnotTarget:
jumpifnoholdeffect BS_ATTACKER, HOLD_EFFECT_DESTINY_KNOT, BattleScript_TryDestinyKnotTargetRet
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
@@ -3603,7 +3252,7 @@ BattleScript_TryDestinyKnotAttacker:
BattleScript_EffectAttract::
attackcanceler
- accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ accuracycheck BattleScript_ButItFailed
jumpifability BS_TARGET_SIDE, ABILITY_AROMA_VEIL, BattleScript_AromaVeilProtects
tryinfatuating BattleScript_ButItFailed
attackanimation
@@ -3615,7 +3264,7 @@ BattleScript_EffectAttract::
BattleScript_EffectPresent::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
typecalc
presentdamagecalculation
@@ -3624,15 +3273,6 @@ BattleScript_EffectSafeguard::
setsafeguard
goto BattleScript_PrintReflectLightScreenSafeguardString
-BattleScript_EffectMagnitude::
- attackcanceler
- magnitudedamagecalculation
- pause B_WAIT_TIME_SHORT
- printstring STRINGID_MAGNITUDESTRENGTH
- waitmessage B_WAIT_TIME_LONG
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- goto BattleScript_HitFromCritCalc
-
BattleScript_EffectBatonPass::
attackcanceler
jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_ButItFailed
@@ -3653,6 +3293,7 @@ BattleScript_EffectBatonPass::
switchinanim BS_ATTACKER, FALSE, TRUE
waitstate
switchineffects BS_ATTACKER
+ switchinevents
goto BattleScript_MoveEnd
BattleScript_EffectMorningSun::
@@ -3663,94 +3304,67 @@ BattleScript_EffectShoreUp::
recoverbasedonsunlight BattleScript_AlreadyAtFullHp
goto BattleScript_PresentHealTarget
-BattleScript_EffectRainDance::
+BattleScript_EffectWeather::
attackcanceler
- call BattleScript_CheckPrimalWeather
- setfieldweather BATTLE_WEATHER_RAIN
-BattleScript_MoveWeatherChange::
+BattleScript_EffectWeatherSetWeather:
+ setfieldweather
attackanimation
waitanimation
call BattleScript_MoveWeatherChangeRet
goto BattleScript_MoveEnd
-BattleScript_MoveWeatherChangeRet::
- printfromtable gMoveWeatherChangeStringIds
+BattleScript_ChillyReceptionMessage::
+ printstring STRINGID_PKMNTELLCHILLINGRECEPTIONJOKE
waitmessage B_WAIT_TIME_LONG
- call BattleScript_ActivateWeatherAbilities
return
-BattleScript_EffectSunnyDay::
+BattleScript_EffectWeatherAndSwitch::
attackcanceler
- call BattleScript_CheckPrimalWeather
- setfieldweather BATTLE_WEATHER_SUN
- goto BattleScript_MoveWeatherChange
+ jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_EffectWeatherSetWeather
+ jumpifcantswitch SWITCH_IGNORE_ESCAPE_PREVENTION | BS_ATTACKER, BattleScript_EffectWeatherSetWeather
+ setfieldweather
+ clearmoveresultflags MOVE_RESULT_NO_EFFECT
+ attackanimation
+ waitanimation
+ call BattleScript_MoveWeatherChangeRet
+ moveendall
+ goto BattleScript_MoveSwitch
-BattleScript_ExtremelyHarshSunlightWasNotLessened:
- pause B_WAIT_TIME_SHORT
- printstring STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED
+BattleScript_MoveWeatherChangeRet::
+ printfromtable gMoveWeatherChangeStringIds
waitmessage B_WAIT_TIME_LONG
- goto BattleScript_MoveEnd
+ call BattleScript_ActivateWeatherAbilities
+ return
-BattleScript_ExtremelyHarshSunlightWasNotLessenedEnd3:
- pause B_WAIT_TIME_SHORT
- printstring STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED
- waitmessage B_WAIT_TIME_LONG
- end3
+BattleScript_FailOnPrimalWeather::
+ jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN_PRIMAL, BattleScript_ExtremelyHarshSunlightWasNotLessened
+ jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_RAIN_PRIMAL, BattleScript_NoReliefFromHeavyRain
+ jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_MysteriousAirCurrentBlowsOn
+ return
-BattleScript_ExtremelyHarshSunlightWasNotLessenedRet:
+BattleScript_ExtremelyHarshSunlightWasNotLessened:
pause B_WAIT_TIME_SHORT
printstring STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED
waitmessage B_WAIT_TIME_LONG
return
BattleScript_NoReliefFromHeavyRain:
- pause B_WAIT_TIME_SHORT
- printstring STRINGID_NORELIEFROMHEAVYRAIN
- waitmessage B_WAIT_TIME_LONG
- goto BattleScript_MoveEnd
-
-BattleScript_NoReliefFromHeavyRainEnd3:
- pause B_WAIT_TIME_SHORT
- printstring STRINGID_NORELIEFROMHEAVYRAIN
- waitmessage B_WAIT_TIME_LONG
- end3
-
-BattleScript_NoReliefFromHeavyRainRet:
pause B_WAIT_TIME_SHORT
printstring STRINGID_NORELIEFROMHEAVYRAIN
waitmessage B_WAIT_TIME_LONG
return
BattleScript_MysteriousAirCurrentBlowsOn:
- pause B_WAIT_TIME_SHORT
- printstring STRINGID_MYSTERIOUSAIRCURRENTBLOWSON
- waitmessage B_WAIT_TIME_LONG
- goto BattleScript_MoveEnd
-
-BattleScript_MysteriousAirCurrentBlowsOnEnd3:
- pause B_WAIT_TIME_SHORT
- printstring STRINGID_MYSTERIOUSAIRCURRENTBLOWSON
- waitmessage B_WAIT_TIME_LONG
- end3
-
-BattleScript_MysteriousAirCurrentBlowsOnRet:
pause B_WAIT_TIME_SHORT
printstring STRINGID_MYSTERIOUSAIRCURRENTBLOWSON
waitmessage B_WAIT_TIME_LONG
return
-BattleScript_BlockedByPrimalWeatherEnd3::
- call BattleScript_AbilityPopUp
- jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN_PRIMAL, BattleScript_ExtremelyHarshSunlightWasNotLessenedEnd3
- jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_RAIN_PRIMAL, BattleScript_NoReliefFromHeavyRainEnd3
- jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_MysteriousAirCurrentBlowsOnEnd3
- end3
-
-BattleScript_BlockedByPrimalWeatherRet::
+BattleScript_BlockedByPrimalWeather::
call BattleScript_AbilityPopUp
- jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN_PRIMAL, BattleScript_ExtremelyHarshSunlightWasNotLessenedRet
- jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_RAIN_PRIMAL, BattleScript_NoReliefFromHeavyRainRet
- jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_MysteriousAirCurrentBlowsOnRet
+ jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN_PRIMAL, BattleScript_ExtremelyHarshSunlightWasNotLessened
+ jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_RAIN_PRIMAL, BattleScript_NoReliefFromHeavyRain
+ jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_STRONG_WINDS, BattleScript_MysteriousAirCurrentBlowsOn
return
BattleScript_EffectBellyDrum::
@@ -3769,7 +3383,7 @@ BattleScript_EffectBellyDrum::
BattleScript_EffectPsychUp::
attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
copyfoestats
attackanimation
waitanimation
@@ -3777,15 +3391,6 @@ BattleScript_EffectPsychUp::
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
-BattleScript_EffectMirrorCoat::
- attackcanceler
- mirrorcoatdamagecalculator BattleScript_ButItFailed
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- typecalc
- clearmoveresultflags MOVE_RESULT_NOT_VERY_EFFECTIVE | MOVE_RESULT_SUPER_EFFECTIVE
- adjustdamage
- goto BattleScript_HitFromAtkAnimation
-
BattleScript_EffectFutureSight::
attackcanceler
setfutureattack
@@ -3814,17 +3419,9 @@ BattleScript_DoEffectTeleport::
setteleportoutcome BS_ATTACKER
goto BattleScript_MoveEnd
-BattleScript_EffectBeatUp::
- jumpifgenconfiglowerthan CONFIG_B_BEAT_UP, GEN_5, BattleScript_EffectBeatUpGen3
- goto BattleScript_EffectHit
-
-BattleScript_EffectBeatUpGen3:
- attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- pause B_WAIT_TIME_SHORT
- trydobeatup BattleScript_MoveEnd, BattleScript_ButItFailed
+BattleScript_BeatUpAttackMessage::
printstring STRINGID_PKMNATTACK
- goto BattleScript_HitFromCritCalc
+ return
BattleScript_EffectDefenseCurl::
attackcanceler
@@ -3890,17 +3487,16 @@ BattleScript_NotAffectedAbilityPopUp::
BattleScript_EffectStockpile::
attackcanceler
- stockpile 0
+ stockpile
attackanimation
waitanimation
printstring STRINGID_PKMNSTOCKPILED
waitmessage B_WAIT_TIME_LONG
.if B_STOCKPILE_RAISES_DEFS < GEN_4
- goto BattleScript_EffectStockpileEnd
+ goto BattleScript_MoveEnd
.endif
- jumpifmovehadnoeffect BattleScript_EffectStockpileEnd
jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_DEF, MAX_STAT_STAGE, BattleScript_EffectStockpileDef
- jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPDEF, MAX_STAT_STAGE, BattleScript_EffectStockpileEnd
+ jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPDEF, MAX_STAT_STAGE, BattleScript_MoveEnd
BattleScript_EffectStockpileDef:
setstatchanger STAT_DEF, 1, FALSE
statbuffchange BS_ATTACKER, STAT_CHANGE_ALLOW_PTR, BattleScript_EffectStockpileSpDef, BIT_SPDEF
@@ -3909,20 +3505,16 @@ BattleScript_EffectStockpileDef:
waitmessage B_WAIT_TIME_LONG
BattleScript_EffectStockpileSpDef::
setstatchanger STAT_SPDEF, 1, FALSE
- statbuffchange BS_ATTACKER, STAT_CHANGE_ALLOW_PTR, BattleScript_EffectStockpileEnd
- jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_CHANGE, BattleScript_EffectStockpileEnd
+ statbuffchange BS_ATTACKER, STAT_CHANGE_ALLOW_PTR, BattleScript_MoveEnd
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_CHANGE, BattleScript_MoveEnd
printfromtable gStatUpStringIds
waitmessage B_WAIT_TIME_LONG
-BattleScript_EffectStockpileEnd:
- stockpile 1
goto BattleScript_MoveEnd
BattleScript_MoveEffectStockpileWoreOff::
- .if B_STOCKPILE_RAISES_DEFS >= GEN_4
dostockpilestatchangeswearoff BS_ATTACKER, BattleScript_StockpileStatChangeDown
printstring STRINGID_STOCKPILEDEFFECTWOREOFF
waitmessage B_WAIT_TIME_SHORT
- .endif
return
BattleScript_StockpileStatChangeDown:
@@ -3932,25 +3524,6 @@ BattleScript_StockpileStatChangeDown:
BattleScript_StockpileStatChangeDown_Ret:
return
-BattleScript_EffectSpitUp::
- attackcanceler
- jumpifbyte CMP_EQUAL, cMISS_TYPE, B_MSG_PROTECTED, BattleScript_SpitUpFailProtect
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- damagecalc
- adjustdamage
- stockpiletobasedamage
- call BattleScript_Hit_RetFromAtkAnimation
- tryfaintmon BS_TARGET
- removestockpilecounters
- goto BattleScript_MoveEnd
-
-BattleScript_SpitUpFailProtect::
- pause B_WAIT_TIME_LONG
- stockpiletobasedamage
- resultmessage
- waitmessage B_WAIT_TIME_LONG
- goto BattleScript_MoveEnd
-
BattleScript_EffectSwallow::
attackcanceler
stockpiletohpheal BattleScript_ButItFailed
@@ -3960,18 +3533,11 @@ BattleScript_EffectSwallow::
datahpupdate BS_TARGET, PASSIVE_HP_UPDATE
printstring STRINGID_PKMNREGAINEDHEALTH
waitmessage B_WAIT_TIME_LONG
- removestockpilecounters
goto BattleScript_MoveEnd
-BattleScript_EffectHail::
- attackcanceler
- call BattleScript_CheckPrimalWeather
- setfieldweather BATTLE_WEATHER_HAIL
- goto BattleScript_MoveWeatherChange
-
BattleScript_EffectTorment::
attackcanceler
- accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ accuracycheck BattleScript_ButItFailed
jumpifability BS_TARGET_SIDE, ABILITY_AROMA_VEIL, BattleScript_AromaVeilProtects
settorment BattleScript_ButItFailed
attackanimation
@@ -3983,7 +3549,7 @@ BattleScript_EffectTorment::
BattleScript_EffectFlatter::
attackcanceler
jumpifsubstituteblocks BattleScript_MakeMoveMissed
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
jumpifconfusedandstatmaxed STAT_SPATK, BattleScript_ButItFailed
attackanimation
waitanimation
@@ -4006,7 +3572,7 @@ BattleScript_EffectDarkVoid::
BattleScript_EffectNonVolatileStatus::
attackcanceler
trynonvolatilestatus
- accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ accuracycheck BattleScript_ButItFailed
attackanimation
waitanimation
setnonvolatilestatus TRIGGER_ON_MOVE
@@ -4062,9 +3628,7 @@ BattleScript_MementoTargetProtectEnd:
tryfaintmon BS_ATTACKER
goto BattleScript_MoveEnd
-BattleScript_EffectFocusPunch::
- attackcanceler
- jumpifnodamage BattleScript_HitFromAccCheck
+BattleScript_FocusPunchLostFocus::
printstring STRINGID_PKMNLOSTFOCUS
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
@@ -4098,7 +3662,7 @@ BattleScript_EffectChargeString:
BattleScript_EffectTaunt::
attackcanceler
jumpifability BS_TARGET_SIDE, ABILITY_AROMA_VEIL, BattleScript_AromaVeilProtects
- accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ accuracycheck BattleScript_ButItFailed
settaunt BattleScript_ButItFailed
attackanimation
waitanimation
@@ -4118,7 +3682,7 @@ BattleScript_EffectHelpingHand::
BattleScript_EffectTrick::
attackcanceler
jumpifsubstituteblocks BattleScript_ButItFailed
- accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ accuracycheck BattleScript_ButItFailed
tryswapitems BattleScript_ButItFailed
attackanimation
waitanimation
@@ -4126,11 +3690,13 @@ BattleScript_EffectTrick::
waitmessage B_WAIT_TIME_LONG
printfromtable gItemSwapStringIds
waitmessage B_WAIT_TIME_LONG
+ tryactivateabilitywithabilityshield BS_TARGET, TRUE
+ tryactivateitem BS_ATTACKER, ACTIVATION_ON_USABLE_AGAIN
+ tryactivateitem BS_TARGET, ACTIVATION_ON_USABLE_AGAIN
goto BattleScript_MoveEnd
BattleScript_EffectRolePlay::
attackcanceler
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
trycopyability BS_ATTACKER, BattleScript_ButItFailed
attackanimation
waitanimation
@@ -4176,41 +3742,24 @@ BattleScript_EffectRecycle::
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
-BattleScript_EffectBrickBreak::
- attackcanceler
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- typecalc
- removescreens
- critcalc
- damagecalc
- adjustdamage
- jumpifbyte CMP_EQUAL, sB_ANIM_TURN, 0, BattleScript_BrickBreakAnim
- clearmoveresultflags MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE
-BattleScript_BrickBreakAnim::
- attackanimation
+BattleScript_BreakScreens::
+ playmoveanimation MOVE_NONE @use current move
waitanimation
- jumpifbyte CMP_LESS_THAN, sB_ANIM_TURN, 2, BattleScript_BrickBreakDoHit
printstring STRINGID_THEWALLSHATTERED
+ return
+
+BattleScript_StealStats::
+ playmoveanimation MOVE_SPECTRAL_THIEF
+ waitanimation
+ printstring STRINGID_SPECTRALTHIEFSTEAL
waitmessage B_WAIT_TIME_LONG
-BattleScript_BrickBreakDoHit::
- typecalc
- effectivenesssound
- hitanimation BS_TARGET
- waitstate
- healthbarupdate BS_TARGET, MOVE_DAMAGE_HP_UPDATE
- datahpupdate BS_TARGET, MOVE_DAMAGE_HP_UPDATE
- critmessage
- waitmessage B_WAIT_TIME_LONG
- resultmessage
- waitmessage B_WAIT_TIME_LONG
- tryfaintmon BS_TARGET
- setadditionaleffects
- goto BattleScript_MoveEnd
+ spectralthiefprintstats
+ flushtextbox
+ return
BattleScript_EffectYawn::
attackcanceler
trynonvolatilestatus
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
setyawn BattleScript_ButItFailed
attackanimation
waitanimation
@@ -4230,19 +3779,8 @@ BattleScript_PrintAbilityMadeIneffective::
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
-BattleScript_EffectEndeavor::
- attackcanceler
- setdamagetohealthdifference BattleScript_ButItFailed
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- typecalc
- jumpifmovehadnoeffect BattleScript_HitFromAtkAnimation
- clearmoveresultflags MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE
- adjustdamage
- goto BattleScript_HitFromAtkAnimation
-
BattleScript_EffectSkillSwap::
attackcanceler
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
tryswapabilities BattleScript_ButItFailed
attackanimation
waitanimation
@@ -4319,10 +3857,11 @@ BattleScript_EffectWaterSport::
BattleScript_EffectTickle::
attackcanceler
+ jumpifsubstituteblocks BattleScript_ButItFailed
jumpifstat BS_TARGET, CMP_GREATER_THAN, STAT_ATK, MIN_STAT_STAGE, BattleScript_TickleDoMoveAnim
jumpifstat BS_TARGET, CMP_EQUAL, STAT_DEF, MIN_STAT_STAGE, BattleScript_CantLowerMultipleStats
BattleScript_TickleDoMoveAnim::
- accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ accuracycheck BattleScript_ButItFailed
attackanimation
waitanimation
setstatchanger STAT_ATK, 1, TRUE
@@ -4451,7 +3990,7 @@ BattleScript_EffectCamouflage::
BattleScript_FaintBattler::
tryillusionoff BS_FAINTED
- tryactivategulpmissile
+ undodynamax BS_FAINTED
playfaintcry BS_FAINTED
pause B_WAIT_TIME_LONG
dofaintanimation BS_FAINTED
@@ -4544,6 +4083,7 @@ BattleScript_FaintedMonSendOutNew:
jumpifbytenotequal sSHIFT_SWITCHED, sZero, BattleScript_FaintedMonShiftSwitched
BattleScript_FaintedMonSendOutNewEnd:
switchineffects BS_FAINTED
+ switchinevents
jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonEnd
cancelallactions
BattleScript_FaintedMonEnd::
@@ -4551,6 +4091,7 @@ BattleScript_FaintedMonEnd::
BattleScript_FaintedMonShiftSwitched:
copybyte sSAVED_BATTLER, gBattlerTarget
switchineffects BS_ATTACKER
+ switchinevents
resetsentmonsvalue
copybyte gBattlerTarget, sSAVED_BATTLER
goto BattleScript_FaintedMonSendOutNewEnd
@@ -4573,12 +4114,17 @@ BattleScript_HandleFaintedMonLoop::
hidepartystatussummary BS_FAINTED
switchinanim BS_FAINTED, FALSE, FALSE
waitstate
+ trytrainerslidemsglaston BS_FAINTED
switchineffects BS_FAINTED_MULTIPLE_1
jumpifbytenotequal gBattlerFainted, gBattlersCount, BattleScript_HandleFaintedMonLoop
BattleScript_HandleFaintedMonMultipleEnd::
- switchineffects BS_FAINTED_MULTIPLE_2
+ switchinevents
end2
+BattleScript_FirstTurnSwitchInEvents::
+ switchinevents
+ end3
+
BattleScript_LocalTrainerBattleWon::
jumpifbattletype BATTLE_TYPE_TWO_OPPONENTS, BattleScript_LocalTwoTrainersDefeated
printstring STRINGID_PLAYERDEFEATEDTRAINER1
@@ -4604,12 +4150,26 @@ BattleScript_PayDayMoneyAndPickUpItems::
pickup
end2
+BattleScript_RivalBattleLost::
+ jumpifhasnohp BS_ATTACKER, BattleScript_RivalBattleLostSkipMonRecall
+ printstring STRINGID_TRAINER1MON1COMEBACK
+ waitmessage B_WAIT_TIME_LONG
+ returnatktoball
+ waitstate
+BattleScript_RivalBattleLostSkipMonRecall::
+ trainerslidein BS_ATTACKER
+ waitstate
+ printstring STRINGID_TRAINER1WINTEXT
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_LocalBattleLostPrintWhiteOut
+ end2
+
BattleScript_LocalBattleLost::
jumpifbattletype BATTLE_TYPE_DOME, BattleScript_CheckDomeDrew
jumpifbattletype BATTLE_TYPE_FRONTIER, BattleScript_LocalBattleLostPrintTrainersWinText
jumpifbattletype BATTLE_TYPE_TRAINER_HILL, BattleScript_LocalBattleLostPrintTrainersWinText
jumpifbattletype BATTLE_TYPE_EREADER_TRAINER, BattleScript_LocalBattleLostEnd
jumpifhalfword CMP_EQUAL, gTrainerBattleParameter + 2, TRAINER_SECRET_BASE, BattleScript_LocalBattleLostEnd
+ jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, 0, BattleScript_RivalBattleLost
jumpifnowhiteout BattleScript_LocalBattleLostEnd_
jumpifbattletype BATTLE_TYPE_INGAME_PARTNER, BattleScript_LocalBattleLostPrintWhiteOut
BattleScript_LocalBattleLostPrintWhiteOut::
@@ -4790,6 +4350,7 @@ BattleScript_DoSwitchOut::
switchinanim BS_ATTACKER, FALSE, FALSE
waitstate
switchineffects BS_ATTACKER
+ switchinevents
moveendcase MOVEEND_STATUS_IMMUNITY_ABILITIES
moveendcase MOVEEND_MIRROR_MOVE
end2
@@ -4837,6 +4398,21 @@ BattleScript_LearnedNewMove::
BattleScript_LearnMoveReturn::
return
+BattleScript_WeatherAbilityActivates::
+ pause B_WAIT_TIME_SHORT
+ call BattleScript_AbilityPopUp
+ jumpifability BS_SCRIPTING, ABILITY_SAND_SPIT, BattleScript_SandSpitActivates
+ printfromtable gAbilityWeatherChangeStringId
+BattleScript_WeatherAbilityActivatesContinue:
+ waitstate
+ playanimation_var BS_BATTLER_0, sB_ANIM_ARG1
+ call BattleScript_ActivateWeatherAbilities
+ return
+
+BattleScript_SandSpitActivates::
+ printstring STRINGID_ASANDSTORMKICKEDUP
+ goto BattleScript_WeatherAbilityActivatesContinue
+
BattleScript_WeatherContinues::
printfromtable gWeatherTurnStringIds
waitmessage B_WAIT_TIME_LONG
@@ -4899,6 +4475,11 @@ BattleScript_OverworldTerrain::
call BattleScript_ActivateTerrainEffects
end3
+BattleScript_OverworldHazard::
+ printfromtable gStartingStatusStringIds
+ waitmessage B_WAIT_TIME_LONG
+ end3
+
BattleScript_SideStatusWoreOff::
printstring STRINGID_PKMNSXWOREOFF
waitmessage B_WAIT_TIME_LONG
@@ -4933,8 +4514,9 @@ BattleScript_MagicRoomEnds::
printstring STRINGID_MAGICROOMENDS
waitmessage B_WAIT_TIME_LONG
setbyte gBattlerTarget, 0
+ sortbattlers
BattleScript_MagicRoomHealingItemsLoop:
- copyarraywithindex gBattlerAttacker, gBattlerByTurnOrder, gBattlerTarget, 1
+ copyarraywithindex gBattlerAttacker, gBattlersBySpeed, gBattlerTarget, 1
tryactivateitem BS_ATTACKER, ACTIVATION_ON_USABLE_AGAIN
addbyte gBattlerTarget, 1
jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_MagicRoomHealingItemsLoop
@@ -5022,11 +4604,10 @@ BattleScript_BideAttack::
clearvolatile BS_ATTACKER, VOLATILE_MULTIPLETURNS
printstring STRINGID_PKMNUNLEASHEDENERGY
waitmessage B_WAIT_TIME_LONG
- accuracycheck BattleScript_MoveMissed, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissed
typecalc
clearmoveresultflags MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE
copybidedmg
- adjustdamage
setbyte sB_ANIM_TURN, 1
attackanimation
waitanimation
@@ -5037,7 +4618,6 @@ BattleScript_BideAttack::
datahpupdate BS_TARGET, MOVE_DAMAGE_HP_UPDATE
resultmessage
waitmessage B_WAIT_TIME_LONG
- tryfaintmon BS_TARGET
goto BattleScript_MoveEnd
BattleScript_BideNoEnergyToAttack::
@@ -5057,6 +4637,7 @@ BattleScript_RoarSuccessSwitch::
waitstate
printstring STRINGID_PKMNWASDRAGGEDOUT
switchineffects BS_TARGET
+ switchinevents
jumpifbyte CMP_EQUAL, sSWITCH_CASE, B_SWITCH_RED_CARD, BattleScript_RoarSuccessSwitch_Ret
setbyte sSWITCH_CASE, B_SWITCH_NORMAL
goto BattleScript_MoveEnd
@@ -5187,66 +4768,13 @@ BattleScript_DestinyBondTakesLife::
tryfaintmon BS_ATTACKER
return
-BattleScript_DmgHazardsOnAttacker::
- healthbarupdate BS_ATTACKER, PASSIVE_HP_UPDATE
- datahpupdate BS_ATTACKER, PASSIVE_HP_UPDATE
- call BattleScript_PrintHurtByDmgHazards
- tryfaintmon BS_ATTACKER
- tryfaintmon_spikes BS_ATTACKER, BattleScript_DmgHazardsOnAttackerFainted
- return
-
-BattleScript_DmgHazardsOnAttackerFainted::
- setbyte sGIVEEXP_STATE, 0
- getexp BS_ATTACKER
- moveendall
- tryabsorbtoxicspikesonfaint
- goto BattleScript_HandleFaintedMon
-
-BattleScript_DmgHazardsOnTarget::
- healthbarupdate BS_TARGET, PASSIVE_HP_UPDATE
- datahpupdate BS_TARGET, PASSIVE_HP_UPDATE
- call BattleScript_PrintHurtByDmgHazards
- tryfaintmon BS_TARGET
- tryfaintmon_spikes BS_TARGET, BattleScript_DmgHazardsOnTargetFainted
- return
-
-BattleScript_DmgHazardsOnTargetFainted::
- setbyte sGIVEEXP_STATE, 0
- getexp BS_TARGET
- moveendall
- tryabsorbtoxicspikesonfaint
- goto BattleScript_HandleFaintedMon
-
-BattleScript_DmgHazardsOnBattlerScripting::
+BattleScript_DmgHazardsOnBattler::
healthbarupdate BS_SCRIPTING, PASSIVE_HP_UPDATE
datahpupdate BS_SCRIPTING, PASSIVE_HP_UPDATE
call BattleScript_PrintHurtByDmgHazards
tryfaintmon BS_SCRIPTING
- tryfaintmon_spikes BS_SCRIPTING, BattleScript_DmgHazardsOnBattlerScriptingFainted
- return
-
-BattleScript_DmgHazardsOnBattlerScriptingFainted::
- setbyte sGIVEEXP_STATE, 0
- getexp BS_SCRIPTING
- moveendall
- tryabsorbtoxicspikesonfaint
- goto BattleScript_HandleFaintedMon
-
-BattleScript_DmgHazardsOnFaintedBattler::
- healthbarupdate BS_FAINTED, PASSIVE_HP_UPDATE
- datahpupdate BS_FAINTED, PASSIVE_HP_UPDATE
- call BattleScript_PrintHurtByDmgHazards
- tryfaintmon BS_FAINTED
- tryfaintmon_spikes BS_FAINTED, BattleScript_DmgHazardsOnFaintedBattlerFainted
return
-BattleScript_DmgHazardsOnFaintedBattlerFainted::
- setbyte sGIVEEXP_STATE, 0
- getexp BS_FAINTED
- moveendall
- tryabsorbtoxicspikesonfaint
- goto BattleScript_HandleFaintedMon
-
BattleScript_PrintHurtByDmgHazards::
printfromtable gDmgHazardsStringIds
waitmessage B_WAIT_TIME_LONG
@@ -5307,6 +4835,9 @@ BattleScript_PerishBodyActivates::
BattleScript_GulpMissileGorging::
call BattleScript_AbilityPopUp
+ handleformchange BS_TARGET, 0
+ playanimation BS_TARGET, B_ANIM_FORM_CHANGE_INSTANT
+ waitanimation
playanimation BS_ATTACKER, B_ANIM_GULP_MISSILE
waitanimation
effectivenesssound
@@ -5318,21 +4849,15 @@ BattleScript_GulpMissileGorging::
tryfaintmon BS_ATTACKER
jumpiffainted BS_ATTACKER, TRUE, BattleScript_GulpMissileNoSecondEffectGorging
BattleScript_GulpMissileNoDmgGorging:
- handleformchange BS_TARGET, 0
- playanimation BS_TARGET, B_ANIM_FORM_CHANGE
- waitanimation
- swapattackerwithtarget
- seteffectprimary BS_ATTACKER, BS_TARGET, MOVE_EFFECT_PARALYSIS
- swapattackerwithtarget
- return
+ seteffectprimary BS_TARGET, BS_ATTACKER, MOVE_EFFECT_PARALYSIS
BattleScript_GulpMissileNoSecondEffectGorging:
- handleformchange BS_TARGET, 0
- playanimation BS_TARGET, B_ANIM_FORM_CHANGE
- waitanimation
return
BattleScript_GulpMissileGulping::
call BattleScript_AbilityPopUp
+ handleformchange BS_TARGET, 0
+ playanimation BS_TARGET, B_ANIM_FORM_CHANGE_INSTANT
+ waitanimation
playanimation BS_ATTACKER, B_ANIM_GULP_MISSILE
waitanimation
effectivenesssound
@@ -5344,21 +4869,14 @@ BattleScript_GulpMissileGulping::
tryfaintmon BS_ATTACKER
jumpiffainted BS_ATTACKER, TRUE, BattleScript_GulpMissileNoSecondEffectGulping
BattleScript_GulpMissileNoDmgGulping:
- handleformchange BS_TARGET, 0
- playanimation BS_TARGET, B_ANIM_FORM_CHANGE
- waitanimation
swapattackerwithtarget @ to make gStatDownStringIds down below print the right battler
setstatchanger STAT_DEF, 1, TRUE
statbuffchange BS_TARGET, STAT_CHANGE_NOT_PROTECT_AFFECTED | STAT_CHANGE_ALLOW_PTR, BattleScript_GulpMissileGulpingEnd
printfromtable gStatDownStringIds
waitmessage B_WAIT_TIME_LONG
BattleScript_GulpMissileGulpingEnd:
- swapattackerwithtarget @ restore the battlers, just in case
- return
+ swapattackerwithtarget
BattleScript_GulpMissileNoSecondEffectGulping:
- handleformchange BS_TARGET, 0
- playanimation BS_TARGET, B_ANIM_FORM_CHANGE
- waitanimation
return
BattleScript_SeedSowerActivates::
@@ -5499,15 +5017,10 @@ BattleScript_DefogClearHazards::
BattleScript_MonTookFutureAttack::
printstring STRINGID_PKMNTOOKATTACK
waitmessage B_WAIT_TIME_LONG
- jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, B_MSG_FUTURE_SIGHT, BattleScript_CheckDoomDesireMiss
- accuracycheck BattleScript_FutureAttackMiss, MOVE_FUTURE_SIGHT
- goto BattleScript_FutureAttackAnimate
-BattleScript_CheckDoomDesireMiss::
- accuracycheck BattleScript_FutureAttackMiss, MOVE_DOOM_DESIRE
-BattleScript_FutureAttackAnimate::
- critcalc
+ futuresighttargetfailure BattleScript_DoFutureAttackResult
+ jumpifmovehadnoeffect BattleScript_FutureAttackEnd
+ accuracycheck BattleScript_MoveMissedPause
damagecalc
- adjustdamage
jumpifmovehadnoeffect BattleScript_DoFutureAttackResult
jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, B_MSG_FUTURE_SIGHT, BattleScript_FutureHitAnimDoomDesire
playanimation BS_ATTACKER, B_ANIM_FUTURE_SIGHT_HIT
@@ -5525,21 +5038,14 @@ BattleScript_DoFutureAttackHit::
BattleScript_DoFutureAttackResult:
resultmessage
waitmessage B_WAIT_TIME_LONG
- tryfaintmon BS_TARGET
- checkteamslost BattleScript_FutureAttackEnd
BattleScript_FutureAttackEnd::
moveendcase MOVEEND_SET_VALUES
moveendcase MOVEEND_RAGE
moveendcase MOVEEND_ABILITIES
- moveendcase MOVEEND_COLOR_CHANGE
moveendcase MOVEEND_ITEM_EFFECTS_TARGET
moveendfromto MOVEEND_SYMBIOSIS, MOVEEND_UPDATE_LAST_MOVES
- goto BattleScript_FutureAttackClearResults
-BattleScript_FutureAttackMiss::
- pause B_WAIT_TIME_SHORT
- setmoveresultflags MOVE_RESULT_FAILED
- resultmessage
- waitmessage B_WAIT_TIME_LONG
+ moveendcase MOVEEND_COLOR_CHANGE
+ checkteamslost BattleScript_FutureAttackClearResults
BattleScript_FutureAttackClearResults:
setmoveresultflags 0
clearspecialstatuses
@@ -5841,7 +5347,9 @@ BattleScript_MoveEffectClearSmog::
BattleScript_FocusPunchSetUp::
flushtextbox
+ call BattleScript_SwapFromSubstitute
playanimation BS_ATTACKER, B_ANIM_FOCUS_PUNCH_SETUP
+ call BattleScript_SwapToSubstitute
printstring STRINGID_PKMNTIGHTENINGFOCUS
waitmessage B_WAIT_TIME_LONG
end3
@@ -5852,10 +5360,10 @@ BattleScript_MegaEvolution::
printstring STRINGID_MEGAEVOREACTING
BattleScript_MegaEvolutionAfterString:
waitmessage B_WAIT_TIME_LONG
- handlemegaevo BS_SCRIPTING, 0
+ handleformchange BS_SCRIPTING, 0
playanimation BS_SCRIPTING, B_ANIM_MEGA_EVOLUTION
waitanimation
- handlemegaevo BS_SCRIPTING, 1
+ handleformchange BS_SCRIPTING, 1
printstring STRINGID_MEGAEVOEVOLVED
waitmessage B_WAIT_TIME_LONG
switchinabilities BS_SCRIPTING
@@ -5869,15 +5377,14 @@ BattleScript_WishMegaEvolution::
BattleScript_PrimalReversion::
flushtextbox
- handleprimalreversion BS_SCRIPTING, 0
- handleprimalreversion BS_SCRIPTING, 1
+ handleformchange BS_SCRIPTING, 0
playanimation BS_SCRIPTING, B_ANIM_PRIMAL_REVERSION
waitanimation
- handleprimalreversion BS_SCRIPTING, 2
+ handleformchange BS_SCRIPTING, 1
printstring STRINGID_PKMNREVERTEDTOPRIMAL
waitmessage B_WAIT_TIME_LONG
switchinabilities BS_SCRIPTING
- end3
+ return
BattleScript_PowerConstruct::
flushtextbox
@@ -5885,10 +5392,9 @@ BattleScript_PowerConstruct::
waitmessage B_WAIT_TIME_SHORT
call BattleScript_AbilityPopUpScripting
handleformchange BS_SCRIPTING, 0
- handleformchange BS_SCRIPTING, 1
playanimation BS_SCRIPTING, B_ANIM_POWER_CONSTRUCT
waitanimation
- handleformchange BS_SCRIPTING, 2
+ handleformchange BS_SCRIPTING, 1
printstring STRINGID_POWERCONSTRUCTTRANSFORM
waitmessage B_WAIT_TIME_SHORT
end2
@@ -5898,34 +5404,49 @@ BattleScript_UltraBurst::
trytrainerslidezmovemsg
printstring STRINGID_ULTRABURSTREACTING
waitmessage B_WAIT_TIME_LONG
- handleultraburst BS_SCRIPTING, 0
+ handleformchange BS_SCRIPTING, 0
playanimation BS_SCRIPTING, B_ANIM_ULTRA_BURST
waitanimation
- handleultraburst BS_SCRIPTING, 1
+ handleformchange BS_SCRIPTING, 1
printstring STRINGID_ULTRABURSTCOMPLETED
waitmessage B_WAIT_TIME_LONG
switchinabilities BS_SCRIPTING
end3
-BattleScript_GulpMissileFormChange::
- call BattleScript_BattlerFormChange
- goto BattleScript_FromTwoTurnMovesSecondTurnRet
-
BattleScript_BattlerFormChange::
pause 5
call BattleScript_AbilityPopUpScripting
flushtextbox
-BattleScript_BattlerFormChangeNoPopup:
+BattleScript_BattlerFormChangeNoPopup::
handleformchange BS_SCRIPTING, 0
- handleformchange BS_SCRIPTING, 1
playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE
waitanimation
- handleformchange BS_SCRIPTING, 2
+BattleScript_BattlerFormChangeFromAfterAnimation::
+ handleformchange BS_SCRIPTING, 1
+ switchinabilities BS_SCRIPTING
+ jumpifability BS_TARGET, ABILITY_DISGUISE, BattleScript_ApplyDisguiseFormChangeHPLoss
return
-BattleScript_BattlerFormChangeEnd3::
- call BattleScript_BattlerFormChange
- end3
+BattleScript_ZenMode::
+ flushtextbox
+ call BattleScript_AbilityPopUpScripting
+ handleformchange BS_SCRIPTING, 0
+ playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE
+ waitanimation
+ handleformchange BS_SCRIPTING, 1
+ printfromtable gZenModeStringIds
+ waitmessage B_WAIT_TIME_SHORT
+ end2
+
+BattleScript_BattlerFormChangeDisguise::
+ call BattleScript_AbilityPopUpScripting
+ pause B_WAIT_TIME_LONG
+ handleformchange BS_SCRIPTING, 0
+ playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE_DISGUISE
+ waitanimation
+ printstring STRINGID_PKMNDISGUISEWASBUSTED
+ waitmessage B_WAIT_TIME_SHORT
+ goto BattleScript_BattlerFormChangeFromAfterAnimation
BattleScript_BattlerFormChangeEnd3NoPopup::
call BattleScript_BattlerFormChangeNoPopup
@@ -5935,29 +5456,28 @@ BattleScript_BattlerFormChangeEnd2::
call BattleScript_BattlerFormChange
end2
-BattleScript_BattlerFormChangeWithStringEnd3::
+BattleScript_BattlerFormChangeWithString::
pause 5
call BattleScript_AbilityPopUpScripting
flushtextbox
handleformchange BS_SCRIPTING, 0
- handleformchange BS_SCRIPTING, 1
playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE
waitanimation
- handleformchange BS_SCRIPTING, 2
+ handleformchange BS_SCRIPTING, 1
printstring STRINGID_PKMNTRANSFORMED
waitmessage B_WAIT_TIME_LONG
- end3
+ switchinabilities BS_SCRIPTING
+ return
BattleScript_AttackerFormChangeMoveEffect::
waitmessage 1
handleformchange BS_ATTACKER, 0
- handleformchange BS_ATTACKER, 1
playanimation BS_ATTACKER, B_ANIM_FORM_CHANGE
waitanimation
+ handleformchange BS_ATTACKER, 1
copybyte sBATTLER, gBattlerAttacker
printstring STRINGID_PKMNTRANSFORMED
waitmessage B_WAIT_TIME_LONG
- handleformchange BS_ATTACKER, 2
return
BattleScript_BallFetch::
@@ -5984,12 +5504,9 @@ BattleScript_ApplyDisguiseFormChangeHPLossReturn:
BattleScript_TargetFormChangeNoPopup:
flushtextbox
handleformchange BS_SCRIPTING, 0
- handleformchange BS_SCRIPTING, 1
playanimation BS_TARGET, B_ANIM_FORM_CHANGE
waitanimation
- handleformchange BS_SCRIPTING, 2
- jumpifability BS_TARGET, ABILITY_DISGUISE, BattleScript_ApplyDisguiseFormChangeHPLoss
- return
+ goto BattleScript_BattlerFormChangeFromAfterAnimation
BattleScript_TargetFormChange::
pause 5
@@ -6000,11 +5517,6 @@ BattleScript_TargetFormChange::
BattleScript_TargetFormChangeWithString::
pause 5
call BattleScript_AbilityPopUpTarget
- call BattleScript_TargetFormChangeNoPopup
- printstring STRINGID_PKMNTRANSFORMED
- waitmessage B_WAIT_TIME_LONG
- return
-
BattleScript_TargetFormChangeWithStringNoPopup::
call BattleScript_TargetFormChangeNoPopup
printstring STRINGID_PKMNTRANSFORMED
@@ -6015,25 +5527,20 @@ BattleScript_IllusionOffAndTerastallization::
call BattleScript_IllusionOff
goto BattleScript_Terastallization
-BattleScript_IllusionOffEnd3::
- call BattleScript_IllusionOff
- end3
-
BattleScript_IllusionOff::
- setspriteignore0hp TRUE
call BattleScript_SwapFromSubstitute
playanimation BS_SCRIPTING, B_ANIM_ILLUSION_OFF
waitanimation
call BattleScript_SwapToSubstitute
updatenick
waitstate
- setspriteignore0hp FALSE
printstring STRINGID_ILLUSIONWOREOFF
waitmessage B_WAIT_TIME_LONG
return
BattleScript_CottonDownActivates::
- copybyte sSAVED_BATTLER, gBattlerAttacker
+ saveattacker
+ savetarget
call BattleScript_AbilityPopUpTarget
copybyte gEffectBattler, gBattlerTarget
swapattackerwithtarget
@@ -6054,7 +5561,8 @@ BattleScript_CottonDownLoopIncrement:
addbyte gBattlerTarget, 1
jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_CottonDownLoop
swapattackerwithtarget
- copybyte gBattlerAttacker, sSAVED_BATTLER
+ restoreattacker
+ restoretarget
return
BattleScript_AnticipationActivates::
@@ -6092,6 +5600,12 @@ BattleScript_MoveUsedIsAsleep::
statusanimation BS_ATTACKER
goto BattleScript_MoveEnd
+BattleScript_BeforeSnoreMessage::
+ printstring STRINGID_PKMNFASTASLEEP
+ waitmessage B_WAIT_TIME_LONG
+ statusanimation BS_ATTACKER
+ return
+
BattleScript_MoveUsedWokeUp::
printfromtable gWokeUpStringIds
waitmessage B_WAIT_TIME_LONG
@@ -6144,28 +5658,16 @@ BattleScript_MoveUsedIsFrozen::
statusanimation BS_ATTACKER
goto BattleScript_MoveEnd
-BattleScript_MoveUsedUnfroze::
+BattleScript_BattlerDefrosted::
printfromtable gGotDefrostedStringIds
waitmessage B_WAIT_TIME_LONG
- updatestatusicon BS_ATTACKER
+ updatestatusicon BS_SCRIPTING
return
-BattleScript_MoveUsedUnfrostbite::
+BattleScript_BattlerFrostbiteHealed::
printfromtable gFrostbiteHealedStringIds
waitmessage B_WAIT_TIME_LONG
- updatestatusicon BS_ATTACKER
- return
-
-BattleScript_DefrostedViaFireMove::
- printstring STRINGID_PKMNWASDEFROSTED
- waitmessage B_WAIT_TIME_LONG
- updatestatusicon BS_TARGET
- return
-
-BattleScript_FrostbiteHealedViaFireMove::
- printstring STRINGID_PKMNFROSTBITEHEALED
- waitmessage B_WAIT_TIME_LONG
- updatestatusicon BS_TARGET
+ updatestatusicon BS_SCRIPTING
return
BattleScript_MoveUsedIsParalyzed::
@@ -6177,20 +5679,18 @@ BattleScript_MoveUsedIsParalyzed::
BattleScript_PowderMoveNoEffect::
pause B_WAIT_TIME_SHORT
- jumpiftype BS_TARGET, TYPE_GRASS, BattleScript_PowderMoveNoEffectPrint
- jumpifability BS_TARGET, ABILITY_OVERCOAT, BattleScript_PowderMoveNoEffectOvercoat
- setlastuseditem BS_TARGET
+ jumpiftype BS_SCRIPTING, TYPE_GRASS, BattleScript_PowderMoveNoEffectPrint
+ jumpifability BS_SCRIPTING, ABILITY_OVERCOAT, BattleScript_PowderMoveNoEffectOvercoat
+ setlastuseditem BS_SCRIPTING
printstring STRINGID_SAFETYGOGGLESPROTECTED
goto BattleScript_PowderMoveNoEffectWaitMsg
BattleScript_PowderMoveNoEffectOvercoat:
- call BattleScript_AbilityPopUpTarget
+ call BattleScript_AbilityPopUp
BattleScript_PowderMoveNoEffectPrint:
- printstring STRINGID_ITDOESNTAFFECT
+ printstring STRINGID_SCR_ITDOESNTAFFECT
BattleScript_PowderMoveNoEffectWaitMsg:
waitmessage B_WAIT_TIME_LONG
- cancelmultiturnmoves
- setmoveresultflags MOVE_RESULT_FAILED
- goto BattleScript_MoveEnd
+ return
BattleScript_MoveUsedFlinched::
printstring STRINGID_PKMNFLINCHED
@@ -6218,10 +5718,17 @@ BattleScript_PrintUproarOverTurns::
BattleScript_ThrashConfuses::
volatileanimation BS_ATTACKER, VOLATILE_CONFUSION
+ copybyte sBATTLER, gBattlerAttacker
printstring STRINGID_PKMNFATIGUECONFUSION
waitmessage B_WAIT_TIME_LONG
end2
+BattleScript_ThrashConfusesRet::
+ volatileanimation BS_SCRIPTING, VOLATILE_CONFUSION
+ printstring STRINGID_PKMNFATIGUECONFUSION
+ waitmessage B_WAIT_TIME_LONG
+ return
+
BattleScript_MoveUsedIsConfused::
printstring STRINGID_PKMNISCONFUSED
waitmessage B_WAIT_TIME_LONG
@@ -6229,13 +5736,12 @@ BattleScript_MoveUsedIsConfused::
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, FALSE, BattleScript_MoveUsedIsConfusedRet
BattleScript_DoSelfConfusionDmg::
cancelmultiturnmoves
- adjustdamage
printstring STRINGID_ITHURTCONFUSION
waitmessage B_WAIT_TIME_LONG
effectivenesssound
hitanimation BS_ATTACKER
waitstate
- isdmgblockedbydisguise
+ tryselfconfusiondmgformchange
healthbarupdate BS_ATTACKER, PASSIVE_HP_UPDATE
datahpupdate BS_ATTACKER, PASSIVE_HP_UPDATE
resultmessage
@@ -6450,17 +5956,9 @@ BattleScript_ItemSteal::
playanimation BS_EFFECT_BATTLER, B_ANIM_ITEM_STEAL
printstring STRINGID_PKMNSTOLEITEM
waitmessage B_WAIT_TIME_LONG
+ tryactivateabilitywithabilityshield BS_ATTACKER, FALSE
return
-BattleScript_DrizzleActivates::
- pause B_WAIT_TIME_SHORT
- call BattleScript_AbilityPopUp
- printstring STRINGID_PKMNMADEITRAIN
- waitstate
- playanimation BS_BATTLER_0, B_ANIM_RAIN_CONTINUES
- call BattleScript_ActivateWeatherAbilities
- end3
-
BattleScript_AbilityRaisesDefenderStat::
pause B_WAIT_TIME_SHORT
statbuffchange BS_TARGET, STAT_CHANGE_ONLY_CHECKING, BattleScript_AbilityCantRaiseDefenderStat
@@ -6531,70 +6029,39 @@ BattleScript_MoodyLower:
statbuffchange BS_ATTACKER, STAT_CHANGE_CERTAIN | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_MoodyEnd
jumpifbyte CMP_GREATER_THAN, cMULTISTRING_CHOOSER, B_MSG_DEFENDER_STAT_CHANGED, BattleScript_MoodyEnd
printfromtable gStatDownStringIds
- waitmessage B_WAIT_TIME_LONG
-BattleScript_MoodyEnd:
- end2
-
-BattleScript_EmergencyExit::
- pause 5
- call BattleScript_AbilityPopUpScripting
- pause B_WAIT_TIME_LONG
- playanimation BS_SCRIPTING, B_ANIM_SLIDE_OFFSCREEN
- waitanimation
- openpartyscreen BS_SCRIPTING, BattleScript_EmergencyExitRet
- waitstate
- returntoball BS_SCRIPTING, FALSE
- switchoutabilities BS_SCRIPTING
- switchhandleorder BS_SCRIPTING, 2
- getswitchedmondata BS_SCRIPTING
- switchindataupdate BS_SCRIPTING
- hpthresholds BS_SCRIPTING
- printstring STRINGID_SWITCHINMON
- switchinanim BS_SCRIPTING, FALSE, TRUE
- waitstate
- switchineffects BS_SCRIPTING
-BattleScript_EmergencyExitRet:
- return
-
-BattleScript_EmergencyExitWild::
- pause 5
- call BattleScript_AbilityPopUpScripting
- pause B_WAIT_TIME_LONG
- playanimation BS_SCRIPTING, B_ANIM_SLIDE_OFFSCREEN
- waitanimation
- setteleportoutcome BS_SCRIPTING
- finishaction
- return
-
-BattleScript_EmergencyExitEnd2::
- pause 5
- call BattleScript_AbilityPopUp
- pause B_WAIT_TIME_LONG
- playanimation BS_ATTACKER, B_ANIM_SLIDE_OFFSCREEN
- waitanimation
- openpartyscreen BS_ATTACKER, BattleScript_EmergencyExitRetEnd2
- waitstate
- returntoball BS_ATTACKER, FALSE
- switchoutabilities BS_ATTACKER
- switchhandleorder BS_ATTACKER, 2
- getswitchedmondata BS_ATTACKER
- switchindataupdate BS_ATTACKER
- hpthresholds BS_ATTACKER
- printstring STRINGID_SWITCHINMON
- switchinanim BS_ATTACKER, FALSE, TRUE
- waitstate
- switchineffects BS_ATTACKER
-BattleScript_EmergencyExitRetEnd2:
+ waitmessage B_WAIT_TIME_LONG
+BattleScript_MoodyEnd:
end2
-BattleScript_EmergencyExitWildEnd2::
+BattleScript_EmergencyExit::
pause 5
- call BattleScript_AbilityPopUp
+ call BattleScript_AbilityPopUpScripting
pause B_WAIT_TIME_LONG
- playanimation BS_ATTACKER, B_ANIM_SLIDE_OFFSCREEN
+ playanimation BS_SCRIPTING, B_ANIM_SLIDE_OFFSCREEN
waitanimation
- setteleportoutcome BS_ATTACKER
+ jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_EmergencyExitTrainer
+ setteleportoutcome BS_SCRIPTING
finishaction
+ return
+BattleScript_EmergencyExitTrainer:
+ openpartyscreen BS_SCRIPTING, BattleScript_EmergencyExitRet
+ waitstate
+ returntoball BS_SCRIPTING, FALSE
+ switchoutabilities BS_SCRIPTING
+ switchhandleorder BS_SCRIPTING, 2
+ getswitchedmondata BS_SCRIPTING
+ switchindataupdate BS_SCRIPTING
+ hpthresholds BS_SCRIPTING
+ printstring STRINGID_SWITCHINMON
+ switchinanim BS_SCRIPTING, FALSE, TRUE
+ waitstate
+ switchineffects BS_SCRIPTING
+ switchinevents
+BattleScript_EmergencyExitRet:
+ return
+
+BattleScript_EmergencyExitEnd2::
+ call BattleScript_EmergencyExit
end2
BattleScript_TraceActivates::
@@ -6604,7 +6071,7 @@ BattleScript_TraceActivates::
waitmessage B_WAIT_TIME_LONG
settracedability BS_SCRIPTING
switchinabilities BS_SCRIPTING
- end3
+ return
BattleScript_ReceiverActivates::
call BattleScript_AbilityPopUp
@@ -6670,24 +6137,6 @@ BattleScript_HealerActivates::
waitmessage B_WAIT_TIME_LONG
end2
-BattleScript_SandstreamActivates::
- pause B_WAIT_TIME_SHORT
- call BattleScript_AbilityPopUp
- printstring STRINGID_PKMNSXWHIPPEDUPSANDSTORM
- waitstate
- playanimation BS_BATTLER_0, B_ANIM_SANDSTORM_CONTINUES
- call BattleScript_ActivateWeatherAbilities
- end3
-
-BattleScript_SandSpitActivates::
- pause B_WAIT_TIME_SHORT
- call BattleScript_AbilityPopUp
- printstring STRINGID_ASANDSTORMKICKEDUP
- waitstate
- playanimation BS_BATTLER_0, B_ANIM_SANDSTORM_CONTINUES
- call BattleScript_ActivateWeatherAbilities
- return
-
BattleScript_ShedSkinActivates::
call BattleScript_AbilityPopUp
printstring STRINGID_PKMNSXCUREDYPROBLEM
@@ -6700,8 +6149,9 @@ BattleScript_ActivateWeatherAbilities:
savetarget
tryboosterenergy ON_WEATHER
setbyte gBattlerAttacker, 0
+ sortbattlers
BattleScript_ActivateWeatherAbilities_Loop:
- copyarraywithindex gBattlerTarget, gBattlerByTurnOrder, gBattlerAttacker, 1
+ copyarraywithindex gBattlerTarget, gBattlersBySpeed, gBattlerAttacker, 1
activateweatherchangeabilities BS_TARGET
addbyte gBattlerAttacker, 1
jumpifbytenotequal gBattlerAttacker, gBattlersCount, BattleScript_ActivateWeatherAbilities_Loop
@@ -6754,7 +6204,7 @@ BattleScript_IntimidateLoopIncrement:
restoretarget
restoreattacker
pause B_WAIT_TIME_MED
- end3
+ return
BattleScript_IntimidatePrevented::
copybyte sBATTLER, gBattlerTarget
@@ -6806,61 +6256,25 @@ BattleScript_SupersweetSyrupLoopIncrement:
restoretarget
restoreattacker
pause B_WAIT_TIME_MED
- end3
+ return
BattleScript_SupersweetSyrupWontDecrease:
printstring STRINGID_STATSWONTDECREASE
goto BattleScript_SupersweetSyrupEffect_WaitString
-BattleScript_DroughtActivates::
- pause B_WAIT_TIME_SHORT
- call BattleScript_AbilityPopUp
- printstring STRINGID_PKMNSXINTENSIFIEDSUN
- waitstate
- playanimation BS_BATTLER_0, B_ANIM_SUN_CONTINUES
- call BattleScript_ActivateWeatherAbilities
- end3
-
-BattleScript_DesolateLandActivates::
- pause B_WAIT_TIME_SHORT
- call BattleScript_AbilityPopUp
- printstring STRINGID_EXTREMELYHARSHSUNLIGHT
- waitstate
- playanimation BS_BATTLER_0, B_ANIM_SUN_CONTINUES
- call BattleScript_ActivateWeatherAbilities
- end3
-
BattleScript_PrimalWeatherBlocksMove::
pause B_WAIT_TIME_SHORT
printfromtable gPrimalWeatherBlocksStringIds
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
-BattleScript_PrimordialSeaActivates::
- pause B_WAIT_TIME_SHORT
- call BattleScript_AbilityPopUp
- printstring STRINGID_HEAVYRAIN
- waitstate
- playanimation BS_BATTLER_0, B_ANIM_RAIN_CONTINUES
- call BattleScript_ActivateWeatherAbilities
- end3
-
-BattleScript_DeltaStreamActivates::
- pause B_WAIT_TIME_SHORT
- call BattleScript_AbilityPopUp
- printstring STRINGID_MYSTERIOUSAIRCURRENT
- waitstate
- playanimation BS_ATTACKER, B_ANIM_STRONG_WINDS
- call BattleScript_ActivateWeatherAbilities
- end3
-
BattleScript_ProtosynthesisActivates::
call BattleScript_AbilityPopUpScripting
printstring STRINGID_SUNLIGHTACTIVATEDABILITY
waitmessage B_WAIT_TIME_MED
printstring STRINGID_STATWASHEIGHTENED
waitmessage B_WAIT_TIME_MED
- end3
+ return
BattleScript_QuarkDriveActivates::
call BattleScript_AbilityPopUp
@@ -6868,34 +6282,34 @@ BattleScript_QuarkDriveActivates::
waitmessage B_WAIT_TIME_MED
printstring STRINGID_STATWASHEIGHTENED
waitmessage B_WAIT_TIME_MED
- end3
+ return
BattleScript_RuinAbilityActivates::
call BattleScript_AbilityPopUp
printstring STRINGID_ABILITYWEAKENEDSURROUNDINGMONSSTAT
waitmessage B_WAIT_TIME_LONG
- end3
+ return
BattleScript_SupremeOverlordActivates::
pause B_WAIT_TIME_SHORT
call BattleScript_AbilityPopUp
printstring STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN
waitmessage B_WAIT_TIME_LONG
- end3
+ return
BattleScript_CostarActivates::
pause B_WAIT_TIME_SHORT
call BattleScript_AbilityPopUp
printstring STRINGID_PKMNCOPIEDSTATCHANGES
waitmessage B_WAIT_TIME_LONG
- end3
+ return
BattleScript_ZeroToHeroActivates::
pause B_WAIT_TIME_SHORT
call BattleScript_AbilityPopUpScripting
printstring STRINGID_ZEROTOHEROTRANSFORMATION
waitmessage B_WAIT_TIME_LONG
- end3
+ return
BattleScript_CommanderActivates::
pause B_WAIT_TIME_SHORT
@@ -6934,7 +6348,7 @@ BattleScript_CommanderSpeedIncrease:
waitmessage B_WAIT_TIME_LONG
BattleScript_CommanderEnd:
restoreattacker
- end3
+ return
BattleScript_HospitalityActivates::
pause B_WAIT_TIME_SHORT
@@ -6944,7 +6358,7 @@ BattleScript_HospitalityActivates::
playanimation BS_EFFECT_BATTLER, B_ANIM_SIMPLE_HEAL
healthbarupdate BS_EFFECT_BATTLER, PASSIVE_HP_UPDATE
datahpupdate BS_EFFECT_BATTLER, PASSIVE_HP_UPDATE
- end3
+ return
BattleScript_AttackWeakenedByStrongWinds::
pause B_WAIT_TIME_SHORT
@@ -6957,34 +6371,17 @@ BattleScript_MimicryActivates::
call BattleScript_AbilityPopUp
printstring STRINGID_BATTLERTYPECHANGEDTO
waitmessage B_WAIT_TIME_SHORT
- end3
-
-BattleScript_SnowWarningActivatesHail::
- pause B_WAIT_TIME_SHORT
- call BattleScript_AbilityPopUp
- printstring STRINGID_SNOWWARNINGHAIL
- waitstate
- playanimation BS_BATTLER_0, B_ANIM_HAIL_CONTINUES
- call BattleScript_ActivateWeatherAbilities
- end3
-
-BattleScript_SnowWarningActivatesSnow::
- pause B_WAIT_TIME_SHORT
- call BattleScript_AbilityPopUp
- printstring STRINGID_SNOWWARNINGSNOW
- waitstate
- playanimation BS_BATTLER_0, B_ANIM_SNOW_CONTINUES
- call BattleScript_ActivateWeatherAbilities
- end3
+ return
BattleScript_ActivateTerrainEffects:
saveattacker
savetarget
tryboosterenergy ON_TERRAIN
- resetterrainabilityflags
+ resetterrainabilityflags
setbyte gBattlerAttacker, 0
+ sortbattlers
BattleScript_ActivateTerrainSeed:
- copyarraywithindex gBattlerTarget, gBattlerByTurnOrder, gBattlerAttacker, 1
+ copyarraywithindex gBattlerTarget, gBattlersBySpeed, gBattlerAttacker, 1
tryterrainseed BS_TARGET, BattleScript_ActivateTerrainAbility
removeitem BS_TARGET
BattleScript_ActivateTerrainAbility:
@@ -7002,7 +6399,7 @@ BattleScript_ElectricSurgeActivates::
waitmessage B_WAIT_TIME_LONG
playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG
call BattleScript_ActivateTerrainEffects
- end3
+ return
BattleScript_MistySurgeActivates::
pause B_WAIT_TIME_SHORT
@@ -7011,7 +6408,7 @@ BattleScript_MistySurgeActivates::
waitmessage B_WAIT_TIME_LONG
playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG
call BattleScript_ActivateTerrainEffects
- end3
+ return
BattleScript_GrassySurgeActivates::
pause B_WAIT_TIME_SHORT
@@ -7020,7 +6417,7 @@ BattleScript_GrassySurgeActivates::
waitmessage B_WAIT_TIME_LONG
playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG
call BattleScript_ActivateTerrainEffects
- end3
+ return
BattleScript_PsychicSurgeActivates::
pause B_WAIT_TIME_SHORT
@@ -7029,7 +6426,7 @@ BattleScript_PsychicSurgeActivates::
waitmessage B_WAIT_TIME_LONG
playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG
call BattleScript_ActivateTerrainEffects
- end3
+ return
BattleScript_BadDreamsActivates::
setbyte gBattlerTarget, 0
@@ -7091,42 +6488,35 @@ BattleScript_DampStopsExplosion::
BattleScript_MoveHPDrain::
pause B_WAIT_TIME_SHORT
call BattleScript_AbilityPopUp
- healthbarupdate BS_TARGET, PASSIVE_HP_UPDATE
- datahpupdate BS_TARGET, PASSIVE_HP_UPDATE
+ healthbarupdate BS_SCRIPTING, PASSIVE_HP_UPDATE
+ datahpupdate BS_SCRIPTING, PASSIVE_HP_UPDATE
printstring STRINGID_PKMNRESTOREDHPUSING
waitmessage B_WAIT_TIME_LONG
- setmoveresultflags MOVE_RESULT_DOESNT_AFFECT_FOE
- goto BattleScript_MoveEnd
+ return
BattleScript_MoveStatDrain::
pause B_WAIT_TIME_SHORT
call BattleScript_AbilityPopUp
- statbuffchange BS_TARGET, STAT_CHANGE_ALLOW_PTR, BattleScript_MoveStatDrain_Cont
-.if B_ABSORBING_ABILITY_STRING >= GEN_5
- printfromtable gStatUpStringIds
+ statbuffchange BS_SCRIPTING, STAT_CHANGE_ALLOW_PTR, BattleScript_MoveStatDrain_Cont
+ printstring STRINGID_SCRIPTINGSTATROSE
waitmessage B_WAIT_TIME_LONG
-.else
- printstring STRINGID_TARGETABILITYSTATRAISE
- waitmessage B_WAIT_TIME_LONG
-.endif
BattleScript_MoveStatDrain_Cont:
clearsemiinvulnerablebit
- goto BattleScript_MoveEnd
+ return
BattleScript_MonMadeMoveUseless::
pause B_WAIT_TIME_SHORT
call BattleScript_AbilityPopUp
printstring STRINGID_PKMNSXMADEYUSELESS
waitmessage B_WAIT_TIME_LONG
- setmoveresultflags MOVE_RESULT_DOESNT_AFFECT_FOE
- goto BattleScript_MoveEnd
+ return
BattleScript_FlashFireBoost::
pause B_WAIT_TIME_SHORT
call BattleScript_AbilityPopUp
printfromtable gFlashFireStringIds
waitmessage B_WAIT_TIME_LONG
- goto BattleScript_MoveEnd
+ return
BattleScript_AbilityPreventsPhasingOut::
call BattleScript_AbilityPreventsPhasingOutRet
@@ -7179,8 +6569,7 @@ BattleScript_SoundproofProtected::
call BattleScript_AbilityPopUp
printstring STRINGID_PKMNSXBLOCKSY
waitmessage B_WAIT_TIME_LONG
- setmoveresultflags MOVE_RESULT_DOESNT_AFFECT_FOE
- goto BattleScript_MoveEnd
+ return
BattleScript_IceFaceNullsDamage::
call BattleScript_TargetFormChangeWithString
@@ -7197,8 +6586,7 @@ BattleScript_MoveUsedPsychicTerrainPrevents::
pause B_WAIT_TIME_SHORT
printstring STRINGID_PSYCHICTERRAINPREVENTS
waitmessage B_WAIT_TIME_LONG
- setmoveresultflags MOVE_RESULT_NO_EFFECT
- goto BattleScript_MoveEnd
+ return
BattleScript_GrassyTerrainHeals::
printstring STRINGID_GRASSYTERRAINHEALS
@@ -7223,6 +6611,7 @@ BattleScript_StickyHoldActivates::
BattleScript_StickyHoldActivatesRet::
pause B_WAIT_TIME_SHORT
call BattleScript_AbilityPopUp
+ copybyte sBATTLER, gBattlerAbility
printstring STRINGID_PKMNSXMADEYINEFFECTIVE
waitmessage B_WAIT_TIME_LONG
return
@@ -7310,7 +6699,7 @@ BattleScript_BattlerAbilityStatRaiseOnSwitchIn::
printstring STRINGID_SCRIPTINGABILITYSTATRAISE
waitmessage B_WAIT_TIME_LONG
BattleScript_BattlerAbilityStatRaiseOnSwitchInRet:
- end3
+ return
BattleScript_ScriptingAbilityStatRaise::
copybyte gBattlerAbility, sBATTLER
@@ -7389,7 +6778,7 @@ BattleScript_FellStingerRaisesAtkEnd:
BattleScript_AttackerAbilityStatRaiseEnd3::
call BattleScript_AttackerAbilityStatRaise
restoreattacker
- end3
+ return
BattleScript_AttackerAbilityStatRaiseEnd2::
call BattleScript_AttackerAbilityStatRaise
@@ -7397,12 +6786,6 @@ BattleScript_AttackerAbilityStatRaiseEnd2::
end2
BattleScript_SwitchInAbilityMsg::
- call BattleScript_AbilityPopUp
- printfromtable gSwitchInAbilityStringIds
- waitmessage B_WAIT_TIME_LONG
- end3
-
-BattleScript_SwitchInAbilityMsgRet::
call BattleScript_AbilityPopUp
printfromtable gSwitchInAbilityStringIds
waitmessage B_WAIT_TIME_LONG
@@ -7418,7 +6801,7 @@ BattleScript_ActivateAsOne::
call BattleScript_AbilityPopUp
printfromtable gSwitchInAbilityStringIds
waitmessage B_WAIT_TIME_LONG
- end3
+ return
BattleScript_FriskMsgWithPopup::
copybyte gBattlerAbility, gBattlerAttacker
@@ -7435,7 +6818,7 @@ BattleScript_FriskActivates::
tryfriskmessage
restoreattacker
restoretarget
- end3
+ return
BattleScript_ImposterActivates::
call BattleScript_AbilityPopUp
@@ -7446,7 +6829,7 @@ BattleScript_ImposterActivates::
waitmessage B_WAIT_TIME_LONG
restoreattacker
restoretarget
- end3
+ return
BattleScript_HurtAttacker:
healthbarupdate BS_ATTACKER, PASSIVE_HP_UPDATE
@@ -7527,10 +6910,9 @@ BattleScript_BattleBondActivatesOnMoveEndAttacker::
call BattleScript_AbilityPopUp
printstring STRINGID_ATTACKERBECAMEFULLYCHARGED
handleformchange BS_ATTACKER, 0
- handleformchange BS_ATTACKER, 1
playanimation BS_ATTACKER, B_ANIM_FORM_CHANGE
waitanimation
- handleformchange BS_ATTACKER, 2
+ handleformchange BS_ATTACKER, 1
printstring STRINGID_ATTACKERBECAMEASHSPECIES
return
@@ -7580,13 +6962,6 @@ BattleScript_AbilityCuredStatus::
updatestatusicon BS_SCRIPTING
return
-BattleScript_AbilityCuredStatusEnd3::
- call BattleScript_AbilityPopUp
- printstring STRINGID_PKMNSXCUREDITSYPROBLEM
- waitmessage B_WAIT_TIME_LONG
- updatestatusicon BS_SCRIPTING
- end3
-
BattleScript_BattlerShookOffTaunt::
call BattleScript_AbilityPopUp
printstring STRINGID_PKMNSHOOKOFFTHETAUNT
@@ -7644,10 +7019,6 @@ BattleScript_SubstituteFade::
printstring STRINGID_PKMNSUBSTITUTEFADED
return
-BattleScript_BerryCureStatusEnd2::
- call BattleScript_BerryCureStatusRet
- end2
-
BattleScript_BerryCureStatusRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printfromtable CureStatusBerryEffectStringID
@@ -7659,7 +7030,6 @@ BattleScript_BerryCureStatusRet::
BattleScript_GemActivates::
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
waitanimation
- setlastuseditem BS_ATTACKER
printstring STRINGID_GEMACTIVATES
waitmessage B_WAIT_TIME_LONG
removeitem BS_ATTACKER
@@ -7668,16 +7038,11 @@ BattleScript_GemActivates::
BattleScript_BerryReduceDmg::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
waitanimation
- setlastuseditem BS_SCRIPTING
printstring STRINGID_BERRYDMGREDUCES
waitmessage B_WAIT_TIME_LONG
removeitem BS_SCRIPTING
return
-BattleScript_BerryCureConfusionEnd2::
- call BattleScript_BerryCureConfusionRet
- end2
-
BattleScript_BerryCureConfusionRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMSNAPPEDOUT
@@ -7708,7 +7073,7 @@ BattleScript_WhiteHerbRet::
removeitem BS_SCRIPTING
return
-BattleScript_ItemHealHP_RemoveItemRet::
+BattleScript_ItemHealHP_RemoveItem::
jumpifability BS_SCRIPTING, ABILITY_RIPEN, BattleScript_ItemHealHP_RemoveItemRet_AbilityPopUp
goto BattleScript_ItemHealHP_RemoveItemRet_Anim
BattleScript_ItemHealHP_RemoveItemRet_AbilityPopUp:
@@ -7722,21 +7087,7 @@ BattleScript_ItemHealHP_RemoveItemRet_Anim:
removeitem BS_SCRIPTING
return
-BattleScript_ItemHealHP_RemoveItemEnd2::
- jumpifability BS_ATTACKER, ABILITY_RIPEN, BattleScript_ItemHealHP_RemoveItemEnd2_AbilityPopUp
- goto BattleScript_ItemHealHP_RemoveItemEnd2_Anim
-BattleScript_ItemHealHP_RemoveItemEnd2_AbilityPopUp:
- call BattleScript_AbilityPopUpScripting
-BattleScript_ItemHealHP_RemoveItemEnd2_Anim:
- playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
- printstring STRINGID_PKMNSITEMRESTOREDHEALTH
- waitmessage B_WAIT_TIME_LONG
- healthbarupdate BS_ATTACKER, PASSIVE_HP_UPDATE
- datahpupdate BS_ATTACKER, PASSIVE_HP_UPDATE
- removeitem BS_ATTACKER
- end2
-
-BattleScript_BerryPPHealRet::
+BattleScript_BerryPPHeal::
jumpifability BS_SCRIPTING, ABILITY_RIPEN, BattleScript_BerryPPHeal_AbilityPopup
goto BattleScript_BerryPPHeal_Anim
BattleScript_BerryPPHeal_AbilityPopup:
@@ -7748,19 +7099,10 @@ BattleScript_BerryPPHeal_Anim:
removeitem BS_SCRIPTING
return
-BattleScript_BerryPPHealEnd2::
- call BattleScript_BerryPPHealRet
- end2
-
BattleScript_ItemHealHP_End2::
call BattleScript_ItemHealHP_Ret
end2
-BattleScript_AirBalloonMsgIn::
- printstring STRINGID_AIRBALLOONFLOAT
- waitmessage B_WAIT_TIME_LONG
- end3
-
BattleScript_AirBalloonMsgInRet::
printstring STRINGID_AIRBALLOONFLOAT
waitmessage B_WAIT_TIME_LONG
@@ -7835,22 +7177,7 @@ BattleScript_HangedOnMsg::
BattleScript_HangedOnMsgRet:
return
-BattleScript_BerryConfuseHealEnd2::
- jumpifability BS_SCRIPTING, ABILITY_RIPEN, BattleScript_BerryConfuseHealEnd2_AbilityPopup
- goto BattleScript_BerryConfuseHealEnd2_Anim
-BattleScript_BerryConfuseHealEnd2_AbilityPopup:
- call BattleScript_AbilityPopUp
-BattleScript_BerryConfuseHealEnd2_Anim:
- playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
- printstring STRINGID_PKMNSITEMRESTOREDHEALTH
- waitmessage B_WAIT_TIME_LONG
- healthbarupdate BS_SCRIPTING, PASSIVE_HP_UPDATE
- datahpupdate BS_SCRIPTING, PASSIVE_HP_UPDATE
- seteffectprimary BS_SCRIPTING, BS_SCRIPTING, MOVE_EFFECT_CONFUSION
- removeitem BS_SCRIPTING
- end2
-
-BattleScript_BerryConfuseHealRet::
+BattleScript_BerryConfuseHeal::
jumpifability BS_SCRIPTING, ABILITY_RIPEN, BattleScript_BerryConfuseHealRet_AbilityPopup
goto BattleScript_BerryConfuseHealRet_Anim
BattleScript_BerryConfuseHealRet_AbilityPopup:
@@ -7865,10 +7192,6 @@ BattleScript_BerryConfuseHealRet_Anim:
removeitem BS_SCRIPTING
return
-BattleScript_ConsumableStatRaiseEnd2::
- call BattleScript_ConsumableStatRaiseRet
- end2
-
BattleScript_ConsumableStatRaiseRet::
jumpifnotberry BS_SCRIPTING, BattleScript_ConsumableStatRaiseRet_Anim
jumpifability BS_SCRIPTING, ABILITY_RIPEN, BattleScript_ConsumableStatRaiseRet_AbilityPopup
@@ -7888,17 +7211,13 @@ BattleScript_ConsumableStatRaiseRet_Anim:
BattleScript_ConsumableStatRaiseRet_End:
return
-BattleScript_BerryFocusEnergyRet::
+BattleScript_BerryFocusEnergy::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNUSEDXTOGETPUMPED
waitmessage B_WAIT_TIME_LONG
removeitem BS_SCRIPTING
return
-BattleScript_BerryFocusEnergyEnd2::
- call BattleScript_BerryFocusEnergyRet
- end2
-
BattleScript_ActionSelectionItemsCantBeUsed::
printselectionstring STRINGID_ITEMSCANTBEUSEDNOW
endselectionscript
@@ -7971,6 +7290,7 @@ BattleScript_ArenaDoJudgment::
erasearenareftextbox
printstring STRINGID_DEFEATEDOPPONENTBYREFEREE
waitmessage B_WAIT_TIME_LONG
+ undodynamax BS_OPPONENT1
playfaintcry BS_OPPONENT1
waitcry
dofaintanimation BS_OPPONENT1
@@ -7986,6 +7306,7 @@ BattleScript_ArenaJudgmentPlayerLoses:
erasearenareftextbox
printstring STRINGID_LOSTTOOPPONENTBYREFEREE
waitmessage B_WAIT_TIME_LONG
+ undodynamax BS_PLAYER1
playfaintcry BS_PLAYER1
waitcry
dofaintanimation BS_PLAYER1
@@ -8002,11 +7323,13 @@ BattleScript_ArenaJudgmentDraw:
printstring STRINGID_TIEDOPPONENTBYREFEREE
waitmessage B_WAIT_TIME_LONG
arenabothmonslost
+ undodynamax BS_PLAYER1
playfaintcry BS_PLAYER1
waitcry
dofaintanimation BS_PLAYER1
cleareffectsonfaint BS_PLAYER1
waitanimation
+ undodynamax BS_OPPONENT1
playfaintcry BS_OPPONENT1
waitcry
dofaintanimation BS_OPPONENT1
@@ -8069,10 +7392,6 @@ BattleScript_OpportunistCopyStatChangeEnd:
setbyte sSTAT_ANIM_PLAYED, FALSE
return
-BattleScript_OpportunistCopyStatChangeEnd3::
- call BattleScript_OpportunistCopyStatChange
- end3
-
BattleScript_TotemVar::
call BattleScript_TotemVar_Ret
end2
@@ -8093,14 +7412,14 @@ BattleScript_AnnounceAirLockCloudNine::
printstring STRINGID_AIRLOCKACTIVATES
waitmessage B_WAIT_TIME_LONG
call BattleScript_ActivateWeatherAbilities
- end3
+ return
BattleScript_ActivateTeraformZero::
call BattleScript_AbilityPopUp
waitmessage B_WAIT_TIME_LONG
jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_ANY, BattleScript_ActivateTeraformZero_RemoveWeather
jumpifhalfword CMP_COMMON_BITS, gFieldStatuses, STATUS_FIELD_TERRAIN_ANY, BattleScript_ActivateTeraformZero_RemoveTerrain
- goto BattleScript_ActivateTeraformZero_End
+ goto BattleScript_ActivateTeraformZero_Ret
BattleScript_ActivateTeraformZero_RemoveWeather:
removeweather
printfromtable gWeatherEndsStringIds
@@ -8118,16 +7437,17 @@ BattleScript_ActivateTeraformZeroEffects:
tryboosterenergy ON_ANY
resetterrainabilityflags
setbyte gBattlerAttacker, 0
+ sortbattlers
BattleScript_ActivateTeraformZeroLoop:
- copyarraywithindex gBattlerTarget, gBattlerByTurnOrder, gBattlerAttacker, 1
+ copyarraywithindex gBattlerTarget, gBattlersBySpeed, gBattlerAttacker, 1
activateterrainchangeabilities BS_TARGET
activateweatherchangeabilities BS_TARGET
addbyte gBattlerAttacker, 1
jumpifbytenotequal gBattlerAttacker, gBattlersCount, BattleScript_ActivateTeraformZeroLoop
restoreattacker
restoretarget
-BattleScript_ActivateTeraformZero_End:
- end3
+BattleScript_ActivateTeraformZero_Ret:
+ return
BattleScript_QuickClawActivation::
flushtextbox
@@ -8153,19 +7473,7 @@ BattleScript_CustapBerryActivation::
removeitem BS_ATTACKER
end2
-BattleScript_MicleBerryActivateEnd2::
- jumpifability BS_ATTACKER, ABILITY_RIPEN, BattleScript_MicleBerryActivateEnd2_Ripen
- goto BattleScript_MicleBerryActivateEnd2_Anim
-BattleScript_MicleBerryActivateEnd2_Ripen:
- call BattleScript_AbilityPopUp
-BattleScript_MicleBerryActivateEnd2_Anim:
- playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
- printstring STRINGID_MICLEBERRYACTIVATES
- waitmessage B_WAIT_TIME_LONG
- removeitem BS_ATTACKER
- end2
-
-BattleScript_MicleBerryActivateRet::
+BattleScript_MicleBerryActivate::
jumpifability BS_SCRIPTING, ABILITY_RIPEN, BattleScript_MicleBerryActivateRet_Ripen
goto BattleScript_MicleBerryActivateRet_Anim
BattleScript_MicleBerryActivateRet_Ripen:
@@ -8333,22 +7641,23 @@ BattleScript_RedCardActivates::
setbyte sSWITCH_CASE, B_SWITCH_RED_CARD
forcerandomswitch BattleScript_RedCardEnd
@ changes the current battle script. the rest happens in BattleScript_RoarSuccessSwitch_Ret, if switch is successful
-BattleScript_RedCardEnd:
- return
BattleScript_RedCardIngrain:
printstring STRINGID_PKMNANCHOREDITSELF
BattleScript_RedCardIngrainContinue:
waitmessage B_WAIT_TIME_LONG
removeitem BS_SCRIPTING
- restoretarget
- restoreattacker
- return
+ goto BattleScript_RedCardEnd
BattleScript_RedCardSuctionCups:
- printstring STRINGID_PKMNANCHORSITSELFWITH
- goto BattleScript_RedCardIngrainContinue
+ printstring STRINGID_PKMNANCHORSITSELFWITH
+ goto BattleScript_RedCardIngrainContinue
BattleScript_RedCardDynamaxed:
printstring STRINGID_MOVEBLOCKEDBYDYNAMAX
- goto BattleScript_RedCardIngrainContinue
+ goto BattleScript_RedCardIngrainContinue
+
+BattleScript_RedCardEnd:
+ restoretarget
+ restoreattacker
+ return
BattleScript_EjectButtonActivates::
makevisible BS_ATTACKER
@@ -8374,6 +7683,7 @@ BattleScript_EjectButtonActivates::
switchinanim BS_SCRIPTING, FALSE, TRUE
waitstate
switchineffects BS_SCRIPTING
+ switchinevents
BattleScript_EjectButtonEnd:
return
@@ -8384,10 +7694,6 @@ BattleScript_EjectPackActivate_End2::
call BattleScript_EjectPackActivate_Ret
end2
-BattleScript_EjectPackActivate_End3::
- call BattleScript_EjectPackActivate_Ret
- end3
-
BattleScript_EjectPackActivates::
jumpifcantswitch BS_SCRIPTING, BattleScript_EjectButtonEnd
goto BattleScript_EjectPackActivate_Ret
@@ -8399,28 +7705,18 @@ BattleScript_DoesntAffectTargetAtkString::
setmoveresultflags MOVE_RESULT_NO_EFFECT
goto BattleScript_MoveEnd
-BattleScript_WellBakedBodyActivates::
+BattleScript_DoesntAffectScripting::
pause B_WAIT_TIME_SHORT
- call BattleScript_AbilityPopUpTarget
- setmoveresultflags MOVE_RESULT_NO_EFFECT
- modifybattlerstatstage BS_TARGET, STAT_DEF, INCREASE, 1, BattleScript_WellBakedBodyEnd, ANIM_ON
-BattleScript_WellBakedBodyEnd:
- goto BattleScript_MoveEnd
-
-BattleScript_WindRiderActivatesMoveEnd::
- pause B_WAIT_TIME_SHORT
- call BattleScript_AbilityPopUpTarget
- setmoveresultflags MOVE_RESULT_NO_EFFECT
- modifybattlerstatstage BS_TARGET, STAT_ATK, INCREASE, 1, BattleScript_WindRiderActivatesMoveEnd_End, ANIM_ON
-BattleScript_WindRiderActivatesMoveEnd_End:
- goto BattleScript_MoveEnd
+ printstring STRINGID_SCR_ITDOESNTAFFECT
+ waitmessage B_WAIT_TIME_LONG
+ return
BattleScript_GoodAsGoldActivates::
- call BattleScript_AbilityPopUpTarget
+ call BattleScript_AbilityPopUp
pause B_WAIT_TIME_SHORT
- printstring STRINGID_ITDOESNTAFFECT
+ printstring STRINGID_SCR_ITDOESNTAFFECT
waitmessage B_WAIT_TIME_MED
- goto BattleScript_MoveEnd
+ return
BattleScript_PastelVeilActivates::
setbyte gBattleCommunication, 0
@@ -8445,7 +7741,7 @@ BattleScript_PastelVeilLoopIncrement:
goto BattleScript_PastelVeilEnd
BattleScript_PastelVeilEnd:
restoretarget
- end3
+ return
BattleScript_NeutralizingGasExits::
saveattacker
@@ -8454,8 +7750,9 @@ BattleScript_NeutralizingGasExits::
printstring STRINGID_NEUTRALIZINGGASOVER
waitmessage B_WAIT_TIME_LONG
setbyte gBattlerAttacker, 0
+ sortbattlers
BattleScript_NeutralizingGasExitsLoop:
- copyarraywithindex gBattlerTarget, gBattlerByTurnOrder, gBattlerAttacker, 1
+ copyarraywithindex gBattlerTarget, gBattlersBySpeed, gBattlerAttacker, 1
jumpifabilitycantbereactivated BS_TARGET, BattleScript_NeutralizingGasExitsLoopIncrement
saveattacker
switchinabilities BS_TARGET
@@ -8476,6 +7773,7 @@ BattleScript_SymbiosisActivates::
call BattleScript_AbilityPopUp
printstring STRINGID_SYMBIOSISITEMPASS
waitmessage B_WAIT_TIME_LONG
+ tryactivateabilitywithabilityshield BS_EFFECT_BATTLER, FALSE
return
BattleScript_TargetAbilityStatRaiseRet::
@@ -8488,12 +7786,6 @@ BattleScript_TargetAbilityStatRaiseRet_End:
restoreattacker
return
-@@@ MAX MOVES @@@
-BattleScript_EffectMaxMove::
- attackcanceler
- accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
- goto BattleScript_HitFromCritCalc
-
BattleScript_EffectRaiseStatAllies::
savetarget
copybyte gBattlerTarget, gBattlerAttacker
@@ -8787,16 +8079,14 @@ BattleScript_DynamaxEnds::
BattleScript_DynamaxEnds_Ret::
flushtextbox
- setspriteignore0hp TRUE
updatedynamax
playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE
waitanimation
- setspriteignore0hp FALSE
pause B_WAIT_TIME_SHORT
return
BattleScript_MoveBlockedByDynamax::
- accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ accuracycheck BattleScript_MoveMissedPause
pause B_WAIT_TIME_SHORT
printstring STRINGID_MOVEBLOCKEDBYDYNAMAX
waitmessage B_WAIT_TIME_LONG
@@ -8808,6 +8098,12 @@ BattleScript_PokemonCantUseTheMove::
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
+BattleScript_TargetAvoidsAttack::
+ pause B_WAIT_TIME_SHORT
+ printfromtable gMissStringIds
+ waitmessage B_WAIT_TIME_LONG
+ return
+
BattleScript_CouldntFullyProtect::
printstring STRINGID_COULDNTFULLYPROTECT
waitmessage B_WAIT_TIME_LONG
@@ -8838,14 +8134,6 @@ BattleScript_BerserkGeneRet_End:
removeitem BS_SCRIPTING
return
-BattleScript_BerserkGeneRetEnd2::
- call BattleScript_BerserkGeneRet
- end2
-
-BattleScript_BoosterEnergyEnd2::
- call BattleScript_BoosterEnergyRet
- end2
-
BattleScript_BoosterEnergyRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, sB_ANIM_ARG1
call BattleScript_AbilityPopUpScripting
@@ -8856,12 +8144,6 @@ BattleScript_BoosterEnergyRet::
removeitem BS_SCRIPTING
return
-BattleScript_EffectSnow::
- attackcanceler
- call BattleScript_CheckPrimalWeather
- setfieldweather BATTLE_WEATHER_SNOW
- goto BattleScript_MoveWeatherChange
-
BattleScript_SleepClauseBlocked::
pause B_WAIT_TIME_SHORT
setmoveresultflags MOVE_RESULT_FAILED
@@ -8948,3 +8230,24 @@ BattleScript_SwapToSubstituteContinue:
waitanimation
BattleScript_SwapToSubstituteReturn:
return
+
+BattleScript_TooScaredToMove::
+ printstring STRINGID_MONTOOSCAREDTOMOVE
+ waitmessage B_WAIT_TIME_LONG
+ playanimation BS_ATTACKER, B_ANIM_MON_SCARED
+ goto BattleScript_MoveEnd
+
+BattleScript_GhostGetOutGetOut::
+ printstring STRINGID_GHOSTGETOUTGETOUT
+ playanimation BS_ATTACKER, B_ANIM_GHOST_GET_OUT
+ goto BattleScript_MoveEnd
+
+BattleScript_SilphScopeUnveiled::
+ pause B_WAIT_TIME_SHORT
+ printstring STRINGID_SILPHSCOPEUNVEILED
+ waitstate
+ playanimation BS_OPPONENT1, B_ANIM_SILPH_SCOPED
+ pause B_WAIT_TIME_SHORT
+ printstring STRINGID_GHOSTWASMAROWAK
+ waitmessage B_WAIT_TIME_LONG
+ end2
diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s
index 5f7cc23a8cba..4e4a4f667d0c 100755
--- a/data/battle_scripts_2.s
+++ b/data/battle_scripts_2.s
@@ -1,4 +1,5 @@
#include "config/battle.h"
+#include "constants/global.h"
#include "constants/battle.h"
#include "constants/battle_script_commands.h"
#include "constants/battle_anim.h"
@@ -33,6 +34,8 @@ gBattlescriptsForSafariActions::
.4byte BattleScript_ActionGetNear
.4byte BattleScript_ActionThrowPokeblock
.4byte BattleScript_ActionWallyThrow
+ .4byte BattleScript_ActionThrowRock
+ .4byte BattleScript_ActionThrowBait
BattleScript_ItemEnd:
end
@@ -81,6 +84,7 @@ BattleScript_ItemRestoreHP_SendOutRevivedBattler:
switchinanim BS_SCRIPTING, FALSE, FALSE
waitstate
switchineffects BS_SCRIPTING
+ switchinevents
end
BattleScript_ItemCureStatus::
@@ -147,6 +151,7 @@ BattleScript_ItemSetMist::
BattleScript_ItemSetFocusEnergy::
call BattleScript_UseItemMessage
+ itemincreasestat
jumpifvolatile BS_ATTACKER, VOLATILE_DRAGON_CHEER, BattleScript_ButItFailed
jumpifvolatile BS_ATTACKER, VOLATILE_FOCUS_ENERGY, BattleScript_ButItFailed
setfocusenergy BS_ATTACKER
@@ -166,11 +171,12 @@ BattleScript_ItemRestorePP::
BattleScript_ItemIncreaseAllStats::
call BattleScript_UseItemMessage
+ itemincreasestat
call BattleScript_AllStatsUp
end
BattleScript_BallThrow::
- jumpifword CMP_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_WALLY_TUTORIAL, BattleScript_BallThrowByWally
+ jumpifword CMP_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_CATCH_TUTORIAL, BattleScript_BallThrowByWally
printstring STRINGID_PLAYERUSEDITEM
handleballthrow
@@ -246,8 +252,11 @@ BattleScript_RunByUsingItem::
finishturn
BattleScript_ActionWatchesCarefully:
- printstring STRINGID_PKMNWATCHINGCAREFULLY
+ printfromtable gSafariReactionStringIds
waitmessage B_WAIT_TIME_LONG
+#if IS_FRLG
+ playanimation BS_OPPONENT1, B_ANIM_SAFARI_REACTION
+#endif
end2
BattleScript_ActionGetNear:
@@ -299,3 +308,34 @@ BattleScript_TrainerBSlideMsgRet::
BattleScript_TrainerBSlideMsgEnd2::
call BattleScript_TrainerBSlideMsgRet
end2
+
+BattleScript_TrainerPartnerSlideMsgRet::
+ trainerslidein BS_PLAYER2
+ handletrainerslidemsg BS_SCRIPTING, PRINT_SLIDE_MESSAGE
+ waitstate
+ trainerslideout BS_PLAYER2
+ waitstate
+ handletrainerslidemsg BS_SCRIPTING, RESTORE_BATTLER_SLIDE_CONTROL
+ return
+
+BattleScript_TrainerPartnerSlideMsgEnd2::
+ call BattleScript_TrainerPartnerSlideMsgRet
+ end2
+
+BattleScript_GhostBallDodge::
+ waitmessage B_WAIT_TIME_LONG
+ printstring STRINGID_ITDODGEDBALL
+ waitmessage B_WAIT_TIME_LONG
+ finishaction
+
+BattleScript_ActionThrowRock::
+ printstring STRINGID_THREWROCK
+ waitmessage B_WAIT_TIME_LONG
+ playanimation BS_ATTACKER, B_ANIM_ROCK_THROW
+ end2
+
+BattleScript_ActionThrowBait::
+ printstring STRINGID_THREWBAIT
+ waitmessage B_WAIT_TIME_LONG
+ playanimation BS_ATTACKER, B_ANIM_POKEBLOCK_THROW
+ end2
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 73b171c206ea..ae21d4b67cab 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -13,6 +13,7 @@
#include "constants/battle_pike.h"
#include "constants/battle_pyramid.h"
#include "constants/battle_setup.h"
+#include "constants/battle_special.h"
#include "constants/battle_tent.h"
#include "constants/battle_tower.h"
#include "constants/berry.h"
@@ -25,6 +26,7 @@
#include "constants/easy_chat.h"
#include "constants/event_objects.h"
#include "constants/event_object_movement.h"
+#include "constants/fame_checker.h"
#include "constants/field_effects.h"
#include "constants/field_move.h"
#include "constants/field_poison.h"
@@ -46,12 +48,15 @@
#include "constants/metatile_labels.h"
#include "constants/move_relearner.h"
#include "constants/moves.h"
+#include "constants/mystery_gift.h"
#include "constants/party_menu.h"
+#include "constants/pokeball.h"
#include "constants/pokedex.h"
#include "constants/pokemon.h"
#include "constants/rtc.h"
#include "constants/roulette.h"
#include "constants/script_menu.h"
+#include "constants/seagallop.h"
#include "constants/secret_bases.h"
#include "constants/siirtc.h"
#include "constants/songs.h"
@@ -59,7 +64,9 @@
#include "constants/species.h"
#include "constants/trade.h"
#include "constants/trainer_hill.h"
+#include "constants/trainer_tower.h"
#include "constants/trainers.h"
+#include "constants/trainer_card.h"
#include "constants/tv.h"
#include "constants/union_room.h"
#include "constants/vars.h"
@@ -113,8 +120,11 @@ gStdScripts::
.4byte Std_RegisteredInMatchCall @ STD_REGISTER_MATCH_CALL
.4byte Std_MsgboxGetPoints @ MSGBOX_GETPOINTS
.4byte Std_MsgboxPokenav @ MSGBOX_POKENAV
+ .4byte Std_PutItemAway @ STD_PUT_ITEM_AWAY
+ .4byte Std_ReceivedItem @ STD_RECEIVED_ITEM
gStdScripts_End::
+
.include "data/maps/PetalburgCity/scripts.inc"
.include "data/maps/SlateportCity/scripts.inc"
.include "data/maps/MauvilleCity/scripts.inc"
@@ -585,10 +595,460 @@ gStdScripts_End::
.include "data/maps/Route119_House/scripts.inc"
.include "data/maps/Route124_DivingTreasureHuntersHouse/scripts.inc"
+.if IS_FRLG
+
+@ FRLG scripts
+ .include "data/maps/BattleColosseum_2P_Frlg/scripts.inc"
+ .include "data/maps/TradeCenter_Frlg/scripts.inc"
+ .include "data/maps/RecordCorner_Frlg/scripts.inc"
+ .include "data/maps/BattleColosseum_4P_Frlg/scripts.inc"
+ .include "data/maps/UnionRoom_Frlg/scripts.inc"
+ .include "data/maps/ViridianForest_Frlg/scripts.inc"
+ .include "data/maps/MtMoon_1F_Frlg/scripts.inc"
+ .include "data/maps/MtMoon_B1F_Frlg/scripts.inc"
+ .include "data/maps/MtMoon_B2F_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_Exterior_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_1F_Corridor_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_2F_Corridor_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_3F_Corridor_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_B1F_Corridor_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_Deck_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_Kitchen_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_CaptainsOffice_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_1F_Room1_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_1F_Room2_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_1F_Room3_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_1F_Room4_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_1F_Room5_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_1F_Room7_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_2F_Room1_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_2F_Room2_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_2F_Room3_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_2F_Room4_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_2F_Room5_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_2F_Room6_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_B1F_Room1_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_B1F_Room2_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_B1F_Room3_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_B1F_Room4_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_B1F_Room5_Frlg/scripts.inc"
+ .include "data/maps/SSAnne_1F_Room6_Frlg/scripts.inc"
+ .include "data/maps/UndergroundPath_NorthEntrance_Frlg/scripts.inc"
+ .include "data/maps/UndergroundPath_NorthSouthTunnel_Frlg/scripts.inc"
+ .include "data/maps/UndergroundPath_SouthEntrance_Frlg/scripts.inc"
+ .include "data/maps/UndergroundPath_WestEntrance_Frlg/scripts.inc"
+ .include "data/maps/UndergroundPath_EastWestTunnel_Frlg/scripts.inc"
+ .include "data/maps/UndergroundPath_EastEntrance_Frlg/scripts.inc"
+ .include "data/maps/DiglettsCave_NorthEntrance_Frlg/scripts.inc"
+ .include "data/maps/DiglettsCave_B1F_Frlg/scripts.inc"
+ .include "data/maps/DiglettsCave_SouthEntrance_Frlg/scripts.inc"
+ .include "data/maps/VictoryRoad_1F_Frlg/scripts.inc"
+ .include "data/maps/VictoryRoad_2F_Frlg/scripts.inc"
+ .include "data/maps/VictoryRoad_3F_Frlg/scripts.inc"
+ .include "data/maps/RocketHideout_B1F_Frlg/scripts.inc"
+ .include "data/maps/RocketHideout_B2F_Frlg/scripts.inc"
+ .include "data/maps/RocketHideout_B3F_Frlg/scripts.inc"
+ .include "data/maps/RocketHideout_B4F_Frlg/scripts.inc"
+ .include "data/maps/RocketHideout_Elevator_Frlg/scripts.inc"
+ .include "data/maps/SilphCo_1F_Frlg/scripts.inc"
+ .include "data/maps/SilphCo_2F_Frlg/scripts.inc"
+ .include "data/maps/SilphCo_3F_Frlg/scripts.inc"
+ .include "data/maps/SilphCo_4F_Frlg/scripts.inc"
+ .include "data/maps/SilphCo_5F_Frlg/scripts.inc"
+ .include "data/maps/SilphCo_6F_Frlg/scripts.inc"
+ .include "data/maps/SilphCo_7F_Frlg/scripts.inc"
+ .include "data/maps/SilphCo_8F_Frlg/scripts.inc"
+ .include "data/maps/SilphCo_9F_Frlg/scripts.inc"
+ .include "data/maps/SilphCo_10F_Frlg/scripts.inc"
+ .include "data/maps/SilphCo_11F_Frlg/scripts.inc"
+ .include "data/maps/SilphCo_Elevator_Frlg/scripts.inc"
+ .include "data/maps/PokemonMansion_1F_Frlg/scripts.inc"
+ .include "data/maps/PokemonMansion_2F_Frlg/scripts.inc"
+ .include "data/maps/PokemonMansion_3F_Frlg/scripts.inc"
+ .include "data/maps/PokemonMansion_B1F_Frlg/scripts.inc"
+ .include "data/maps/SafariZone_Center_Frlg/scripts.inc"
+ .include "data/maps/SafariZone_East_Frlg/scripts.inc"
+ .include "data/maps/SafariZone_North_Frlg/scripts.inc"
+ .include "data/maps/SafariZone_West_Frlg/scripts.inc"
+ .include "data/maps/SafariZone_Center_RestHouse_Frlg/scripts.inc"
+ .include "data/maps/SafariZone_East_RestHouse_Frlg/scripts.inc"
+ .include "data/maps/SafariZone_North_RestHouse_Frlg/scripts.inc"
+ .include "data/maps/SafariZone_West_RestHouse_Frlg/scripts.inc"
+ .include "data/maps/SafariZone_SecretHouse_Frlg/scripts.inc"
+ .include "data/maps/CeruleanCave_1F_Frlg/scripts.inc"
+ .include "data/maps/CeruleanCave_2F_Frlg/scripts.inc"
+ .include "data/maps/CeruleanCave_B1F_Frlg/scripts.inc"
+ .include "data/maps/PokemonLeague_LoreleisRoom_Frlg/scripts.inc"
+ .include "data/maps/PokemonLeague_BrunosRoom_Frlg/scripts.inc"
+ .include "data/maps/PokemonLeague_AgathasRoom_Frlg/scripts.inc"
+ .include "data/maps/PokemonLeague_LancesRoom_Frlg/scripts.inc"
+ .include "data/maps/PokemonLeague_ChampionsRoom_Frlg/scripts.inc"
+ .include "data/maps/PokemonLeague_HallOfFame_Frlg/scripts.inc"
+ .include "data/maps/RockTunnel_1F_Frlg/scripts.inc"
+ .include "data/maps/RockTunnel_B1F_Frlg/scripts.inc"
+ .include "data/maps/SeafoamIslands_1F_Frlg/scripts.inc"
+ .include "data/maps/SeafoamIslands_B1F_Frlg/scripts.inc"
+ .include "data/maps/SeafoamIslands_B2F_Frlg/scripts.inc"
+ .include "data/maps/SeafoamIslands_B3F_Frlg/scripts.inc"
+ .include "data/maps/SeafoamIslands_B4F_Frlg/scripts.inc"
+ .include "data/maps/PokemonTower_1F_Frlg/scripts.inc"
+ .include "data/maps/PokemonTower_2F_Frlg/scripts.inc"
+ .include "data/maps/PokemonTower_3F_Frlg/scripts.inc"
+ .include "data/maps/PokemonTower_4F_Frlg/scripts.inc"
+ .include "data/maps/PokemonTower_5F_Frlg/scripts.inc"
+ .include "data/maps/PokemonTower_6F_Frlg/scripts.inc"
+ .include "data/maps/PokemonTower_7F_Frlg/scripts.inc"
+ .include "data/maps/PowerPlant_Frlg/scripts.inc"
+ .include "data/maps/MtEmber_RubyPath_B4F_Frlg/scripts.inc"
+ .include "data/maps/MtEmber_Exterior_Frlg/scripts.inc"
+ .include "data/maps/MtEmber_SummitPath_1F_Frlg/scripts.inc"
+ .include "data/maps/MtEmber_SummitPath_2F_Frlg/scripts.inc"
+ .include "data/maps/MtEmber_SummitPath_3F_Frlg/scripts.inc"
+ .include "data/maps/MtEmber_Summit_Frlg/scripts.inc"
+ .include "data/maps/MtEmber_RubyPath_B5F_Frlg/scripts.inc"
+ .include "data/maps/MtEmber_RubyPath_1F_Frlg/scripts.inc"
+ .include "data/maps/MtEmber_RubyPath_B1F_Frlg/scripts.inc"
+ .include "data/maps/MtEmber_RubyPath_B2F_Frlg/scripts.inc"
+ .include "data/maps/MtEmber_RubyPath_B3F_Frlg/scripts.inc"
+ .include "data/maps/MtEmber_RubyPath_B1F_Stairs_Frlg/scripts.inc"
+ .include "data/maps/MtEmber_RubyPath_B2F_Stairs_Frlg/scripts.inc"
+ .include "data/maps/ThreeIsland_BerryForest_Frlg/scripts.inc"
+ .include "data/maps/FourIsland_IcefallCave_Entrance_Frlg/scripts.inc"
+ .include "data/maps/FourIsland_IcefallCave_1F_Frlg/scripts.inc"
+ .include "data/maps/FourIsland_IcefallCave_B1F_Frlg/scripts.inc"
+ .include "data/maps/FourIsland_IcefallCave_Back_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_RocketWarehouse_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_DottedHole_1F_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_DottedHole_B1F_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_DottedHole_B2F_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_DottedHole_B3F_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_DottedHole_B4F_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_DottedHole_SapphireRoom_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_PatternBush_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_AlteringCave_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_Exterior_Frlg/scripts.inc"
+ .include "data/maps/TrainerTower_1F_Frlg/scripts.inc"
+ .include "data/maps/TrainerTower_2F_Frlg/scripts.inc"
+ .include "data/maps/TrainerTower_3F_Frlg/scripts.inc"
+ .include "data/maps/TrainerTower_4F_Frlg/scripts.inc"
+ .include "data/maps/TrainerTower_5F_Frlg/scripts.inc"
+ .include "data/maps/TrainerTower_6F_Frlg/scripts.inc"
+ .include "data/maps/TrainerTower_7F_Frlg/scripts.inc"
+ .include "data/maps/TrainerTower_8F_Frlg/scripts.inc"
+ .include "data/maps/TrainerTower_Roof_Frlg/scripts.inc"
+ .include "data/maps/TrainerTower_Lobby_Frlg/scripts.inc"
+ .include "data/maps/TrainerTower_Elevator_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_LostCave_Entrance_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_LostCave_Room1_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_LostCave_Room2_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_LostCave_Room3_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_LostCave_Room4_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_LostCave_Room5_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_LostCave_Room6_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_LostCave_Room7_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_LostCave_Room8_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_LostCave_Room9_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_LostCave_Room10_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_LostCave_Room11_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_LostCave_Room12_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_LostCave_Room13_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_LostCave_Room14_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_TanobyRuins_MoneanChamber_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_TanobyRuins_LiptooChamber_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_TanobyRuins_WeepthChamber_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_TanobyRuins_DilfordChamber_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_TanobyRuins_ScufibChamber_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_TanobyRuins_RixyChamber_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_TanobyRuins_ViapoisChamber_Frlg/scripts.inc"
+ .include "data/maps/ThreeIsland_DunsparceTunnel_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_SevaultCanyon_TanobyKey_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_1F_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_Summit_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_Base_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_SummitPath_2F_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_SummitPath_3F_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_SummitPath_4F_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_SummitPath_5F_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_BasePath_B1F_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_BasePath_B2F_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_BasePath_B3F_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_BasePath_B4F_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_BasePath_B5F_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_BasePath_B6F_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_BasePath_B7F_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_BasePath_B8F_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_BasePath_B9F_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_BasePath_B10F_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_BasePath_B11F_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_B1F_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_Fork_Frlg/scripts.inc"
+ .include "data/maps/BirthIsland_Exterior_Frlg/scripts.inc"
+ .include "data/maps/OneIsland_KindleRoad_EmberSpa_Frlg/scripts.inc"
+ .include "data/maps/BirthIsland_Harbor_Frlg/scripts.inc"
+ .include "data/maps/NavelRock_Harbor_Frlg/scripts.inc"
+ .include "data/maps/PalletTown_Frlg/scripts.inc"
+ .include "data/maps/ViridianCity_Frlg/scripts.inc"
+ .include "data/maps/PewterCity_Frlg/scripts.inc"
+ .include "data/maps/CeruleanCity_Frlg/scripts.inc"
+ .include "data/maps/LavenderTown_Frlg/scripts.inc"
+ .include "data/maps/VermilionCity_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_Frlg/scripts.inc"
+ .include "data/maps/FuchsiaCity_Frlg/scripts.inc"
+ .include "data/maps/CinnabarIsland_Frlg/scripts.inc"
+ .include "data/maps/IndigoPlateau_Exterior_Frlg/scripts.inc"
+ .include "data/maps/SaffronCity_Frlg/scripts.inc"
+ .include "data/maps/SaffronCity_Connection_Frlg/scripts.inc"
+ .include "data/maps/OneIsland_Frlg/scripts.inc"
+ .include "data/maps/TwoIsland_Frlg/scripts.inc"
+ .include "data/maps/ThreeIsland_Frlg/scripts.inc"
+ .include "data/maps/FourIsland_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_Frlg/scripts.inc"
+ .include "data/maps/Route1_Frlg/scripts.inc"
+ .include "data/maps/Route2_Frlg/scripts.inc"
+ .include "data/maps/Route3_Frlg/scripts.inc"
+ .include "data/maps/Route4_Frlg/scripts.inc"
+ .include "data/maps/Route5_Frlg/scripts.inc"
+ .include "data/maps/Route6_Frlg/scripts.inc"
+ .include "data/maps/Route7_Frlg/scripts.inc"
+ .include "data/maps/Route8_Frlg/scripts.inc"
+ .include "data/maps/Route9_Frlg/scripts.inc"
+ .include "data/maps/Route10_Frlg/scripts.inc"
+ .include "data/maps/Route11_Frlg/scripts.inc"
+ .include "data/maps/Route12_Frlg/scripts.inc"
+ .include "data/maps/Route13_Frlg/scripts.inc"
+ .include "data/maps/Route14_Frlg/scripts.inc"
+ .include "data/maps/Route15_Frlg/scripts.inc"
+ .include "data/maps/Route16_Frlg/scripts.inc"
+ .include "data/maps/Route17_Frlg/scripts.inc"
+ .include "data/maps/Route18_Frlg/scripts.inc"
+ .include "data/maps/Route19_Frlg/scripts.inc"
+ .include "data/maps/Route20_Frlg/scripts.inc"
+ .include "data/maps/Route21_North_Frlg/scripts.inc"
+ .include "data/maps/Route21_South_Frlg/scripts.inc"
+ .include "data/maps/Route22_Frlg/scripts.inc"
+ .include "data/maps/Route23_Frlg/scripts.inc"
+ .include "data/maps/Route24_Frlg/scripts.inc"
+ .include "data/maps/Route25_Frlg/scripts.inc"
+ .include "data/maps/OneIsland_KindleRoad_Frlg/scripts.inc"
+ .include "data/maps/OneIsland_TreasureBeach_Frlg/scripts.inc"
+ .include "data/maps/TwoIsland_CapeBrink_Frlg/scripts.inc"
+ .include "data/maps/ThreeIsland_BondBridge_Frlg/scripts.inc"
+ .include "data/maps/ThreeIsland_Port_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_ResortGorgeous_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_WaterLabyrinth_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_Meadow_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_MemorialPillar_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_OutcastIsland_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_GreenPath_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_WaterPath_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_RuinValley_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_TrainerTower_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_SevaultCanyon_Entrance_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_SevaultCanyon_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_TanobyRuins_Frlg/scripts.inc"
+ .include "data/maps/PalletTown_PlayersHouse_1F_Frlg/scripts.inc"
+ .include "data/maps/PalletTown_PlayersHouse_2F_Frlg/scripts.inc"
+ .include "data/maps/PalletTown_RivalsHouse_Frlg/scripts.inc"
+ .include "data/maps/PalletTown_ProfessorOaksLab_Frlg/scripts.inc"
+ .include "data/maps/ViridianCity_House_Frlg/scripts.inc"
+ .include "data/maps/ViridianCity_Gym_Frlg/scripts.inc"
+ .include "data/maps/ViridianCity_School_Frlg/scripts.inc"
+ .include "data/maps/ViridianCity_Mart_Frlg/scripts.inc"
+ .include "data/maps/ViridianCity_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/ViridianCity_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/PewterCity_Museum_1F_Frlg/scripts.inc"
+ .include "data/maps/PewterCity_Museum_2F_Frlg/scripts.inc"
+ .include "data/maps/PewterCity_Gym_Frlg/scripts.inc"
+ .include "data/maps/PewterCity_Mart_Frlg/scripts.inc"
+ .include "data/maps/PewterCity_House1_Frlg/scripts.inc"
+ .include "data/maps/PewterCity_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/PewterCity_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/PewterCity_House2_Frlg/scripts.inc"
+ .include "data/maps/CeruleanCity_House1_Frlg/scripts.inc"
+ .include "data/maps/CeruleanCity_House2_Frlg/scripts.inc"
+ .include "data/maps/CeruleanCity_House3_Frlg/scripts.inc"
+ .include "data/maps/CeruleanCity_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/CeruleanCity_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/CeruleanCity_Gym_Frlg/scripts.inc"
+ .include "data/maps/CeruleanCity_BikeShop_Frlg/scripts.inc"
+ .include "data/maps/CeruleanCity_Mart_Frlg/scripts.inc"
+ .include "data/maps/CeruleanCity_House4_Frlg/scripts.inc"
+ .include "data/maps/CeruleanCity_House5_Frlg/scripts.inc"
+ .include "data/maps/LavenderTown_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/LavenderTown_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/LavenderTown_VolunteerPokemonHouse_Frlg/scripts.inc"
+ .include "data/maps/LavenderTown_House1_Frlg/scripts.inc"
+ .include "data/maps/LavenderTown_House2_Frlg/scripts.inc"
+ .include "data/maps/LavenderTown_Mart_Frlg/scripts.inc"
+ .include "data/maps/VermilionCity_House1_Frlg/scripts.inc"
+ .include "data/maps/VermilionCity_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/VermilionCity_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/VermilionCity_PokemonFanClub_Frlg/scripts.inc"
+ .include "data/maps/VermilionCity_House2_Frlg/scripts.inc"
+ .include "data/maps/VermilionCity_Mart_Frlg/scripts.inc"
+ .include "data/maps/VermilionCity_Gym_Frlg/scripts.inc"
+ .include "data/maps/VermilionCity_House3_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_DepartmentStore_1F_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_DepartmentStore_2F_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_DepartmentStore_3F_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_DepartmentStore_4F_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_DepartmentStore_5F_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_DepartmentStore_Roof_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_DepartmentStore_Elevator_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_Condominiums_1F_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_Condominiums_2F_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_Condominiums_3F_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_Condominiums_Roof_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_Condominiums_RoofRoom_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_GameCorner_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_GameCorner_PrizeRoom_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_Gym_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_Restaurant_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_House1_Frlg/scripts.inc"
+ .include "data/maps/CeladonCity_Hotel_Frlg/scripts.inc"
+ .include "data/maps/FuchsiaCity_SafariZone_Entrance_Frlg/scripts.inc"
+ .include "data/maps/FuchsiaCity_Mart_Frlg/scripts.inc"
+ .include "data/maps/FuchsiaCity_SafariZone_Office_Frlg/scripts.inc"
+ .include "data/maps/FuchsiaCity_Gym_Frlg/scripts.inc"
+ .include "data/maps/FuchsiaCity_House1_Frlg/scripts.inc"
+ .include "data/maps/FuchsiaCity_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/FuchsiaCity_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/FuchsiaCity_WardensHouse_Frlg/scripts.inc"
+ .include "data/maps/FuchsiaCity_House2_Frlg/scripts.inc"
+ .include "data/maps/FuchsiaCity_House3_Frlg/scripts.inc"
+ .include "data/maps/CinnabarIsland_Gym_Frlg/scripts.inc"
+ .include "data/maps/CinnabarIsland_PokemonLab_Entrance_Frlg/scripts.inc"
+ .include "data/maps/CinnabarIsland_PokemonLab_Lounge_Frlg/scripts.inc"
+ .include "data/maps/CinnabarIsland_PokemonLab_ResearchRoom_Frlg/scripts.inc"
+ .include "data/maps/CinnabarIsland_PokemonLab_ExperimentRoom_Frlg/scripts.inc"
+ .include "data/maps/CinnabarIsland_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/CinnabarIsland_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/CinnabarIsland_Mart_Frlg/scripts.inc"
+ .include "data/maps/IndigoPlateau_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/IndigoPlateau_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/SaffronCity_CopycatsHouse_1F_Frlg/scripts.inc"
+ .include "data/maps/SaffronCity_CopycatsHouse_2F_Frlg/scripts.inc"
+ .include "data/maps/SaffronCity_Dojo_Frlg/scripts.inc"
+ .include "data/maps/SaffronCity_Gym_Frlg/scripts.inc"
+ .include "data/maps/SaffronCity_House_Frlg/scripts.inc"
+ .include "data/maps/SaffronCity_Mart_Frlg/scripts.inc"
+ .include "data/maps/SaffronCity_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/SaffronCity_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/SaffronCity_MrPsychicsHouse_Frlg/scripts.inc"
+ .include "data/maps/SaffronCity_PokemonTrainerFanClub_Frlg/scripts.inc"
+ .include "data/maps/Route2_ViridianForest_SouthEntrance_Frlg/scripts.inc"
+ .include "data/maps/Route2_House_Frlg/scripts.inc"
+ .include "data/maps/Route2_EastBuilding_Frlg/scripts.inc"
+ .include "data/maps/Route2_ViridianForest_NorthEntrance_Frlg/scripts.inc"
+ .include "data/maps/Route4_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/Route4_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/Route5_PokemonDayCare_Frlg/scripts.inc"
+ .include "data/maps/Route5_SouthEntrance_Frlg/scripts.inc"
+ .include "data/maps/Route6_NorthEntrance_Frlg/scripts.inc"
+ .include "data/maps/Route6_UnusedHouse_Frlg/scripts.inc"
+ .include "data/maps/Route7_EastEntrance_Frlg/scripts.inc"
+ .include "data/maps/Route8_WestEntrance_Frlg/scripts.inc"
+ .include "data/maps/Route10_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/Route10_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/Route11_EastEntrance_1F_Frlg/scripts.inc"
+ .include "data/maps/Route11_EastEntrance_2F_Frlg/scripts.inc"
+ .include "data/maps/Route12_NorthEntrance_1F_Frlg/scripts.inc"
+ .include "data/maps/Route12_NorthEntrance_2F_Frlg/scripts.inc"
+ .include "data/maps/Route12_FishingHouse_Frlg/scripts.inc"
+ .include "data/maps/Route15_WestEntrance_1F_Frlg/scripts.inc"
+ .include "data/maps/Route15_WestEntrance_2F_Frlg/scripts.inc"
+ .include "data/maps/Route16_House_Frlg/scripts.inc"
+ .include "data/maps/Route16_NorthEntrance_1F_Frlg/scripts.inc"
+ .include "data/maps/Route16_NorthEntrance_2F_Frlg/scripts.inc"
+ .include "data/maps/Route18_EastEntrance_1F_Frlg/scripts.inc"
+ .include "data/maps/Route18_EastEntrance_2F_Frlg/scripts.inc"
+ .include "data/maps/Route22_NorthEntrance_Frlg/scripts.inc"
+ .include "data/maps/Route25_SeaCottage_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_House_Room1_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_House_Room2_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_Mart_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_Harbor_Frlg/scripts.inc"
+ .include "data/maps/OneIsland_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/OneIsland_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/OneIsland_House1_Frlg/scripts.inc"
+ .include "data/maps/OneIsland_House2_Frlg/scripts.inc"
+ .include "data/maps/OneIsland_Harbor_Frlg/scripts.inc"
+ .include "data/maps/TwoIsland_JoyfulGameCorner_Frlg/scripts.inc"
+ .include "data/maps/TwoIsland_House_Frlg/scripts.inc"
+ .include "data/maps/TwoIsland_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/TwoIsland_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/TwoIsland_Harbor_Frlg/scripts.inc"
+ .include "data/maps/ThreeIsland_House1_Frlg/scripts.inc"
+ .include "data/maps/ThreeIsland_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/ThreeIsland_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/ThreeIsland_Mart_Frlg/scripts.inc"
+ .include "data/maps/ThreeIsland_House2_Frlg/scripts.inc"
+ .include "data/maps/ThreeIsland_House3_Frlg/scripts.inc"
+ .include "data/maps/ThreeIsland_House4_Frlg/scripts.inc"
+ .include "data/maps/ThreeIsland_House5_Frlg/scripts.inc"
+ .include "data/maps/FourIsland_PokemonDayCare_Frlg/scripts.inc"
+ .include "data/maps/FourIsland_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/FourIsland_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/FourIsland_House1_Frlg/scripts.inc"
+ .include "data/maps/FourIsland_LoreleisHouse_Frlg/scripts.inc"
+ .include "data/maps/FourIsland_Harbor_Frlg/scripts.inc"
+ .include "data/maps/FourIsland_House2_Frlg/scripts.inc"
+ .include "data/maps/FourIsland_Mart_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_Harbor_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_House1_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_House2_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_PokemonCenter_1F_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_PokemonCenter_2F_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_Harbor_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_House_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_Mart_Frlg/scripts.inc"
+ .include "data/maps/ThreeIsland_Harbor_Frlg/scripts.inc"
+ .include "data/maps/FiveIsland_ResortGorgeous_House_Frlg/scripts.inc"
+ .include "data/maps/TwoIsland_CapeBrink_House_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_WaterPath_House1_Frlg/scripts.inc"
+ .include "data/maps/SixIsland_WaterPath_House2_Frlg/scripts.inc"
+ .include "data/maps/SevenIsland_SevaultCanyon_House_Frlg/scripts.inc"
+
+ .include "data/scripts/trainer_tower.inc"
+ .include "data/scripts/fame_checker_frlg.inc"
+ .include "data/text/fame_checker_frlg.inc"
+ .include "data/scripts/item_ball_scripts_frlg.inc"
+ .include "data/scripts/silphco_doors.inc"
+ .include "data/scripts/move_tutors_frlg.inc"
+ .include "data/scripts/cable_club_frlg.inc"
+ .include "data/scripts/trainer_card_frlg.inc"
+ .include "data/text/trainer_card_frlg.inc"
+ .include "data/scripts/mystery_event_club.inc"
+ .include "data/scripts/day_care_frlg.inc"
+ .include "data/text/day_care_frlg.inc"
+ .include "data/scripts/seagallop.inc"
+ .include "data/scripts/static_pokemon.inc"
+ .include "data/scripts/aide.inc"
+ .include "data/scripts/pokemon_mansion.inc"
+ .include "data/scripts/pokemon_league.inc"
+ .include "data/scripts/route23.inc"
+ .include "data/text/new_game_intro_frlg.inc"
+ .include "data/scripts/trainers_frlg.inc"
+ .include "data/text/trainers_frlg.inc"
+ .include "data/text/ingame_trade_frlg.inc"
+ .include "data/scripts/flavor_text.inc"
+ .include "data/scripts/pkmn_center_nurse_frlg.inc"
+
+.endif
+
.include "data/scripts/std_msgbox.inc"
.include "data/scripts/trainer_battle.inc"
.include "data/scripts/new_game.inc"
.include "data/scripts/hall_of_fame.inc"
+ .include "data/scripts/hall_of_fame_frlg.inc"
.include "data/scripts/config.inc"
.include "data/scripts/debug.inc"
@@ -750,6 +1210,12 @@ Common_EventScript_BagIsFull::
msgbox gText_TooBadBagIsFull, MSGBOX_DEFAULT
return
+EventScript_BagIsFull::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox gText_TooBadBagIsFull
+ release
+ end
+
Common_EventScript_ShowNoRoomForDecor::
msgbox gText_NoRoomLeftForAnother, MSGBOX_DEFAULT
release
@@ -1052,10 +1518,37 @@ gText_Sudowoodo_Attacked::
gText_LegendaryFlewAway::
.string "The {STR_VAR_1} flew away!$"
+gText_WantWhichFloor::
+ .string "Which floor do you want?$"
+
.include "data/text/pc_transfer.inc"
.include "data/text/questionnaire.inc"
.include "data/text/abnormal_weather.inc"
+EventScript_GetInGameTradeSpeciesInfo::
+ copyvar VAR_0x8005, VAR_0x8008
+ specialvar VAR_0x8009, GetInGameTradeSpeciesInfo
+ return
+
+EventScript_ChooseMonForInGameTrade::
+ special ChoosePartyMon
+ waitstate
+ lock
+ faceplayer
+ return
+
+EventScript_GetInGameTradeSpecies::
+ specialvar VAR_RESULT, GetTradeSpecies
+ return
+
+EventScript_DoInGameTrade::
+ special CreateInGameTradePokemon
+ special DoInGameTradeScene
+ waitstate
+ lock
+ faceplayer
+ return
+
EventScript_SelectWithoutRegisteredItem::
msgbox gText_SelectWithoutRegisteredItem, MSGBOX_SIGN
end
@@ -1065,6 +1558,18 @@ EventScript_SelectWithoutRegisteredItem::
Common_EventScript_NopReturn::
return
+EventScript_SetResultTrue::
+ setvar VAR_RESULT, TRUE
+ return
+
+EventScript_SetResultFalse::
+ setvar VAR_RESULT, FALSE
+ return
+
+EventScript_GetElevatorFloor::
+ special GetElevatorFloor
+ return
+
@ Unused
EventScript_CableClub_SetVarResult1::
setvar VAR_RESULT, 1
@@ -1075,15 +1580,27 @@ EventScript_CableClub_SetVarResult0::
return
Common_EventScript_UnionRoomAttendant::
+#if IS_FRLG
+ call CableClub_EventScript_UnionRoomAttendant_Frlg
+#else
call CableClub_EventScript_UnionRoomAttendant
+#endif
end
Common_EventScript_WirelessClubAttendant::
+#if IS_FRLG
+ call CableClub_EventScript_WirelessClubAttendant_Frlg
+#else
call CableClub_EventScript_WirelessClubAttendant
+#endif
end
Common_EventScript_DirectCornerAttendant::
+#if IS_FRLG
+ call CableClub_EventScript_DirectCornerAttendant_Frlg
+#else
call CableClub_EventScript_DirectCornerAttendant
+#endif
end
Common_EventScript_RemoveStaticPokemon::
@@ -1109,6 +1626,62 @@ EventScript_VsSeekerChargingDone::
releaseall
end
+@ FRLG scripts
+
+EventScript_SetExitingCyclingRoad::
+ lockall
+ clearflag FLAG_SYS_ON_CYCLING_ROAD
+ setvar VAR_MAP_SCENE_ROUTE16, 0
+ releaseall
+ end
+
+EventScript_SetEnteringCyclingRoad::
+ lockall
+ setvar VAR_MAP_SCENE_ROUTE16, 1
+ releaseall
+ end
+
+EventScript_TryDarkenRuins::
+ goto_if_set FLAG_SYS_UNLOCKED_TANOBY_RUINS, Common_EventScript_NopReturn
+ setweather WEATHER_SHADE
+ doweather
+ return
+
+Text_MonFlewAway::
+ .string "The {STR_VAR_1} flew away!$"
+
+@ Call for legendary bird trio
+Text_Gyaoo::
+ .string "Gyaoo!$"
+
+EventScript_BrailleCursorWaitButton::
+ special BrailleCursorToggle
+ waitbuttonpress
+ closebraillemessage
+ playse SE_SELECT
+ setvar VAR_0x8006, 1
+ special BrailleCursorToggle
+ return
+
+EventScript_PalletTown_PlayersHouse_2F_ShutDownPC::
+ setvar VAR_0x8004, PC_LOCATION_PLAYER_HOUSE_FRLG
+ playse SE_PC_OFF
+ special DoPCTurnOffEffect
+ releaseall
+ end
+
+EventScript_PalletTown_PlayersHouse_2F_TurnOnPC::
+ lockall
+ setvar VAR_0x8004, PC_LOCATION_PLAYER_HOUSE_FRLG
+ special DoPCTurnOnEffect
+ playse SE_PC_ON
+ msgbox gText_PlayerHouseBootPC
+ special BedroomPC
+ waitstate
+ releaseall
+ end
+
+
.include "data/scripts/pc_transfer.inc"
.include "data/scripts/questionnaire.inc"
.include "data/scripts/abnormal_weather.inc"
@@ -1136,6 +1709,7 @@ EventScript_VsSeekerChargingDone::
.include "data/scripts/repel.inc"
.include "data/scripts/safari_zone.inc"
.include "data/scripts/roulette.inc"
+ .include "data/scripts/pokedex_rating.inc"
.include "data/text/pokedex_rating.inc"
.include "data/text/lottery_corner.inc"
.include "data/text/event_ticket_1.inc"
@@ -1148,7 +1722,6 @@ EventScript_VsSeekerChargingDone::
.include "data/text/match_call.inc"
.include "data/scripts/apprentice.inc"
.include "data/text/apprentice.inc"
- .include "data/text/battle_dome.inc"
.include "data/scripts/battle_pike.inc"
.include "data/text/blend_master.inc"
.include "data/text/battle_tent.inc"
diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s
index 41bf18da94fe..e50a5db3a385 100644
--- a/data/field_effect_scripts.s
+++ b/data/field_effect_scripts.s
@@ -84,6 +84,9 @@ gFieldEffectScriptPointers::
.4byte gFieldEffectScript_UseRockClimb @ FLDEFF_USE_ROCK_CLIMB
.4byte gFieldEffectScript_RockClimbDust @ FLDEFF_ROCK_CLIMB_DUST
.4byte gFieldEffectScript_ORASDowse @ FLDEFF_ORAS_DOWSE
+ .4byte gFldEffScript_SmileyFaceIcon @ FLDEFF_SMILEY_FACE_ICON
+ .4byte gFieldEffectScript_HallOfFameRecordFrlg @ FLDEFF_HALL_OF_FAME_RECORD_FRLG
+ .4byte gFldEffScript_PhotoFlash @ FLDEFF_PHOTO_FLASH
gFieldEffectScript_ExclamationMarkIcon1::
field_eff_callnative FldEff_ExclamationMarkIcon
@@ -385,8 +388,8 @@ gFieldEffectScript_CaveDust::
field_eff_end
gFieldEffectScript_Defog::
- field_eff_callnative FldEff_Defog
- field_eff_end
+ field_eff_callnative FldEff_Defog
+ field_eff_end
gFieldEffectScript_UseRockClimb:: @ 82DBC3F
field_eff_callnative FldEff_UseRockClimb
@@ -400,3 +403,15 @@ gFieldEffectScript_ORASDowse::
field_eff_callnative FldEff_ORASDowsing
field_eff_end
+gFldEffScript_SmileyFaceIcon::
+ field_eff_callnative FldEff_SmileyFaceIcon
+ field_eff_end
+
+gFieldEffectScript_HallOfFameRecordFrlg::
+ field_eff_loadfadedpal gSpritePalette_PokeballGlow
+ field_eff_loadfadedpal_callnative gSpritePalette_HofMonitor_Frlg, FldEff_HallOfFameRecord
+ field_eff_end
+
+gFldEffScript_PhotoFlash::
+ field_eff_callnative FldEff_PhotoFlash
+ field_eff_end
diff --git a/data/layouts/BattleColosseum_2P_Frlg/border.bin b/data/layouts/BattleColosseum_2P_Frlg/border.bin
new file mode 100644
index 000000000000..efef023e6f15
--- /dev/null
+++ b/data/layouts/BattleColosseum_2P_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/BattleColosseum_2P_Frlg/map.bin b/data/layouts/BattleColosseum_2P_Frlg/map.bin
new file mode 100644
index 000000000000..8616a5f1bf7d
Binary files /dev/null and b/data/layouts/BattleColosseum_2P_Frlg/map.bin differ
diff --git a/data/layouts/BattleColosseum_4P_Frlg/border.bin b/data/layouts/BattleColosseum_4P_Frlg/border.bin
new file mode 100644
index 000000000000..efef023e6f15
--- /dev/null
+++ b/data/layouts/BattleColosseum_4P_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/BattleColosseum_4P_Frlg/map.bin b/data/layouts/BattleColosseum_4P_Frlg/map.bin
new file mode 100644
index 000000000000..c68e13ec359b
Binary files /dev/null and b/data/layouts/BattleColosseum_4P_Frlg/map.bin differ
diff --git a/data/layouts/BirthIsland_Exterior_Frlg/border.bin b/data/layouts/BirthIsland_Exterior_Frlg/border.bin
new file mode 100644
index 000000000000..75f2c916c55e
--- /dev/null
+++ b/data/layouts/BirthIsland_Exterior_Frlg/border.bin
@@ -0,0 +1 @@
+vvvv
\ No newline at end of file
diff --git a/data/layouts/BirthIsland_Exterior_Frlg/map.bin b/data/layouts/BirthIsland_Exterior_Frlg/map.bin
new file mode 100644
index 000000000000..98502708b331
--- /dev/null
+++ b/data/layouts/BirthIsland_Exterior_Frlg/map.bin
@@ -0,0 +1 @@
+vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvfvvvvvvvvvvvvvvvvvvvvvvvvvvvvvnvvvvvvvvvvvvvvvvvvvvvvvvvvv[\]}vvvvvvvvvvvvvvvvvvvvvvvsz`ab|s}vvvvvvvvvvvvvvvvvvvsszscdeu|s}vvvvvvvvvvvvvvvvvssz21310 003141|ss}vvvvvvvvvvvDEvvssz210 00Y300 041|ss}vDEvvvvvvvLMvszs000)3Z3+3 000u|ss}LMvvvvvvvvvsz21310 0)3,323-3+3 003141|ssvvvvvvvvvvszs0 00 01323232333000 0u|s}vvvvvvvvsz21000)3,3232323-3+30 0041|svvvvvvvszss 00 0)3,32323232323-3+300 041|}vvvvvsz2131000132323232323232333 0000u|}vvvszs0000)3,323232323232323-3+300041mu|}vvszs0 093:3:3:3:3:3:3:3:3:3;3 0 0u|}vpssk3100&'00000000000&'0041muuqvtss{||||||||||0||||||||||}uurvts{|||||||||||0|||||||||||}urvt{||||||||||||0||||||||||||}rvxkkkkkkkkkkkk111kkkkkkkkkkkkyvvvvvvvvvvvoss111sssmvvvvvvvvvvvvvvvvvvvvvvv111vvvvvvvvvvvvvvvvvvvvvvvvvvv111vvvvvvvvvvvvvvvvvvvvvvvvvvv222vvvvvvvvvvvvvvvvvvvvvvvvv"3#3vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv !vvvvvvvvvvvvvvvvvvvvvvv$%vvvvvvvvvvvvvvvvvvvvvvv&'vvvvvvvvvvv
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_Condominiums_1F_Frlg/border.bin b/data/layouts/CeladonCity_Condominiums_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeladonCity_Condominiums_1F_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_Condominiums_1F_Frlg/map.bin b/data/layouts/CeladonCity_Condominiums_1F_Frlg/map.bin
new file mode 100644
index 000000000000..d396e11161ad
--- /dev/null
+++ b/data/layouts/CeladonCity_Condominiums_1F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222322222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_Condominiums_2F_Frlg/border.bin b/data/layouts/CeladonCity_Condominiums_2F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeladonCity_Condominiums_2F_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_Condominiums_2F_Frlg/map.bin b/data/layouts/CeladonCity_Condominiums_2F_Frlg/map.bin
new file mode 100644
index 000000000000..8dcec24564de
Binary files /dev/null and b/data/layouts/CeladonCity_Condominiums_2F_Frlg/map.bin differ
diff --git a/data/layouts/CeladonCity_Condominiums_3F_Frlg/border.bin b/data/layouts/CeladonCity_Condominiums_3F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeladonCity_Condominiums_3F_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_Condominiums_3F_Frlg/map.bin b/data/layouts/CeladonCity_Condominiums_3F_Frlg/map.bin
new file mode 100644
index 000000000000..5e44c90c6e02
--- /dev/null
+++ b/data/layouts/CeladonCity_Condominiums_3F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222322222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_Condominiums_RoofRoom_Frlg/border.bin b/data/layouts/CeladonCity_Condominiums_RoofRoom_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeladonCity_Condominiums_RoofRoom_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_Condominiums_RoofRoom_Frlg/map.bin b/data/layouts/CeladonCity_Condominiums_RoofRoom_Frlg/map.bin
new file mode 100644
index 000000000000..a6aaf9a0c11a
--- /dev/null
+++ b/data/layouts/CeladonCity_Condominiums_RoofRoom_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_Condominiums_Roof_Frlg/border.bin b/data/layouts/CeladonCity_Condominiums_Roof_Frlg/border.bin
new file mode 100644
index 000000000000..cbaea0adcef4
--- /dev/null
+++ b/data/layouts/CeladonCity_Condominiums_Roof_Frlg/border.bin
@@ -0,0 +1 @@
+((((
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_Condominiums_Roof_Frlg/map.bin b/data/layouts/CeladonCity_Condominiums_Roof_Frlg/map.bin
new file mode 100644
index 000000000000..8f044c89aa1f
--- /dev/null
+++ b/data/layouts/CeladonCity_Condominiums_Roof_Frlg/map.bin
@@ -0,0 +1 @@
+(((((((((((((( ./ .!33353
73353
"!3336373363"!3333337333@3A3"!3333337333HI"!337333@3A3"!%&&'337333HI"!%&&'337333@3A3"!%&&'337333HI"!%&&'337333@3A3"!0123337333HI"!893:;33733333"!333333733333"!333333733333"!<>=>=>?33333"!B3C33333333333"!JK3333333333") *PQQQQURSTQQQQV#DE#,-$#DE#+#LM#,-$#LM#+####,-$####+
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_DepartmentStore_1F_Frlg/border.bin b/data/layouts/CeladonCity_DepartmentStore_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeladonCity_DepartmentStore_1F_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_DepartmentStore_1F_Frlg/map.bin b/data/layouts/CeladonCity_DepartmentStore_1F_Frlg/map.bin
new file mode 100644
index 000000000000..3c09fa172d32
--- /dev/null
+++ b/data/layouts/CeladonCity_DepartmentStore_1F_Frlg/map.bin
@@ -0,0 +1 @@
+`ahij322222pqr322222e2222222222222222222222222222222222222222222222223222222222332222222223&32222"32222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_DepartmentStore_2F_Frlg/border.bin b/data/layouts/CeladonCity_DepartmentStore_2F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeladonCity_DepartmentStore_2F_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_DepartmentStore_2F_Frlg/map.bin b/data/layouts/CeladonCity_DepartmentStore_2F_Frlg/map.bin
new file mode 100644
index 000000000000..41c334718726
Binary files /dev/null and b/data/layouts/CeladonCity_DepartmentStore_2F_Frlg/map.bin differ
diff --git a/data/layouts/CeladonCity_DepartmentStore_3F_Frlg/border.bin b/data/layouts/CeladonCity_DepartmentStore_3F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeladonCity_DepartmentStore_3F_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_DepartmentStore_3F_Frlg/map.bin b/data/layouts/CeladonCity_DepartmentStore_3F_Frlg/map.bin
new file mode 100644
index 000000000000..1640da24e284
--- /dev/null
+++ b/data/layouts/CeladonCity_DepartmentStore_3F_Frlg/map.bin
@@ -0,0 +1 @@
+`ahij22222klmpqr22222stu222222222222222222222222222222223323322223222222222222222332332222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_DepartmentStore_4F_Frlg/border.bin b/data/layouts/CeladonCity_DepartmentStore_4F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeladonCity_DepartmentStore_4F_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_DepartmentStore_4F_Frlg/map.bin b/data/layouts/CeladonCity_DepartmentStore_4F_Frlg/map.bin
new file mode 100644
index 000000000000..f3f558069cee
Binary files /dev/null and b/data/layouts/CeladonCity_DepartmentStore_4F_Frlg/map.bin differ
diff --git a/data/layouts/CeladonCity_DepartmentStore_5F_Frlg/border.bin b/data/layouts/CeladonCity_DepartmentStore_5F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeladonCity_DepartmentStore_5F_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_DepartmentStore_5F_Frlg/map.bin b/data/layouts/CeladonCity_DepartmentStore_5F_Frlg/map.bin
new file mode 100644
index 000000000000..5374a18eee26
--- /dev/null
+++ b/data/layouts/CeladonCity_DepartmentStore_5F_Frlg/map.bin
@@ -0,0 +1 @@
+`ahij322222k3lm7pqr322222s3tu2222222222222222
22$22222222222322223323322222222222222''2''223323322222222 !2 !23323322()2()2222012012''2''322222222222#
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_DepartmentStore_Elevator_Frlg/border.bin b/data/layouts/CeladonCity_DepartmentStore_Elevator_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeladonCity_DepartmentStore_Elevator_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_DepartmentStore_Elevator_Frlg/map.bin b/data/layouts/CeladonCity_DepartmentStore_Elevator_Frlg/map.bin
new file mode 100644
index 000000000000..42e08c38debb
--- /dev/null
+++ b/data/layouts/CeladonCity_DepartmentStore_Elevator_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_DepartmentStore_Roof_Frlg/border.bin b/data/layouts/CeladonCity_DepartmentStore_Roof_Frlg/border.bin
new file mode 100644
index 000000000000..87ae772ca07a
--- /dev/null
+++ b/data/layouts/CeladonCity_DepartmentStore_Roof_Frlg/border.bin
@@ -0,0 +1 @@
+WWWW
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_DepartmentStore_Roof_Frlg/map.bin b/data/layouts/CeladonCity_DepartmentStore_Roof_Frlg/map.bin
new file mode 100644
index 000000000000..f92a0a330cf1
--- /dev/null
+++ b/data/layouts/CeladonCity_DepartmentStore_Roof_Frlg/map.bin
@@ -0,0 +1 @@
+WWWWWWWWWWWWW.///OW89999999999996777?]@AAAAAAAAA%%%=<>6?QH22222222c---EDF6?YH22*3+3+3,322222222M36?YH2243KL5322222222U36?YH2243ST5322222222N36?YH2223[3\33322222222V3=GYPB3:3:3:3:3:3:3:3:3:3:3:3:3:3:3IJRXAAAAAAAAAAAAAAAAAZC;C;C;C;
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_Frlg/border.bin b/data/layouts/CeladonCity_Frlg/border.bin
new file mode 100644
index 000000000000..a701312cfff9
Binary files /dev/null and b/data/layouts/CeladonCity_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_Frlg/map.bin b/data/layouts/CeladonCity_Frlg/map.bin
new file mode 100644
index 000000000000..45bad7034e6c
Binary files /dev/null and b/data/layouts/CeladonCity_Frlg/map.bin differ
diff --git a/data/layouts/CeladonCity_GameCorner_Frlg/border.bin b/data/layouts/CeladonCity_GameCorner_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeladonCity_GameCorner_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_GameCorner_Frlg/map.bin b/data/layouts/CeladonCity_GameCorner_Frlg/map.bin
new file mode 100644
index 000000000000..00280b8a4ad0
--- /dev/null
+++ b/data/layouts/CeladonCity_GameCorner_Frlg/map.bin
@@ -0,0 +1 @@
+222222322222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_GameCorner_PrizeRoom_Frlg/border.bin b/data/layouts/CeladonCity_GameCorner_PrizeRoom_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeladonCity_GameCorner_PrizeRoom_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_GameCorner_PrizeRoom_Frlg/map.bin b/data/layouts/CeladonCity_GameCorner_PrizeRoom_Frlg/map.bin
new file mode 100644
index 000000000000..475ca451ca82
--- /dev/null
+++ b/data/layouts/CeladonCity_GameCorner_PrizeRoom_Frlg/map.bin
@@ -0,0 +1 @@
+222222322222222222222222222222222222232222222222
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_Gym_Frlg/border.bin b/data/layouts/CeladonCity_Gym_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeladonCity_Gym_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_Gym_Frlg/map.bin b/data/layouts/CeladonCity_Gym_Frlg/map.bin
new file mode 100644
index 000000000000..19338125c165
--- /dev/null
+++ b/data/layouts/CeladonCity_Gym_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222tuv
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_Hotel_Duplicate_Frlg/border.bin b/data/layouts/CeladonCity_Hotel_Duplicate_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeladonCity_Hotel_Duplicate_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_Hotel_Duplicate_Frlg/map.bin b/data/layouts/CeladonCity_Hotel_Duplicate_Frlg/map.bin
new file mode 100644
index 000000000000..4573c1444ecb
--- /dev/null
+++ b/data/layouts/CeladonCity_Hotel_Duplicate_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_Hotel_Frlg/border.bin b/data/layouts/CeladonCity_Hotel_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeladonCity_Hotel_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_Hotel_Frlg/map.bin b/data/layouts/CeladonCity_Hotel_Frlg/map.bin
new file mode 100644
index 000000000000..4573c1444ecb
--- /dev/null
+++ b/data/layouts/CeladonCity_Hotel_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_Restaurant_Duplicate_Frlg/border.bin b/data/layouts/CeladonCity_Restaurant_Duplicate_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeladonCity_Restaurant_Duplicate_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_Restaurant_Duplicate_Frlg/map.bin b/data/layouts/CeladonCity_Restaurant_Duplicate_Frlg/map.bin
new file mode 100644
index 000000000000..a5391187c7c6
--- /dev/null
+++ b/data/layouts/CeladonCity_Restaurant_Duplicate_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/CeladonCity_Restaurant_Frlg/border.bin b/data/layouts/CeladonCity_Restaurant_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeladonCity_Restaurant_Frlg/border.bin differ
diff --git a/data/layouts/CeladonCity_Restaurant_Frlg/map.bin b/data/layouts/CeladonCity_Restaurant_Frlg/map.bin
new file mode 100644
index 000000000000..a5391187c7c6
--- /dev/null
+++ b/data/layouts/CeladonCity_Restaurant_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/CeruleanCave_1F_Frlg/border.bin b/data/layouts/CeruleanCave_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/CeruleanCave_1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/CeruleanCave_1F_Frlg/map.bin b/data/layouts/CeruleanCave_1F_Frlg/map.bin
new file mode 100644
index 000000000000..33a82233782b
Binary files /dev/null and b/data/layouts/CeruleanCave_1F_Frlg/map.bin differ
diff --git a/data/layouts/CeruleanCave_2F_Frlg/border.bin b/data/layouts/CeruleanCave_2F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/CeruleanCave_2F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/CeruleanCave_2F_Frlg/map.bin b/data/layouts/CeruleanCave_2F_Frlg/map.bin
new file mode 100644
index 000000000000..f2b9dcb9c9f0
--- /dev/null
+++ b/data/layouts/CeruleanCave_2F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/CeruleanCave_B1F_Frlg/border.bin b/data/layouts/CeruleanCave_B1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/CeruleanCave_B1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/CeruleanCave_B1F_Frlg/map.bin b/data/layouts/CeruleanCave_B1F_Frlg/map.bin
new file mode 100644
index 000000000000..f423b6e0e6e2
Binary files /dev/null and b/data/layouts/CeruleanCave_B1F_Frlg/map.bin differ
diff --git a/data/layouts/CeruleanCity_BikeShop_Frlg/border.bin b/data/layouts/CeruleanCity_BikeShop_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeruleanCity_BikeShop_Frlg/border.bin differ
diff --git a/data/layouts/CeruleanCity_BikeShop_Frlg/map.bin b/data/layouts/CeruleanCity_BikeShop_Frlg/map.bin
new file mode 100644
index 000000000000..7bfc920825c9
--- /dev/null
+++ b/data/layouts/CeruleanCity_BikeShop_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/CeruleanCity_Frlg/border.bin b/data/layouts/CeruleanCity_Frlg/border.bin
new file mode 100644
index 000000000000..4531975c765e
Binary files /dev/null and b/data/layouts/CeruleanCity_Frlg/border.bin differ
diff --git a/data/layouts/CeruleanCity_Frlg/map.bin b/data/layouts/CeruleanCity_Frlg/map.bin
new file mode 100644
index 000000000000..de72d4e8766f
--- /dev/null
+++ b/data/layouts/CeruleanCity_Frlg/map.bin
@@ -0,0 +1,5 @@
+qq|||||||||||}u*+++,2220 00*qqu|||||||||||}*+++,222*qquu ###########1+++,222 00 0*+qquu*+++++++++++++++,222000*+++++++++
+
+
+
+qquu*+++++++++++++++,222 00 05qquu*+(000000000000000qquu*+,0 00 00 000000000 00 00 0000000000qquu*+,0000000000000000000001001002qquu*+,2220 00 00 02222000qquu*+,000000000qquu*+,0 00 00 0000||}u*+,000000000000y0|z*+,000000000000000000000000000000 00000 0*+,000000000000000000000000000000000000*+,001002222222000000000000000000 000000*+,00000{1|1}1~11000000000000000&%$%$%####1+,000HIJK0 00 00 00 000000 00000000++++++,00000PQRS00091:1:1:1:1:1;000000++++++,001000000000XYZ[ABBBBBC0000000000000000000000000`ab000IJJJJJK0000 00 00 00 000000000001010000001000 00 000 0`1PQRSTUV0 0000000000000000000000000000hX1Y1Z[\]1^100000000000000000001000000000010000000000000001000 00000 022220000000000000000000000000000000010000000000000000000 000020000222222(0)0*0+022222000000020000001230 00 00002 0000089:;000000002200000@Abc0 00 000010222201010000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000=>>>>>>>>?0=>>>>>>>>>?0 0 00 00 00 00 0 00 00 00 00 00 00 0 0 00 00 00 00 00 00000000000000000000000000000000000 00 00 00 00 00 00 00 0000000000 00 00 00 00 00 00 00 000000000000000000 00 00 00 00 00 00 00 00
\ No newline at end of file
diff --git a/data/layouts/CeruleanCity_Gym_Frlg/border.bin b/data/layouts/CeruleanCity_Gym_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeruleanCity_Gym_Frlg/border.bin differ
diff --git a/data/layouts/CeruleanCity_Gym_Frlg/map.bin b/data/layouts/CeruleanCity_Gym_Frlg/map.bin
new file mode 100644
index 000000000000..ee6d6516501d
--- /dev/null
+++ b/data/layouts/CeruleanCity_Gym_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222tuv
\ No newline at end of file
diff --git a/data/layouts/CeruleanCity_House1_Frlg/border.bin b/data/layouts/CeruleanCity_House1_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeruleanCity_House1_Frlg/border.bin differ
diff --git a/data/layouts/CeruleanCity_House1_Frlg/map.bin b/data/layouts/CeruleanCity_House1_Frlg/map.bin
new file mode 100644
index 000000000000..83ebe0b15752
--- /dev/null
+++ b/data/layouts/CeruleanCity_House1_Frlg/map.bin
@@ -0,0 +1 @@
+bcdjk1l111111112121V1 1 1 1 1 1 1 1 1 1^ 1 1 1 1#1$1$1$1%11 1 1 1 1+1&1()-1V1 1 1 1 1+1,101-1^ 1 1 1 131414141511 1?1G1O1 1 1 1 1 1
\ No newline at end of file
diff --git a/data/layouts/CeruleanCity_House2_Frlg/border.bin b/data/layouts/CeruleanCity_House2_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeruleanCity_House2_Frlg/border.bin differ
diff --git a/data/layouts/CeruleanCity_House2_Frlg/map.bin b/data/layouts/CeruleanCity_House2_Frlg/map.bin
new file mode 100644
index 000000000000..21a7d4178ab2
--- /dev/null
+++ b/data/layouts/CeruleanCity_House2_Frlg/map.bin
@@ -0,0 +1 @@
+a2iH1I12222221#1$1$1$1$1%1221+12()2-12221+1212-1 12 1V131412414151222^ 1?1G1O122 1
\ No newline at end of file
diff --git a/data/layouts/CeruleanCity_House5_Frlg/border.bin b/data/layouts/CeruleanCity_House5_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CeruleanCity_House5_Frlg/border.bin differ
diff --git a/data/layouts/CeruleanCity_House5_Frlg/map.bin b/data/layouts/CeruleanCity_House5_Frlg/map.bin
new file mode 100644
index 000000000000..1f06133b3e3a
--- /dev/null
+++ b/data/layouts/CeruleanCity_House5_Frlg/map.bin
@@ -0,0 +1 @@
+aaii2121211111M1N1M1N11 1 1 1 1 1 1 1ef 11.1 1 1 1 1 1o1mn 16 1 1 1 1 1 1ef 11.1 1 1 1 1 1 1mng16 1?1G1O1 1 1 1 1 1
\ No newline at end of file
diff --git a/data/layouts/CinnabarIsland_Frlg/border.bin b/data/layouts/CinnabarIsland_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/CinnabarIsland_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/CinnabarIsland_Frlg/map.bin b/data/layouts/CinnabarIsland_Frlg/map.bin
new file mode 100644
index 000000000000..7631ea1d8a49
--- /dev/null
+++ b/data/layouts/CinnabarIsland_Frlg/map.bin
@@ -0,0 +1 @@
+++,003141)++,10 0031ABBBBC)++,00 0 0 0IJJJJK*++,20000PQRSTV*++,00222000 0 0 0 0X1Y1Z[\*++,000000000000000 00h++,222222200000000000++,{1|1}1~110 00 00 0*++,HIJK(0)0*0+000*++,PQRS012300*++,000 0220XYZ[89:;00*++,0000000`ab@Abc00*++0##!000000000000000*+++++,000000000000000*+++++,000000000000000*++++0###############1++++++++++++++++++++++++++++++++++++++
\ No newline at end of file
diff --git a/data/layouts/CinnabarIsland_Gym_Frlg/border.bin b/data/layouts/CinnabarIsland_Gym_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CinnabarIsland_Gym_Frlg/border.bin differ
diff --git a/data/layouts/CinnabarIsland_Gym_Frlg/map.bin b/data/layouts/CinnabarIsland_Gym_Frlg/map.bin
new file mode 100644
index 000000000000..39cd83f5a41f
--- /dev/null
+++ b/data/layouts/CinnabarIsland_Gym_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222tuv
\ No newline at end of file
diff --git a/data/layouts/CinnabarIsland_PokemonLab_Entrance_Frlg/border.bin b/data/layouts/CinnabarIsland_PokemonLab_Entrance_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CinnabarIsland_PokemonLab_Entrance_Frlg/border.bin differ
diff --git a/data/layouts/CinnabarIsland_PokemonLab_Entrance_Frlg/map.bin b/data/layouts/CinnabarIsland_PokemonLab_Entrance_Frlg/map.bin
new file mode 100644
index 000000000000..39ca3b4d708b
--- /dev/null
+++ b/data/layouts/CinnabarIsland_PokemonLab_Entrance_Frlg/map.bin
@@ -0,0 +1 @@
+hiiiijpqqr0x0y0y0y0y0y0z022000000020200jhijhijhij200200rpq2rpq2rpq2r20022000z0x0y0y0y0y0z0x0y0y0y0y0z0x0y0y0y0y0z00000000000000000000000000002200000000000000000000000000000000000000000000000
\ No newline at end of file
diff --git a/data/layouts/CinnabarIsland_PokemonLab_ExperimentRoom_Frlg/border.bin b/data/layouts/CinnabarIsland_PokemonLab_ExperimentRoom_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CinnabarIsland_PokemonLab_ExperimentRoom_Frlg/border.bin differ
diff --git a/data/layouts/CinnabarIsland_PokemonLab_ExperimentRoom_Frlg/map.bin b/data/layouts/CinnabarIsland_PokemonLab_ExperimentRoom_Frlg/map.bin
new file mode 100644
index 000000000000..1dbda8fd5ba6
Binary files /dev/null and b/data/layouts/CinnabarIsland_PokemonLab_ExperimentRoom_Frlg/map.bin differ
diff --git a/data/layouts/CinnabarIsland_PokemonLab_Lounge_Frlg/border.bin b/data/layouts/CinnabarIsland_PokemonLab_Lounge_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CinnabarIsland_PokemonLab_Lounge_Frlg/border.bin differ
diff --git a/data/layouts/CinnabarIsland_PokemonLab_Lounge_Frlg/map.bin b/data/layouts/CinnabarIsland_PokemonLab_Lounge_Frlg/map.bin
new file mode 100644
index 000000000000..a84c9d1abfb4
--- /dev/null
+++ b/data/layouts/CinnabarIsland_PokemonLab_Lounge_Frlg/map.bin
@@ -0,0 +1,3 @@
+hkli$ikljpstq%qstrx0 3
+3{0|0y0y0y0y0y0{0|0 3
+3z0000022222220000200022666220002200022220002200022220002000022222220000200000000000000600000000000
\ No newline at end of file
diff --git a/data/layouts/CinnabarIsland_PokemonLab_ResearchRoom_Frlg/border.bin b/data/layouts/CinnabarIsland_PokemonLab_ResearchRoom_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/CinnabarIsland_PokemonLab_ResearchRoom_Frlg/border.bin differ
diff --git a/data/layouts/CinnabarIsland_PokemonLab_ResearchRoom_Frlg/map.bin b/data/layouts/CinnabarIsland_PokemonLab_ResearchRoom_Frlg/map.bin
new file mode 100644
index 000000000000..6032e183ff7a
Binary files /dev/null and b/data/layouts/CinnabarIsland_PokemonLab_ResearchRoom_Frlg/map.bin differ
diff --git a/data/layouts/DiglettsCave_B1F_Frlg/border.bin b/data/layouts/DiglettsCave_B1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/DiglettsCave_B1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/DiglettsCave_B1F_Frlg/map.bin b/data/layouts/DiglettsCave_B1F_Frlg/map.bin
new file mode 100644
index 000000000000..d29e66e00eac
--- /dev/null
+++ b/data/layouts/DiglettsCave_B1F_Frlg/map.bin
@@ -0,0 +1 @@
+2222226666666666666666222222226622222266662222222662222222662222266222222662222222222662266226662222222222222222222222226622222222222266222222222222222222222222222222222222222222222222222222222222222222222222222222222222222666666666622222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222666666666666666666666666666666666666666666666666666666666666666666666666
\ No newline at end of file
diff --git a/data/layouts/DiglettsCave_NorthEntrance_Frlg/border.bin b/data/layouts/DiglettsCave_NorthEntrance_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/DiglettsCave_NorthEntrance_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/DiglettsCave_NorthEntrance_Frlg/map.bin b/data/layouts/DiglettsCave_NorthEntrance_Frlg/map.bin
new file mode 100644
index 000000000000..39007d306616
--- /dev/null
+++ b/data/layouts/DiglettsCave_NorthEntrance_Frlg/map.bin
@@ -0,0 +1 @@
+6666666666666623322266332222662222226632222266622222266666
\ No newline at end of file
diff --git a/data/layouts/DiglettsCave_SouthEntrance_Frlg/border.bin b/data/layouts/DiglettsCave_SouthEntrance_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/DiglettsCave_SouthEntrance_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/DiglettsCave_SouthEntrance_Frlg/map.bin b/data/layouts/DiglettsCave_SouthEntrance_Frlg/map.bin
new file mode 100644
index 000000000000..9d2c75793dd6
Binary files /dev/null and b/data/layouts/DiglettsCave_SouthEntrance_Frlg/map.bin differ
diff --git a/data/layouts/Entrance_1F_Frlg/border.bin b/data/layouts/Entrance_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/Entrance_1F_Frlg/border.bin differ
diff --git a/data/layouts/Entrance_1F_Frlg/map.bin b/data/layouts/Entrance_1F_Frlg/map.bin
new file mode 100644
index 000000000000..e39d586e9c5f
--- /dev/null
+++ b/data/layouts/Entrance_1F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/Entrance_2F_Frlg/border.bin b/data/layouts/Entrance_2F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/Entrance_2F_Frlg/border.bin differ
diff --git a/data/layouts/Entrance_2F_Frlg/map.bin b/data/layouts/Entrance_2F_Frlg/map.bin
new file mode 100644
index 000000000000..bfac6e348c8d
--- /dev/null
+++ b/data/layouts/Entrance_2F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222222222222226622
\ No newline at end of file
diff --git a/data/layouts/EverGrandeCity_HallOfFame_Frlg/border.bin b/data/layouts/EverGrandeCity_HallOfFame_Frlg/border.bin
new file mode 100644
index 000000000000..f496f458ecf2
Binary files /dev/null and b/data/layouts/EverGrandeCity_HallOfFame_Frlg/border.bin differ
diff --git a/data/layouts/EverGrandeCity_HallOfFame_Frlg/map.bin b/data/layouts/EverGrandeCity_HallOfFame_Frlg/map.bin
new file mode 100644
index 000000000000..1df9e480472f
--- /dev/null
+++ b/data/layouts/EverGrandeCity_HallOfFame_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222262226
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_Frlg/border.bin b/data/layouts/FiveIsland_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/FiveIsland_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_Frlg/map.bin b/data/layouts/FiveIsland_Frlg/map.bin
new file mode 100644
index 000000000000..98fa499f86cd
Binary files /dev/null and b/data/layouts/FiveIsland_Frlg/map.bin differ
diff --git a/data/layouts/FiveIsland_LostCave_Entrance_Frlg/border.bin b/data/layouts/FiveIsland_LostCave_Entrance_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Entrance_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Entrance_Frlg/map.bin b/data/layouts/FiveIsland_LostCave_Entrance_Frlg/map.bin
new file mode 100644
index 000000000000..7e68d2dd45e4
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Entrance_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room10_Frlg/border.bin b/data/layouts/FiveIsland_LostCave_Room10_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room10_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room10_Frlg/map.bin b/data/layouts/FiveIsland_LostCave_Room10_Frlg/map.bin
new file mode 100644
index 000000000000..9e26501cbfa7
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room10_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room11_Frlg/border.bin b/data/layouts/FiveIsland_LostCave_Room11_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room11_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room11_Frlg/map.bin b/data/layouts/FiveIsland_LostCave_Room11_Frlg/map.bin
new file mode 100644
index 000000000000..6af11f8cc206
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room11_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222222222222222222223332222222222222222
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room12_Frlg/border.bin b/data/layouts/FiveIsland_LostCave_Room12_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room12_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room12_Frlg/map.bin b/data/layouts/FiveIsland_LostCave_Room12_Frlg/map.bin
new file mode 100644
index 000000000000..6f77bfda909e
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room12_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222223332222222222222222
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room13_Frlg/border.bin b/data/layouts/FiveIsland_LostCave_Room13_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room13_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room13_Frlg/map.bin b/data/layouts/FiveIsland_LostCave_Room13_Frlg/map.bin
new file mode 100644
index 000000000000..bb1a69aa2c21
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room13_Frlg/map.bin
@@ -0,0 +1,2 @@
+222222222222222222222
+3222222223332222222222222222
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room14_Frlg/border.bin b/data/layouts/FiveIsland_LostCave_Room14_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room14_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room14_Frlg/map.bin b/data/layouts/FiveIsland_LostCave_Room14_Frlg/map.bin
new file mode 100644
index 000000000000..a4849c5d4fd1
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room14_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222223 223332222222222222222
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room1_Frlg/border.bin b/data/layouts/FiveIsland_LostCave_Room1_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room1_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room1_Frlg/map.bin b/data/layouts/FiveIsland_LostCave_Room1_Frlg/map.bin
new file mode 100644
index 000000000000..1683057f523d
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room1_Frlg/map.bin
@@ -0,0 +1,2 @@
+222222222222222222222
+3222223 2222222222222222222
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room2_Frlg/border.bin b/data/layouts/FiveIsland_LostCave_Room2_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room2_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room2_Frlg/map.bin b/data/layouts/FiveIsland_LostCave_Room2_Frlg/map.bin
new file mode 100644
index 000000000000..f89ec37f3359
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room2_Frlg/map.bin
@@ -0,0 +1,2 @@
+2222222222222222
+3222223 222222222222222
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room3_Frlg/border.bin b/data/layouts/FiveIsland_LostCave_Room3_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room3_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room3_Frlg/map.bin b/data/layouts/FiveIsland_LostCave_Room3_Frlg/map.bin
new file mode 100644
index 000000000000..24073548c540
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room3_Frlg/map.bin
@@ -0,0 +1,2 @@
+2222222222222222222
+3222223 222222222222222222
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room4_Frlg/border.bin b/data/layouts/FiveIsland_LostCave_Room4_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room4_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room4_Frlg/map.bin b/data/layouts/FiveIsland_LostCave_Room4_Frlg/map.bin
new file mode 100644
index 000000000000..af2e57bb2786
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room4_Frlg/map.bin
@@ -0,0 +1,2 @@
+2222222222222222222
+3222223 222222222222222222
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room5_Frlg/border.bin b/data/layouts/FiveIsland_LostCave_Room5_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room5_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room5_Frlg/map.bin b/data/layouts/FiveIsland_LostCave_Room5_Frlg/map.bin
new file mode 100644
index 000000000000..b8db9de8087e
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room5_Frlg/map.bin
@@ -0,0 +1,2 @@
+2222222222222222222
+3222223 222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room6_Frlg/border.bin b/data/layouts/FiveIsland_LostCave_Room6_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room6_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room6_Frlg/map.bin b/data/layouts/FiveIsland_LostCave_Room6_Frlg/map.bin
new file mode 100644
index 000000000000..ddf7f44026f5
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room6_Frlg/map.bin
@@ -0,0 +1,2 @@
+22222222222222222
+3222223 22222222222222222
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room7_Frlg/border.bin b/data/layouts/FiveIsland_LostCave_Room7_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room7_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room7_Frlg/map.bin b/data/layouts/FiveIsland_LostCave_Room7_Frlg/map.bin
new file mode 100644
index 000000000000..ff3353201530
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room7_Frlg/map.bin
@@ -0,0 +1,2 @@
+222222222222222222
+3222223 2222222222222222222
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room8_Frlg/border.bin b/data/layouts/FiveIsland_LostCave_Room8_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room8_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room8_Frlg/map.bin b/data/layouts/FiveIsland_LostCave_Room8_Frlg/map.bin
new file mode 100644
index 000000000000..452a62af2e61
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room8_Frlg/map.bin
@@ -0,0 +1,2 @@
+22222222222222222222
+3222223 22222222222222222222
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room9_Frlg/border.bin b/data/layouts/FiveIsland_LostCave_Room9_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room9_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_LostCave_Room9_Frlg/map.bin b/data/layouts/FiveIsland_LostCave_Room9_Frlg/map.bin
new file mode 100644
index 000000000000..ec3f1ac6e4bf
--- /dev/null
+++ b/data/layouts/FiveIsland_LostCave_Room9_Frlg/map.bin
@@ -0,0 +1,2 @@
+222222222222222
+3222223 2222222222222222
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_Meadow_Frlg/border.bin b/data/layouts/FiveIsland_Meadow_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/FiveIsland_Meadow_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_Meadow_Frlg/map.bin b/data/layouts/FiveIsland_Meadow_Frlg/map.bin
new file mode 100644
index 000000000000..6126a6fa43b3
--- /dev/null
+++ b/data/layouts/FiveIsland_Meadow_Frlg/map.bin
@@ -0,0 +1,5 @@
++++++++++
+
+
+
++++++++313131313141+++++++$%$'0
0
00
0 0u)++++
00
00
0
0
0
00 031313141+$' 0
0
00000
0
0
0 00003141+0
0
0
0
00000 0
0
000u)00 0
0
0&%$%00
0
00u)0 000 000
0
0&%
0
0
0u*yy00yy
0
0
0 0$'
0
0
0u*1111110000
0
0
0
0
0u*111111
0
0000u*#!
0
00u*+s
0
0&' 0u*+s
0
0
0
00u+,s00
000u,s0 00u*+,s000u*+,s0 00u*+,s00zs$%r
0
0
0+s0 000 0
0r
0
0
0*+,{0&%0 000r
0
0
0*+0$x0y00r
0
00*+0 00p
0 0&%r
0
00*+000p
000
0&'r0 00*++,0 00p&%$' 00 00
0
0r000*++0##$x||
00000
0z0 00*+++++0##!s0
00 0
0 0r0000*++++++,xyy00yyz0 0*++++++++,
00000000&'00*++++++++,
0
000000 00 0*++++++++,
0&'
00 00000*++++++,
0
0
0
0
00&'00 0"1++++++0###########1++++++++++++++++++++++++++++++++++++
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_MemorialPillar_Frlg/border.bin b/data/layouts/FiveIsland_MemorialPillar_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/FiveIsland_MemorialPillar_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_MemorialPillar_Frlg/map.bin b/data/layouts/FiveIsland_MemorialPillar_Frlg/map.bin
new file mode 100644
index 000000000000..a5aae1ecc5da
Binary files /dev/null and b/data/layouts/FiveIsland_MemorialPillar_Frlg/map.bin differ
diff --git a/data/layouts/FiveIsland_ResortGorgeous_Frlg/border.bin b/data/layouts/FiveIsland_ResortGorgeous_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/FiveIsland_ResortGorgeous_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_ResortGorgeous_Frlg/map.bin b/data/layouts/FiveIsland_ResortGorgeous_Frlg/map.bin
new file mode 100644
index 000000000000..aaf0ec4dbc39
--- /dev/null
+++ b/data/layouts/FiveIsland_ResortGorgeous_Frlg/map.bin
@@ -0,0 +1 @@
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
11++++++++++++++1
1%11111111111111111111+++++++++++++++++++++++++++++++1111011++++++++++++++++++1
1
1
11+++++++++1
1%1111 000011+++++++++++++1%11+++++++++1111110000&'11+++++++++++++++11q&11++++++1
1%1111110000
11++++++++++++1
1
1
11++++++1-1|.11+++++1%1111111110 00000 00i11+++++++++1%1&11++++++1-1111++++++111-1111111100000000000 00111+++++++++1squ&11++++1111+++++++++11-11111110000000000111.11+++++++++1squ11++++++++++++++++++++111-111111111111111.111++++++++++1{|}11+++++++++++++++++++++++1111111111111111++++++++++++1y0y.11+++++++++++++++++++++++++++++++++++++++++++++++++1-111111+++++++++++++++++++++++++++++++++++++++++++++++++111111++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_ResortGorgeous_House_Frlg/border.bin b/data/layouts/FiveIsland_ResortGorgeous_House_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/FiveIsland_ResortGorgeous_House_Frlg/border.bin differ
diff --git a/data/layouts/FiveIsland_ResortGorgeous_House_Frlg/map.bin b/data/layouts/FiveIsland_ResortGorgeous_House_Frlg/map.bin
new file mode 100644
index 000000000000..f313d50ebb65
Binary files /dev/null and b/data/layouts/FiveIsland_ResortGorgeous_House_Frlg/map.bin differ
diff --git a/data/layouts/FiveIsland_RocketWarehouse_Frlg/border.bin b/data/layouts/FiveIsland_RocketWarehouse_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/FiveIsland_RocketWarehouse_Frlg/border.bin differ
diff --git a/data/layouts/FiveIsland_RocketWarehouse_Frlg/map.bin b/data/layouts/FiveIsland_RocketWarehouse_Frlg/map.bin
new file mode 100644
index 000000000000..aef63eaf1ace
--- /dev/null
+++ b/data/layouts/FiveIsland_RocketWarehouse_Frlg/map.bin
@@ -0,0 +1 @@
+2222222223323322222222222222222222222222222222222+3-3222222222223222232232222222222222222222222222222223
32222222222222(3*33322222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
32222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222233322
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_WaterLabyrinth_Frlg/border.bin b/data/layouts/FiveIsland_WaterLabyrinth_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/FiveIsland_WaterLabyrinth_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FiveIsland_WaterLabyrinth_Frlg/map.bin b/data/layouts/FiveIsland_WaterLabyrinth_Frlg/map.bin
new file mode 100644
index 000000000000..66a91da605e8
--- /dev/null
+++ b/data/layouts/FiveIsland_WaterLabyrinth_Frlg/map.bin
@@ -0,0 +1 @@
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++(213131313131313141)++++++++++++++++++++++++++++++++++++++,0 00000000*++++++++++++++++++++++++++++++,000010010*+++++++++++++++++++++++++++++++++0$000010003141)++++++++++++++++++++++++++++++++++++++++0#$00010000*+++++++++++++++++++++++++++++++++++++0$0 00100 0*++++++++++++++++++++++++++++++++++++++++++,0000000*++++++++++++++++++++++++++++++++,0 000 00 0*+++++++++++++++++++++++++0#######1++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\ No newline at end of file
diff --git a/data/layouts/FortreeCity_DecorationShop_Frlg/border.bin b/data/layouts/FortreeCity_DecorationShop_Frlg/border.bin
new file mode 100644
index 000000000000..19d90667980c
--- /dev/null
+++ b/data/layouts/FortreeCity_DecorationShop_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FortreeCity_DecorationShop_Frlg/map.bin b/data/layouts/FortreeCity_DecorationShop_Frlg/map.bin
new file mode 100644
index 000000000000..6ca8b4e610db
--- /dev/null
+++ b/data/layouts/FortreeCity_DecorationShop_Frlg/map.bin
@@ -0,0 +1 @@
+333333333333733337
\ No newline at end of file
diff --git a/data/layouts/FortreeCity_House1_Frlg/border.bin b/data/layouts/FortreeCity_House1_Frlg/border.bin
new file mode 100644
index 000000000000..19d90667980c
--- /dev/null
+++ b/data/layouts/FortreeCity_House1_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FortreeCity_House1_Frlg/map.bin b/data/layouts/FortreeCity_House1_Frlg/map.bin
new file mode 100644
index 000000000000..5a3ac8cb6bff
--- /dev/null
+++ b/data/layouts/FortreeCity_House1_Frlg/map.bin
@@ -0,0 +1 @@
+33333333333333333333733337
\ No newline at end of file
diff --git a/data/layouts/FortreeCity_House2_Frlg/border.bin b/data/layouts/FortreeCity_House2_Frlg/border.bin
new file mode 100644
index 000000000000..19d90667980c
--- /dev/null
+++ b/data/layouts/FortreeCity_House2_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FortreeCity_House2_Frlg/map.bin b/data/layouts/FortreeCity_House2_Frlg/map.bin
new file mode 100644
index 000000000000..3fbcd604300f
--- /dev/null
+++ b/data/layouts/FortreeCity_House2_Frlg/map.bin
@@ -0,0 +1 @@
+37733333333333333333733337
\ No newline at end of file
diff --git a/data/layouts/FourIsland_Frlg/border.bin b/data/layouts/FourIsland_Frlg/border.bin
new file mode 100644
index 000000000000..75f2c916c55e
--- /dev/null
+++ b/data/layouts/FourIsland_Frlg/border.bin
@@ -0,0 +1 @@
+vvvv
\ No newline at end of file
diff --git a/data/layouts/FourIsland_Frlg/map.bin b/data/layouts/FourIsland_Frlg/map.bin
new file mode 100644
index 000000000000..dd45ba9bd48f
--- /dev/null
+++ b/data/layouts/FourIsland_Frlg/map.bin
@@ -0,0 +1 @@
+vOssqsqq{|||||qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqvOssqsqqqqqqqq{|||||||||||||qqqqqqqqqqqqqqqqqqqvOssq{||||qqqqqqqqqqqqqqqqqsqqqqqqqqqqqqqqqqqqqvOssqqqqqq{|||||||||||||||qsqqqqqqqqqqqqqqqqqqqvOs{|||yyyyyyyyyyyyyyyqsqsqqqqqqqqqqqqqqqqqqqvO{||ypqsqsqqqqqqqqqqqqqqqqqqqvWeeG11110
0
00pqsqsqqqqqqqqqqqqqqqqqqqvsssO1##11100
00####pqsq{||qqqqqqqqqqqqqqqqvvosO100111
00110000pq{qqq{|||||||||||||qqvvvsO10
00
0
0
00111000pqq{||qqqqqqqqqqqqqqsqqvvvsO1$%
02222 00111000pqqqqq{||||||||||||qsqqDEvsO1y 000|||||||||||sqsqqLMvsO11100 0000000||||yy0yyssqsqqvvvsO111 0 00u0000 0pssqsqqvvvsO1110 00 00 000 00&%$'0u00000pssqsqqvvvsO111000000 0 00 0 00 00 0 00 00 0usssqsqqvvvoO1110 00 0000{1|1}1~1100000000usssqsqqvvvvO1110000000HIJK 00 0usssqsqqvvDEO1110 00 00PQRS000usssqsqqvvLMO1110000&'XYZ[ 00 0u313131313141sssq{qvvvvO1110 00 0000`ab0003sssqqsqvvvvO111000 00 00 000003131313131 00 0&'0usssqqsqvvvvO1110 0000000000 00 00 0000000a1usssqqsqvvDEO111000yyyy0 00(0)0*0+02222200ir313131pssqqsqvvLMO1111111111100001230 00 0 0000r0 00pssqqsqvvvvO111111111110 0089:;00000000r 00 0pssqqsqvvvvO11111111111000@Abc0 00 0 0000r000pssqq{vDEvWkkkk111kkG10 00 00 00 00 00 00 0y00yyz0 00ps{qqsvLMvsssss222ssO100000000000000r00110 0110psqsqqsvvvvvosO100 00000000000 0r0 01101110psqsqqsvvvvvvsO1yyy 0 0r0000011 00psqsqq{vvvvDEsO11111&%$%$%$'hiqsqqqvvvvLMsWkkG11yyyhiiiqqqqqqqqqqqqqqsqqqvvvvvvssssO111111sqqqqqqqqqqqqqqqqqqsqqqvvvvvvossssssssssO111111sqqqqqqqqqqqqqqqqqq{|||vvvvvvvDEvvvvvvvoWkkG111{||||||||||qqqqqqqqqqqvvvvvvvLMvvvDEvvvvvoWkkG||||||||||sqqqqqqqqqqqvvvvvvvvvvvvLMvvvDEvsssWeeeeeeeeeeGs{|||||||||||vvvvvvvvvvvvvvvvvLMvvvosssss^_ssssO{||||||||||||vvvvvvvvvvvvvvvvvvvvvvvvvvvvLMvvosWeeeeeeeeeeeee
\ No newline at end of file
diff --git a/data/layouts/FourIsland_IcefallCave_1F_Frlg/border.bin b/data/layouts/FourIsland_IcefallCave_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FourIsland_IcefallCave_1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FourIsland_IcefallCave_1F_Frlg/map.bin b/data/layouts/FourIsland_IcefallCave_1F_Frlg/map.bin
new file mode 100644
index 000000000000..22cfdf42ef8c
Binary files /dev/null and b/data/layouts/FourIsland_IcefallCave_1F_Frlg/map.bin differ
diff --git a/data/layouts/FourIsland_IcefallCave_B1F_Frlg/border.bin b/data/layouts/FourIsland_IcefallCave_B1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FourIsland_IcefallCave_B1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FourIsland_IcefallCave_B1F_Frlg/map.bin b/data/layouts/FourIsland_IcefallCave_B1F_Frlg/map.bin
new file mode 100644
index 000000000000..b3db8d893686
--- /dev/null
+++ b/data/layouts/FourIsland_IcefallCave_B1F_Frlg/map.bin
@@ -0,0 +1 @@
+K3K3K3?_22222J3K3OK3K3K3K3_22J3K3O?K3K3K3_22^K3K3OK3K3K3_22s^K3K3K3K3K3K3_s22222BK3K3K3K3K3K3L3222222BK3?K3K3K3K3_s22222^K3K3K3GK3K3L3222222^K3K3?K3?K3D22222^K3K3K3K3K3K3_222222^K3K3K3K3K3K3_222^K3HIK3K3K3L322222R\tS3S3\TVU22222222VUU22222VU222VVUUVVUV
\ No newline at end of file
diff --git a/data/layouts/FourIsland_IcefallCave_Back_Frlg/border.bin b/data/layouts/FourIsland_IcefallCave_Back_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FourIsland_IcefallCave_Back_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FourIsland_IcefallCave_Back_Frlg/map.bin b/data/layouts/FourIsland_IcefallCave_Back_Frlg/map.bin
new file mode 100644
index 000000000000..aa44dd119709
--- /dev/null
+++ b/data/layouts/FourIsland_IcefallCave_Back_Frlg/map.bin
@@ -0,0 +1 @@
++++++++++++++++++++++++++++++++++++++++++++++++++U+++++++++++V)+++++(*+++,U++++++++,)++++++++++VU*+++++++++(VU*+++++++++,V*+++++++++,*+++++++++,*+++++++++,U+++++++VUgj3k3k3k3k3k3l3fV2222222p222222U222222qVUor22nVU22qV222222222p22UVUV
\ No newline at end of file
diff --git a/data/layouts/FourIsland_IcefallCave_Entrance_Frlg/border.bin b/data/layouts/FourIsland_IcefallCave_Entrance_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/FourIsland_IcefallCave_Entrance_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/FourIsland_IcefallCave_Entrance_Frlg/map.bin b/data/layouts/FourIsland_IcefallCave_Entrance_Frlg/map.bin
new file mode 100644
index 000000000000..b37ddd8008b9
--- /dev/null
+++ b/data/layouts/FourIsland_IcefallCave_Entrance_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222>2222222#"222'''''/////////////////////////77777>22222>22222222======222222===222222===222222===UV===UV=UV==UV
\ No newline at end of file
diff --git a/data/layouts/FourIsland_LoreleisHouse_Frlg/border.bin b/data/layouts/FourIsland_LoreleisHouse_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/FourIsland_LoreleisHouse_Frlg/border.bin differ
diff --git a/data/layouts/FourIsland_LoreleisHouse_Frlg/map.bin b/data/layouts/FourIsland_LoreleisHouse_Frlg/map.bin
new file mode 100644
index 000000000000..5ce78023de34
--- /dev/null
+++ b/data/layouts/FourIsland_LoreleisHouse_Frlg/map.bin
@@ -0,0 +1 @@
+
`5 h22222222222B222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/FourIsland_PokemonDayCare_Frlg/border.bin b/data/layouts/FourIsland_PokemonDayCare_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/FourIsland_PokemonDayCare_Frlg/border.bin differ
diff --git a/data/layouts/FourIsland_PokemonDayCare_Frlg/map.bin b/data/layouts/FourIsland_PokemonDayCare_Frlg/map.bin
new file mode 100644
index 000000000000..d7207d8ff0c6
--- /dev/null
+++ b/data/layouts/FourIsland_PokemonDayCare_Frlg/map.bin
@@ -0,0 +1 @@
+b33333222222 !32222222"32232 3 32222222 3 322222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/FuchsiaCity_Frlg/border.bin b/data/layouts/FuchsiaCity_Frlg/border.bin
new file mode 100644
index 000000000000..a701312cfff9
Binary files /dev/null and b/data/layouts/FuchsiaCity_Frlg/border.bin differ
diff --git a/data/layouts/FuchsiaCity_Frlg/map.bin b/data/layouts/FuchsiaCity_Frlg/map.bin
new file mode 100644
index 000000000000..e1517ef1d9ef
--- /dev/null
+++ b/data/layouts/FuchsiaCity_Frlg/map.bin
@@ -0,0 +1 @@
+$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%0000000000000000000000 00000000000000000002222222222222200 0 02020000022222222222220000000000 000000000000000 000 000 0000000000000000034445000000000000000000000000000000088888900000000000000000000000000000000000000000000000000000 00 00(0)0*0+00000000000002222220222222222000000000000123000000000000 00 0089:;0000000000000 00000000 0000$'0000000@Abc00000000000000000000000000000000000000000000000 0 0000222222222000000000000000000000000000000000000000000000 000000000000000000000 00000000000000&%0000100000000 0 00001000000000000000000000003444445 00 0000000000000000000000000000 000006666666666000010000000000000000000000100000000000000000000100066666666670 0000 000000000000000000000000000000 00?00 00 0000000000000000000000000000000?0 00 0hiiiiiiiiiiiiiiiiiiiiiiij000 0031313131313131?0000pqqqqqqqqqqqqqqqqqqr0000000 000000 00 0pqHIJKr00222222220000xyABBBBBCPQRSz000 00 00IJJJJJKXYZ[00a100000`1PQRSTUV`ab00i0000 0hX1Y1Z[\]1^10000000000000000000000000000 00 00000000000100000000000000000000 00 0000010100000001010000000 0 00 00 00 00 00 00 0000000hiiiiij0000000000000000000 000000000pklllmr000 00 00 00 00000000000psqqqur0000000000hiiiiij0000000000psqqqur0 00 00 00 00 0pklllmrpsqqqur0000000000psqqqur
\ No newline at end of file
diff --git a/data/layouts/FuchsiaCity_Gym_Frlg/border.bin b/data/layouts/FuchsiaCity_Gym_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/FuchsiaCity_Gym_Frlg/border.bin differ
diff --git a/data/layouts/FuchsiaCity_Gym_Frlg/map.bin b/data/layouts/FuchsiaCity_Gym_Frlg/map.bin
new file mode 100644
index 000000000000..390ee14be029
--- /dev/null
+++ b/data/layouts/FuchsiaCity_Gym_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/FuchsiaCity_House2_Frlg/border.bin b/data/layouts/FuchsiaCity_House2_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/FuchsiaCity_House2_Frlg/border.bin differ
diff --git a/data/layouts/FuchsiaCity_House2_Frlg/map.bin b/data/layouts/FuchsiaCity_House2_Frlg/map.bin
new file mode 100644
index 000000000000..83ebe0b15752
--- /dev/null
+++ b/data/layouts/FuchsiaCity_House2_Frlg/map.bin
@@ -0,0 +1 @@
+bcdjk1l111111112121V1 1 1 1 1 1 1 1 1 1^ 1 1 1 1#1$1$1$1%11 1 1 1 1+1&1()-1V1 1 1 1 1+1,101-1^ 1 1 1 131414141511 1?1G1O1 1 1 1 1 1
\ No newline at end of file
diff --git a/data/layouts/FuchsiaCity_SafariZone_Entrance_Frlg/border.bin b/data/layouts/FuchsiaCity_SafariZone_Entrance_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/FuchsiaCity_SafariZone_Entrance_Frlg/border.bin differ
diff --git a/data/layouts/FuchsiaCity_SafariZone_Entrance_Frlg/map.bin b/data/layouts/FuchsiaCity_SafariZone_Entrance_Frlg/map.bin
new file mode 100644
index 000000000000..e84271730c99
--- /dev/null
+++ b/data/layouts/FuchsiaCity_SafariZone_Entrance_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/FuchsiaCity_SafariZone_Office_Frlg/border.bin b/data/layouts/FuchsiaCity_SafariZone_Office_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/FuchsiaCity_SafariZone_Office_Frlg/border.bin differ
diff --git a/data/layouts/FuchsiaCity_SafariZone_Office_Frlg/map.bin b/data/layouts/FuchsiaCity_SafariZone_Office_Frlg/map.bin
new file mode 100644
index 000000000000..d18ddbd61749
--- /dev/null
+++ b/data/layouts/FuchsiaCity_SafariZone_Office_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/FuchsiaCity_WardensHouse_Frlg/border.bin b/data/layouts/FuchsiaCity_WardensHouse_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/FuchsiaCity_WardensHouse_Frlg/border.bin differ
diff --git a/data/layouts/FuchsiaCity_WardensHouse_Frlg/map.bin b/data/layouts/FuchsiaCity_WardensHouse_Frlg/map.bin
new file mode 100644
index 000000000000..4efd7d891bf9
--- /dev/null
+++ b/data/layouts/FuchsiaCity_WardensHouse_Frlg/map.bin
@@ -0,0 +1 @@
+M1N1M1N11111111111 1 1 12222 1 1222rf 1#1%1 1zn 131222251 11s1 1 1 1 1 1 1 1 1 11111 1 1 1 1 1 1 1 1 1 1 1 1V1 1 1 1 1 1 1 1 1 1 1 1U1^ 1 1 1 1?1G1O1 1 1 1 1]
\ No newline at end of file
diff --git a/data/layouts/House1_Frlg/border.bin b/data/layouts/House1_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/House1_Frlg/border.bin differ
diff --git a/data/layouts/House1_Frlg/map.bin b/data/layouts/House1_Frlg/map.bin
new file mode 100644
index 000000000000..7fb8f8319113
--- /dev/null
+++ b/data/layouts/House1_Frlg/map.bin
@@ -0,0 +1 @@
+aapq5iixyH1I11111111111 1 1#1$1$1$1$1%1 1 11 1 1+1&1()'1-1 1 11 1 1+1&101'1-1 1 1V1 1 1314141414151 1U1^ 1 1?1G1O1 1 1 1 1]
\ No newline at end of file
diff --git a/data/layouts/House2_Frlg/border.bin b/data/layouts/House2_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/House2_Frlg/border.bin differ
diff --git a/data/layouts/House2_Frlg/map.bin b/data/layouts/House2_Frlg/map.bin
new file mode 100644
index 000000000000..2f2d83996079
--- /dev/null
+++ b/data/layouts/House2_Frlg/map.bin
@@ -0,0 +1 @@
+ ./ -!" 1267(5)*(90:0>0?0 0=0 0 0 0 0 0 000C0D0D0D0D0F000 000S0K0LMN0V000 000S0K0TUN0V000W000[0\0\0\0\0^00G0_000000000O44444444
\ No newline at end of file
diff --git a/data/layouts/House3_Frlg/border.bin b/data/layouts/House3_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/House3_Frlg/border.bin differ
diff --git a/data/layouts/House3_Frlg/map.bin b/data/layouts/House3_Frlg/map.bin
new file mode 100644
index 000000000000..73c6abf89d2f
--- /dev/null
+++ b/data/layouts/House3_Frlg/map.bin
@@ -0,0 +1 @@
+"
89*!@A211111111H1I11V1 1 1 1 1 1 1 1 1 1 1^ 1 1 1o1efg1 1 1 11 1 1 1o1mng1 1 1 1V1 1 1 1 1 1 1 1 1 1 1^ 1 1?1G1O1 1 1 1 1 1
\ No newline at end of file
diff --git a/data/layouts/House4_Frlg/border.bin b/data/layouts/House4_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/House4_Frlg/border.bin differ
diff --git a/data/layouts/House4_Frlg/map.bin b/data/layouts/House4_Frlg/map.bin
new file mode 100644
index 000000000000..f74c83441dca
--- /dev/null
+++ b/data/layouts/House4_Frlg/map.bin
@@ -0,0 +1 @@
+
`` h h111111111111 1 1 1 1 1 1 1 1 1 1V1 1 1 1o1efg1 1 1 1^ 1 1 1o1mng1 1 1 1V1 1 1 1 1 1 1 1 1 1 1^ 1?1G1O1 1 1 1 1 1 1
\ No newline at end of file
diff --git a/data/layouts/House5_Frlg/border.bin b/data/layouts/House5_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/House5_Frlg/border.bin differ
diff --git a/data/layouts/House5_Frlg/map.bin b/data/layouts/House5_Frlg/map.bin
new file mode 100644
index 000000000000..4daf805f737f
--- /dev/null
+++ b/data/layouts/House5_Frlg/map.bin
@@ -0,0 +1 @@
+aapqi5ixy000000000000000000000000000000000000000000000000000000000000
\ No newline at end of file
diff --git a/data/layouts/IndigoPlateau_Exterior_Frlg/border.bin b/data/layouts/IndigoPlateau_Exterior_Frlg/border.bin
new file mode 100644
index 000000000000..a701312cfff9
Binary files /dev/null and b/data/layouts/IndigoPlateau_Exterior_Frlg/border.bin differ
diff --git a/data/layouts/IndigoPlateau_Exterior_Frlg/map.bin b/data/layouts/IndigoPlateau_Exterior_Frlg/map.bin
new file mode 100644
index 000000000000..2bfc01f42e6d
Binary files /dev/null and b/data/layouts/IndigoPlateau_Exterior_Frlg/map.bin differ
diff --git a/data/layouts/IndigoPlateau_PokemonCenter_1F_Frlg/border.bin b/data/layouts/IndigoPlateau_PokemonCenter_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/IndigoPlateau_PokemonCenter_1F_Frlg/border.bin differ
diff --git a/data/layouts/IndigoPlateau_PokemonCenter_1F_Frlg/map.bin b/data/layouts/IndigoPlateau_PokemonCenter_1F_Frlg/map.bin
new file mode 100644
index 000000000000..9a9319f8e509
Binary files /dev/null and b/data/layouts/IndigoPlateau_PokemonCenter_1F_Frlg/map.bin differ
diff --git a/data/layouts/Island_Harbor_Frlg/border.bin b/data/layouts/Island_Harbor_Frlg/border.bin
new file mode 100644
index 000000000000..536a722ecaf5
--- /dev/null
+++ b/data/layouts/Island_Harbor_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/Island_Harbor_Frlg/map.bin b/data/layouts/Island_Harbor_Frlg/map.bin
new file mode 100644
index 000000000000..353d5f450d8c
--- /dev/null
+++ b/data/layouts/Island_Harbor_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222#####!222 #####+++++,2*++++++++++0#1+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\ No newline at end of file
diff --git a/data/layouts/LavaridgeTown_HerbShop_Frlg/border.bin b/data/layouts/LavaridgeTown_HerbShop_Frlg/border.bin
new file mode 100644
index 000000000000..f496f458ecf2
Binary files /dev/null and b/data/layouts/LavaridgeTown_HerbShop_Frlg/border.bin differ
diff --git a/data/layouts/LavaridgeTown_HerbShop_Frlg/map.bin b/data/layouts/LavaridgeTown_HerbShop_Frlg/map.bin
new file mode 100644
index 000000000000..cc0294a805f3
--- /dev/null
+++ b/data/layouts/LavaridgeTown_HerbShop_Frlg/map.bin
@@ -0,0 +1 @@
+32222x2p2p2p2p22h2h2h2x2p2p2p2p2p2y2h2h2h232h2h2h2h2h2h2h2h2h22g2h2h2h2h2h2h2h2f2Z2abh2h2h2h2h2ab
\ No newline at end of file
diff --git a/data/layouts/LavenderTown_Frlg/border.bin b/data/layouts/LavenderTown_Frlg/border.bin
new file mode 100644
index 000000000000..4531975c765e
Binary files /dev/null and b/data/layouts/LavenderTown_Frlg/border.bin differ
diff --git a/data/layouts/LavenderTown_Frlg/map.bin b/data/layouts/LavenderTown_Frlg/map.bin
new file mode 100644
index 000000000000..9bba130efad2
--- /dev/null
+++ b/data/layouts/LavenderTown_Frlg/map.bin
@@ -0,0 +1 @@
+qqqqqqqr0 00 0 0psuqqqqq10000psuqqqqHIJK 00 0 0psuqqqqrPQRS0000psuqyyzXYZ[ 00 0psuqr 00 0`ab0000p{'89:4}qr0000b1c1d10 00 00xy/@3B5qr 00 00r1s1t1 00000 00 0b1c1c1c1d1pqz000000022222000r1s1s1s1t1 0pq0 00 00 00 0 00 0 00 00 00pq00000000 0000000 00pq0 00 00 0000 00 0000pq0 000000 0b1c1d1 00 00 00(0)0*0+0pqj 002222222222000000123pqr00 0 00 0089:;pqr 0000000@Abcpqr00 00 0b1c1c1c1c1d1pqr 0b1c1c1c1c1c1c1c1c1c1d1000r1s1s1s1s1t1pqr0r1s1s1s1s1s1s1s1s1s1t1 00 00 00 00 0pqiiiiiiiiij00hiiiiiiiiq
\ No newline at end of file
diff --git a/data/layouts/LavenderTown_VolunteerPokemonHouse_Frlg/border.bin b/data/layouts/LavenderTown_VolunteerPokemonHouse_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/LavenderTown_VolunteerPokemonHouse_Frlg/border.bin differ
diff --git a/data/layouts/LavenderTown_VolunteerPokemonHouse_Frlg/map.bin b/data/layouts/LavenderTown_VolunteerPokemonHouse_Frlg/map.bin
new file mode 100644
index 000000000000..3e5dc6ddab29
--- /dev/null
+++ b/data/layouts/LavenderTown_VolunteerPokemonHouse_Frlg/map.bin
@@ -0,0 +1 @@
+#$%&5222(3)32
32222222222222222233222222332222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/LittlerootTown_MaysHouse_2F_Frlg/border.bin b/data/layouts/LittlerootTown_MaysHouse_2F_Frlg/border.bin
new file mode 100644
index 000000000000..c1b82435c8c5
--- /dev/null
+++ b/data/layouts/LittlerootTown_MaysHouse_2F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/LittlerootTown_MaysHouse_2F_Frlg/map.bin b/data/layouts/LittlerootTown_MaysHouse_2F_Frlg/map.bin
new file mode 100644
index 000000000000..b512103321c8
--- /dev/null
+++ b/data/layouts/LittlerootTown_MaysHouse_2F_Frlg/map.bin
@@ -0,0 +1,2 @@
+
+'VTPTQ/eUXYE2222]2g22`2a2222222222222222222222BB2222222222222222
\ No newline at end of file
diff --git a/data/layouts/Mart_Frlg/border.bin b/data/layouts/Mart_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/Mart_Frlg/border.bin differ
diff --git a/data/layouts/Mart_Frlg/map.bin b/data/layouts/Mart_Frlg/map.bin
new file mode 100644
index 000000000000..dee537e49385
--- /dev/null
+++ b/data/layouts/Mart_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/MauvilleCity_GameCorner/map.bin b/data/layouts/MauvilleCity_GameCorner/map.bin
index ce3f9bf7398c..a6fc8965d225 100644
Binary files a/data/layouts/MauvilleCity_GameCorner/map.bin and b/data/layouts/MauvilleCity_GameCorner/map.bin differ
diff --git a/data/layouts/MossdeepCity_EReaderTrainerHouse_1F_Frlg/border.bin b/data/layouts/MossdeepCity_EReaderTrainerHouse_1F_Frlg/border.bin
new file mode 100644
index 000000000000..f496f458ecf2
Binary files /dev/null and b/data/layouts/MossdeepCity_EReaderTrainerHouse_1F_Frlg/border.bin differ
diff --git a/data/layouts/MossdeepCity_EReaderTrainerHouse_1F_Frlg/map.bin b/data/layouts/MossdeepCity_EReaderTrainerHouse_1F_Frlg/map.bin
new file mode 100644
index 000000000000..bad63f412213
--- /dev/null
+++ b/data/layouts/MossdeepCity_EReaderTrainerHouse_1F_Frlg/map.bin
@@ -0,0 +1,2 @@
+0no
+2
hvw22$2$2$2$2$282p2~2292#2#2#2#2#2#2#2#2#2#292#2#2#2+2JK,2#2#2#292#2#2#2+2RS,2#2#2#292#2#2#2#2#2#2#2#2"2"292#2#2 #2#2#2#2**
\ No newline at end of file
diff --git a/data/layouts/MossdeepCity_EReaderTrainerHouse_2F_Frlg/border.bin b/data/layouts/MossdeepCity_EReaderTrainerHouse_2F_Frlg/border.bin
new file mode 100644
index 000000000000..f496f458ecf2
Binary files /dev/null and b/data/layouts/MossdeepCity_EReaderTrainerHouse_2F_Frlg/border.bin differ
diff --git a/data/layouts/MossdeepCity_EReaderTrainerHouse_2F_Frlg/map.bin b/data/layouts/MossdeepCity_EReaderTrainerHouse_2F_Frlg/map.bin
new file mode 100644
index 000000000000..399d05705f5c
--- /dev/null
+++ b/data/layouts/MossdeepCity_EReaderTrainerHouse_2F_Frlg/map.bin
@@ -0,0 +1,2 @@
+
+
6$2$2$2$2$2$2$2$2$2$2692#2#2#2#2#2#2#2#2#2#2#292#2#2#252626272#2#2#2#292#2#2#2=2>2>2?2#2#2#2#292#2#2#2E2F2F2G2#2#2#2#22#2#2#2#2#2#2#2#2#2#2"2#2#2#2#2#2#2#2#2#2#2*
\ No newline at end of file
diff --git a/data/layouts/MtEmber_Exterior_Frlg/border.bin b/data/layouts/MtEmber_Exterior_Frlg/border.bin
new file mode 100644
index 000000000000..4531975c765e
Binary files /dev/null and b/data/layouts/MtEmber_Exterior_Frlg/border.bin differ
diff --git a/data/layouts/MtEmber_Exterior_Frlg/map.bin b/data/layouts/MtEmber_Exterior_Frlg/map.bin
new file mode 100644
index 000000000000..28f5cc74919a
--- /dev/null
+++ b/data/layouts/MtEmber_Exterior_Frlg/map.bin
@@ -0,0 +1 @@
+SQQSQSQSQSQSQSSQSSQSQSQSQSSSW33UUUQUQUQUQUQUQUQUQUQUQUQUQSQQSQSQSQSQ[5SSQSSQSQSQSQSSS33WUUUQUQUQUQUQUQUQUQUQUQUQUQSQQSQSQSQ[5QSS[5SSQSQSQ[5SS[\\]UU4]QUQUQUQUQUQUQUQUQUQUQ[5QSQSQ[5QSQSSQSSSQ[5[5QSS[\\\\]UUQ4]4]QU4]QUQUQUQUQUQUQQSQSQ[5QSQSQSSQSSSQQSQSQS[\\\\\\]UQUQUQQUUQ4]QUQUQUQUQUQQSQ[5QSQSQ[5S>5SSSQQSQSQ[\\\\\\\\]QUQUQQUUQUQ4]QUQUQUQUQQ[5QSQSQ[5QSS36SSSQQSQ[\\\\\\\\\\\\]QUQQUUQUQUQ4]QUQUQUQ5QSQSQ[5QSQSS36SSSQQ[\\\\533W13334\\\\]QQUUQUQUQUQ4]QUQUQSQSQ[5QSQSQSS36SS>YYYYY5QS33333W3UQQQQQQQUUQUQUQUQUQ4]QUQ[5[5QSQSQSQSS36SS3333336QS3W33333U4YYYYYY]UQUQUQUQUQUQ4]QQSQSQSQSQ[5SS36SS333333>5S33333W3U733 00 034]QUQUQUQUQUQUQ4QSQSQSQ[5QSSS36SS33333336[\\534\\]733}3}3}33UQQUQUQUQUQUQUQUQSQSQ[5QSQSSS36S[00\\533>Y5Q[0]Q4Y?3W3333UQ4]QUQUQUQUQUQUQ[5[5QSQSQSSS36[\00\5S3333>YY0YY?3W33W33WUQUQ4]QUQUQUQUQU5QSQSQSQSQSSS3>YY005SS333333333W33333cddeU4]QUQ4]QUQUQUQUSQSQSQSQSQSSS3333336S[\\5333333333WW3333WUU4\]QUQ4]QUQUQUSQSQSQSQSQSSS3333336[\\5S33W33333333W33W3UUU4\\]QUQ4]QUQUSQ[5[5SQSQSS[\\\\5W>\\5S[5333333W33333334]UUU4\\\]QUQ4]QU[5QSQSSQSQSSQQQQQ[\\\5S[5[\\\00\\\\\\\\\]4]UUUQQQ4\]QUQ4]QSQSQSSQ[5S[\\\5QQQQQS[5[YYYY00YYYYYYYYF3Y?4]UUQ4Y]QQ4]4]QQSQSQS[5QSSQQQQ[\\\\5[5[\533333333333~30 033U4]UQO04\\]QUQ4QSQ[5SQSQS[\\5QQQQQQ[5SQQS333333333333}3}34\]UQUQO0UQQQ4]4]Q[5QSSQSQSQQQ[\\\\5QQSSQQ[\\\00\\\5334\\]QQU4]QO0UQ4\]QUQ5QSQSSQSQSQ4\\\\5Q[5QSSQQ4YYY00YY5S33UQQQ4\]UQ4G0UQUQQ4]4SQSQSSQ[5SQU4\F35[5QSQSSQQ733333336[\\]Q4\]QQUQO00UQU4\]QUSQSQS[\5SSQUO0 0NQSQSQSSQQ733333336QQQQQUQ4\\]QO
04]QUUQQ4]SQSQSQQSSSQUO 00NQ[5SQSSQQ7dddddddTQQ4\\]QU4\\\G0UQ4]UQ4]QSQSQSQQSS[\]U}3~3E5QSSQS[\\?3333333>\\]Q4\\]O0
0
00
0UQUQUQUQ4[5[5[\5SSQQQU33}36QSSQ[\\\533333334\\\\]QQ4G
0
00
04]QUQUQUQUQSQSQQSS>\\\?3336QSSQQQQQ[\533334]QQQQQ4YG
00
04\]Q4]QUQUQUQSQSQQSS333333336QS>YYYY5QQ[\00\]QQQ4YYG0
00
04]QQ4]Q4]QUQUQ[5SQQSE\\\\53336QS33333>YYYY00YYYYY?30
00
0
0
0UQ4\]Q4]Q4]QU5QS[\5SV 00 00N3336QS33333333333333333330
0
0
0
00UQUQ4\]Q4]Q4]SQSQQSS00000N3336QS333333333333333333 04\\\\\]QUQUQ4\]Q4]QSQ[5QSEY0050E\536Q[00\YYY00YYYYYYYYY\\]QQQQQQ4]4]QUQ4\]QQ[5QSQSV
0 0
0N0 00N3EYY005333333g33333334\\\\\\\\]QUQ4]QUQQQQQSQSQ[5 0
0
0N0 00N0 00 00 0N0 03333f333 00 03UQQQQQQQQ4\]QUQ4]QQQQQSQSQQS
0
0
0N000N000000N000003f3300 000UQQQQQQ4\]QQ4]QUQQQQQQSQ[\5S
0
0
0EY50EYYY005S0 00 003o33 00 004]Q4\\\\]4\\\]Q4]QQQQ4Q[5QQSSV
0
0
0VN0 00 00 0 0N[\\\00\\\\\00\]4Y]Q4YY\]QQQ4\]QQ4\\]5QSQQSS
00
00
0N0000000EYYYY00YYYYY00YY]Q4YG004\\\\]QQ4\]QQQSQSQQSS
0
00
00EYY5 00 00
00
000
0
0
0
0000 00 004YG 0 00 0UQQQQ4\\]QQQQQSQ[\5S[50
00 00 00N0 00
0
0
00
0
00
0
0
00000000O000000UQ4\\]QQQQQQQQ[5QQSSQ[\5
00000N00
00
0
0
0
0
0
0
00 0
00hiiijO00 0 00 0UQUQQQQQQ4\\\\QSQQS[5QQS0 00 00EYYYYYYYYYYYYYY50 00 00O0004\\]QUQQQ4\\]QQQQQ[\5SQ[\5S000000V000 0 000 00 00 00EY00YYG00 0UQQQQU4\\]QQQQQQQ5QQS[5QQS[\\5 00000000V000000|3}3~3 000 0000 04]4\\\]UQQQQQQQ4\\SQQSQ[\5[\\5[\\\\\\\\500 00 0|3333}3~3 00 0 000UQUQQQQUQQQQ4\\]QQSQQ[5QQ[\\5[\\5QQQQQQ[\5`ab3113^_b4\\\\]4]4\\\]Q4\\]QQQQQ[\5Q[\5QQQ[\5Q[\\\\\\\5SSQU45SQUU4\\\\]QUQQQQQUQQQQQQ4\QQ[5QQ[\\5QQ[\\\\\\5QQSSSQU76SQUUUQ4\\\\]Q4\\\]QQQ4\\]Q5QQ[\5QQQ[\\\\\\\5Q[5QSSSQU76SQUUUQUQQQQQ4]QQQQ4\\]QQQ4[\5QQ[\\5QQQQQQQQSQQSQSSSQU76SQUUUQUQ4\\\]Q4\\\]QQQ4\\]QQSQQQQQ[\\\\\\5Q[5QSQSSSQU76SQUUUQUQUQQQQ4]QQQQ4\\]QQQ
\ No newline at end of file
diff --git a/data/layouts/MtEmber_RubyPath_1F_Frlg/border.bin b/data/layouts/MtEmber_RubyPath_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/MtEmber_RubyPath_1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/MtEmber_RubyPath_1F_Frlg/map.bin b/data/layouts/MtEmber_RubyPath_1F_Frlg/map.bin
new file mode 100644
index 000000000000..bfa5e7637172
--- /dev/null
+++ b/data/layouts/MtEmber_RubyPath_1F_Frlg/map.bin
@@ -0,0 +1 @@
+22+22+2222)2222222222222222222222222222222222222222222)2222222222222222222!322222222+#322222)22222)222222222!3+222#322
\ No newline at end of file
diff --git a/data/layouts/MtEmber_RubyPath_B1F_Frlg/border.bin b/data/layouts/MtEmber_RubyPath_B1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/MtEmber_RubyPath_B1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/MtEmber_RubyPath_B1F_Frlg/map.bin b/data/layouts/MtEmber_RubyPath_B1F_Frlg/map.bin
new file mode 100644
index 000000000000..e92a275101ac
--- /dev/null
+++ b/data/layouts/MtEmber_RubyPath_B1F_Frlg/map.bin
@@ -0,0 +1 @@
+2+222222222!322222)2222#322222222222222+22222222!3222222*
\ No newline at end of file
diff --git a/data/layouts/MtEmber_RubyPath_B1F_Stairs_Frlg/border.bin b/data/layouts/MtEmber_RubyPath_B1F_Stairs_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/MtEmber_RubyPath_B1F_Stairs_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/MtEmber_RubyPath_B1F_Stairs_Frlg/map.bin b/data/layouts/MtEmber_RubyPath_B1F_Stairs_Frlg/map.bin
new file mode 100644
index 000000000000..1ac916e78599
--- /dev/null
+++ b/data/layouts/MtEmber_RubyPath_B1F_Stairs_Frlg/map.bin
@@ -0,0 +1 @@
+)2222+22+222(
\ No newline at end of file
diff --git a/data/layouts/MtEmber_RubyPath_B2F_Frlg/border.bin b/data/layouts/MtEmber_RubyPath_B2F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/MtEmber_RubyPath_B2F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/MtEmber_RubyPath_B2F_Frlg/map.bin b/data/layouts/MtEmber_RubyPath_B2F_Frlg/map.bin
new file mode 100644
index 000000000000..09813c497b07
--- /dev/null
+++ b/data/layouts/MtEmber_RubyPath_B2F_Frlg/map.bin
@@ -0,0 +1 @@
+2#3222+!322222222222222222222222222222222222222(22(
\ No newline at end of file
diff --git a/data/layouts/MtEmber_RubyPath_B2F_Stairs_Frlg/border.bin b/data/layouts/MtEmber_RubyPath_B2F_Stairs_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/MtEmber_RubyPath_B2F_Stairs_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/MtEmber_RubyPath_B2F_Stairs_Frlg/map.bin b/data/layouts/MtEmber_RubyPath_B2F_Stairs_Frlg/map.bin
new file mode 100644
index 000000000000..4c7388aa5362
--- /dev/null
+++ b/data/layouts/MtEmber_RubyPath_B2F_Stairs_Frlg/map.bin
@@ -0,0 +1 @@
+)+22222222222(*
\ No newline at end of file
diff --git a/data/layouts/MtEmber_RubyPath_B3F_Frlg/border.bin b/data/layouts/MtEmber_RubyPath_B3F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/MtEmber_RubyPath_B3F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/MtEmber_RubyPath_B3F_Frlg/map.bin b/data/layouts/MtEmber_RubyPath_B3F_Frlg/map.bin
new file mode 100644
index 000000000000..882838538265
--- /dev/null
+++ b/data/layouts/MtEmber_RubyPath_B3F_Frlg/map.bin
@@ -0,0 +1 @@
+++))222222222222222222222222222222222222)2222!322222!3222222222222222+(+222222222222222+)2+22)222+22222222222222222222222+!3222#3*22222))2222#3222#322222222!32222222++
\ No newline at end of file
diff --git a/data/layouts/MtEmber_RubyPath_B4F_Frlg/border.bin b/data/layouts/MtEmber_RubyPath_B4F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/MtEmber_RubyPath_B4F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/MtEmber_RubyPath_B4F_Frlg/map.bin b/data/layouts/MtEmber_RubyPath_B4F_Frlg/map.bin
new file mode 100644
index 000000000000..ea974a47ec2a
Binary files /dev/null and b/data/layouts/MtEmber_RubyPath_B4F_Frlg/map.bin differ
diff --git a/data/layouts/MtEmber_RubyPath_B5F_Frlg/border.bin b/data/layouts/MtEmber_RubyPath_B5F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/MtEmber_RubyPath_B5F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/MtEmber_RubyPath_B5F_Frlg/map.bin b/data/layouts/MtEmber_RubyPath_B5F_Frlg/map.bin
new file mode 100644
index 000000000000..e67aaa03d2e0
Binary files /dev/null and b/data/layouts/MtEmber_RubyPath_B5F_Frlg/map.bin differ
diff --git a/data/layouts/MtEmber_SummitPath_1F_Frlg/border.bin b/data/layouts/MtEmber_SummitPath_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/MtEmber_SummitPath_1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/MtEmber_SummitPath_1F_Frlg/map.bin b/data/layouts/MtEmber_SummitPath_1F_Frlg/map.bin
new file mode 100644
index 000000000000..40ec58172ef1
--- /dev/null
+++ b/data/layouts/MtEmber_SummitPath_1F_Frlg/map.bin
@@ -0,0 +1 @@
+2)!32222#3222222+2222*22222222)222
\ No newline at end of file
diff --git a/data/layouts/MtEmber_SummitPath_2F_Frlg/border.bin b/data/layouts/MtEmber_SummitPath_2F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/MtEmber_SummitPath_2F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/MtEmber_SummitPath_2F_Frlg/map.bin b/data/layouts/MtEmber_SummitPath_2F_Frlg/map.bin
new file mode 100644
index 000000000000..960c58b68beb
--- /dev/null
+++ b/data/layouts/MtEmber_SummitPath_2F_Frlg/map.bin
@@ -0,0 +1 @@
++222)2222222222222222222222222222222#32!3222222222)22#322222+2)222222222)222222222+22222IIIII#32226B@222!36IIIIJL@222BECHIIIIII222+BLLLLMC@2IJEKLLLLLL@2B7EC@222222IJLMCH22222#3B7EC@22IIIJ7MK@22B7777ECH+22B7LLLLMC@22B7EKH2222!3B7E7C@2222B7E77K@222IJ7E777C@222B77E7777CH#322B7LM7777C@222B7E777K@222B7E777C@22!3B7E7777C@666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666662222222222266666666666666666666622222222222666666666666666666666622222222222
\ No newline at end of file
diff --git a/data/layouts/MtEmber_SummitPath_3F_Frlg/border.bin b/data/layouts/MtEmber_SummitPath_3F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/MtEmber_SummitPath_3F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/MtEmber_SummitPath_3F_Frlg/map.bin b/data/layouts/MtEmber_SummitPath_3F_Frlg/map.bin
new file mode 100644
index 000000000000..b107b027ef40
--- /dev/null
+++ b/data/layouts/MtEmber_SummitPath_3F_Frlg/map.bin
@@ -0,0 +1 @@
+)22222222222222222*222*22!3222#322
\ No newline at end of file
diff --git a/data/layouts/MtEmber_Summit_Frlg/border.bin b/data/layouts/MtEmber_Summit_Frlg/border.bin
new file mode 100644
index 000000000000..4531975c765e
Binary files /dev/null and b/data/layouts/MtEmber_Summit_Frlg/border.bin differ
diff --git a/data/layouts/MtEmber_Summit_Frlg/map.bin b/data/layouts/MtEmber_Summit_Frlg/map.bin
new file mode 100644
index 000000000000..603170671b6c
--- /dev/null
+++ b/data/layouts/MtEmber_Summit_Frlg/map.bin
@@ -0,0 +1 @@
+QQQU4\\\\\\\\5QS[\5Q4\]U4\\\\\\5[5[\5SMU4\]U4\\\\5[5[\5SSUUU4\]U4\\5[5[5QSSSUUUU4\]UQQSQ[5[5SSSUUUUUQK22222MSQSSSSUU<<<LS33333U=L==SS22MQKLS33333ULMK2223322222WW33W2222333333333W33333W33334\3W3333W33WW3W3333U4\\5333W3333W3W334]U\5S3W3WW333W3334]4]QS[5333WW333W33UQU45[5[\5W3333W33WU4]U[5SQQS3WW1W3W4\]UQU5S[\5[\\\\]4\]4]S[\5[\\\\\\]4\]4[\5[\\\\\\\\]4\]\5[\\\\\\\\\\]4\5[\\\\\\\\\\\\]4[\\\\\\\\\\\\\\]
\ No newline at end of file
diff --git a/data/layouts/MtMoon_1F_Frlg/border.bin b/data/layouts/MtMoon_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/MtMoon_1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/MtMoon_1F_Frlg/map.bin b/data/layouts/MtMoon_1F_Frlg/map.bin
new file mode 100644
index 000000000000..0a21468552e8
Binary files /dev/null and b/data/layouts/MtMoon_1F_Frlg/map.bin differ
diff --git a/data/layouts/MtMoon_B1F_Frlg/border.bin b/data/layouts/MtMoon_B1F_Frlg/border.bin
new file mode 100644
index 000000000000..23857cf752da
--- /dev/null
+++ b/data/layouts/MtMoon_B1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/MtMoon_B1F_Frlg/map.bin b/data/layouts/MtMoon_B1F_Frlg/map.bin
new file mode 100644
index 000000000000..89714677c014
Binary files /dev/null and b/data/layouts/MtMoon_B1F_Frlg/map.bin differ
diff --git a/data/layouts/MtMoon_B2F_Frlg/border.bin b/data/layouts/MtMoon_B2F_Frlg/border.bin
new file mode 100644
index 000000000000..23857cf752da
--- /dev/null
+++ b/data/layouts/MtMoon_B2F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/MtMoon_B2F_Frlg/map.bin b/data/layouts/MtMoon_B2F_Frlg/map.bin
new file mode 100644
index 000000000000..9b546adb53d7
--- /dev/null
+++ b/data/layouts/MtMoon_B2F_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_1F_Frlg/border.bin b/data/layouts/NavelRock_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_1F_Frlg/map.bin b/data/layouts/NavelRock_1F_Frlg/map.bin
new file mode 100644
index 000000000000..6398304c99c5
--- /dev/null
+++ b/data/layouts/NavelRock_1F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_B1F_Frlg/border.bin b/data/layouts/NavelRock_B1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_B1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_B1F_Frlg/map.bin b/data/layouts/NavelRock_B1F_Frlg/map.bin
new file mode 100644
index 000000000000..856e2a21f6ae
--- /dev/null
+++ b/data/layouts/NavelRock_B1F_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B10F_Frlg/border.bin b/data/layouts/NavelRock_BasePath_B10F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B10F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B10F_Frlg/map.bin b/data/layouts/NavelRock_BasePath_B10F_Frlg/map.bin
new file mode 100644
index 000000000000..3f718d185eca
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B10F_Frlg/map.bin
@@ -0,0 +1 @@
+2222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B11F_Frlg/border.bin b/data/layouts/NavelRock_BasePath_B11F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B11F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B11F_Frlg/map.bin b/data/layouts/NavelRock_BasePath_B11F_Frlg/map.bin
new file mode 100644
index 000000000000..48a1246d488c
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B11F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B1F_Frlg/border.bin b/data/layouts/NavelRock_BasePath_B1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B1F_Frlg/map.bin b/data/layouts/NavelRock_BasePath_B1F_Frlg/map.bin
new file mode 100644
index 000000000000..48a1246d488c
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B1F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B2F_Frlg/border.bin b/data/layouts/NavelRock_BasePath_B2F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B2F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B2F_Frlg/map.bin b/data/layouts/NavelRock_BasePath_B2F_Frlg/map.bin
new file mode 100644
index 000000000000..3f718d185eca
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B2F_Frlg/map.bin
@@ -0,0 +1 @@
+2222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B3F_Frlg/border.bin b/data/layouts/NavelRock_BasePath_B3F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B3F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B3F_Frlg/map.bin b/data/layouts/NavelRock_BasePath_B3F_Frlg/map.bin
new file mode 100644
index 000000000000..48a1246d488c
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B3F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B4F_Frlg/border.bin b/data/layouts/NavelRock_BasePath_B4F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B4F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B4F_Frlg/map.bin b/data/layouts/NavelRock_BasePath_B4F_Frlg/map.bin
new file mode 100644
index 000000000000..3f718d185eca
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B4F_Frlg/map.bin
@@ -0,0 +1 @@
+2222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B5F_Frlg/border.bin b/data/layouts/NavelRock_BasePath_B5F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B5F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B5F_Frlg/map.bin b/data/layouts/NavelRock_BasePath_B5F_Frlg/map.bin
new file mode 100644
index 000000000000..48a1246d488c
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B5F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B6F_Frlg/border.bin b/data/layouts/NavelRock_BasePath_B6F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B6F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B6F_Frlg/map.bin b/data/layouts/NavelRock_BasePath_B6F_Frlg/map.bin
new file mode 100644
index 000000000000..3f718d185eca
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B6F_Frlg/map.bin
@@ -0,0 +1 @@
+2222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B7F_Frlg/border.bin b/data/layouts/NavelRock_BasePath_B7F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B7F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B7F_Frlg/map.bin b/data/layouts/NavelRock_BasePath_B7F_Frlg/map.bin
new file mode 100644
index 000000000000..48a1246d488c
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B7F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B8F_Frlg/border.bin b/data/layouts/NavelRock_BasePath_B8F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B8F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B8F_Frlg/map.bin b/data/layouts/NavelRock_BasePath_B8F_Frlg/map.bin
new file mode 100644
index 000000000000..3f718d185eca
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B8F_Frlg/map.bin
@@ -0,0 +1 @@
+2222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B9F_Frlg/border.bin b/data/layouts/NavelRock_BasePath_B9F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B9F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_BasePath_B9F_Frlg/map.bin b/data/layouts/NavelRock_BasePath_B9F_Frlg/map.bin
new file mode 100644
index 000000000000..48a1246d488c
--- /dev/null
+++ b/data/layouts/NavelRock_BasePath_B9F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_Base_Frlg/border.bin b/data/layouts/NavelRock_Base_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_Base_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_Base_Frlg/map.bin b/data/layouts/NavelRock_Base_Frlg/map.bin
new file mode 100644
index 000000000000..dcfeee21ec29
--- /dev/null
+++ b/data/layouts/NavelRock_Base_Frlg/map.bin
@@ -0,0 +1 @@
+**---.vvv6+++((**---.vvv6+++((**---.vvv6+++((**---.vvv6+++((**---.vvv6+++((**---.vvv6+++((**---.vvv6+++((**---.vvv6+++((**---.vvv6+++((**---.vvv6+++((**---.vvv6+++((**---.vvv6+++((**---.vvv6+++((**---.8886+++((**---93;3;3;3:3+++((**-99%,3,3,3#::+((**-,,-%,3#+,,+((**-,,--3++,,+((**-,,-93,3:3+,,+((**-&45,3,33/'+((**--,3,3,3,3,373++((**--,,3,3,3,3++((>><<==??
\ No newline at end of file
diff --git a/data/layouts/NavelRock_Exterior_Frlg/border.bin b/data/layouts/NavelRock_Exterior_Frlg/border.bin
new file mode 100644
index 000000000000..75f2c916c55e
--- /dev/null
+++ b/data/layouts/NavelRock_Exterior_Frlg/border.bin
@@ -0,0 +1 @@
+vvvv
\ No newline at end of file
diff --git a/data/layouts/NavelRock_Exterior_Frlg/map.bin b/data/layouts/NavelRock_Exterior_Frlg/map.bin
new file mode 100644
index 000000000000..4d169ee3a0c4
Binary files /dev/null and b/data/layouts/NavelRock_Exterior_Frlg/map.bin differ
diff --git a/data/layouts/NavelRock_Fork_Frlg/border.bin b/data/layouts/NavelRock_Fork_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_Fork_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_Fork_Frlg/map.bin b/data/layouts/NavelRock_Fork_Frlg/map.bin
new file mode 100644
index 000000000000..e6ce2d331c46
--- /dev/null
+++ b/data/layouts/NavelRock_Fork_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222222222222V2T32W222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_SummitPath_2F_Frlg/border.bin b/data/layouts/NavelRock_SummitPath_2F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_SummitPath_2F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_SummitPath_2F_Frlg/map.bin b/data/layouts/NavelRock_SummitPath_2F_Frlg/map.bin
new file mode 100644
index 000000000000..48a1246d488c
--- /dev/null
+++ b/data/layouts/NavelRock_SummitPath_2F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_SummitPath_3F_Frlg/border.bin b/data/layouts/NavelRock_SummitPath_3F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_SummitPath_3F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_SummitPath_3F_Frlg/map.bin b/data/layouts/NavelRock_SummitPath_3F_Frlg/map.bin
new file mode 100644
index 000000000000..3f718d185eca
--- /dev/null
+++ b/data/layouts/NavelRock_SummitPath_3F_Frlg/map.bin
@@ -0,0 +1 @@
+2222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_SummitPath_4F_Frlg/border.bin b/data/layouts/NavelRock_SummitPath_4F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_SummitPath_4F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_SummitPath_4F_Frlg/map.bin b/data/layouts/NavelRock_SummitPath_4F_Frlg/map.bin
new file mode 100644
index 000000000000..48a1246d488c
--- /dev/null
+++ b/data/layouts/NavelRock_SummitPath_4F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_SummitPath_5F_Frlg/border.bin b/data/layouts/NavelRock_SummitPath_5F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/NavelRock_SummitPath_5F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_SummitPath_5F_Frlg/map.bin b/data/layouts/NavelRock_SummitPath_5F_Frlg/map.bin
new file mode 100644
index 000000000000..3f718d185eca
--- /dev/null
+++ b/data/layouts/NavelRock_SummitPath_5F_Frlg/map.bin
@@ -0,0 +1 @@
+2222222
\ No newline at end of file
diff --git a/data/layouts/NavelRock_Summit_Frlg/border.bin b/data/layouts/NavelRock_Summit_Frlg/border.bin
new file mode 100644
index 000000000000..4ecad6cd2b6d
--- /dev/null
+++ b/data/layouts/NavelRock_Summit_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/NavelRock_Summit_Frlg/map.bin b/data/layouts/NavelRock_Summit_Frlg/map.bin
new file mode 100644
index 000000000000..d49777f32f71
--- /dev/null
+++ b/data/layouts/NavelRock_Summit_Frlg/map.bin
@@ -0,0 +1,2 @@
+66666666366666666666666636666666666666366666666666626666666666662666666666666222226666666666@22222@666666@:222229@666:2222296::99::99:
+9:
9:
9
\ No newline at end of file
diff --git a/data/layouts/OneIsland_Frlg/border.bin b/data/layouts/OneIsland_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/OneIsland_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/OneIsland_Frlg/map.bin b/data/layouts/OneIsland_Frlg/map.bin
new file mode 100644
index 000000000000..26fbb1b50abc
--- /dev/null
+++ b/data/layouts/OneIsland_Frlg/map.bin
@@ -0,0 +1 @@
+qqqqqqqqqqquu*1+qqqqqquuqqqqqqruuqqqqqqruu*1+qqqqqqruu*1+qqq||z&%$'&'uu*1+qqqu0200qqqurx|000|zrqqqurs3000000qqqur000000qqqur00000000000qqqur00000000||qqqur0000000000111111q|}r000000000r111111|}|z&'0000000000rhq}|||||||000|||zpqqqqq|}} # ###111# $sqqqqq||} 1++++111+,{||||###1+++++222++####!s+++++++,s
\ No newline at end of file
diff --git a/data/layouts/OneIsland_KindleRoad_EmberSpa_Frlg/border.bin b/data/layouts/OneIsland_KindleRoad_EmberSpa_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/OneIsland_KindleRoad_EmberSpa_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/OneIsland_KindleRoad_EmberSpa_Frlg/map.bin b/data/layouts/OneIsland_KindleRoad_EmberSpa_Frlg/map.bin
new file mode 100644
index 000000000000..9817d8614bf4
--- /dev/null
+++ b/data/layouts/OneIsland_KindleRoad_EmberSpa_Frlg/map.bin
@@ -0,0 +1 @@
+)''''+////+01772//)8999:-3//8'99:-30771125555-3`999&a2-3-3-3"36)7 3-3-3-3-3-3,3,3,3,3,3,3,3,3-3-3-3-3-36+7-3-3"3-3-3-3 3-3-3-3-3-3-3 3-3-3-3-3-36-3-322071313331313272)87&393939393:7+7-36031313238793939393&3:7?-3683'393:3879393'39393:77-3-36*(7-3 36557-3-367-3-3>5555+5-3-367-3-3-3-3-3-3-3>5555?-3-3"3-367 3-3-3-3"3-3-3-3-3-3-3-3-3-3-3-3-367-3-3-3-3-3-3-3-3-3-3 3-3-3-3-3-3-3644/-3-3-3-3-3-3-3-3-3-3.444444/-3-3-3.447-3-3-367-3-3-367"3-3-36/-3-367-3 367-3.7-367-367-367-367-367-367-36=36
\ No newline at end of file
diff --git a/data/layouts/OneIsland_KindleRoad_Frlg/border.bin b/data/layouts/OneIsland_KindleRoad_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/OneIsland_KindleRoad_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/OneIsland_KindleRoad_Frlg/map.bin b/data/layouts/OneIsland_KindleRoad_Frlg/map.bin
new file mode 100644
index 000000000000..4d4abca6d0f5
Binary files /dev/null and b/data/layouts/OneIsland_KindleRoad_Frlg/map.bin differ
diff --git a/data/layouts/OneIsland_PokemonCenter_1F_Frlg/border.bin b/data/layouts/OneIsland_PokemonCenter_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/OneIsland_PokemonCenter_1F_Frlg/border.bin differ
diff --git a/data/layouts/OneIsland_PokemonCenter_1F_Frlg/map.bin b/data/layouts/OneIsland_PokemonCenter_1F_Frlg/map.bin
new file mode 100644
index 000000000000..a9016b670596
--- /dev/null
+++ b/data/layouts/OneIsland_PokemonCenter_1F_Frlg/map.bin
@@ -0,0 +1 @@
+bHI``JK222c3222PQUURS 722222LMVVNOn22222222222T\XY^WnBB22222222ABFGCD222222222222E322222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/OneIsland_PokemonCenter_2F_Frlg/border.bin b/data/layouts/OneIsland_PokemonCenter_2F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/OneIsland_PokemonCenter_2F_Frlg/border.bin differ
diff --git a/data/layouts/OneIsland_PokemonCenter_2F_Frlg/map.bin b/data/layouts/OneIsland_PokemonCenter_2F_Frlg/map.bin
new file mode 100644
index 000000000000..a1b551a7369e
Binary files /dev/null and b/data/layouts/OneIsland_PokemonCenter_2F_Frlg/map.bin differ
diff --git a/data/layouts/OneIsland_TreasureBeach_Frlg/border.bin b/data/layouts/OneIsland_TreasureBeach_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/OneIsland_TreasureBeach_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/OneIsland_TreasureBeach_Frlg/map.bin b/data/layouts/OneIsland_TreasureBeach_Frlg/map.bin
new file mode 100644
index 000000000000..fe6ef01a73e3
Binary files /dev/null and b/data/layouts/OneIsland_TreasureBeach_Frlg/map.bin differ
diff --git a/data/layouts/PalletTown_Frlg/border.bin b/data/layouts/PalletTown_Frlg/border.bin
new file mode 100644
index 000000000000..a701312cfff9
Binary files /dev/null and b/data/layouts/PalletTown_Frlg/border.bin differ
diff --git a/data/layouts/PalletTown_Frlg/map.bin b/data/layouts/PalletTown_Frlg/map.bin
new file mode 100644
index 000000000000..f2113394f22d
--- /dev/null
+++ b/data/layouts/PalletTown_Frlg/map.bin
@@ -0,0 +1 @@
+22$%$%$%$%$'22&%$%$%$%222222222222222222222222222222222222222222222222222202220222222222222222222222222222222222222222222222222222222222222222222222222222222222222200000222222220000022222222 00 00222222222222222222222222222222222222222222222222222##2222222222200 00 0*++,2222222222200000*++,00000000000
\ No newline at end of file
diff --git a/data/layouts/PalletTown_PlayersHouse_1F_Frlg/border.bin b/data/layouts/PalletTown_PlayersHouse_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PalletTown_PlayersHouse_1F_Frlg/border.bin differ
diff --git a/data/layouts/PalletTown_PlayersHouse_1F_Frlg/map.bin b/data/layouts/PalletTown_PlayersHouse_1F_Frlg/map.bin
new file mode 100644
index 000000000000..b93d823c96d0
--- /dev/null
+++ b/data/layouts/PalletTown_PlayersHouse_1F_Frlg/map.bin
@@ -0,0 +1 @@
+ ./ -!" 1267(5)*((90:0>0?0 0=0 0 0 00 000C0D0D0D0D0F0%0&0'0 000S0K0LMN0V0000 000S0K0TUN0V0000W000[0\0\0\0\0^000G0_0000000000O 000000000000
\ No newline at end of file
diff --git a/data/layouts/PalletTown_PlayersHouse_2F_Frlg/border.bin b/data/layouts/PalletTown_PlayersHouse_2F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PalletTown_PlayersHouse_2F_Frlg/border.bin differ
diff --git a/data/layouts/PalletTown_PlayersHouse_2F_Frlg/map.bin b/data/layouts/PalletTown_PlayersHouse_2F_Frlg/map.bin
new file mode 100644
index 000000000000..b5d3bee2deee
Binary files /dev/null and b/data/layouts/PalletTown_PlayersHouse_2F_Frlg/map.bin differ
diff --git a/data/layouts/PalletTown_ProfessorOaksLab_Frlg/border.bin b/data/layouts/PalletTown_ProfessorOaksLab_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PalletTown_ProfessorOaksLab_Frlg/border.bin differ
diff --git a/data/layouts/PalletTown_ProfessorOaksLab_Frlg/map.bin b/data/layouts/PalletTown_ProfessorOaksLab_Frlg/map.bin
new file mode 100644
index 000000000000..1067109ab084
--- /dev/null
+++ b/data/layouts/PalletTown_ProfessorOaksLab_Frlg/map.bin
@@ -0,0 +1 @@
+mmniiklkluvstst222222222222222222222222222222222222222222222222222222222222222222222sstst222ststt22222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/PalletTown_RivalsHouse_Frlg/border.bin b/data/layouts/PalletTown_RivalsHouse_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PalletTown_RivalsHouse_Frlg/border.bin differ
diff --git a/data/layouts/PalletTown_RivalsHouse_Frlg/map.bin b/data/layouts/PalletTown_RivalsHouse_Frlg/map.bin
new file mode 100644
index 000000000000..a29b5dbdc63d
--- /dev/null
+++ b/data/layouts/PalletTown_RivalsHouse_Frlg/map.bin
@@ -0,0 +1 @@
+ ./ -!" +,1267(5)*((3490:0>0?0 0=0 0 0 0 0 0;0<0 0000C0D0D0D0D0F0000 0000S0K0LMN0V0000 0000S0K0TUN0V0000 0000[0\0\0\0\0^0000W000000000000G0_00000000000O4444444444
\ No newline at end of file
diff --git a/data/layouts/PewterCity_Frlg/border.bin b/data/layouts/PewterCity_Frlg/border.bin
new file mode 100644
index 000000000000..a701312cfff9
Binary files /dev/null and b/data/layouts/PewterCity_Frlg/border.bin differ
diff --git a/data/layouts/PewterCity_Frlg/map.bin b/data/layouts/PewterCity_Frlg/map.bin
new file mode 100644
index 000000000000..fc42368cb17c
--- /dev/null
+++ b/data/layouts/PewterCity_Frlg/map.bin
@@ -0,0 +1 @@
+$%$%$%$%2222$%$%$%$%$%000000000000000000000000000000000000000000000000000000000 00 000 00 0000000&%00000200 00 000 00 000222000001111111111111111111000000022222111001111111111111111111 0000000111111111111111111111100000001111111111111111111111 00 00 00011111100 091:1:1:1:1:1;1 0001111111111111111111110ABBBBBC0111111111111111111111IJJJJJK111111111111111111111`1PQRSTUV 0111 0(0)0*0+00000000111111&'hX1Y1Z[\]1^10&'111001230000000111111111111111110111089:;00000111111111111111110111 0@Abc$%0000011111111111111111011111111111111111$%$%$%$'11111111111111111111 00 00 00000000000{1|1}1~1100111111111111111111110000000000000HIJK11100000000000011111 00 00 000000000PQRS11100111000000000 00 00 00XYZ[1110&%$%$%$%$'01110000000&'`ab&'111 01110 00 00 000111111111110000000000111002222201111111111100000000001110 0011111111111000000000011100000 00000011100000000001110 00000 00 001110011101111111111111111111111111111111110111111111111111111111111111111111 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
\ No newline at end of file
diff --git a/data/layouts/PewterCity_Gym_Frlg/border.bin b/data/layouts/PewterCity_Gym_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PewterCity_Gym_Frlg/border.bin differ
diff --git a/data/layouts/PewterCity_Gym_Frlg/map.bin b/data/layouts/PewterCity_Gym_Frlg/map.bin
new file mode 100644
index 000000000000..7a22de0f9451
--- /dev/null
+++ b/data/layouts/PewterCity_Gym_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222tuv
\ No newline at end of file
diff --git a/data/layouts/PewterCity_Museum_1F_Frlg/border.bin b/data/layouts/PewterCity_Museum_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PewterCity_Museum_1F_Frlg/border.bin differ
diff --git a/data/layouts/PewterCity_Museum_1F_Frlg/map.bin b/data/layouts/PewterCity_Museum_1F_Frlg/map.bin
new file mode 100644
index 000000000000..1485da6ef24e
--- /dev/null
+++ b/data/layouts/PewterCity_Museum_1F_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/PewterCity_Museum_2F_Frlg/border.bin b/data/layouts/PewterCity_Museum_2F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PewterCity_Museum_2F_Frlg/border.bin differ
diff --git a/data/layouts/PewterCity_Museum_2F_Frlg/map.bin b/data/layouts/PewterCity_Museum_2F_Frlg/map.bin
new file mode 100644
index 000000000000..d8d372f70d2c
--- /dev/null
+++ b/data/layouts/PewterCity_Museum_2F_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/PokemonCenter_1F_Frlg/border.bin b/data/layouts/PokemonCenter_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PokemonCenter_1F_Frlg/border.bin differ
diff --git a/data/layouts/PokemonCenter_1F_Frlg/map.bin b/data/layouts/PokemonCenter_1F_Frlg/map.bin
new file mode 100644
index 000000000000..590f4798938e
--- /dev/null
+++ b/data/layouts/PokemonCenter_1F_Frlg/map.bin
@@ -0,0 +1 @@
+2b22222c322222222222222222222222222222222222222222BB222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/PokemonCenter_2F_Frlg/border.bin b/data/layouts/PokemonCenter_2F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PokemonCenter_2F_Frlg/border.bin differ
diff --git a/data/layouts/PokemonCenter_2F_Frlg/map.bin b/data/layouts/PokemonCenter_2F_Frlg/map.bin
new file mode 100644
index 000000000000..a1b551a7369e
Binary files /dev/null and b/data/layouts/PokemonCenter_2F_Frlg/map.bin differ
diff --git a/data/layouts/PokemonLeague_AgathasRoom_Frlg/border.bin b/data/layouts/PokemonLeague_AgathasRoom_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PokemonLeague_AgathasRoom_Frlg/border.bin differ
diff --git a/data/layouts/PokemonLeague_AgathasRoom_Frlg/map.bin b/data/layouts/PokemonLeague_AgathasRoom_Frlg/map.bin
new file mode 100644
index 000000000000..718b7678cea3
Binary files /dev/null and b/data/layouts/PokemonLeague_AgathasRoom_Frlg/map.bin differ
diff --git a/data/layouts/PokemonLeague_BrunosRoom_Frlg/border.bin b/data/layouts/PokemonLeague_BrunosRoom_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PokemonLeague_BrunosRoom_Frlg/border.bin differ
diff --git a/data/layouts/PokemonLeague_BrunosRoom_Frlg/map.bin b/data/layouts/PokemonLeague_BrunosRoom_Frlg/map.bin
new file mode 100644
index 000000000000..96107bfa1eec
--- /dev/null
+++ b/data/layouts/PokemonLeague_BrunosRoom_Frlg/map.bin
@@ -0,0 +1 @@
+RSE3KF322222E3KF3L3P3222222L3P322Y2222222Y2X3[222222X3[22Q32222222Q322Y2222222Y2X3[222222X3[22222222222201289:
\ No newline at end of file
diff --git a/data/layouts/PokemonLeague_ChampionsRoom_Frlg/border.bin b/data/layouts/PokemonLeague_ChampionsRoom_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PokemonLeague_ChampionsRoom_Frlg/border.bin differ
diff --git a/data/layouts/PokemonLeague_ChampionsRoom_Frlg/map.bin b/data/layouts/PokemonLeague_ChampionsRoom_Frlg/map.bin
new file mode 100644
index 000000000000..3e83caa24d6b
--- /dev/null
+++ b/data/layouts/PokemonLeague_ChampionsRoom_Frlg/map.bin
@@ -0,0 +1 @@
+7733333333333333
\ No newline at end of file
diff --git a/data/layouts/PokemonLeague_HallOfFame_Frlg/border.bin b/data/layouts/PokemonLeague_HallOfFame_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PokemonLeague_HallOfFame_Frlg/border.bin differ
diff --git a/data/layouts/PokemonLeague_HallOfFame_Frlg/map.bin b/data/layouts/PokemonLeague_HallOfFame_Frlg/map.bin
new file mode 100644
index 000000000000..e8a598e9b3b0
--- /dev/null
+++ b/data/layouts/PokemonLeague_HallOfFame_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/PokemonLeague_LancesRoom_Frlg/border.bin b/data/layouts/PokemonLeague_LancesRoom_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PokemonLeague_LancesRoom_Frlg/border.bin differ
diff --git a/data/layouts/PokemonLeague_LancesRoom_Frlg/map.bin b/data/layouts/PokemonLeague_LancesRoom_Frlg/map.bin
new file mode 100644
index 000000000000..0ba5c9ff0362
--- /dev/null
+++ b/data/layouts/PokemonLeague_LancesRoom_Frlg/map.bin
@@ -0,0 +1 @@
+OW3r3333333s33j33333333k333p33 3!3"333q33x3&3#3$3%3'33y33333333333333h33.3+3,3-3/33i333333333333333p33(3)3*333q33333333333333x3222223y3333333@2333@2322222222222333333I?333I?3673@33333>?3H333333A233A23?32A233A2333333333I?33I?333I?33I?3333333333333333333333333333333333333333333333333@233@2333@233@233333333222222222222222
\ No newline at end of file
diff --git a/data/layouts/PokemonLeague_LoreleisRoom_Frlg/border.bin b/data/layouts/PokemonLeague_LoreleisRoom_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PokemonLeague_LoreleisRoom_Frlg/border.bin differ
diff --git a/data/layouts/PokemonLeague_LoreleisRoom_Frlg/map.bin b/data/layouts/PokemonLeague_LoreleisRoom_Frlg/map.bin
new file mode 100644
index 000000000000..340b78d78b40
--- /dev/null
+++ b/data/layouts/PokemonLeague_LoreleisRoom_Frlg/map.bin
@@ -0,0 +1 @@
+CD2I2222222I22A32222222A322J2222222J22M2222222M22B32222222B322J2222222J22M2222222M222222222222
\ No newline at end of file
diff --git a/data/layouts/PokemonMansion_1F_Frlg/border.bin b/data/layouts/PokemonMansion_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PokemonMansion_1F_Frlg/border.bin differ
diff --git a/data/layouts/PokemonMansion_1F_Frlg/map.bin b/data/layouts/PokemonMansion_1F_Frlg/map.bin
new file mode 100644
index 000000000000..491753551ccb
Binary files /dev/null and b/data/layouts/PokemonMansion_1F_Frlg/map.bin differ
diff --git a/data/layouts/PokemonMansion_2F_Frlg/border.bin b/data/layouts/PokemonMansion_2F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PokemonMansion_2F_Frlg/border.bin differ
diff --git a/data/layouts/PokemonMansion_2F_Frlg/map.bin b/data/layouts/PokemonMansion_2F_Frlg/map.bin
new file mode 100644
index 000000000000..87db6b0ea012
Binary files /dev/null and b/data/layouts/PokemonMansion_2F_Frlg/map.bin differ
diff --git a/data/layouts/PokemonMansion_3F_Frlg/border.bin b/data/layouts/PokemonMansion_3F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PokemonMansion_3F_Frlg/border.bin differ
diff --git a/data/layouts/PokemonMansion_3F_Frlg/map.bin b/data/layouts/PokemonMansion_3F_Frlg/map.bin
new file mode 100644
index 000000000000..9a05ce1b8c22
Binary files /dev/null and b/data/layouts/PokemonMansion_3F_Frlg/map.bin differ
diff --git a/data/layouts/PokemonMansion_B1F_Frlg/border.bin b/data/layouts/PokemonMansion_B1F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PokemonMansion_B1F_Frlg/border.bin differ
diff --git a/data/layouts/PokemonMansion_B1F_Frlg/map.bin b/data/layouts/PokemonMansion_B1F_Frlg/map.bin
new file mode 100644
index 000000000000..a7b0eeeb13e4
--- /dev/null
+++ b/data/layouts/PokemonMansion_B1F_Frlg/map.bin
@@ -0,0 +1 @@
+22l3l3m322l3m3222l3l3l322m3m3n3n3n3n322222222222222222222222222222222222322222222222222222222R322S3222Q322222,2222222222222\3]3^32222222R3R3W3S32222Q322.2222[32222222222622Z32[3222P22222222222d3e3f32222X222222222222222222222222222b22222222222222222222222222222222222j22222222222222222222222222222222222r222222222222222222222222-R322S3222Q322222222222222222222S322222252222222222222222222222222222i3i3i3222i3i3i32222222222222222222222222aaa222aaa222222222222222222R3S3222Q3.222222222222222222222222222222262Y3Y3Y3222Y3Y3Y32222Q322S3222Q322S32222222aaa222aaa2222222222222-R3222222222222222222222225222TUV2222222222222n3n322222l3m32222222222222222222222222222Q3222.222222222222222222\3]3^32222222226222222222222222222v[322222222t222222222222222222Z32322222222222222222222222222d3e3f32,22222222c322222222222222222222222222222222k3-R322222222222222R322222222R3222222222.129:AB
\ No newline at end of file
diff --git a/data/layouts/PokemonTower_1F_Frlg/border.bin b/data/layouts/PokemonTower_1F_Frlg/border.bin
new file mode 100644
index 000000000000..efef023e6f15
--- /dev/null
+++ b/data/layouts/PokemonTower_1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/PokemonTower_1F_Frlg/map.bin b/data/layouts/PokemonTower_1F_Frlg/map.bin
new file mode 100644
index 000000000000..f393c9f34da1
--- /dev/null
+++ b/data/layouts/PokemonTower_1F_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/PokemonTower_2F_Frlg/border.bin b/data/layouts/PokemonTower_2F_Frlg/border.bin
new file mode 100644
index 000000000000..efef023e6f15
--- /dev/null
+++ b/data/layouts/PokemonTower_2F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/PokemonTower_2F_Frlg/map.bin b/data/layouts/PokemonTower_2F_Frlg/map.bin
new file mode 100644
index 000000000000..0d1e67b03352
--- /dev/null
+++ b/data/layouts/PokemonTower_2F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222662222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/PokemonTower_3F_Frlg/border.bin b/data/layouts/PokemonTower_3F_Frlg/border.bin
new file mode 100644
index 000000000000..efef023e6f15
--- /dev/null
+++ b/data/layouts/PokemonTower_3F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/PokemonTower_3F_Frlg/map.bin b/data/layouts/PokemonTower_3F_Frlg/map.bin
new file mode 100644
index 000000000000..c591995c15c0
--- /dev/null
+++ b/data/layouts/PokemonTower_3F_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222222222222222222222222222222222222222222222222222222222222622222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/PokemonTower_4F_Frlg/border.bin b/data/layouts/PokemonTower_4F_Frlg/border.bin
new file mode 100644
index 000000000000..efef023e6f15
--- /dev/null
+++ b/data/layouts/PokemonTower_4F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/PokemonTower_4F_Frlg/map.bin b/data/layouts/PokemonTower_4F_Frlg/map.bin
new file mode 100644
index 000000000000..eebe48c134f2
--- /dev/null
+++ b/data/layouts/PokemonTower_4F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222622222222222222222222222222226622222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/PokemonTower_5F_Frlg/border.bin b/data/layouts/PokemonTower_5F_Frlg/border.bin
new file mode 100644
index 000000000000..efef023e6f15
--- /dev/null
+++ b/data/layouts/PokemonTower_5F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/PokemonTower_5F_Frlg/map.bin b/data/layouts/PokemonTower_5F_Frlg/map.bin
new file mode 100644
index 000000000000..efc99cca9005
--- /dev/null
+++ b/data/layouts/PokemonTower_5F_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222622222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/PokemonTower_6F_Frlg/border.bin b/data/layouts/PokemonTower_6F_Frlg/border.bin
new file mode 100644
index 000000000000..efef023e6f15
--- /dev/null
+++ b/data/layouts/PokemonTower_6F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/PokemonTower_6F_Frlg/map.bin b/data/layouts/PokemonTower_6F_Frlg/map.bin
new file mode 100644
index 000000000000..fb8746f20ec7
--- /dev/null
+++ b/data/layouts/PokemonTower_6F_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222222222222222222222222222222222222222222222222222222222222222222222226622222222222222222222222222222222222222222222222622222222222222222
\ No newline at end of file
diff --git a/data/layouts/PokemonTower_7F_Frlg/border.bin b/data/layouts/PokemonTower_7F_Frlg/border.bin
new file mode 100644
index 000000000000..efef023e6f15
--- /dev/null
+++ b/data/layouts/PokemonTower_7F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/PokemonTower_7F_Frlg/map.bin b/data/layouts/PokemonTower_7F_Frlg/map.bin
new file mode 100644
index 000000000000..7554673cf602
--- /dev/null
+++ b/data/layouts/PokemonTower_7F_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222662222222222
\ No newline at end of file
diff --git a/data/layouts/PowerPlant_Frlg/border.bin b/data/layouts/PowerPlant_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/PowerPlant_Frlg/border.bin differ
diff --git a/data/layouts/PowerPlant_Frlg/map.bin b/data/layouts/PowerPlant_Frlg/map.bin
new file mode 100644
index 000000000000..48a6e198497b
Binary files /dev/null and b/data/layouts/PowerPlant_Frlg/map.bin differ
diff --git a/data/layouts/Prototype_SeviiIsle_22_Frlg/border.bin b/data/layouts/Prototype_SeviiIsle_22_Frlg/border.bin
new file mode 100644
index 000000000000..d9994d6cdc78
--- /dev/null
+++ b/data/layouts/Prototype_SeviiIsle_22_Frlg/border.bin
@@ -0,0 +1 @@
+++++
\ No newline at end of file
diff --git a/data/layouts/Prototype_SeviiIsle_22_Frlg/map.bin b/data/layouts/Prototype_SeviiIsle_22_Frlg/map.bin
new file mode 100644
index 000000000000..a4b5b8b853bb
--- /dev/null
+++ b/data/layouts/Prototype_SeviiIsle_22_Frlg/map.bin
@@ -0,0 +1 @@
++++++
+++++++++++++++
.1-
++++++++++++11111111++++++++++++11111111-
+++++++
.111111111111+++++++11111111111111-
+++111111111111111111+++111111111111111111+++111111111111111111-
+&1111111111111111111+&1111111111111++++
.1111111111111+
.111111111111111%+11111111111111%++11111111111%++++++&111111111+++++++++11111111%+++++++++111111%++++++++++&1111++++++++++++++1111++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\ No newline at end of file
diff --git a/data/layouts/Prototype_SeviiIsle_23_East_Frlg/border.bin b/data/layouts/Prototype_SeviiIsle_23_East_Frlg/border.bin
new file mode 100644
index 000000000000..d9994d6cdc78
--- /dev/null
+++ b/data/layouts/Prototype_SeviiIsle_23_East_Frlg/border.bin
@@ -0,0 +1 @@
+++++
\ No newline at end of file
diff --git a/data/layouts/Prototype_SeviiIsle_23_East_Frlg/map.bin b/data/layouts/Prototype_SeviiIsle_23_East_Frlg/map.bin
new file mode 100644
index 000000000000..5bc807eea8de
--- /dev/null
+++ b/data/layouts/Prototype_SeviiIsle_23_East_Frlg/map.bin
@@ -0,0 +1 @@
++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++1111111111+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1111111111111+++++++++++++++++++++++++++++++++
.1111111111++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.1111111111111+++++++++++++++++++++++++++++++++1111111111111-
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1111111111111111-
+++++++++++++++++++++++++++++++111111111111111++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++111111111111111111++++++++++++++++++++++++++++++.1111111111+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.1111111111111++++++++++++++++++++++++++++++11qqq1111+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++11qqq1111++++++++++++++++++++++++++++++qqqqqqqq111+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++qqqqqqqqqqq111++++++++++++++++++++++++++++++qqqqqqqqqqq111+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++qqqqqqqqqqqqqq111++++++++++++++++++++++++++++++qqqqqqqqqq11%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++qqqqqqqqqqqqq11%++++++++++++++++++++++++++++++qqqqqqqy111++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++qqqqqqqqqqy111+++++++++++++++++++++++++++++++&qqqqqy1111%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&qqqqqyyyy1111%++++++++++++++++++++++++++++++++yyq1111%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++yyq1111111%+++++++++++++++++++++++++++++++++&y111%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&y111111%++++++++++++++++++++++++++++++++++++++1111%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1111%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\ No newline at end of file
diff --git a/data/layouts/Prototype_SeviiIsle_23_West_Frlg/border.bin b/data/layouts/Prototype_SeviiIsle_23_West_Frlg/border.bin
new file mode 100644
index 000000000000..d9994d6cdc78
--- /dev/null
+++ b/data/layouts/Prototype_SeviiIsle_23_West_Frlg/border.bin
@@ -0,0 +1 @@
+++++
\ No newline at end of file
diff --git a/data/layouts/Prototype_SeviiIsle_23_West_Frlg/map.bin b/data/layouts/Prototype_SeviiIsle_23_West_Frlg/map.bin
new file mode 100644
index 000000000000..667f4a779021
--- /dev/null
+++ b/data/layouts/Prototype_SeviiIsle_23_West_Frlg/map.bin
@@ -0,0 +1 @@
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++
.1111++++++++++++11111111-
++++++++++1111111111+++++++
.1111111111+++++++1111111111111-
+++++111111111111111++++.1111111111++++11qqq1111++++qqqqqqqq111++++qqqqqqqqqqq111++++qqqqqqqqqqq111++++qqqqqqqqqqq111++++qqqqqqqqqq1%++++qqqqqqqy11++++&qqqqqy1111+++++yyq1111%+++++&y111%++++++++++1111%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\ No newline at end of file
diff --git a/data/layouts/Prototype_SeviiIsle_24_Frlg/border.bin b/data/layouts/Prototype_SeviiIsle_24_Frlg/border.bin
new file mode 100644
index 000000000000..d9994d6cdc78
--- /dev/null
+++ b/data/layouts/Prototype_SeviiIsle_24_Frlg/border.bin
@@ -0,0 +1 @@
+++++
\ No newline at end of file
diff --git a/data/layouts/Prototype_SeviiIsle_24_Frlg/map.bin b/data/layouts/Prototype_SeviiIsle_24_Frlg/map.bin
new file mode 100644
index 000000000000..ce93426c585b
--- /dev/null
+++ b/data/layouts/Prototype_SeviiIsle_24_Frlg/map.bin
@@ -0,0 +1 @@
++++++++++++++++++++++++++,21313131313141)++++++++,213131hiiiiij313141)+++++,hiiqqqqqqqiij)++++,21pqqqyyyqqqr3131)++,hqqyz 000xyqij 0*++,pqz 0 0 00000pqqr 0*++,pqr00 0hij00xqqj*++,pqr000pqr000pqqr*++,pqr00 0xyz0 00pqqr*++,pqqj0 0 00 00 00pqz*++,xqr0 0 00 0 00hqqr"1++0$xqij0 0000pqz*++++0$xyr00 0 0hqz"1+++++0#$xz 0 000xyz"1++++++++0#########1++++
\ No newline at end of file
diff --git a/data/layouts/Prototype_SeviiIsle_6_Frlg/border.bin b/data/layouts/Prototype_SeviiIsle_6_Frlg/border.bin
new file mode 100644
index 000000000000..d9994d6cdc78
--- /dev/null
+++ b/data/layouts/Prototype_SeviiIsle_6_Frlg/border.bin
@@ -0,0 +1 @@
+++++
\ No newline at end of file
diff --git a/data/layouts/Prototype_SeviiIsle_6_Frlg/map.bin b/data/layouts/Prototype_SeviiIsle_6_Frlg/map.bin
new file mode 100644
index 000000000000..cbd97e3616ae
--- /dev/null
+++ b/data/layouts/Prototype_SeviiIsle_6_Frlg/map.bin
@@ -0,0 +1 @@
++
\ No newline at end of file
diff --git a/data/layouts/Prototype_SeviiIsle_7_Frlg/border.bin b/data/layouts/Prototype_SeviiIsle_7_Frlg/border.bin
new file mode 100644
index 000000000000..d9994d6cdc78
--- /dev/null
+++ b/data/layouts/Prototype_SeviiIsle_7_Frlg/border.bin
@@ -0,0 +1 @@
+++++
\ No newline at end of file
diff --git a/data/layouts/Prototype_SeviiIsle_7_Frlg/map.bin b/data/layouts/Prototype_SeviiIsle_7_Frlg/map.bin
new file mode 100644
index 000000000000..e6859e745114
--- /dev/null
+++ b/data/layouts/Prototype_SeviiIsle_7_Frlg/map.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/Prototype_SeviiIsle_8_Frlg/border.bin b/data/layouts/Prototype_SeviiIsle_8_Frlg/border.bin
new file mode 100644
index 000000000000..d9994d6cdc78
--- /dev/null
+++ b/data/layouts/Prototype_SeviiIsle_8_Frlg/border.bin
@@ -0,0 +1 @@
+++++
\ No newline at end of file
diff --git a/data/layouts/Prototype_SeviiIsle_8_Frlg/map.bin b/data/layouts/Prototype_SeviiIsle_8_Frlg/map.bin
new file mode 100644
index 000000000000..7f730c59669e
Binary files /dev/null and b/data/layouts/Prototype_SeviiIsle_8_Frlg/map.bin differ
diff --git a/data/layouts/Prototype_SeviiIsle_9_Frlg/border.bin b/data/layouts/Prototype_SeviiIsle_9_Frlg/border.bin
new file mode 100644
index 000000000000..d9994d6cdc78
--- /dev/null
+++ b/data/layouts/Prototype_SeviiIsle_9_Frlg/border.bin
@@ -0,0 +1 @@
+++++
\ No newline at end of file
diff --git a/data/layouts/Prototype_SeviiIsle_9_Frlg/map.bin b/data/layouts/Prototype_SeviiIsle_9_Frlg/map.bin
new file mode 100644
index 000000000000..616f50967fab
--- /dev/null
+++ b/data/layouts/Prototype_SeviiIsle_9_Frlg/map.bin
@@ -0,0 +1 @@
+qqqqqqu+++++++++++++++qqqqqqu+++++++++++++++qqqqqqu+++++++++++++++qqqqqqu+++++++++++++++qqqqqqu+++++++++++++++||||||+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\ No newline at end of file
diff --git a/data/layouts/RS_BattleTower_Frlg/border.bin b/data/layouts/RS_BattleTower_Frlg/border.bin
new file mode 100644
index 000000000000..c3fe51511d0d
--- /dev/null
+++ b/data/layouts/RS_BattleTower_Frlg/border.bin
@@ -0,0 +1 @@
+pppp
\ No newline at end of file
diff --git a/data/layouts/RS_BattleTower_Frlg/map.bin b/data/layouts/RS_BattleTower_Frlg/map.bin
new file mode 100644
index 000000000000..6e9f6adb6fae
--- /dev/null
+++ b/data/layouts/RS_BattleTower_Frlg/map.bin
@@ -0,0 +1 @@
+ppppppprIJJxyz{bJJ`tp1ppppppppppprIJJxyz{bJJ`tpppppppprk0rIJJxyz{bJJ`s0mtppppprks0jIJJxyz{bJJ`k00mtpppxsqsk00HIJJxyz{bJJ`a22umtppskssHIJJxyz{bJJ`auuqutpssqss0HIJJKLMNOJJ`a2uuquuyssqss00PQRRSTUVWRRhi22uuquuyssks0X2Y2Z2Z2[\]^_Z2Z2p2q22uuquusssqs000w2o22c2d2e2f2g2222222uuquusssqs00w2o2l2m2n22222uut}usssqs0000000t2u2v2000000t}uuqusssq{00000|2}2~200000ut}ut}ss{qs0000000000000t}uquus{sq{000000000ut}t}up{s{|{00000t}uququps{qsq{||||000||||}t}ququpp{{{||000}qququppsqsqqqqt000qqqt|}t}pppsq{||||}q]^0^0^0_q{|||}qquppp{||]^0^0^0_|||}pppp]^0^0^0_pppppppppppppp]^0^0^0^0V0V0V0V0V0V0Wppppppppppppppppp]^0^0^0^0^0^0^0^0^0^0_pppppppppppppppp22pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp
\ No newline at end of file
diff --git a/data/layouts/RS_PokemonCenter_1F_Frlg/border.bin b/data/layouts/RS_PokemonCenter_1F_Frlg/border.bin
new file mode 100644
index 000000000000..efef023e6f15
--- /dev/null
+++ b/data/layouts/RS_PokemonCenter_1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/RS_PokemonCenter_1F_Frlg/map.bin b/data/layouts/RS_PokemonCenter_1F_Frlg/map.bin
new file mode 100644
index 000000000000..f84061f08fa1
--- /dev/null
+++ b/data/layouts/RS_PokemonCenter_1F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222 3 3222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/RS_SafariZone_Entrance_Frlg/border.bin b/data/layouts/RS_SafariZone_Entrance_Frlg/border.bin
new file mode 100644
index 000000000000..f496f458ecf2
Binary files /dev/null and b/data/layouts/RS_SafariZone_Entrance_Frlg/border.bin differ
diff --git a/data/layouts/RS_SafariZone_Entrance_Frlg/map.bin b/data/layouts/RS_SafariZone_Entrance_Frlg/map.bin
new file mode 100644
index 000000000000..35c1badacb16
--- /dev/null
+++ b/data/layouts/RS_SafariZone_Entrance_Frlg/map.bin
@@ -0,0 +1 @@
+]x2p2p2p2p2p22222e2x2p2p2p2p22h2h2h2h2h22h22h2h22\2h2h2h2h2h2q2Y2Z2Y2Z2p2y2h2h2h2h22d6h2h2h2h2ababh2h2h2h2h2h2h22h2h2h222\2h2h2h2dh2h2h2x22h2h2h222h2h2h222h2h2h2\2h2h2h2q22d6h2h2t6
\ No newline at end of file
diff --git a/data/layouts/RS_SafariZone_Northeast_Frlg/border.bin b/data/layouts/RS_SafariZone_Northeast_Frlg/border.bin
new file mode 100644
index 000000000000..03bcafef11c0
--- /dev/null
+++ b/data/layouts/RS_SafariZone_Northeast_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/RS_SafariZone_Northeast_Frlg/map.bin b/data/layouts/RS_SafariZone_Northeast_Frlg/map.bin
new file mode 100644
index 000000000000..d5e7fd825182
Binary files /dev/null and b/data/layouts/RS_SafariZone_Northeast_Frlg/map.bin differ
diff --git a/data/layouts/RS_SafariZone_RestHouse_Frlg/border.bin b/data/layouts/RS_SafariZone_RestHouse_Frlg/border.bin
new file mode 100644
index 000000000000..f496f458ecf2
Binary files /dev/null and b/data/layouts/RS_SafariZone_RestHouse_Frlg/border.bin differ
diff --git a/data/layouts/RS_SafariZone_RestHouse_Frlg/map.bin b/data/layouts/RS_SafariZone_RestHouse_Frlg/map.bin
new file mode 100644
index 000000000000..c57c99c7baf7
--- /dev/null
+++ b/data/layouts/RS_SafariZone_RestHouse_Frlg/map.bin
@@ -0,0 +1 @@
+
$2$2$2$2$2$2$2$2$2$292#24266<2#2#2#2#292#24266<2#2#2#2#292#2#2#2#2#2#2#2#2#292#2#2 #2#2#2#2#2
\ No newline at end of file
diff --git a/data/layouts/RS_SafariZone_Southeast_Frlg/border.bin b/data/layouts/RS_SafariZone_Southeast_Frlg/border.bin
new file mode 100644
index 000000000000..03bcafef11c0
--- /dev/null
+++ b/data/layouts/RS_SafariZone_Southeast_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/RS_SafariZone_Southeast_Frlg/map.bin b/data/layouts/RS_SafariZone_Southeast_Frlg/map.bin
new file mode 100644
index 000000000000..5407981441c2
Binary files /dev/null and b/data/layouts/RS_SafariZone_Southeast_Frlg/map.bin differ
diff --git a/data/layouts/RS_SafariZone_Southwest_Frlg/border.bin b/data/layouts/RS_SafariZone_Southwest_Frlg/border.bin
new file mode 100644
index 000000000000..03bcafef11c0
--- /dev/null
+++ b/data/layouts/RS_SafariZone_Southwest_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/RS_SafariZone_Southwest_Frlg/map.bin b/data/layouts/RS_SafariZone_Southwest_Frlg/map.bin
new file mode 100644
index 000000000000..0074b6e552b2
Binary files /dev/null and b/data/layouts/RS_SafariZone_Southwest_Frlg/map.bin differ
diff --git a/data/layouts/RecordCorner_Frlg/border.bin b/data/layouts/RecordCorner_Frlg/border.bin
new file mode 100644
index 000000000000..efef023e6f15
--- /dev/null
+++ b/data/layouts/RecordCorner_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/RecordCorner_Frlg/map.bin b/data/layouts/RecordCorner_Frlg/map.bin
new file mode 100644
index 000000000000..08209eaca94e
--- /dev/null
+++ b/data/layouts/RecordCorner_Frlg/map.bin
@@ -0,0 +1 @@
+ !3'3'3'3$3%3%3&3'3'3'3"3#()3D3D343D3D3D3D363D3D3*3+()3D3,3<89:;>.3D3*3+()3D3D353@ABC73D3D3*3+()3D3-3=HIJK?/3D3*3+()3D3D3F3F3F3F3F3F3D3D3*3+013D3D3D3D3D3D3D3D3D3D32332222
\ No newline at end of file
diff --git a/data/layouts/RockTunnel_1F_Frlg/border.bin b/data/layouts/RockTunnel_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/RockTunnel_1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/RockTunnel_1F_Frlg/map.bin b/data/layouts/RockTunnel_1F_Frlg/map.bin
new file mode 100644
index 000000000000..80a6a266c949
Binary files /dev/null and b/data/layouts/RockTunnel_1F_Frlg/map.bin differ
diff --git a/data/layouts/RockTunnel_B1F_Frlg/border.bin b/data/layouts/RockTunnel_B1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/RockTunnel_B1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/RockTunnel_B1F_Frlg/map.bin b/data/layouts/RockTunnel_B1F_Frlg/map.bin
new file mode 100644
index 000000000000..68eed9a4c72a
Binary files /dev/null and b/data/layouts/RockTunnel_B1F_Frlg/map.bin differ
diff --git a/data/layouts/RocketHideout_B1F_Frlg/border.bin b/data/layouts/RocketHideout_B1F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/RocketHideout_B1F_Frlg/border.bin differ
diff --git a/data/layouts/RocketHideout_B1F_Frlg/map.bin b/data/layouts/RocketHideout_B1F_Frlg/map.bin
new file mode 100644
index 000000000000..4a2ed565f4cb
Binary files /dev/null and b/data/layouts/RocketHideout_B1F_Frlg/map.bin differ
diff --git a/data/layouts/RocketHideout_B2F_Frlg/border.bin b/data/layouts/RocketHideout_B2F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/RocketHideout_B2F_Frlg/border.bin differ
diff --git a/data/layouts/RocketHideout_B2F_Frlg/map.bin b/data/layouts/RocketHideout_B2F_Frlg/map.bin
new file mode 100644
index 000000000000..f849a064257c
--- /dev/null
+++ b/data/layouts/RocketHideout_B2F_Frlg/map.bin
@@ -0,0 +1 @@
+UVW222222222222223
322]2^_3222222222222e2fg 2222222222222222222232222222222222222222222 222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/RocketHideout_B3F_Frlg/border.bin b/data/layouts/RocketHideout_B3F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/RocketHideout_B3F_Frlg/border.bin differ
diff --git a/data/layouts/RocketHideout_B3F_Frlg/map.bin b/data/layouts/RocketHideout_B3F_Frlg/map.bin
new file mode 100644
index 000000000000..bdd8863469f7
--- /dev/null
+++ b/data/layouts/RocketHideout_B3F_Frlg/map.bin
@@ -0,0 +1 @@
+23
322222222222222222222222222222222222222222222222222222222222222222222222332222222222222222222222222222222222222222222222222222222232222222222222222222222222222222222222222222222222222222222n222222222222222222222222222222222222222222222222222222222222222222222222222223222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/RocketHideout_B4F_Frlg/border.bin b/data/layouts/RocketHideout_B4F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/RocketHideout_B4F_Frlg/border.bin differ
diff --git a/data/layouts/RocketHideout_B4F_Frlg/map.bin b/data/layouts/RocketHideout_B4F_Frlg/map.bin
new file mode 100644
index 000000000000..0e0b8ec93c09
Binary files /dev/null and b/data/layouts/RocketHideout_B4F_Frlg/map.bin differ
diff --git a/data/layouts/RocketHideout_Elevator_Frlg/border.bin b/data/layouts/RocketHideout_Elevator_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/RocketHideout_Elevator_Frlg/border.bin differ
diff --git a/data/layouts/RocketHideout_Elevator_Frlg/map.bin b/data/layouts/RocketHideout_Elevator_Frlg/map.bin
new file mode 100644
index 000000000000..42e08c38debb
--- /dev/null
+++ b/data/layouts/RocketHideout_Elevator_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222
\ No newline at end of file
diff --git a/data/layouts/Route10_Frlg/border.bin b/data/layouts/Route10_Frlg/border.bin
new file mode 100644
index 000000000000..4531975c765e
Binary files /dev/null and b/data/layouts/Route10_Frlg/border.bin differ
diff --git a/data/layouts/Route10_Frlg/map.bin b/data/layouts/Route10_Frlg/map.bin
new file mode 100644
index 000000000000..7e40aae438bf
--- /dev/null
+++ b/data/layouts/Route10_Frlg/map.bin
@@ -0,0 +1 @@
+m||||||||||||||||||||quu ##################!squu*++++++++++++++++++,squu*++++++++++++++++++,squr3131313131313131313131313131313141)+,squr0 0*+,sq}r0 000
0
0
0
0
0
0
0
0
0
0
0 0*+,sqy000 0
0
0
0
0
0
0
0
0
0
0
00*+,sq000000
0
0
0
0
0
0
0
0
0
0
0 0*+,sq00000 0
0
0
0
0
0
0
0
0
0
0
00*+,sq000100
0
0
0
0
0
0
0
0
0
0
0 0*+,sq00 00 00 00 00 00 00 00*+,sqm00L*+,squr0 00 00 00 00 00 00 00 0*+,squr0000000000000000*+,squiiiiiiiij 00 00 00 0*+,sqllllllllmr{1|1}1~1100*+,sqqqqqqqqqqurHIJK0 0*+,sq|||||||||}rPQRS00*+,sqqyyyyyy0yzXYZ[0 0*+,sqq000001000`ab00*+,sqq000000000 0*+,sqq0000100 000000000*+,sqq00000000000000 0*+,sqq0000000 00 00 00 00 0*+,sqq000100000000000*+,sqq010000000 00 00 00 0*+,sqq000000 000000000*+,sqqr0 00 000000 00 00 00 0*+,sqqr000000 0000000000*+,sqqr*+,sqqiiiiiiiiiiiiiij00*+,sqqklllllllllllllmr0 0*+,sqqsqqqqqqqqqqqqqur00*+,sqq{||||||||ur0 0*+,sqyP%%%%Ssur00*+,sqr0Q,-$-$-$-.Tpsur0 0*+,sqr0R3Up{}r00*+,sqr02Wpqqr00*+,sqr0 !!!#Tpqq00*+,sq()3*+U3pq00*+,sqr00000313"32333000q000*+,sqj0000000000q000*+,sqqr00000000000y000*+,sqq00000000000000000*+,sqq00000000000000000*+,sqq000000000000000 #1+,sqqu ##############1+++,sqqu*++++++++++++++++++,sqqu*++++++++++++++++++,sqqXYqqqqqqqqqqqqqqqqqqqqqqqqqqklllllllmqqqqqqkllllmqqqsqqqqqqquqqqqqqsqqqquqqqsqqqqqqqlmqqqq{||||}qqq{||qqqqqquqqqqyyyyyqqqqq{||||||}qqqq00 00 0pqqqyyyyy0yyyyyyy00000pqqq0000000000000000 00 0pqqq000000000000100000pqqq00000000000010 00 00 0pqq000000000Mj00000pqq0000000000klm0qq000squr0 00 00pqq000kllllllqur00000pqqsqqqqqqqqur0 00 00pqq001{||||||||}0pqq100xyyyyyyyyyyz00000pqq0000000000000000 00 00pqqr0 00 00 00 00 00 00 000000 0pqqr00000000000000000000pqqiiiiiiiij0 00 00 00000 0pqkllllllllmr00000022200pqsqqqqqqqqur0 00 02222222pqsqqqqq||}0hqsqqqqquyyz000pqqsqqqqqur0 00 00 0pqqsqqqqqur000000pqqsqqqqqur0 00 00hqq{|||||}r00000pkmq
\ No newline at end of file
diff --git a/data/layouts/Route11_Frlg/border.bin b/data/layouts/Route11_Frlg/border.bin
new file mode 100644
index 000000000000..a701312cfff9
Binary files /dev/null and b/data/layouts/Route11_Frlg/border.bin differ
diff --git a/data/layouts/Route11_Frlg/map.bin b/data/layouts/Route11_Frlg/map.bin
new file mode 100644
index 000000000000..6062ac7f3b34
--- /dev/null
+++ b/data/layouts/Route11_Frlg/map.bin
@@ -0,0 +1,7 @@
+$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$% 00 0000000000000000000
0
0
0
0000000000000000
0
0
00 00 00$%000000000000000000000
0
0
0
0000000000000000
0
0
000000hsq0q0uj 00 0001000000000000100
0
0
0
0001000000000100
0
0
00 00 00$%$'psq0q0ur000000
0
0
0
0
0
0
0
0
0
0
0
0000
0
0
0
0000
0
0
0
0
0
0
0
0
0000
0
0
0 0000 00 00p{||}r 00 0000
0
0
0
0
0
0
0
0
0
0
0
0000
0
0
0
0000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00 00 00xy0yyz&'000000
0
0
0
000000000000
0
0
0
000000000000
0
0
0
0
0
0
0 0DEEEEF%$%$%$%0 00 00 00 00000000000
0
0
0
000000000000
0
0
0
000000000000
0
0
0
0
0
0
00 001LMMMMN'000000000000000000
0
0
0
000100000100
0
0
0
000100000100
0
0
0
000000081<10000000 00 00 00 00 0000001000000000
0
0
0
0
00000000000
0
0
0
0
0000
0
0
0
00000 00@1D1000000############$0 00000000000
0
0
0
0
00000000000
0
0
0
0
0000
0
0
0
0001000H1deeeefL1000000++++++++++++,000000000000
0
0
0
0
00000000100
0
0
0
0
0000
0
0
0
00000
+
+
+
+
+
+,0 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0000
0
0
0
0
0000
0
0
0
0000 0 00 00000000000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
000000000000
0
0
0
00000000000 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
000000000000
0
0
0
00000 00 000000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
000100000100
0
0
0
000000000 00000000000000000000000000
0
0
0
0
000000000000 00 0000000000000000000000000000
0
0
0
0
00000000000000000222222222222222222222222200000222222222200000
\ No newline at end of file
diff --git a/data/layouts/Route12_Frlg/border.bin b/data/layouts/Route12_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/Route12_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/Route12_Frlg/map.bin b/data/layouts/Route12_Frlg/map.bin
new file mode 100644
index 000000000000..ca203b565e54
Binary files /dev/null and b/data/layouts/Route12_Frlg/map.bin differ
diff --git a/data/layouts/Route12_NorthEntrance_1F_Frlg/border.bin b/data/layouts/Route12_NorthEntrance_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/Route12_NorthEntrance_1F_Frlg/border.bin differ
diff --git a/data/layouts/Route12_NorthEntrance_1F_Frlg/map.bin b/data/layouts/Route12_NorthEntrance_1F_Frlg/map.bin
new file mode 100644
index 000000000000..f723c9817f90
--- /dev/null
+++ b/data/layouts/Route12_NorthEntrance_1F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/Route13_Frlg/border.bin b/data/layouts/Route13_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/Route13_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/Route13_Frlg/map.bin b/data/layouts/Route13_Frlg/map.bin
new file mode 100644
index 000000000000..b1f55a645d96
Binary files /dev/null and b/data/layouts/Route13_Frlg/map.bin differ
diff --git a/data/layouts/Route14_Frlg/border.bin b/data/layouts/Route14_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/Route14_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/Route14_Frlg/map.bin b/data/layouts/Route14_Frlg/map.bin
new file mode 100644
index 000000000000..48d7c0dcdda3
--- /dev/null
+++ b/data/layouts/Route14_Frlg/map.bin
@@ -0,0 +1 @@
+$%$%$%$%$%$%$%$%$%0 00 00 00 00 00 00 00 00000 00 00 00 00 000 0 00 00000 00 00 00 00 00 00 00 00000 00 00 000 000 00 00 0000000000 000000 00 00 000000000000000 00 0000000000000000000&%$%$0000
0
0
0
0
0000
0
0
0
0
0000
0
0
0
0
0000
0
0
0
0
0000&%$%$%
0
0
0
0
0000"#####
0
0
0
0
0000*+0 00 00000*+0000*+0 0000000*+00000000*++0 0000000*++++0000000031313141)0 0000000*000000000 00 0*0 00000000000*00000&'0000 00 0*0 0000000000000*000000000 00 0*0 00000000000*000000000 00 0*0 00000000000*00000000000 0*0 00000000000*00000000000 0*0 00000000000*$%$%000000000000*0000000100&'0000000*$%00000000000 00000 000* 000000000000000000000*00 00 00 00 00 00 00000 000*0000000000000000000*000 00000000 00 00000 000*0000 00 00 00 00 000000000*11000000000000001000 000*11000000000000000000000*11000000000000000000 000*11*110000000000000000000000*11***
\ No newline at end of file
diff --git a/data/layouts/Route15_Frlg/border.bin b/data/layouts/Route15_Frlg/border.bin
new file mode 100644
index 000000000000..a701312cfff9
Binary files /dev/null and b/data/layouts/Route15_Frlg/border.bin differ
diff --git a/data/layouts/Route15_Frlg/map.bin b/data/layouts/Route15_Frlg/map.bin
new file mode 100644
index 000000000000..786f679883f0
--- /dev/null
+++ b/data/layouts/Route15_Frlg/map.bin
@@ -0,0 +1 @@
+$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%$%0000000000000000000000000000000000000000000000000000000$%$%$%$%$'0000000000000000000000000000000000000000000000000000000000000 00 000000000000000000000000000000000000000000000000000000000DEEEEF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00$%$%$'0001LMMMMN100000000081<1000
0
0
0
0
0
0000000
0
0
0
0
0
00 0000 00 000000
0
0
0
00000
0
0
0
0
0
0
000000 0000000000@1D1000
0
0
0
0
0
0000000
0
0
0
0
0
0000000000000
0
0
0
00000
0
0
0
0
0
0
0000000000000000H1deeeefL1101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
\ No newline at end of file
diff --git a/data/layouts/Route16_Frlg/border.bin b/data/layouts/Route16_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/Route16_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/Route16_Frlg/map.bin b/data/layouts/Route16_Frlg/map.bin
new file mode 100644
index 000000000000..a88b95a6a1aa
--- /dev/null
+++ b/data/layouts/Route16_Frlg/map.bin
@@ -0,0 +1 @@
+,,+,(21&%$%$%$]-0-0-0^$%$%$%$DEEEEF%$%$%$%$%$%$%$%,45667.LMMMMN/,0000000<=BC?00000081LMMMMN<100000
0
0
0
0
0
0
0
0
0,000000100000100000@1LMMMMND100000
0
0
0
0
0
0
0
0
0,000000000000001000H1L100100
0
0
0
0
0
0
0
0
0,0000000000000000 00 0DEEEEF0 00001000000000,0000000000000000000LMMMMN000000000000000,LMMMMN000000000000,0 00 00 00 00 00 00 00 00 01100&%$%$%,00000000000000000081<1000 00 00 00 00 00 00 00,00000 00 00000000000@1\]0]0]0]0^D100000000000000000000,000000000000100000H1deeeefL1000 00 00 00 00 00 00 00,00000 00 000000,0000000000000,000100010000,0000000000000,0001000010100
\ No newline at end of file
diff --git a/data/layouts/Route16_NorthEntrance_1F_Frlg/border.bin b/data/layouts/Route16_NorthEntrance_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/Route16_NorthEntrance_1F_Frlg/border.bin differ
diff --git a/data/layouts/Route16_NorthEntrance_1F_Frlg/map.bin b/data/layouts/Route16_NorthEntrance_1F_Frlg/map.bin
new file mode 100644
index 000000000000..c41db67b6e35
--- /dev/null
+++ b/data/layouts/Route16_NorthEntrance_1F_Frlg/map.bin
@@ -0,0 +1 @@
+23333333332222222222222222222222222222222222
222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/Route17_Frlg/border.bin b/data/layouts/Route17_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/Route17_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/Route17_Frlg/map.bin b/data/layouts/Route17_Frlg/map.bin
new file mode 100644
index 000000000000..24ce3c11f7a1
--- /dev/null
+++ b/data/layouts/Route17_Frlg/map.bin
@@ -0,0 +1 @@
+,>3 3!3"3>3?3>3?3 3!3"3?3>3,#$3(3)3*3F3G3F3G3(3)3*3G3,3%&%$%$%$%,+>3(3)3*3>3?3>3?3(3)3*3?3F3->3"######,343(3)3*3F3G3F3G3(3)3*3G3>35F3*+,>3(3)3*3>3?3>3?3(3)3*3?3>3>3*,F3(3)3*3F3G3F3G3(3)3*3G3F3F3*,#$3(3)3*3>3?3>3?3(3)3*3?3,3%>3*+,+>3(3)3*3;3<3<3=3(3)3*3G3F3-F3*+++++,343(3)3*3C3D3D3E3(3)3*3?3>35>3313131313141),F3(3)3*3C3D3D3E3(3)3*3G3F3*,>3(3)3*3C3D3D3E3(3)3*3?3>3?3>3?3>3?3>3?3*,#$3(3)3*3C3D3D3E3(3)3*3G3F3R3R3R3R3R3R3,3%*,+>3(3)3*3C3D3D3E3(3)3*3?3>3R3R3R3R3R3R3F3-*,343(3)3*3C3D3D3E3(3)3*3G3F3R3R3R3R3R3R3>35*,>3(3)3*3K3L3L3M3(3)3*3?3>3R3R3R3R3R3R3?3*,F3(3)3*3F3G3F3G3(3)3*3G3F3R3R3R3R3R3R3G3*,#$3(3)3*3>3?3>3?3(3)3*3?3>3R3R3R3R3R3R3,3%*,+>3(3)3*3F3G3F3G3(3)3*3G3F3R3R3R3R3R3R3F3-*,343(3)3*3>3?3>3?3(3)3*3?3>3R3R3R3R3R3R3>35*,F3(3)3*3F3G3F3G3(3)3*3G3F3R3R3R3R3R3R3G3*,>3(3)3*3>3?3>3?3(3)3*3?3>3R3R3R3R3R3R3?3*,#$3(3)3*3F3G3F3G3(3)3*3G3F3R3R3R3R3R3R3,3%*,+>3(3)3*3>3?3>3?3(3)3*3?3>3?3>3?3>3?3>3F3-*,343(3)3*3F3G3F3G3(3)3*3G3;3<3<3=3F3G3F3>35*,>3(3)3*3>3?3>3?3(3)3*3?3C3D3D3Q3<3<3=3?3*,F3(3)3*3F3G3F3G3(3)3*3G3C3D3D3D3D3D3E3G3*,#$3(3)3*3>3?3>3?3(3)3*3?3K3L3L3P3D3D3E3,3%*,+>3(3)3*3F3G3F3G3(3)3*3G3F3G3F3K3L3L3M3F3-*,343(3)3*3>3?3>3?3(3)3*3?3>3?3>3?3>3?3>3>35*,F3(3)3*3F3G3F3G3(3)3*3G3F3G3F3G3F3G3F3G3*,>3(3)3*3>3?3>3?3(3)3*3XYYZ 3!3"3>3?3*,#$3(3)3*3F3G3F3G3(3)3*3`aab(3)3*3F3,3%*,+>3(3)3*3>3?3>3?3(3)3*3`aab(3)3*3>3F3-*,343(3)3*3F3G3F3G3(3)3*3`aab(3)3*3F3>35*,>3(3)3*3>3?3>3?3(3)3*3`aab(3)3*3>3?3*,F3(3)3*3F3G3F3G3(3)3*3`aab(3)3*3F3G3*,#$3(3)3*3>3?3>3?3(3)3*3`aab(3)3*3>3,3%*,+>3(3)3*3F3G3F3G3(3)3*3`aab(3)3*3F3F3-*,343(3)3*3>3?3>3?3(3)3*3`aab(3)3*3>3>35*,F3(3)3*3F3G3F3G3(3)3*3`aab(3)3*3F3G3*,>3(3)3*3>3?3>3?3(3)3*3`aab(3)3*3>3?3*,#$3(3)3*3F3G3F3G3(3)3*3`aab(3)3*3F3,3%*,+>3(3)3*3>3?3>3?3031323`aab(3)3*3>3F3-*,343(3)3*3F3G3F3G3F3G3F3`aab(3)3*3F3>35*,>3(3)3*3XYYZ8393:3`aab(3)3*3>3?3*,F3(3)3*3`aab@3A3B3`aab(3)3*3F3G3*,#$3(3)3*3`aab@3A3B3`aab(3)3*3>3,3%*,+>3(3)3*3`aab@3A3B3`aab(3)3*3F3F3-*,343(3)3*3`aab@3A3B3`aab(3)3*3>3>35*,F3(3)3*3`aab@3A3B3`aab(3)3*3F3G3*,>3(3)3*3`aab@3A3B3`aab(3)3*3>3?3*,#$3(3)3*3`aab@3A3B3`aab(3)3*3F3,3%*,+>3(3)3*3`aab@3A3B3`aab(3)3*3>3F3-*,343(3)3*3`aab@3A3'`aab(3)3*3F3>35*,>3(3)3*3`aab@3A3B3`aab(3)3*3>3?3*,F3(3)3*3`aab@3A3B3`aab(3)3*3F3G3*,#$3(3)3*3`aab@3A3B3`aab(3)3*3>3,3%*,+>3(3)3*3`aab@3A3B3`aab(3)3*3F3F3-*,343(3)3*3`aab@3A3B3`aab(3)3*3>3>35*,F3(3)3*3`aab@3A3B3`aab(3)3*3F3G3*,>3(3)3*3`aab@3A3B3`aab(3)3*3>3?3*,#$3(3)3*3`aab@3A3B3`aab(3)3*3F3,3%*,+>3(3)3*3`aab@3A3B3`aab(3)3*3>3F3-*,343(3)3*3`aab@3A3B3`aab(3)3*3F3>35*,>3(3)3*3`aab@3A3B3`aab(3)3*3>3?3*,F3(3)3*3`aab@3A3B3`aab(3)3*3F3G3*,#$3(3)3*3`aab@3A3B3`aab(3)3*3>3,3%*,+>3(3)3*3`aab@3A3B3`aab(3)3*3F3F3-*,343(3)3*3`aab@3A3'`aab(3)3*3>3>35*,F3(3)3*3`aab@3A3B3`aab(3)3*3F3G3*,>3(3)3*3`aab@3A3B3`aab(3)3*3>3?3*,#$3(3)3*3`aab@3A3B3`aab(3)3*3F3,3%*,+>3(3)3*3`aab@3A3B3`aab(3)3*3>3F3-*,343(3)3*3`aab@3A3B3`aab(3)3*3F3>35*,>3(3)3*3`aab@3A3B3`aab(3)3*3>3?3*,F3(3)3*3`aab@3A3B3`aab(3)3*3F3G3*,#$3(3)3*3`aab@3A3B3`aab(3)3*3>3,3%*,+>3(3)3*3`aab@3A3B3`aab(3)3*3F3F3-*,343(3)3*3`aab@3A3B3`aab(3)3*3>3>35*,F3(3)3*3`aab@3A3B3`aab(3)3*3F3G3*,>3(3)3*3`aab@3A3B3`aab(3)3*3>3?3*,#$3(3)3*3`aab@3A3B3`aab(3)3*3F3,3%*,+>3(3)3*3`aab@3A3B3`aab(3)3*3>3F3-*,343(3)3*3`aab@3A3'`aab(3)3*3F3>35*,>3(3)3*3`aab@3A3B3`aab(3)3*3>3?3*,F3(3)3*3`aab@3A3B3`aab(3)3*3F3G3*,#$3(3)3*3`aab@3A3B3`aab(3)3*3>3,3%*,+>3(3)3*3`aab@3A3B3`aab(3)3*3F3F3-*,343(3)3*3`aab@3A3B3`aab(3)3*3>3>35*,F3(3)3*3`aab@3A3B3`aab(3)3*3F3G3*,>3(3)3*3`aab@3A3B3`aab(3)3*3>3?3*,#$3(3)3*3`aab@3A3B3`aab(3)3*3F3,3%*,+>3(3)3*3`aab@3A3B3`aab(3)3*3>3F3-*,343(3)3*3`aab@3A3B3`aab(3)3*3F3>35*,>3(3)3*3N3N3N3N3@3A3B3`aab(3)3*3>3?3*,F3(3)3*3F3G38393O3A3B3`aab(3)3*3F3G3*,#$3(3)3*3>3?3@3A3A3A3B3`aab(3)3*3>3,3%*,+>3(3)3*3F3G3H3I3I3I3`aab(3)3*3F3F3-*,343(3)3*3>3?3XYYYYdaab(3)3*3>3>35*,F3(3)3*3F3G3`aaaaaaab(3)3*3F3G3*,>3(3)3*3>3?3`aaaaaaab(3)3*3>3?3*,#$3(3)3*3F3G3`aaaaaaab(3)3*3F3,3%*,+>3(3)3*3>3?3`aaaaaaab(3)3*3>3F3-*,343(3)3*3F3G3`aaaaaaab(3)3*3F3>35*,>3(3)3*3>3?3`aaaaaaab(3)3*3>3?3*,F3(3)3*3F3G3`aaaaaaab(3)3*3F3G3*,#$3(3)3*3>3?3`aaaaaaab(3)3*3>3,3%*,+>3(3)3*3F3G3`aaaaaaab(3)3*3F3F3-*,343(3)3*3>3?3`aaaaaaab(3)3*3>3>35*,F3(3)3*3F3G3`aaaaaaab(3)3*3F3G3*,>3(3)3*3>3?3`aaaaaaab(3)3*3>3?3*,#$3(3)3*3F3G3`aaaaaaab(3)3*3F3,3%*,+>3(3)3*3>3?3`aaaaaaab(3)3*3>3F3-*,343(3)3*3F3G3`aaaaaaab(3)3*3F3>35*,>3(3)3*3>3?3`aaaaaaab(3)3*3>3?3*,F3(3)3*3F3G3`aaaaaaab(3)3*3F3G3*,#$3(3)3*3>3?3`aaaaaaab(3)3*3>3,3%*,+>3(3)3*3F3G3`aaaaaaab(3)3*3F3F3-*,343(3)3*3>3?3`aaaaaaab(3)3*3>3>35*,F3(3)3*3F3G3`aaaaaaab(3)3*3F3G3*,>3(3)3*3>3?3`aaaaaaab(3)3*3>3?3*,#$3(3)3*3F3G3`aaaaaaab(3)3*3F3,3%*,+>3(3)3*3>3?3N3N3N3N3N3N3N3N3N3(3)3*3>3F3-*,343(3)3*3F3G3F3G3F3G3F3G3F3G3F3(3)3*3F3>35*,>3(3)3*3>3?3>3?3>3?3>3?3>3?3>3(3)3*3>3?3*,F3(3)3*3F3G3F3G3F3G3UG3F3G3F3(3)3*3F3G3*,#$3(3)3*3>3?3XYYYYYYYZ(3)3*3>3,3%*,+>3(3)3*3F3G3`aaaaaaab(3)3*3F3F3-*,343(3)3*3>3?3`aaaaaaab(3)3*3>3>35*,F3(3)3*3F3G3`aaaaaaab(3)3*3F3G3*,>3(3)3*3>3?3`aaaaaaab(3)3*3>3?3*,#$3(3)3*3F3G3`aaaaaaab(3)3*3F3,3%*,+>3(3)3*3>3?3`aaaaaaab(3)3*3>3F3-*,343(3)3*3F3G3N3N3N3N3N3N3N3N3N3(3)3*3F3>35*,>3(3)3*3>3?3>3?3>3?3>3?3>3?3>3(3)3*3>3?3*,F3(3)3*3F3G3F3G3F3G3F3G3F3G3F3(3)3*3F3G3*,>3031323>3?3>3?3>3?3>3?3>3?3>3031323>3?3*,F3G3F3F3F3G3*0 ###$ 3!3"3?3>3?3 3!3"3"# #1+++,(3)3*3G3F3G3(3)3*3*+++++,(3)3*3?3>3?3(3)3*3*++++,(3)3*3;3<3=3(3)3*3*++++,(3)3*3C3D3E3(3)3*3*++++,(3)3*3C3D3E3(3)3*3*++++,(3)3*3C3D3E3(3)3*3*++++,(3)3*3C3D3E3(3)3*3*+++,(3)3*3C3D3E3(3)3*3*+++++,(3)3*3C3D3E3(3)3*3*+++++,(3)3*3C3D3E3(3)3*3*+++++,(3)3*3C3D3E3(3)3*3*+++++,(3)3*3C3D3E3(3)3*3*+++++,(3)3*3C3D3E3(3)3*3*+++++,(3)3*3K3L3M3(3)3*3*+++,(3)3*3G3F3G3(3)3*3*+++++,(3)3*3?3>3?3(3)3*3*++++,(3)3*3G3F3G3(3)3*3*+++,(3)3*3?3>3?3(3)3*3*++,031323F3G3031323*++,>3*++,0 00 00 00 00*+
\ No newline at end of file
diff --git a/data/layouts/Route18_Frlg/border.bin b/data/layouts/Route18_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/Route18_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/Route18_Frlg/map.bin b/data/layouts/Route18_Frlg/map.bin
new file mode 100644
index 000000000000..9e246b459ac8
--- /dev/null
+++ b/data/layouts/Route18_Frlg/map.bin
@@ -0,0 +1 @@
+++000000000+++,++00 00 00 000++,+,000000000*++++,++,00 00 00 000*+++++++,000000000*++++++,00 00 00 00 0*++++++++++,&%$%$%$%$%$%$%$%$%$%$%$%$%+++,0 00000000mnnnnnnnnnnnnoDEEEEF+++,000000000031313131313131313131313131311LMMMMN1 00 0+++,01000001000000000000000000000000081<100000000000+++,000000000000000000000000000000000@1D100000000000+++,000000000000000000000000000010000H1deeeefL100000000000+++jffffffffffffffffffffffffffffffg 00++++++++++++++++++++++++++++++++,0 00 00 00000 0++++++++++++++++++++++++++++++++,0
0
0
0
0
0
0 0 000+++++++++++++++++++++++++++++,0
0
0
0
0
0
00+++++++++++++++++0
0
0
0
0
0
0 0+++++++++0
0
0
0
0
0
00+++++++++++++,0 00 00 00 0&%$%$%++++++++,"####$0##########10
\ No newline at end of file
diff --git a/data/layouts/Route19_Frlg/border.bin b/data/layouts/Route19_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/Route19_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/Route19_Frlg/map.bin b/data/layouts/Route19_Frlg/map.bin
new file mode 100644
index 000000000000..54388bc491e8
--- /dev/null
+++ b/data/layouts/Route19_Frlg/map.bin
@@ -0,0 +1 @@
+psqqqu1111111111sqqqurpsqqqu1111111111sqqqurpsqqqu111111111sqqqurpsqqqu11sqqqurpsqqqu111111111{qqurpsqqqu11qsqqurp{q}111111111qsq}rpq{|}q11q{|}qrx|||||1111111111|||||z##### !11111111 #####+++,11111111*+++,11111111*++0!111111*+++0#!11111*+++++0#####1++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\ No newline at end of file
diff --git a/data/layouts/Route1_Frlg/border.bin b/data/layouts/Route1_Frlg/border.bin
new file mode 100644
index 000000000000..a701312cfff9
Binary files /dev/null and b/data/layouts/Route1_Frlg/border.bin differ
diff --git a/data/layouts/Route1_Frlg/map.bin b/data/layouts/Route1_Frlg/map.bin
new file mode 100644
index 000000000000..02ee26860a9e
--- /dev/null
+++ b/data/layouts/Route1_Frlg/map.bin
@@ -0,0 +1 @@
+0000$%$%$%$'0000&%$%$%$%0 00 00 00 00000 00 00 0000000000000001000000000 00 00 0000000001000000000000000
0
0
0
0
0
0
0
0
0
0
0
0000 000
0
0
0
0
0
0
0
0
0
0
0
0000000
0
0
0
0
0
0
0
0
0
0
0
0000 000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0000000&'00000000000000000000 0 0000100000000000000000000
0
0
0
0
0
000000000000000
0
0
0
0
0
0
0
0
0
0
0
0&'000000&%$%$'
0
0
0
0
0
000000000000000
0
0
0
0
0
0000000000001000000000 00000100000000000000000 00000100000000000000 0000000000000001000000000000000000000000000000000
0
0
0
0
0
00000
0
0
0
0
0
00000&%$%$%$%$'
0
0
0
0
0
000000 00 00 0
0
0
0
0
0
000000000000000
0
0
0
0
0
000000000000000000000100000000000010010000000 0000 0
0
0
0
0
0
0
000000 0
0
0
0
0
000
0
0
0
0
0
0
0000000
0
0
0
0
0
0
0
0
0
0
0
0 000000
0
0
0
0
000
0
0
0
0
0
0
000 0
0
00
0
0
0
0
0 00
0
0000000000
0
00000000
0
0
0
0
\ No newline at end of file
diff --git a/data/layouts/Route20_Frlg/border.bin b/data/layouts/Route20_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/Route20_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/Route20_Frlg/map.bin b/data/layouts/Route20_Frlg/map.bin
new file mode 100644
index 000000000000..534a7034d381
--- /dev/null
+++ b/data/layouts/Route20_Frlg/map.bin
@@ -0,0 +1 @@
+++++++++++++++++++++++++++++++++++++++++++++klm+++++++++++++++++++++++++kqm++++++++++++++++++++++++++++++++++++++++++++++++++++sqsqqququ+(22222222)+++++++++++++++++++++++++1
11+++++++++++++++++++++++(sq{q}quu22111111112)++++++++++++++++++++++++++++1%11&1
11++++++++++++++++++++{q{|}q}111111111112)+++++++++++++++++++++++++++++++++++++++++++++++++11111&11+++++++++++++++++++++{qqq}1111111*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++11111.11++++++++++++1
1
1
11+++++++,1{|||}1111klm11*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++111111+++++++++++++1111&11+++++11yy0yy111kqm1*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++111111+++++111111111111sqsqqququ*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++11-1111++++++0!11111111111sq{q}quu++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1111+++++++,1111111 ##!{q{|}q}u+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1
11+++++++++++++++++++0#######1+{qqq}}*+++++++++++++++++++++++++++++++++++++++++++++++++++1
11++++++++++++1.11+++++++++++++++++++++++++++1{|||}} 1++++++++++++++++++++++++++++++++++++++++++++++++1%111++++++++++++11+++++++++++++++++++++0!yy0yy} 1+++++++++++++++++++++++++++++++++++++++++++++++++1111++++++++++++++++++++++++++++++++++++++,1111111 1++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++0##!1111*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++0####1+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\ No newline at end of file
diff --git a/data/layouts/Route21_North_Frlg/border.bin b/data/layouts/Route21_North_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/Route21_North_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/Route21_North_Frlg/map.bin b/data/layouts/Route21_North_Frlg/map.bin
new file mode 100644
index 000000000000..02a4bcd546be
--- /dev/null
+++ b/data/layouts/Route21_North_Frlg/map.bin
@@ -0,0 +1 @@
+*++,*++,0 00 00 0*++,000000*++,0 00 00 0*++,000000*++,
0
0
0
0
0
0*++,
0
0
0
0
0
0*++,
0
0
0
0
0
0*++,
0
0
0
0
0
0*++,
0
0
0
0
0
0$%$%$%*++,
0
0
0
0
0
0*++0###### #####*+++++++++++$%$%$'*+++++++++++*++++++++++##### 1++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1
1
11+++++++++++++1%1111+++++++++++++++111.11+++++++++++++++1111+++++++1
1
11+++++++++++++++1%111&1
11+++++++++++++1111111+++++++++++++1111111+++++++++++++111-11.11++++++++++++++++111+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1
11++++++++++++++1%11&11+++++++++++++11111+++++++++++++111.11++++++++++++++1111+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\ No newline at end of file
diff --git a/data/layouts/Route21_South_Frlg/border.bin b/data/layouts/Route21_South_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/Route21_South_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/Route21_South_Frlg/map.bin b/data/layouts/Route21_South_Frlg/map.bin
new file mode 100644
index 000000000000..30c2cba6f893
--- /dev/null
+++ b/data/layouts/Route21_South_Frlg/map.bin
@@ -0,0 +1 @@
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1
11++++++++++++++11&1
11++++++++++++1-1111++++++++++++1111+++++++++++++++++++++++++++++++++++++++++++++++++++1
1
1
11++++++++++1%11111++++++++++++1111.11++++++++++++1-1111++++++++++++++1111++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1
1
1
1
11++++++++++++11111&11++++++++++++1-111111++++++++++++++1-11111+++++++++++11111+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1
1
11++++++++++1
1%1111++++++++++1111.11++++++++++11111++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++(22)++++++++++,00*++++++++++++,00*+++++(222222200*+++++,222222201*++++
\ No newline at end of file
diff --git a/data/layouts/Route22_Frlg/border.bin b/data/layouts/Route22_Frlg/border.bin
new file mode 100644
index 000000000000..4531975c765e
Binary files /dev/null and b/data/layouts/Route22_Frlg/border.bin differ
diff --git a/data/layouts/Route22_Frlg/map.bin b/data/layouts/Route22_Frlg/map.bin
new file mode 100644
index 000000000000..1caf49cc729f
--- /dev/null
+++ b/data/layouts/Route22_Frlg/map.bin
@@ -0,0 +1 @@
+qqurpsqqqqqqqqqqqqqqqqq|||||||||||q0q0q0qqurp{|qqqqqqqqqqqqq|}yyyyyyyyq0sq0q0q0|}rpqq{|||||||||||||}qqr 00 00 00 00pq0{|q0uyzxyyyyyyyyyyyyyyyyyyyz 0pq0q0q0{|urb1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1d10 0pq0q0q0q0q0ur[b1c1c1c1c1c1c1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1l100xyyyyyur2222222r1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1t1 00 00 00urb1c1c1c1c1c1c1c1c1c1d10 00 00 00 00 00 00iiij 000 00 0000000urr1s1s1s1s1s1s1s1s1s1t1kllmr 0 0 000000ur00
0
0
0
0
0
0
0sqqur
0
0
0
0
0
0000100ur00 00 00 00 00 0
0
0
0
0
0
0
0sqqur
0
0
0
0
0
00000hiur00000000000
0
0
0
0
0
0
0sqqur
0
0
0
0
0
00000pqur0 00
0
0
0
0
0
0
0313131313131p{||}r
0
0
0
0
0
00000pquij000 00 00 00 00
0
0
0
0
0
0
0000000pqqqqr
0
0
0
0
0
0&'0000pqlmr0 00000000000 00 00 00000000xyyyyz 000 00 00 00000pqqqur 00pqqqurb1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1d1pqqqurj1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1l1pqqqurr1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1t1pkqquiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiisqqllllllllllllllllllllllllllllllllllllllllllllqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
\ No newline at end of file
diff --git a/data/layouts/Route22_NorthEntrance_Frlg/border.bin b/data/layouts/Route22_NorthEntrance_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/Route22_NorthEntrance_Frlg/border.bin differ
diff --git a/data/layouts/Route22_NorthEntrance_Frlg/map.bin b/data/layouts/Route22_NorthEntrance_Frlg/map.bin
new file mode 100644
index 000000000000..1452ebb13138
--- /dev/null
+++ b/data/layouts/Route22_NorthEntrance_Frlg/map.bin
@@ -0,0 +1 @@
+2231332223133222233/4322233/432222225363732225363732222203.3232222203.323222233/432222233/432222536373222225363732222203.32322203.32322222233/4322233/4322225363732225363732
\ No newline at end of file
diff --git a/data/layouts/Route23_Frlg/border.bin b/data/layouts/Route23_Frlg/border.bin
new file mode 100644
index 000000000000..a701312cfff9
Binary files /dev/null and b/data/layouts/Route23_Frlg/border.bin differ
diff --git a/data/layouts/Route23_Frlg/map.bin b/data/layouts/Route23_Frlg/map.bin
new file mode 100644
index 000000000000..f6f5f5662dd5
--- /dev/null
+++ b/data/layouts/Route23_Frlg/map.bin
@@ -0,0 +1 @@
+qqqqqqyy222yyqqqqqqqz2222222xy22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 02222222222222222220000 00 0222222222 00 00 000000000000000000000hiiiiiiiiiiiiiiij0 00pklllllllllllllmr000psqqqqqqqqqqqqqur0 00psqqqqqqqqqqqqqur0 00psqqqqqqqqqqqqqur000psqqqqqqqqqqqqqj00psqqqqqqqqqqqqqqquj0p{||||||qqqq|||}r0xy0yysqqqquy0yz00222psqqqqur0 00 000 02220 0psqqqqur0000002220psqqqqur000 00 002220 0psqqqqur00 000022200psqqqquiiiij022222psqqqqllmqqr2220psqqqqqqquqqr0 02220psqqqqqqquqqr0022200p{qqqqqquqqr02220pqsqqqqqquqqr002220pq{||||||}qqr222220pqqqqqqqqqqqr0222 0xyyyyyyyyyyyz 02220 00
0
0
0
00 0 0 00000000 0
0
0
0000000222200 000
0
0
00000000000 00022222222200002222220 000 00022222222222200000002222220 00 00 00222222000000000022222222220000 00 022200000000002222222222222222222222222222222222
0
022200
0
0
0
02220000
0
0
0
0
00 00000
0
0
0000000
0
0
0
0
0
0
0
0
0000
0
0
0
0
0
0000
0
0
0
0
0
0 000 00 000000000
0
0
0 000 00
0
0
00000000
0
0
0 00 0000
0
0
000000
0 00 00000 0
0
0
0
00000 0000
0
0
0
0 00 000000
0
0
0
0000000000 00 00 0.1111111-12222221++++++11++++++11++++++11++++++12112121++++++12121132++++++++++++++++++32++++++++++++++++++32++++++++++++++++++32++++++++++++++++++32++++++++++++++++++3 3()*+,!3%&'-./++++++.1$+++#31121121-11++++++++++++11++++++++++++11++++++++++++11++++++++++++11++1
1
1
1
11++++11++111111++++11++111111++++11++111111++++13121++111111++++13+++++++++++++++13+++++++++++++++13+++++++++++++++1 3()*+,2%&'-./++++++3112211211$+++#3112133++++++++++++++++++33++++++++++++++++++33++++++++++++++++++33++++++++++++++++++3 3+++!32222222222222222222222222222222220222222222222222222002222222222222222220000222222222222222220 002220002220002220 002220002002220020020020 00 0 02220 0000 00 0000000000000000000000 00 00 0000 00 0000 00 02222222222222222222222222222220 0222002002002000000222 02222222222000 00000222222222200 00 0 022222222222222222222222222222222222200200222 00222222222 00 00$'2222222220 00 0&%222222222000000'222iiiiiqqujhsqqqqqujqqurpsqqqqqurqqurpsqqqqqurqqurpsqqqqqur&%qqurpsqqqqqiiqqurpsqqqqqqqqq
\ No newline at end of file
diff --git a/data/layouts/Route24_Frlg/border.bin b/data/layouts/Route24_Frlg/border.bin
new file mode 100644
index 000000000000..4531975c765e
Binary files /dev/null and b/data/layouts/Route24_Frlg/border.bin differ
diff --git a/data/layouts/Route24_Frlg/map.bin b/data/layouts/Route24_Frlg/map.bin
new file mode 100644
index 000000000000..80de4b1f1b44
--- /dev/null
+++ b/data/layouts/Route24_Frlg/map.bin
@@ -0,0 +1 @@
+qqqqqqqqqqq|||||||qqqqqq||||||||}qqqqqqq{||||qquyyyyyyyyy|yyyyyyyyyyq}0000000000000 00 00 0quq000000000000000000qu0000000000000 00 00 0qu00000qu000000000000000000000qu000000000000000000000qu000000010100000000000qur0000000000F>>>>>>>>>>qur00 0 000 0000W0 00 00 00 00 0qur0000000000W000hiiiiii}r00 00 0 00000W0 00pqklllluqr00 0000 0000W000pqsqqqquqr 000 00 00000W0 00pkqqqquqr000"#$000M000psqqqqquqr 00 0*+,2220 00psqqqqquqr000*+,222000psqqqqquqr
0
0
0*+,2220 00psqqqqquqr
0
0
0*+,222000psqqqqquqr
0
0
0*+,2220 00psqqqqquqr
0
0
0*+,222000p{qqqquqr
0
0
0*+,2220 00pqsqqqquqr
0
0
0*+,222000pqsqqqquqr
0
0
0*+,2220 00x{||||uqr
0
0
0*+,222000x|||||uqr
0
0
0*+,2220 00"#####mr
0
0
0*+,222000*+qur
0
0
0*+,2220 00*+qur
0
0
0*+,222000*qur
0
0
0*+,2220 00*quj"#1+,222000*ququ*+++,2220 00*ququ*+++,222000*qmu*+++,2220 00*qquu*+++,222000*qquu*+++,2220 00*qquu*+++,222000*qquu*+++,2220 00*
\ No newline at end of file
diff --git a/data/layouts/Route25_Frlg/border.bin b/data/layouts/Route25_Frlg/border.bin
new file mode 100644
index 000000000000..4531975c765e
Binary files /dev/null and b/data/layouts/Route25_Frlg/border.bin differ
diff --git a/data/layouts/Route25_Frlg/map.bin b/data/layouts/Route25_Frlg/map.bin
new file mode 100644
index 000000000000..9ec2e35d4454
--- /dev/null
+++ b/data/layouts/Route25_Frlg/map.bin
@@ -0,0 +1 @@
+qqqqqqqq|||||||||||||||||||||||||||||||||||||||||||||||||||||||||qqqqq||||||||}qqyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyqqq{qqqqyyyyyyyyyyyz0 000 000 0 00 00 00 000000 00 0000x|||sqqqq0
0
0
0
0
0
0
0
00 0000000000000000000 00 00 00 00 0&%$%$$%$%$%$'"##!s{qqq0
0
0
0
0
0
0
0
00000 0000 00000 00 000 00 00 00 00 000i*,sqsqqq00 00 00 00 00 00 00 000000000 000 00 0000000 000 0000 00j1k1l1 00 0 00 00 0*,{{|||0000 0000000000000000000 0000 0b1c1c1k1k1k1c1c1d100000*0!{|qq000000000000000 000 00 00 00 000000 00 00 00 000 000r1s1s1s1s1s1s1s1t1 00 00 0*0#!{||00000000000000000000 0000000000 000 00 00 00 00 00 00 0 00 00 000000*0###00000000000000 00000000000000000 0000000 000000 0*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?000000*000000000000000000000000000000000000000000000000 0*iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiij00313131313131000003131313131310*lllllllmqqqqqqqqqqqqqqqqklllllllmqqqqqqqr*qqqqqqqlllllllllmqqqqqqsqqqqqqqlllmqqqr"####################1qqqqqqqqqqqqqqqqqllllllqqqqqqqqqqqllmu*+qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquu*qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquu*qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquu*qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquu*
\ No newline at end of file
diff --git a/data/layouts/Route25_SeaCottage_Frlg/border.bin b/data/layouts/Route25_SeaCottage_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/Route25_SeaCottage_Frlg/border.bin differ
diff --git a/data/layouts/Route25_SeaCottage_Frlg/map.bin b/data/layouts/Route25_SeaCottage_Frlg/map.bin
new file mode 100644
index 000000000000..dbf7d06ba9de
--- /dev/null
+++ b/data/layouts/Route25_SeaCottage_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/Route2_Entrance_Frlg/border.bin b/data/layouts/Route2_Entrance_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/Route2_Entrance_Frlg/border.bin differ
diff --git a/data/layouts/Route2_Entrance_Frlg/map.bin b/data/layouts/Route2_Entrance_Frlg/map.bin
new file mode 100644
index 000000000000..dfde7c299c6e
--- /dev/null
+++ b/data/layouts/Route2_Entrance_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/Route2_Frlg/border.bin b/data/layouts/Route2_Frlg/border.bin
new file mode 100644
index 000000000000..a701312cfff9
Binary files /dev/null and b/data/layouts/Route2_Frlg/border.bin differ
diff --git a/data/layouts/Route2_Frlg/map.bin b/data/layouts/Route2_Frlg/map.bin
new file mode 100644
index 000000000000..1d093f92b2f3
--- /dev/null
+++ b/data/layouts/Route2_Frlg/map.bin
@@ -0,0 +1 @@
+ 0000$%$%$% 0000$%$%$%$%$%
0
0
0
0
0
0
0000
0
0
0
0
0
0
00000 00 00 00 00
0
0
0
0
0
0
0000000000000
0
0
0
0
0
0
00000 00 00 00 00
0
0
0
0
0
0
0000hiiiiiij0
0
0
0
0
0
0
0000pkllllmr 0
0
0
0
0
0
0
0000psqqqqur00 000000100psqqqqur00000000000p{||||}r 00 000010000xyyy0yyz000000000 0000000000x1y1y1z10000000000DEEEEEEF 00 000000000LMMMMMMN000000000000LMMMMMMN0000000 0000000000 00 00 00 000000000,0-0-0-0/0 00 046657000<=?0000000000000000000000000000000 00 00 00000000 00 00 000000000 00 00 00000000 00 00 0000000000000000000 0000000x1y1y1z1DEEEEFLMMMMND0E0E0E0E0E0E0F0pqLMMMMMMNd11fLMMMMMMN1111 00000 0000000\]0]0^000000de11ef$%$%0111100000 00000000 00 00 000000000000000000000000 0 00 00000000000
0
0
0
0
0
0
000 0000 00000
0
0
0
0
0
0
0000000
0
0
0
0
0
0
0 00 000000000
0
0
0
0
0
0
000000000000
0
0
0
0
0
0
000 0000 000000 00 00 00 0&'00000000000000000000000000000000000 0000000000000000000000000&%$%$%$%00 0000000100000000000000000000000000&'0000000000000001000 0000000000000000000001000 00 00 00010000100000000000 00 00000000000000000000000000001000010000000000000101000000000000 00000000000000000000 0000
\ No newline at end of file
diff --git a/data/layouts/Route3_Frlg/border.bin b/data/layouts/Route3_Frlg/border.bin
new file mode 100644
index 000000000000..4531975c765e
Binary files /dev/null and b/data/layouts/Route3_Frlg/border.bin differ
diff --git a/data/layouts/Route3_Frlg/map.bin b/data/layouts/Route3_Frlg/map.bin
new file mode 100644
index 000000000000..7e4fd76ffc97
--- /dev/null
+++ b/data/layouts/Route3_Frlg/map.bin
@@ -0,0 +1 @@
+psqqqqqqqqqqqqqq|||||||||||||qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu00000000sqqqqqqpsqqqqqqqqq||||}qqqqqqqqqqqqq{|||||qqqqqqqqqqqqqqqqqqqqqqqqqqqqqu00000000sqqqqqqpsqqqqqqq|}yyyyyyyyyyyyyyyyyyyyyy{|qqqqqqqq|||||||qqqqqqqqqqu10000010sqqqqqqpsqqqqqqquy0000000000000000000000ysqq|||||}qqqqqqq{||||qqqqqur0100100hsqqqqqqpsqqqqqqqu00000100000001000000000000sq}yyyyyyyyyyyyyyyy{|qqqur00000hiqsqqqqqqp{qqqqq}0000000 00 00 0 00000000000100squ0000000000000000ysqqqur0 00 0 0pkllqqqqqqpq{|||||}qr0 00 00 00 00hij0 00 00 00hj0 0000squ0001000000000010000sqqqur00000psqqqqqqqqqpqqqqqyyyz00q00p{|}0000000000000000000sqqqur0 00 0 0psqqqqqqqqqxyyyyyz000000 00 00 00 0pqr0 00 00 00pr0 00 00xyyyz00hiiiiij0p{|||}00p{|||qqqqq0 00 00 00 000 0000000000pqr0000000pr00 00 00 000 00 00 00 0pklllmr0 0 00 00pqqqyz00 000xyyy{|qqq0000000000000 00 00 00 0pqr0 00 00 00pj000000000000000psqqqur000000xyyyz0 00 0000
0
0
0
0xysqqq0 00 00 00 00hij00000000pqr0000000pqr
0
0
0
0
0
0
00 00 00 00 0psqqqur 00 00 000 00 00 00 00
0
0
0
0
0
0psqqq00hiiiiiiq0 0qqr
0
0
0
0
0
0
0
0
0
0
0
0
0
0hsqqqur0000000000 00 00 00
0
0
0
0
0
0
0
0psqqqhiqqqqqqqqr0 00 00 00 0xyz 00 00 00 0pqr
0
0
0
0
0
0
0
0
0
0
0
0
0
0pkqqqur0 0 00 000 00 0000000
0
0
0
0
0
0
0
0psqqqpqklllllllmr000000000 00 00 00 0 0hqij
0
0
0
0
0
0
0
0
0
0
0
0psqqqqur000000 00 00 00 00 0
0
0
0
0
0
0
0
0
0psqqqpkqqqqqqqu000000000000000kllmr
0
0
0
0
0
0
0
0
0
0
0
0psqqqquij00000 0000000 0
0
0
0
0
0
0
0
0
0psqqqpsqqqqqqqqlmsqquiiij
0
0
0
0
0
0
0
0psqqqqlmr000000 00 00 00 0
0
0
0
0
0
0hiisqqqpsqqqqqqqqqqlllllllllllllllllqqlllmiiiiiiiisqqqqqquiiiiiiiiiiiiiiiiiiikllqqqpsqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqllllllllllqqqqqqlllllllllllllllllllllqqqqqqpsqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
\ No newline at end of file
diff --git a/data/layouts/Route4_Frlg/border.bin b/data/layouts/Route4_Frlg/border.bin
new file mode 100644
index 000000000000..4531975c765e
Binary files /dev/null and b/data/layouts/Route4_Frlg/border.bin differ
diff --git a/data/layouts/Route4_Frlg/map.bin b/data/layouts/Route4_Frlg/map.bin
new file mode 100644
index 000000000000..447d87b5cd71
--- /dev/null
+++ b/data/layouts/Route4_Frlg/map.bin
@@ -0,0 +1 @@
+qqqqqqqq|||||||qqsqqqqqqqqqqqqqquqqqqq||||||||||||||qqqqq||||||||||qqqqqqqqqqq|||||||||||||qqqqqqqqqqqqqqqqqu22222sqqsqqqqqqqqqqqqqquqqqqquqyyyyyyyyy|y{|||||}yyyyyyyy{|||||||||||}yyyyyyyyyyy{|||||||||q||||||}rHIJKpsqq{|||qqqqqq|||}qqqqquqr0 0 00 00 00 0x|yyyyyyz 00 00 00xyyyyyyyyyyyyyz 00 000000000yyyyyyyyyyquyyyyyyzPQRSp{qqqqqsqqqq|}qqqqqqqq}qr000000000000000 00000000 000000 00 00 00 000000000000000000000000qu 00 000XYZ[x{||||sqqqqu|||||||||}yz0 0 00 00 000000000000 00 0000 0000000000000 00 00000000000000000000qu000 000`ab0yy0ys{qq}uy0yyyyyyyz0 0000 00000000 0000000qu0000000 0 00 00000000{sqqu}000000000000 00 00 00 00 00 0000 000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000"#########qu000000000000ssqquu01000000000000000000000 00000 0000*+++++++++qu000000000000000000ssqquu0000 00 00 000 00 00 00 00 00 00 0000 00000 0 00 00 00 00 00 00 000 00 00 0000000 00 00 00*+++++++++qu000000000000ssqquu000 00000o0000000000000000 00 00 00qu000000000000000000s{||}ur0 00 00 00 00 00 00 00 00000000000000000000 000000000000000000qu000000000sqqqqur000000000000 00 00 00 0 000000001010000000000 0
0
0
0
0
0
0
0
0
0
0
0000000000000000000qu000000000000sqqqquiiiiiiiiiij000000000000000000000000000000
0
0
0
0
0
0
0
0
0
0
0&% 000010000000000000qu000000000000000sqqqqlllllmqqqqqiiij 0000000000000000000000
0
0
0
0
0
0
0
0
0
0
0
0
000000 00qlmq0000000000000sqqqqkllllmllllmqqqqr&%$'0000000000000000000000
0
0
0
0
0
0
0
0
0
0
0
0
0000qqqllm0000000sqqqqsqqqqllllmuqqqqiiij0000
0
0
0
0
0
0
0
0
0
0
0
0
0 00000 00qqqqqqu00000000kllqqqqsqqqqqqqqqulmqqqqqqr00000 00 0 00 00 00 00 000 0
0
0
0
0
0
0
0
0
0
0
0
0 0&'0000000qqqqqqu00000000kllqqqqqqkqqqqqqqqquqquqqqqqqr00000000000000000000$%$'
0
0
0
0
0
0
0
0
0
0
0 00 00 00 00 000&%$%$%$%$%qqqqqqu00000sqqqqqqqqqsqqqqqqqqqquqquqqqqqqiiiiiij0 00 00 00 00 000 0&'hiiiiiiiiiiiiij000000000hiiiiiiiiiiijqqqqqqu00000000sqqqqqqqqqsqqqqqqqqqquqquqqqqqqqqqqqqqiiiiiiiiiiiiiiiqqqqqqqqqqqqqiiiiiiiiiqqqqqqqqqqqr
\ No newline at end of file
diff --git a/data/layouts/Route5_Frlg/border.bin b/data/layouts/Route5_Frlg/border.bin
new file mode 100644
index 000000000000..a701312cfff9
Binary files /dev/null and b/data/layouts/Route5_Frlg/border.bin differ
diff --git a/data/layouts/Route5_Frlg/map.bin b/data/layouts/Route5_Frlg/map.bin
new file mode 100644
index 000000000000..3c357908f297
Binary files /dev/null and b/data/layouts/Route5_Frlg/map.bin differ
diff --git a/data/layouts/Route5_PokemonDayCare_Frlg/border.bin b/data/layouts/Route5_PokemonDayCare_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/Route5_PokemonDayCare_Frlg/border.bin differ
diff --git a/data/layouts/Route5_PokemonDayCare_Frlg/map.bin b/data/layouts/Route5_PokemonDayCare_Frlg/map.bin
new file mode 100644
index 000000000000..85114f523382
--- /dev/null
+++ b/data/layouts/Route5_PokemonDayCare_Frlg/map.bin
@@ -0,0 +1 @@
+b22222222222232222222222222 3 32222222 3 32222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/Route6_Frlg/border.bin b/data/layouts/Route6_Frlg/border.bin
new file mode 100644
index 000000000000..a701312cfff9
Binary files /dev/null and b/data/layouts/Route6_Frlg/border.bin differ
diff --git a/data/layouts/Route6_Frlg/map.bin b/data/layouts/Route6_Frlg/map.bin
new file mode 100644
index 000000000000..c4e9b6b92bcc
--- /dev/null
+++ b/data/layouts/Route6_Frlg/map.bin
@@ -0,0 +1 @@
+DEEEEFLMMMMN$%$%$%$%$%$%$%\^0 0000 00d11f 00 00 0000000001111000000000000000 00 00 00 00000000 00 00 0000000000 00 00 00000000000000000000000D0E0E0F00LMMN0000000000000000TgUV0000000000000000d=ef00001010000001010000
0
0
0
0000
0
0
0
0
0
0000000
0
0
0
0000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
000100000000000
0
0
0
0
0
000000000000000
0
0
0
0
0
000000000000100
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0000
0
0
0
0000
0
0
0
0000
0
0
0
0000
0
0
0
0000
0
0000000000000000100
0
00 00 00 00 00000000000
0
0000000000010000000
0
0 00 0000
0
0
0
00000000000
0
0
0
00000 00 0000
0
0
0
0000000
0
0
0
000000000000000000$%$%$%$'0000########$000,000
\ No newline at end of file
diff --git a/data/layouts/Route7_Frlg/border.bin b/data/layouts/Route7_Frlg/border.bin
new file mode 100644
index 000000000000..a701312cfff9
Binary files /dev/null and b/data/layouts/Route7_Frlg/border.bin differ
diff --git a/data/layouts/Route7_Frlg/map.bin b/data/layouts/Route7_Frlg/map.bin
new file mode 100644
index 000000000000..08212179a4b8
--- /dev/null
+++ b/data/layouts/Route7_Frlg/map.bin
@@ -0,0 +1 @@
+$%$%$%$%$%$%$%$%$%$%0 00 00 00 00 0
0
0
0
0
0
0
0
00000000000
0
0
0
0
0
0
0
00 00 00 00 00 0
0
0
0
0
0
0
0
00000000000
0
0
0
0
0
000&%$%0 00 00 0
0
0
0
0
0
000000000000000000D0E0E0EEF0000001LMMMMN100 00 00 00 00 0081<1000000000000@1D100 0D0E0E0F00 00 00H1deeeefL10LMMN0000TgUV 00 00 00 00 00000d=ef0000000000 00 00 000 00 0000 00000000000000000000000000000000
\ No newline at end of file
diff --git a/data/layouts/Route8_Frlg/border.bin b/data/layouts/Route8_Frlg/border.bin
new file mode 100644
index 000000000000..4531975c765e
Binary files /dev/null and b/data/layouts/Route8_Frlg/border.bin differ
diff --git a/data/layouts/Route8_Frlg/map.bin b/data/layouts/Route8_Frlg/map.bin
new file mode 100644
index 000000000000..9d370b135c49
--- /dev/null
+++ b/data/layouts/Route8_Frlg/map.bin
@@ -0,0 +1 @@
+pqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpqqqqqq;<<=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyqqqpqqqqqqrLMMN0000000000 00 00 00 00 00 00 00 00 00 0 00 00 00 00 00pqqqpqqqqqqrTgUV000000000000000000000000000000000000000pqqqpqqyyyzd=ef0010100000 000000000000000000000000000 00pqqq$%$'pqqr0000000010000000000000000000000000000000&%$%$'pqqq0000xyyz00000000000000000 000100000000000000000001000 00000000pqqqDEEEEF 00 000100000000000000 00 00 00 00 00 00 00 000 0000000000000pqqq1LMMMMN1 00 00 00000 00000000 00000000000000 00 00 00 00xyyy81<100000100000000000 00
0
00
0
00
0
0000 00000000000000000@1D1000000000 00000000 000000000
0
0
0
0
00
0
00 0000000 00 00 00000000H1deeeefL100000100000000000000000 000
0
00
00
0
00
0000 00000000000010000 00 00 00000 000000000 00000000
0
0
0
0
0
0
0
0
0
000000000 00 00 00000000hiiiiiij0000000000000 00
00
00
00
00
0
0
000 0000000&%$%$'000000hiiipqqqqqqr00000 00 00 00 00 00 000000 0
0
0
0
0
0
0
0
00
0 00000000 00 00 00 00 00 0000pqqqpqqqqqqr00000000000000000000 0000
00
00
0
00
00
0 00 0000000000000000000pqqqpqqqqqqr0001000000000000100000
00
0
0
00
0
0
0
0
0000001000000000000100pqqqpqqqqqqr00000000000000000000 00000
00
0
000
0000 0000000000000000000pqqqpqqqqqqr0000000000000000000000000 0
000 0000000000000000000000000pqqqpqqqqqqiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiqqq
\ No newline at end of file
diff --git a/data/layouts/Route9_Frlg/border.bin b/data/layouts/Route9_Frlg/border.bin
new file mode 100644
index 000000000000..4531975c765e
Binary files /dev/null and b/data/layouts/Route9_Frlg/border.bin differ
diff --git a/data/layouts/Route9_Frlg/map.bin b/data/layouts/Route9_Frlg/map.bin
new file mode 100644
index 000000000000..6ac9ccccde1b
--- /dev/null
+++ b/data/layouts/Route9_Frlg/map.bin
@@ -0,0 +1 @@
+yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyykllmyyyyyyyyyyyyyyyyyklllll000000
0
0
0
0
0
0
0
0
0
0
00 00 00 00 00 00 0hiiiij
0
0
0
0
0
0psqqur 00 00 00 00 00 0000000sqqqqq
0
0
0
0
0
0
0
0
0
0
0000000000000pkllmr
0
0
0
0
0
0psqqur00000000000000000sqqqqq
0
0
0
0
0
0
0
0
0
0
0hiiij00 00 00 0psqqur0 00 00 0p{||}r 00 00000000h00sqqqqq
0
0
0
0
0
0
0
0
0
0
0pklm00psqqu00qqqq00klm{|qqq$%$%$'
0
0
0
0
0
0
0
0
0
0
0psqu0000000{||}000000yyyy0000000000squ00qqsqqq00000000000000000psqu0000000qqqq0000000000000000000000squ00qq{|||0 0psqu000000yyyy00000000000000000{|}00yyyyyy0 000 00 000000000hiisqu0000000000000klm0000000yyy00000000000000000000000kllqu0000000000000squ0000klm000klm00000000000000hi0000sqqqqu00squ0000squ000squ000000000000000000pkllm{||||}000000000000 0p{|}{|}0psqu000000psqqu0000yyyyyy0000000001000xyyyz0000xyyyz000psquklmklpsqqu0000000000000000000000 00 00 000 000 000 00 000 00p{|}000squ000sqpsqqu000000000000000000000000000000000000pqqqr0 00p{|}000sqpsqqu00kllm00xyyyzxyyyzsqpsqqu000000000000000sqqur 000 00 000 00 00 00 00 0 00 00 00 00 00 00 00 00 00 00psq$'psqqu000000000000000sqqur0000000000000000000000000000000000000psqhii{||}sqquiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii{|pqqqqqqqqqqqqqqqqqqqqqqqq{||}qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
\ No newline at end of file
diff --git a/data/layouts/RustboroCity_CuttersHouse_Frlg/border.bin b/data/layouts/RustboroCity_CuttersHouse_Frlg/border.bin
new file mode 100644
index 000000000000..19d90667980c
--- /dev/null
+++ b/data/layouts/RustboroCity_CuttersHouse_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/RustboroCity_CuttersHouse_Frlg/map.bin b/data/layouts/RustboroCity_CuttersHouse_Frlg/map.bin
new file mode 100644
index 000000000000..5515d00cfd6b
--- /dev/null
+++ b/data/layouts/RustboroCity_CuttersHouse_Frlg/map.bin
@@ -0,0 +1 @@
+yzfg8898x88no@@A@VW33v3w3+3+3+3+33^3_3+3{3|3|3}3,3,3,3,3,3,3+33>2>23,3,3,3j7k7E3+33>2>23,3,3D3r7s7E3+33333,3,3,3,3,3,3F3G3,3,3,3,3,3,3,3,3,3N7O7,3,3,3LM,3,3,3,3
\ No newline at end of file
diff --git a/data/layouts/RustboroCity_Flat1_1F_Frlg/border.bin b/data/layouts/RustboroCity_Flat1_1F_Frlg/border.bin
new file mode 100644
index 000000000000..19d90667980c
--- /dev/null
+++ b/data/layouts/RustboroCity_Flat1_1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/RustboroCity_Flat1_1F_Frlg/map.bin b/data/layouts/RustboroCity_Flat1_1F_Frlg/map.bin
new file mode 100644
index 000000000000..017298e71601
--- /dev/null
+++ b/data/layouts/RustboroCity_Flat1_1F_Frlg/map.bin
@@ -0,0 +1 @@
+8()*:888:8x88:H02B@@@B@VWBP3+3+3+3+3+3+3+3+3+33^3_3+3+3D3,3,3,3,3,3,3{3|3|3|3|3}3+3h7i7,3,3,3,3,332H6I623+3p7q7E3,3,3,3,33>2P6Q623F3G3,3,3,3,3,3,3333333N7O7,3,3,3,3LM,3,3,3,3,3,3
\ No newline at end of file
diff --git a/data/layouts/RustboroCity_Flat1_2F_Frlg/border.bin b/data/layouts/RustboroCity_Flat1_2F_Frlg/border.bin
new file mode 100644
index 000000000000..19d90667980c
--- /dev/null
+++ b/data/layouts/RustboroCity_Flat1_2F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/RustboroCity_Flat1_2F_Frlg/map.bin b/data/layouts/RustboroCity_Flat1_2F_Frlg/map.bin
new file mode 100644
index 000000000000..17a6113437e6
--- /dev/null
+++ b/data/layouts/RustboroCity_Flat1_2F_Frlg/map.bin
@@ -0,0 +1 @@
+8()*:888:8888:@02B@@@BT7UIB+3+3+3+3+3+3+3+3+3\3?3]3Q3+3+3,3,3,3,3,3,3,3{3|3|3|3}3,3+3D3~777E3,3,33>2>2>23,3+3,3777E3,3,33>2>2>23,3+3G3G3,3,3,3,3,333333,3+3O7O7,3,3,3,3,3,3,3,3,3,3,3
\ No newline at end of file
diff --git a/data/layouts/RustboroCity_Flat2_1F_Frlg/border.bin b/data/layouts/RustboroCity_Flat2_1F_Frlg/border.bin
new file mode 100644
index 000000000000..19d90667980c
--- /dev/null
+++ b/data/layouts/RustboroCity_Flat2_1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/RustboroCity_Flat2_1F_Frlg/map.bin b/data/layouts/RustboroCity_Flat2_1F_Frlg/map.bin
new file mode 100644
index 000000000000..0f6829f9c3bd
Binary files /dev/null and b/data/layouts/RustboroCity_Flat2_1F_Frlg/map.bin differ
diff --git a/data/layouts/RustboroCity_Flat2_2F_Frlg/border.bin b/data/layouts/RustboroCity_Flat2_2F_Frlg/border.bin
new file mode 100644
index 000000000000..19d90667980c
--- /dev/null
+++ b/data/layouts/RustboroCity_Flat2_2F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/RustboroCity_Flat2_2F_Frlg/map.bin b/data/layouts/RustboroCity_Flat2_2F_Frlg/map.bin
new file mode 100644
index 000000000000..9f3750fb4b4c
Binary files /dev/null and b/data/layouts/RustboroCity_Flat2_2F_Frlg/map.bin differ
diff --git a/data/layouts/RustboroCity_Flat2_3F_Frlg/border.bin b/data/layouts/RustboroCity_Flat2_3F_Frlg/border.bin
new file mode 100644
index 000000000000..19d90667980c
--- /dev/null
+++ b/data/layouts/RustboroCity_Flat2_3F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/RustboroCity_Flat2_3F_Frlg/map.bin b/data/layouts/RustboroCity_Flat2_3F_Frlg/map.bin
new file mode 100644
index 000000000000..2112fe7996c1
Binary files /dev/null and b/data/layouts/RustboroCity_Flat2_3F_Frlg/map.bin differ
diff --git a/data/layouts/SSAnne_1F_Corridor_Frlg/border.bin b/data/layouts/SSAnne_1F_Corridor_Frlg/border.bin
new file mode 100644
index 000000000000..b90547a3e261
--- /dev/null
+++ b/data/layouts/SSAnne_1F_Corridor_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SSAnne_1F_Corridor_Frlg/map.bin b/data/layouts/SSAnne_1F_Corridor_Frlg/map.bin
new file mode 100644
index 000000000000..b9fde8c26ada
--- /dev/null
+++ b/data/layouts/SSAnne_1F_Corridor_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222222222232232232232232232232222222222222222222222222222222222222222222266222223223222
\ No newline at end of file
diff --git a/data/layouts/SSAnne_2F_Corridor_Frlg/border.bin b/data/layouts/SSAnne_2F_Corridor_Frlg/border.bin
new file mode 100644
index 000000000000..b90547a3e261
--- /dev/null
+++ b/data/layouts/SSAnne_2F_Corridor_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SSAnne_2F_Corridor_Frlg/map.bin b/data/layouts/SSAnne_2F_Corridor_Frlg/map.bin
new file mode 100644
index 000000000000..9fa53735cc41
--- /dev/null
+++ b/data/layouts/SSAnne_2F_Corridor_Frlg/map.bin
@@ -0,0 +1 @@
+6233232222222222222222222222222222222222222222222222232222222232222222222222222222222222222232222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SSAnne_3F_Corridor_Frlg/border.bin b/data/layouts/SSAnne_3F_Corridor_Frlg/border.bin
new file mode 100644
index 000000000000..b90547a3e261
--- /dev/null
+++ b/data/layouts/SSAnne_3F_Corridor_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SSAnne_3F_Corridor_Frlg/map.bin b/data/layouts/SSAnne_3F_Corridor_Frlg/map.bin
new file mode 100644
index 000000000000..336e034fa808
--- /dev/null
+++ b/data/layouts/SSAnne_3F_Corridor_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222223VW322222222222222223^_32222222222222222222fg32222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SSAnne_B1F_Corridor_Frlg/border.bin b/data/layouts/SSAnne_B1F_Corridor_Frlg/border.bin
new file mode 100644
index 000000000000..b90547a3e261
--- /dev/null
+++ b/data/layouts/SSAnne_B1F_Corridor_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SSAnne_B1F_Corridor_Frlg/map.bin b/data/layouts/SSAnne_B1F_Corridor_Frlg/map.bin
new file mode 100644
index 000000000000..db24bfff4b4a
--- /dev/null
+++ b/data/layouts/SSAnne_B1F_Corridor_Frlg/map.bin
@@ -0,0 +1 @@
+T2222222222222222223222222222222222222U322222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SSAnne_CaptainsOffice_Frlg/border.bin b/data/layouts/SSAnne_CaptainsOffice_Frlg/border.bin
new file mode 100644
index 000000000000..b90547a3e261
--- /dev/null
+++ b/data/layouts/SSAnne_CaptainsOffice_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SSAnne_CaptainsOffice_Frlg/map.bin b/data/layouts/SSAnne_CaptainsOffice_Frlg/map.bin
new file mode 100644
index 000000000000..75c9eb2d3e67
--- /dev/null
+++ b/data/layouts/SSAnne_CaptainsOffice_Frlg/map.bin
@@ -0,0 +1 @@
+232222222
22222222222222233222322222
\ No newline at end of file
diff --git a/data/layouts/SSAnne_Deck_Frlg/border.bin b/data/layouts/SSAnne_Deck_Frlg/border.bin
new file mode 100644
index 000000000000..d9994d6cdc78
--- /dev/null
+++ b/data/layouts/SSAnne_Deck_Frlg/border.bin
@@ -0,0 +1 @@
+++++
\ No newline at end of file
diff --git a/data/layouts/SSAnne_Deck_Frlg/map.bin b/data/layouts/SSAnne_Deck_Frlg/map.bin
new file mode 100644
index 000000000000..bf3fb5e80d45
--- /dev/null
+++ b/data/layouts/SSAnne_Deck_Frlg/map.bin
@@ -0,0 +1 @@
++++++++++++,*++++++++++++++++++,*++++++++++++++++++,*++++++++++++++++++,*++++++++++++++QR[\v]eeeee+++++QRYZc3d3d3d3d3mn+++QRYZS3P33P3P3P3P3P3u+QRYZS3P3P3w3P3P3wP3P3P3}XYZS3P3P3P3P3P3P3P3P3P3P3P3P33`a3b3P3P3P3P3P3P3P3P3P3P3P3P3P33hijx3b3P3P3P3P3P3P3P3P3P3P3P3pqrijx3b3P3P33P3P3P3P3P33+yzzrijx3b33wP3P3P33+pqzzzrijk3l3l3l3l3~++1yzzzzzrstttttttttttttt++1pqzzzzz{||||||||||||||++1+1yzzzzz{||||||||||||||+++pqzzzz{||||||||||||||++++yzzzz{||||||||||||||
\ No newline at end of file
diff --git a/data/layouts/SSAnne_Exterior_Frlg/border.bin b/data/layouts/SSAnne_Exterior_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/SSAnne_Exterior_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SSAnne_Exterior_Frlg/map.bin b/data/layouts/SSAnne_Exterior_Frlg/map.bin
new file mode 100644
index 000000000000..a76275227088
--- /dev/null
+++ b/data/layouts/SSAnne_Exterior_Frlg/map.bin
@@ -0,0 +1 @@
+,*,*+++++++++++++++++++++,*++++(%333333333+++,
*+++++++++111111111+++++++++++,*+++++111111111111+++++++2+++0##########!11 #########++++++++++++111++++++++++++++++,11*++++++++++++++++++++++++++++++++,111*+++++++++++++++++++,11*++++++++++++++++++++++++++,111*+++++++++++++++++++++,11*++++++++++++++++++++++++++,111*+++++++++++++++++++++,11*++++++++++++++++++++++++++,1*+++++++++++++++++++,11*+++++++++++++++++++++1++++++++++++++,11*++++++++++++++++++++++1++++++++++++++,11*+++++++++++++++++++++++++,1*+++++++++++++++++,11*++++++++++++++++++++++!2"++++++++++++++++,11*++++++++++++++++++++++# $++++++++++++++,11*+++++++++++++++++++++++++++++,11*++++++++++++++++++++++++,11*++++++++++++++++++,11*++++++++++++++++++,11*+++++++++++++++++,11*++++++++++++++++,11*++++++++++++++++,11*++++++++,11*++++,11*+++,11*++,11*++,11*+11*++*+0###1
\ No newline at end of file
diff --git a/data/layouts/SSAnne_Kitchen_Frlg/border.bin b/data/layouts/SSAnne_Kitchen_Frlg/border.bin
new file mode 100644
index 000000000000..b90547a3e261
--- /dev/null
+++ b/data/layouts/SSAnne_Kitchen_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SSAnne_Kitchen_Frlg/map.bin b/data/layouts/SSAnne_Kitchen_Frlg/map.bin
new file mode 100644
index 000000000000..f74655d33167
--- /dev/null
+++ b/data/layouts/SSAnne_Kitchen_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SSAnne_Room1_Frlg/border.bin b/data/layouts/SSAnne_Room1_Frlg/border.bin
new file mode 100644
index 000000000000..b90547a3e261
--- /dev/null
+++ b/data/layouts/SSAnne_Room1_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SSAnne_Room1_Frlg/map.bin b/data/layouts/SSAnne_Room1_Frlg/map.bin
new file mode 100644
index 000000000000..b5cfa38c41f6
--- /dev/null
+++ b/data/layouts/SSAnne_Room1_Frlg/map.bin
@@ -0,0 +1 @@
+:+333333333333333333893(3)*3@A4303123HI3333
\ No newline at end of file
diff --git a/data/layouts/SSAnne_Room2_Frlg/border.bin b/data/layouts/SSAnne_Room2_Frlg/border.bin
new file mode 100644
index 000000000000..b90547a3e261
--- /dev/null
+++ b/data/layouts/SSAnne_Room2_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SSAnne_Room2_Frlg/map.bin b/data/layouts/SSAnne_Room2_Frlg/map.bin
new file mode 100644
index 000000000000..e1509b523341
--- /dev/null
+++ b/data/layouts/SSAnne_Room2_Frlg/map.bin
@@ -0,0 +1,2 @@
+;;BCD3
+3JKL33'3<3$3$3$3$3'3$3$3$3$3$33$3$3$3$3$3$3$3=3>3?3
\ No newline at end of file
diff --git a/data/layouts/SSTidal_Corridor_Frlg/border.bin b/data/layouts/SSTidal_Corridor_Frlg/border.bin
new file mode 100644
index 000000000000..19d90667980c
--- /dev/null
+++ b/data/layouts/SSTidal_Corridor_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SSTidal_Corridor_Frlg/map.bin b/data/layouts/SSTidal_Corridor_Frlg/map.bin
new file mode 100644
index 000000000000..f8cf1725df61
--- /dev/null
+++ b/data/layouts/SSTidal_Corridor_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222226222222222222222222201111111111222222011111111112222220111111111122222201111111111222222%#$"#$"#$"#&22222-+6{*+6{*+6{*+62222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SSTidal_LowerDeck_Frlg/border.bin b/data/layouts/SSTidal_LowerDeck_Frlg/border.bin
new file mode 100644
index 000000000000..19d90667980c
--- /dev/null
+++ b/data/layouts/SSTidal_LowerDeck_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SSTidal_LowerDeck_Frlg/map.bin b/data/layouts/SSTidal_LowerDeck_Frlg/map.bin
new file mode 100644
index 000000000000..059ce30fe4b0
--- /dev/null
+++ b/data/layouts/SSTidal_LowerDeck_Frlg/map.bin
@@ -0,0 +1 @@
+22222222
22
22
22
2
2
22
2222
2222
22222
2
2
22222222
222
2222
2
2
22222
2
22222
2
2222222222222222
2
22
2
2
2
2
2
2
2
2
2
2
2
2
2
2222222222
222
222
2
22222
2662222222
2
\ No newline at end of file
diff --git a/data/layouts/SSTidal_Rooms_Frlg/border.bin b/data/layouts/SSTidal_Rooms_Frlg/border.bin
new file mode 100644
index 000000000000..19d90667980c
--- /dev/null
+++ b/data/layouts/SSTidal_Rooms_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SSTidal_Rooms_Frlg/map.bin b/data/layouts/SSTidal_Rooms_Frlg/map.bin
new file mode 100644
index 000000000000..6103ad0c2268
--- /dev/null
+++ b/data/layouts/SSTidal_Rooms_Frlg/map.bin
@@ -0,0 +1 @@
+6@kcmE@kcmE@kc''@kcmE7>HsuMHsuMHs////uM?>PQ:2;2;2TUPQ:2;2;2TUPQ:2;2;2;2;2;2;2;2TU?>XY=28282\]XY=28282\]XY=282828282828282\]?>:;2<28282;2;2:;2<28282;2;2:2;2<282828282w682828282;2;2?>=2828282828282w68282VW8282=282`2VWa282=28282828282a2?>=2828282VW82=282`2^_a282=282`2^_a282=282828282VW?>=28282`2^_b=2828282828282=2828282b8282=2828282`2^_?6@klvlmElvllCDE@lvlvmE@kv'vmE7>Hst~tuMt~ttKij/t~t~uMHs~/~//?>PQ:2;2;2TU:2;2;2;2;2qr66;2;2;2TUPQ:2;2;2;2|2?>XY=28282\]=2VW8282yz828282\]XY=2VppW?>:;2<28282;2|2=2^_a282;256=282828282;2;2h;2<2^xx_?>=2828282828282=2828282828282=2828282828282=28282`2828282?>=2828282828282=2828282828282=2828282828282=2828282828282?>=28282de8282=28282de8282=28282de8282=28282de8282?
\ No newline at end of file
diff --git a/data/layouts/SafariZone_Center_Frlg/border.bin b/data/layouts/SafariZone_Center_Frlg/border.bin
new file mode 100644
index 000000000000..964b51edb7e9
--- /dev/null
+++ b/data/layouts/SafariZone_Center_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SafariZone_Center_Frlg/map.bin b/data/layouts/SafariZone_Center_Frlg/map.bin
new file mode 100644
index 000000000000..f1fe437e9750
--- /dev/null
+++ b/data/layouts/SafariZone_Center_Frlg/map.bin
@@ -0,0 +1,6 @@
+ %&'%&'#%&' #7
22
0 00 00 0000000 0000000000 00 00 0 000 00 0 %&'00000
0
0
0
000000 00 00000
0
0
0
0
00000000#0 0 0
0
0
0
0
0
0
0
00 000000
0
0
0
0
0
0
0
0
0
000100 00
0
0
0
0
0
0
0
0
0000000
0
0
0
0
0
0
0
0
0
0
0
00000#%&'0 0
0
0
0
0
0
0
0
0
00 00 00
0
0
0
0
0
0
0
0
0
0
0
0
00000 %&'00
0
0
0
0
0
0
0
0000000
0
0
0
0
0
0
0
0
0
0
0
001000#0 0 0
0
0
0
0
00000 00 00 0
0
0
0
0 00 0
0
0
0000000000
0
0
000
0"##############$0 00 000000
0 00 0
000
0
0*++++++++++++++,
0000000
0
0*++(3131313131313131)++,0 00 000 00 0200000 0
0
0
0*++,0 0000 00 0*++,0000 0000022001010
0
0
0*++0########1++,
0
00000 00 0
+
+ 20000000
0
0*++++++++++++++,
0
0
0
000000
+
+
+00000100031313131313131313131313131310
0
0
0
0
0000 !" !"0000000 0 000
0
0
0
0
0
0
00#%& !" !"0 00 0000 00 00 00 0 00 0
0
0
0
0
0
0
00 %&'0 00 00 0000000000100022222000
0
0
0
00 00#00000
0
0
0
0
0
0
0
001000 000
0
0
0
0
0
0
00 0 00 0
0
0
0
0
0
0
0
0
0
00000000
0
0
0
0
0
000#%&'0000
0
0
0
0
0
0
0
0
0
00000 00
0
0
0
0
00 00 0 0 00 00
0
0
0
0
0
0
0
00 000000 0 00 0
0
0
0
000000#00000
0
0
0
0
0
0
0
0
0
0
0 00 00 00 0
0
0
0
00 00 00 0 0 00 0000
0
0
0
0
0
0
00 00 00 00 00
0
0
0
00000000#3333333333330 0 00000 00 0333333333333 222222#%&' " !" " !" !" %&'%&'%&'" "
\ No newline at end of file
diff --git a/data/layouts/SafariZone_East_Frlg/border.bin b/data/layouts/SafariZone_East_Frlg/border.bin
new file mode 100644
index 000000000000..964b51edb7e9
--- /dev/null
+++ b/data/layouts/SafariZone_East_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SafariZone_East_Frlg/map.bin b/data/layouts/SafariZone_East_Frlg/map.bin
new file mode 100644
index 000000000000..28a9cafb73c1
Binary files /dev/null and b/data/layouts/SafariZone_East_Frlg/map.bin differ
diff --git a/data/layouts/SafariZone_North_Frlg/border.bin b/data/layouts/SafariZone_North_Frlg/border.bin
new file mode 100644
index 000000000000..964b51edb7e9
--- /dev/null
+++ b/data/layouts/SafariZone_North_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SafariZone_North_Frlg/map.bin b/data/layouts/SafariZone_North_Frlg/map.bin
new file mode 100644
index 000000000000..03319e72c5dc
Binary files /dev/null and b/data/layouts/SafariZone_North_Frlg/map.bin differ
diff --git a/data/layouts/SafariZone_RestHouse_Frlg/border.bin b/data/layouts/SafariZone_RestHouse_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SafariZone_RestHouse_Frlg/border.bin differ
diff --git a/data/layouts/SafariZone_RestHouse_Frlg/map.bin b/data/layouts/SafariZone_RestHouse_Frlg/map.bin
new file mode 100644
index 000000000000..caec48cdc728
--- /dev/null
+++ b/data/layouts/SafariZone_RestHouse_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SafariZone_SecretHouse_Frlg/border.bin b/data/layouts/SafariZone_SecretHouse_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SafariZone_SecretHouse_Frlg/border.bin differ
diff --git a/data/layouts/SafariZone_SecretHouse_Frlg/map.bin b/data/layouts/SafariZone_SecretHouse_Frlg/map.bin
new file mode 100644
index 000000000000..8acbf7b90d53
--- /dev/null
+++ b/data/layouts/SafariZone_SecretHouse_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SafariZone_West_Frlg/border.bin b/data/layouts/SafariZone_West_Frlg/border.bin
new file mode 100644
index 000000000000..964b51edb7e9
--- /dev/null
+++ b/data/layouts/SafariZone_West_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SafariZone_West_Frlg/map.bin b/data/layouts/SafariZone_West_Frlg/map.bin
new file mode 100644
index 000000000000..f2f943b69f00
Binary files /dev/null and b/data/layouts/SafariZone_West_Frlg/map.bin differ
diff --git a/data/layouts/SaffronCity_Connection_Frlg/border.bin b/data/layouts/SaffronCity_Connection_Frlg/border.bin
new file mode 100644
index 000000000000..a701312cfff9
Binary files /dev/null and b/data/layouts/SaffronCity_Connection_Frlg/border.bin differ
diff --git a/data/layouts/SaffronCity_Connection_Frlg/map.bin b/data/layouts/SaffronCity_Connection_Frlg/map.bin
new file mode 100644
index 000000000000..dd7aea1cff1d
Binary files /dev/null and b/data/layouts/SaffronCity_Connection_Frlg/map.bin differ
diff --git a/data/layouts/SaffronCity_CopycatsHouse_1F_Frlg/border.bin b/data/layouts/SaffronCity_CopycatsHouse_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SaffronCity_CopycatsHouse_1F_Frlg/border.bin differ
diff --git a/data/layouts/SaffronCity_CopycatsHouse_1F_Frlg/map.bin b/data/layouts/SaffronCity_CopycatsHouse_1F_Frlg/map.bin
new file mode 100644
index 000000000000..6db070ab7a7f
--- /dev/null
+++ b/data/layouts/SaffronCity_CopycatsHouse_1F_Frlg/map.bin
@@ -0,0 +1 @@
+500000000000000000000000000000000000000000000000000000000000000000000000000
\ No newline at end of file
diff --git a/data/layouts/SaffronCity_CopycatsHouse_2F_Frlg/border.bin b/data/layouts/SaffronCity_CopycatsHouse_2F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SaffronCity_CopycatsHouse_2F_Frlg/border.bin differ
diff --git a/data/layouts/SaffronCity_CopycatsHouse_2F_Frlg/map.bin b/data/layouts/SaffronCity_CopycatsHouse_2F_Frlg/map.bin
new file mode 100644
index 000000000000..c3090f485807
Binary files /dev/null and b/data/layouts/SaffronCity_CopycatsHouse_2F_Frlg/map.bin differ
diff --git a/data/layouts/SaffronCity_Dojo_Frlg/border.bin b/data/layouts/SaffronCity_Dojo_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SaffronCity_Dojo_Frlg/border.bin differ
diff --git a/data/layouts/SaffronCity_Dojo_Frlg/map.bin b/data/layouts/SaffronCity_Dojo_Frlg/map.bin
new file mode 100644
index 000000000000..55b1548aad6a
--- /dev/null
+++ b/data/layouts/SaffronCity_Dojo_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SaffronCity_EastWestEntrance_Frlg/border.bin b/data/layouts/SaffronCity_EastWestEntrance_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SaffronCity_EastWestEntrance_Frlg/border.bin differ
diff --git a/data/layouts/SaffronCity_EastWestEntrance_Frlg/map.bin b/data/layouts/SaffronCity_EastWestEntrance_Frlg/map.bin
new file mode 100644
index 000000000000..8b9683b9962e
--- /dev/null
+++ b/data/layouts/SaffronCity_EastWestEntrance_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222(3'3'3'3'3'3)32222,322222-32222*3&3&3&3&3&3+32222222222222
\ No newline at end of file
diff --git a/data/layouts/SaffronCity_Frlg/border.bin b/data/layouts/SaffronCity_Frlg/border.bin
new file mode 100644
index 000000000000..a701312cfff9
Binary files /dev/null and b/data/layouts/SaffronCity_Frlg/border.bin differ
diff --git a/data/layouts/SaffronCity_Frlg/map.bin b/data/layouts/SaffronCity_Frlg/map.bin
new file mode 100644
index 000000000000..001fb4e2fe6f
Binary files /dev/null and b/data/layouts/SaffronCity_Frlg/map.bin differ
diff --git a/data/layouts/SaffronCity_Gym_Frlg/border.bin b/data/layouts/SaffronCity_Gym_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SaffronCity_Gym_Frlg/border.bin differ
diff --git a/data/layouts/SaffronCity_Gym_Frlg/map.bin b/data/layouts/SaffronCity_Gym_Frlg/map.bin
new file mode 100644
index 000000000000..2eee324477fd
--- /dev/null
+++ b/data/layouts/SaffronCity_Gym_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SaffronCity_NorthSouthEntrance_Frlg/border.bin b/data/layouts/SaffronCity_NorthSouthEntrance_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SaffronCity_NorthSouthEntrance_Frlg/border.bin differ
diff --git a/data/layouts/SaffronCity_NorthSouthEntrance_Frlg/map.bin b/data/layouts/SaffronCity_NorthSouthEntrance_Frlg/map.bin
new file mode 100644
index 000000000000..138b62d0f8a0
--- /dev/null
+++ b/data/layouts/SaffronCity_NorthSouthEntrance_Frlg/map.bin
@@ -0,0 +1 @@
+2222222223222223222222322222322222#32222222222222222
\ No newline at end of file
diff --git a/data/layouts/SaffronCity_PokemonTrainerFanClub_Frlg/border.bin b/data/layouts/SaffronCity_PokemonTrainerFanClub_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SaffronCity_PokemonTrainerFanClub_Frlg/border.bin differ
diff --git a/data/layouts/SaffronCity_PokemonTrainerFanClub_Frlg/map.bin b/data/layouts/SaffronCity_PokemonTrainerFanClub_Frlg/map.bin
new file mode 100644
index 000000000000..1f0a70d65a63
--- /dev/null
+++ b/data/layouts/SaffronCity_PokemonTrainerFanClub_Frlg/map.bin
@@ -0,0 +1,2 @@
+52222
+32222222222222222222222222222222222222222222222222222322222223222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SeafoamIslands_1F_Frlg/border.bin b/data/layouts/SeafoamIslands_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/SeafoamIslands_1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SeafoamIslands_1F_Frlg/map.bin b/data/layouts/SeafoamIslands_1F_Frlg/map.bin
new file mode 100644
index 000000000000..00e11336438b
Binary files /dev/null and b/data/layouts/SeafoamIslands_1F_Frlg/map.bin differ
diff --git a/data/layouts/SeafoamIslands_B1F_Frlg/border.bin b/data/layouts/SeafoamIslands_B1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/SeafoamIslands_B1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SeafoamIslands_B1F_Frlg/map.bin b/data/layouts/SeafoamIslands_B1F_Frlg/map.bin
new file mode 100644
index 000000000000..8735540c7120
--- /dev/null
+++ b/data/layouts/SeafoamIslands_B1F_Frlg/map.bin
@@ -0,0 +1 @@
+BBBBBBBBBBBBBBBBBBBB22222222222BBBBBBBBBB2222222222222222222BBBBBBBBBB22222222222BBBFBBBBBBB22222222222BBBBBBBBBBB222222222222222BBBBBBBBBBBB222222222222222BBBBBBBBB222222222222222BBBBBBXCBBBBB222222222222222BBBBBBBBBBBB222222222222222BBBBBBBB2222222222222BBBBBBBBWCBBBB22222222222222222BBBBBBBBBBBBB22222222222222222BBBBBBBBBBBBB22222222222222222BBBBBBBBBBBBB22222222222222222222222222U22222222222222222222222222222222222222222222222222222222222U222222222222222222222222222222UVUVUVUV
\ No newline at end of file
diff --git a/data/layouts/SeafoamIslands_B2F_Frlg/border.bin b/data/layouts/SeafoamIslands_B2F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/SeafoamIslands_B2F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SeafoamIslands_B2F_Frlg/map.bin b/data/layouts/SeafoamIslands_B2F_Frlg/map.bin
new file mode 100644
index 000000000000..968163399d98
Binary files /dev/null and b/data/layouts/SeafoamIslands_B2F_Frlg/map.bin differ
diff --git a/data/layouts/SeafoamIslands_B3F_CurrentStopped_Frlg/border.bin b/data/layouts/SeafoamIslands_B3F_CurrentStopped_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/SeafoamIslands_B3F_CurrentStopped_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SeafoamIslands_B3F_CurrentStopped_Frlg/map.bin b/data/layouts/SeafoamIslands_B3F_CurrentStopped_Frlg/map.bin
new file mode 100644
index 000000000000..d1385e8cb761
--- /dev/null
+++ b/data/layouts/SeafoamIslands_B3F_CurrentStopped_Frlg/map.bin
@@ -0,0 +1,3 @@
+'''///BBBBBBBBB///2222222BBBBBBBBB7772222222BBBBBBBBB !!&
%"22222222BBBBBBBBB#
$22222222BBBBBBBBBC C C C C C
+C
$BBBBBBBBBBBB()BBBBBBBBBBBBB2222BBBBB*,BBBBBBBBBBBBB2222BBB22*,BBBBBBBBBBBWCBBBBXCBBB ###1,22BBBBBBBBBBBBBBBBB*++++0###!BBBBBBBBBBB*::::::::,BBBBBBBBBBB22BBBWC C C C C
+C::CXCBBBB22BBBBBBBBB3,3,32BBBBB2222222222BBBBBBBBB3-3-32BBBBBBU22222222225-3'4222222222222222227'-622222U2222222222222222223./22222UV3012UVUUV3./VBFUUVVBBU3012VBBBUVBBBBBUVBBB
\ No newline at end of file
diff --git a/data/layouts/SeafoamIslands_B3F_Frlg/border.bin b/data/layouts/SeafoamIslands_B3F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/SeafoamIslands_B3F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SeafoamIslands_B3F_Frlg/map.bin b/data/layouts/SeafoamIslands_B3F_Frlg/map.bin
new file mode 100644
index 000000000000..f6803677d0c0
--- /dev/null
+++ b/data/layouts/SeafoamIslands_B3F_Frlg/map.bin
@@ -0,0 +1,3 @@
+'''///BBBBBBBBB///2222222BBBBBBBBB7772222222BBBBBBBBB !!&
%"22222222BBBBBBBBB#
$22222222BBBBBBBBBC C C C C C
+C
$BBBBBBBBBBBB;<BBBBBBBBBBBBB2222BBBBB#$BBBBBBBBBBBBB2222BBB22#$BBBBBBBBBBBWBBBBXBBB PP!&$22BBBBBBBBBBBBBBBBB#
%PQBBBBBBBBBBB#
$BBBBBBBBBBB22BBBWC C C C C
+C
CXCBBBB22BBBBBBBBB#$BBBBB2222222222BBBBBBBBB#$BBBBBBU2222222222#$2222222222222222222222U22222222222222222222222UVUVUUVVBFUUVVBBUVBBBUVBBBBBUVBBB
\ No newline at end of file
diff --git a/data/layouts/SeafoamIslands_B4F_CurrentStopped_Frlg/border.bin b/data/layouts/SeafoamIslands_B4F_CurrentStopped_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/SeafoamIslands_B4F_CurrentStopped_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SeafoamIslands_B4F_CurrentStopped_Frlg/map.bin b/data/layouts/SeafoamIslands_B4F_CurrentStopped_Frlg/map.bin
new file mode 100644
index 000000000000..13a635e49520
--- /dev/null
+++ b/data/layouts/SeafoamIslands_B4F_CurrentStopped_Frlg/map.bin
@@ -0,0 +1,3 @@
+ #!BBBBBBBB ##!BBBBBBBBBBBBB*+,BBBBBBBB*++,BBBBBBBBBBBB*+,BBBBBB*++,BBBBBBBBBBB*+,22*++,BBBBBBBBBBBB*+0##########1++,BBBBBBBBBBB*+++++++++++++++,BB22*++++++C C C C C C C C CXCBB #########!*+++++,BBBBBBBBB*+++++++++,*+++++,BBBBBBBBBBBB*+++++++++,*+++++,BBBBBBBBBBBB*+++++++++,V*+++++,BBBBBBB*+++++++++,U*+++++,22BB ##1+++++++++,*+++++0######!BB*++++++++++++,*++++++++++++,BB*++++++++++++,VU*++++++++++++,BB*++++++++++++,*++++++++++++,BB*++++++++++++,U++C C C C C CXCBBWC C
+C++++++++++,*+BBBBBBBBBBBWC
+C++++++++,BBBBBBBBBBBBBBVBBBBBBBBBBBBBBUV
\ No newline at end of file
diff --git a/data/layouts/SeafoamIslands_B4F_Frlg/border.bin b/data/layouts/SeafoamIslands_B4F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/SeafoamIslands_B4F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SeafoamIslands_B4F_Frlg/map.bin b/data/layouts/SeafoamIslands_B4F_Frlg/map.bin
new file mode 100644
index 000000000000..668ac25807e4
--- /dev/null
+++ b/data/layouts/SeafoamIslands_B4F_Frlg/map.bin
@@ -0,0 +1,3 @@
+BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB622BBBBBBBBBBBBBBBBBBBBBBBBB22C C C C C C C C CXCBB #########!6BBBBBBBBB*+++++++++,BBBBBBBBBBBB*+++++++++,BBBBBBBBBBBB*+++++++++,VBBBBBBB*+++++++++,U22BB ##1+++++++++,BB*++++++++++++,BB*++++++++++++,VUBB*++++++++++++,BB*++++++++++++,UC C C C C CXCBBWC C
+C++++++++++,89BBBBBBBBBBBWC
+C++++++++,BBBBBBBBBBBBBBVBBBBBBBBBBBBBBUV
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_Frlg/border.bin b/data/layouts/SevenIsland_Frlg/border.bin
new file mode 100644
index 000000000000..75f2c916c55e
--- /dev/null
+++ b/data/layouts/SevenIsland_Frlg/border.bin
@@ -0,0 +1 @@
+vvvv
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_Frlg/map.bin b/data/layouts/SevenIsland_Frlg/map.bin
new file mode 100644
index 000000000000..05be06e76cef
--- /dev/null
+++ b/data/layouts/SevenIsland_Frlg/map.bin
@@ -0,0 +1 @@
+qqqqqur000HIJKp{|||}qqq|||qur000PQRSpqqqqqq|||squr000XYZ[xyq||}q|s{|}r000`ab0 0pqu|||issqqqr0000000000pquuhkkts{qqr00000000 0 0pquursmt{0002222200pquursvxis01230000 0pquursvots89:;00000xuursvvts@Abc0000 0puursvvts000000000000 00 0puursvvts000000000000000x}ursvvt{|||000||||000||}rsvvxkkkis0 00uhkkk222kkkysvvossst{000}rs22ssmvvvossxk111kysssvvvvvvoss111ssssmDEvvDEvos111ssssvLMvvLMvvs111ssssvvvvvvvvvs111sssssmvvvvvvvv
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_House_Room1_DoorOpen_Frlg/border.bin b/data/layouts/SevenIsland_House_Room1_DoorOpen_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SevenIsland_House_Room1_DoorOpen_Frlg/border.bin differ
diff --git a/data/layouts/SevenIsland_House_Room1_DoorOpen_Frlg/map.bin b/data/layouts/SevenIsland_House_Room1_DoorOpen_Frlg/map.bin
new file mode 100644
index 000000000000..b9381326fee8
--- /dev/null
+++ b/data/layouts/SevenIsland_House_Room1_DoorOpen_Frlg/map.bin
@@ -0,0 +1 @@
+=>9{|}PQ9=>EF~1wXEFM1N11111111M1N1V1 1 1 1 1 1 1 1 1 1 1^ 1 1 1o1efg1 1 1 11 1 1 1o1mng1 1 1 1V1 1 1 1 1 1 1 1 1 1 1^ 1 1?1G1O1 1 1 1 1 1
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_House_Room1_Frlg/border.bin b/data/layouts/SevenIsland_House_Room1_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SevenIsland_House_Room1_Frlg/border.bin differ
diff --git a/data/layouts/SevenIsland_House_Room1_Frlg/map.bin b/data/layouts/SevenIsland_House_Room1_Frlg/map.bin
new file mode 100644
index 000000000000..e439b6d6fd0d
--- /dev/null
+++ b/data/layouts/SevenIsland_House_Room1_Frlg/map.bin
@@ -0,0 +1 @@
+=>{|}PQ=>EFXYEFM1N11111111M1N1V1 1 1 1 1 1 1 1 1 1 1^ 1 1 1o1efg1 1 1 11 1 1 1o1mng1 1 1 1V1 1 1 1 1 1 1 1 1 1 1^ 1 1?1G1O1 1 1 1 1 1
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_House_Room2_Frlg/border.bin b/data/layouts/SevenIsland_House_Room2_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SevenIsland_House_Room2_Frlg/border.bin differ
diff --git a/data/layouts/SevenIsland_House_Room2_Frlg/map.bin b/data/layouts/SevenIsland_House_Room2_Frlg/map.bin
new file mode 100644
index 000000000000..7ed3a8c8ada3
--- /dev/null
+++ b/data/layouts/SevenIsland_House_Room2_Frlg/map.bin
@@ -0,0 +1 @@
+{|}PQPQ!~1w!XYXY!111111111111 1 1 1 1 1 1 1 1 1 161 1 1#1$1$1$1$1%1 1 1 11 1 1+1,1,1,1,1-1 1 1 11 1 1314141414151 1 1.1 1 1 1 1 1 1 1 1 1 161 1 1 1 1 1 1 1 1 1 1 1
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_SevaultCanyon_Entrance_Frlg/border.bin b/data/layouts/SevenIsland_SevaultCanyon_Entrance_Frlg/border.bin
new file mode 100644
index 000000000000..75f2c916c55e
--- /dev/null
+++ b/data/layouts/SevenIsland_SevaultCanyon_Entrance_Frlg/border.bin
@@ -0,0 +1 @@
+vvvv
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_SevaultCanyon_Entrance_Frlg/map.bin b/data/layouts/SevenIsland_SevaultCanyon_Entrance_Frlg/map.bin
new file mode 100644
index 000000000000..080fac6fb4c3
Binary files /dev/null and b/data/layouts/SevenIsland_SevaultCanyon_Entrance_Frlg/map.bin differ
diff --git a/data/layouts/SevenIsland_SevaultCanyon_Frlg/border.bin b/data/layouts/SevenIsland_SevaultCanyon_Frlg/border.bin
new file mode 100644
index 000000000000..4531975c765e
Binary files /dev/null and b/data/layouts/SevenIsland_SevaultCanyon_Frlg/border.bin differ
diff --git a/data/layouts/SevenIsland_SevaultCanyon_Frlg/map.bin b/data/layouts/SevenIsland_SevaultCanyon_Frlg/map.bin
new file mode 100644
index 000000000000..d2414a683973
Binary files /dev/null and b/data/layouts/SevenIsland_SevaultCanyon_Frlg/map.bin differ
diff --git a/data/layouts/SevenIsland_SevaultCanyon_TanobyKey_Frlg/border.bin b/data/layouts/SevenIsland_SevaultCanyon_TanobyKey_Frlg/border.bin
new file mode 100644
index 000000000000..56b76feec923
--- /dev/null
+++ b/data/layouts/SevenIsland_SevaultCanyon_TanobyKey_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_SevaultCanyon_TanobyKey_Frlg/map.bin b/data/layouts/SevenIsland_SevaultCanyon_TanobyKey_Frlg/map.bin
new file mode 100644
index 000000000000..77ec431c89c9
Binary files /dev/null and b/data/layouts/SevenIsland_SevaultCanyon_TanobyKey_Frlg/map.bin differ
diff --git a/data/layouts/SevenIsland_TanobyRuins_DilfordChamber_Frlg/border.bin b/data/layouts/SevenIsland_TanobyRuins_DilfordChamber_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SevenIsland_TanobyRuins_DilfordChamber_Frlg/border.bin differ
diff --git a/data/layouts/SevenIsland_TanobyRuins_DilfordChamber_Frlg/map.bin b/data/layouts/SevenIsland_TanobyRuins_DilfordChamber_Frlg/map.bin
new file mode 100644
index 000000000000..50d04c4d3b3a
--- /dev/null
+++ b/data/layouts/SevenIsland_TanobyRuins_DilfordChamber_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_TanobyRuins_Frlg/border.bin b/data/layouts/SevenIsland_TanobyRuins_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/SevenIsland_TanobyRuins_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_TanobyRuins_Frlg/map.bin b/data/layouts/SevenIsland_TanobyRuins_Frlg/map.bin
new file mode 100644
index 000000000000..0bf51a581423
--- /dev/null
+++ b/data/layouts/SevenIsland_TanobyRuins_Frlg/map.bin
@@ -0,0 +1 @@
+++++++++++ssquz0 0pqu+++++++++++++++++++++++s{|}r000xy}++++++++++++++11+++++++++++++,{|qr00 00 0"1+++++++++++++++++++++++++++1&11++++1
1
1
1
11++++++0#!{|z00000*++++++1
1
1
1
1
1
11+++++++++++++++++111+++++++++1%1111&11+++++++++++++0#$000 00 0*++++++111++++++++++++++1
1
1
1
1
1
1
11+++++++++111+++++++++111+++++1
1
1
1
11++++++0######1++++++++++111++++++1
1
1
1
1
1
11+++++++1%1&11+++++++12111+++++++111++++1%1111&11+++++++++++++++++++++++++++111++++++111++++++1%1&11++++++++11-1111.11+++++++++++111++++111+++++++++++++++++++++++++++111++++++++11++++++1su1+++++++++11111++++++++++++111++++111+++++++++++++++++++++++++++11121++++++++111++++++1su1++++++++++++++++++++++++121.11++++111+++++++++++++++++++++++++++++++++1-11111.11++++++++111++++++1su1++++++++++++++++++++++++++1-1111.11+++++111++++++++++++++++++++++++++++++++++++111111+++++++++11211++++++1{I3<=3>I3}1++++++++11++++++++++++++11111++++++121.11+++++++++++++++++++++++++++++++++++++++++++++++++++1-11111.11++++++1{I3I3I3}1++++++++1&11++++++++++++++++++++++++1111111+++++++++++++++++++++++++++++++++++++++++++++++++++111111+++++++1-1{000}.11++++++++111++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1-1y000y11+++++++++111+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1-11111.1111+++++++12111++++++++++++++++++++++++++++++++++++++++++++++++++++++++++111111+++++++++++11111111++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_TanobyRuins_LiptooChamber_Frlg/border.bin b/data/layouts/SevenIsland_TanobyRuins_LiptooChamber_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SevenIsland_TanobyRuins_LiptooChamber_Frlg/border.bin differ
diff --git a/data/layouts/SevenIsland_TanobyRuins_LiptooChamber_Frlg/map.bin b/data/layouts/SevenIsland_TanobyRuins_LiptooChamber_Frlg/map.bin
new file mode 100644
index 000000000000..0dd265d65aee
--- /dev/null
+++ b/data/layouts/SevenIsland_TanobyRuins_LiptooChamber_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_TanobyRuins_MoneanChamber_Frlg/border.bin b/data/layouts/SevenIsland_TanobyRuins_MoneanChamber_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SevenIsland_TanobyRuins_MoneanChamber_Frlg/border.bin differ
diff --git a/data/layouts/SevenIsland_TanobyRuins_MoneanChamber_Frlg/map.bin b/data/layouts/SevenIsland_TanobyRuins_MoneanChamber_Frlg/map.bin
new file mode 100644
index 000000000000..38f818e71943
--- /dev/null
+++ b/data/layouts/SevenIsland_TanobyRuins_MoneanChamber_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_TanobyRuins_RixyChamber_Frlg/border.bin b/data/layouts/SevenIsland_TanobyRuins_RixyChamber_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SevenIsland_TanobyRuins_RixyChamber_Frlg/border.bin differ
diff --git a/data/layouts/SevenIsland_TanobyRuins_RixyChamber_Frlg/map.bin b/data/layouts/SevenIsland_TanobyRuins_RixyChamber_Frlg/map.bin
new file mode 100644
index 000000000000..e98187c675e4
--- /dev/null
+++ b/data/layouts/SevenIsland_TanobyRuins_RixyChamber_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_TanobyRuins_ScufibChamber_Frlg/border.bin b/data/layouts/SevenIsland_TanobyRuins_ScufibChamber_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SevenIsland_TanobyRuins_ScufibChamber_Frlg/border.bin differ
diff --git a/data/layouts/SevenIsland_TanobyRuins_ScufibChamber_Frlg/map.bin b/data/layouts/SevenIsland_TanobyRuins_ScufibChamber_Frlg/map.bin
new file mode 100644
index 000000000000..bdd65c306936
--- /dev/null
+++ b/data/layouts/SevenIsland_TanobyRuins_ScufibChamber_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_TanobyRuins_ViapoisChamber_Frlg/border.bin b/data/layouts/SevenIsland_TanobyRuins_ViapoisChamber_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SevenIsland_TanobyRuins_ViapoisChamber_Frlg/border.bin differ
diff --git a/data/layouts/SevenIsland_TanobyRuins_ViapoisChamber_Frlg/map.bin b/data/layouts/SevenIsland_TanobyRuins_ViapoisChamber_Frlg/map.bin
new file mode 100644
index 000000000000..4d4d0e886248
--- /dev/null
+++ b/data/layouts/SevenIsland_TanobyRuins_ViapoisChamber_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_TanobyRuins_WeepthChamber_Frlg/border.bin b/data/layouts/SevenIsland_TanobyRuins_WeepthChamber_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SevenIsland_TanobyRuins_WeepthChamber_Frlg/border.bin differ
diff --git a/data/layouts/SevenIsland_TanobyRuins_WeepthChamber_Frlg/map.bin b/data/layouts/SevenIsland_TanobyRuins_WeepthChamber_Frlg/map.bin
new file mode 100644
index 000000000000..acb0469fcbe3
--- /dev/null
+++ b/data/layouts/SevenIsland_TanobyRuins_WeepthChamber_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_TrainerTower_Frlg/border.bin b/data/layouts/SevenIsland_TrainerTower_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/SevenIsland_TrainerTower_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SevenIsland_TrainerTower_Frlg/map.bin b/data/layouts/SevenIsland_TrainerTower_Frlg/map.bin
new file mode 100644
index 000000000000..c6a77c45229e
--- /dev/null
+++ b/data/layouts/SevenIsland_TrainerTower_Frlg/map.bin
@@ -0,0 +1 @@
+++squqyyyyqsqu+++ssquzhqqjxsquu+(sssqurhqjpsquuu),sssqurpqqrpsquuu*,sssqurpqqrpsquuu*,sssqurpqqrpsquuu*,sssqurx2zpsquuu*,sssqjxyyy2yyyzhquuu*,ss{qqj 0022200 0hqq}uu*,s{sqqqij 00 00 0hiqqqu}u*,{ssqqqqquj000hsqqqqquu}*0$ss{|||quu333ssq|||}uu 1+,s{|||{|z31 0 0 031x|}|||}u*++,{|||{| 00 00 00 0|}|||}*+0# !sqq{||000||}qqu #1+,{||||y000y||||}*+++++0 ##$0 00 00"# #1++++++++0#####1++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1
1
1
1
1
1
1
1
1
1
11++++++++111111111111+++++++++++1%1111+++++++++++111110000000++++++++++11110000000++++++++11111000000pqqqqq+++++11111111000000hiikllllllm+++++111111110000 0hqklqqqqqququ++G100000pqkqqqqqqqququu)++qqqqqqqiij0000 0pqsqqqqqqqqququu*++sqkllllllmqqqqr00000pqsqqqqqqqqquqO+(ssqsqqqqqqllmqr0000 0pqsqqqqqqqqquqqqqu,ssqsqqqqqqqqqmr00000pq{|qqqqqqquqqqquu),ssqsqqqqqqqqqqur000{1|1sqqq|||}qqqquu*
\ No newline at end of file
diff --git a/data/layouts/SilphCo_10F_Frlg/border.bin b/data/layouts/SilphCo_10F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SilphCo_10F_Frlg/border.bin differ
diff --git a/data/layouts/SilphCo_10F_Frlg/map.bin b/data/layouts/SilphCo_10F_Frlg/map.bin
new file mode 100644
index 000000000000..1ca95017cb87
--- /dev/null
+++ b/data/layouts/SilphCo_10F_Frlg/map.bin
@@ -0,0 +1 @@
+000i000jk8q88o0]0>rst253u2vw?@BA008e8Fz{|243}2~GHI885353535353;3<3434353535353535353535343434343434393232323234343232323534343434343M30^_534300534343434343U8fg534388534343434343M3N353535343535353534343434343UV434343433434313232343432323132323434323232300534300000534300088534388888534388|53535353435353535353534353533N343435334343moW343V434343435343mo#%63435343435343#%u3w36343N34343435343u3w36334343V4343434343435343434343434343
\ No newline at end of file
diff --git a/data/layouts/SilphCo_11F_Frlg/border.bin b/data/layouts/SilphCo_11F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SilphCo_11F_Frlg/border.bin differ
diff --git a/data/layouts/SilphCo_11F_Frlg/map.bin b/data/layouts/SilphCo_11F_Frlg/map.bin
new file mode 100644
index 000000000000..027e0a7dbf7a
--- /dev/null
+++ b/data/layouts/SilphCo_11F_Frlg/map.bin
@@ -0,0 +1 @@
+000i0T88q800RS35353?0@BA0088Z[\34343G8HI8853535353;3<343435353535353535353433132323232323232323:343435343430]^_005343534343bOefgO85343534343353VV535343534343534343(3)3*3634353435343435343333334353435343435343435343534343534363534353434353436353435343435343=3;3;3;3;3<3534353434353432323232323235343534343?>53430000005343534343GF534388OOO85343534343535353435353VVV535343534343434343434343434343435343
\ No newline at end of file
diff --git a/data/layouts/SilphCo_1F_Frlg/border.bin b/data/layouts/SilphCo_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SilphCo_1F_Frlg/border.bin differ
diff --git a/data/layouts/SilphCo_1F_Frlg/map.bin b/data/layouts/SilphCo_1F_Frlg/map.bin
new file mode 100644
index 000000000000..fb7be168be65
--- /dev/null
+++ b/data/layouts/SilphCo_1F_Frlg/map.bin
@@ -0,0 +1 @@
+i000q8PQ00]000000000]00^_0000@BA00000>533XY?0O8e888dOOO88e88fg8888HI88888F533`aG8V5353535353lVVV535353535353535353535353535353535353535353435353535353434343433l634343434343434343434343434343434343434343434343434343434353434343433t63434343434343434343434343434343434343434343434343434343M3h3i3i3i3i3i3s6343434343434343434343434343434343434343434343E3J3434343Upqqqqqr6343434343434343434343434343434343CDW3E3434353;3;3;3;3;3;3<3434343434343434343434343KL63J343M353434343434343434343434343434343=3;3<34343U5343434343434343434343434343E3J34343434353b3c3W343b3c3W3434343434343CDW3E343M353j3k36343j3k3634343434343434343KL63J343U53=3;3<343=3;3<3434343434343434343434343=3;3<343434353b3c3W343b3c3W343434343434343434343434343434343E3J3434343M353j3k36343j3k36343434343434343434343434343434343434343434343CDW3E343U53=3;3<343=3;3<343434343434343434343434343434343434343434343KL63J34343534343434343434343434343434343434343434343434343434343434343=3;3<34343M35343434343434343434343434343434343434343434343M34343M34343M34343M34343U5343434343434333343434343434343434343434343U4343U4343U4343U434343
\ No newline at end of file
diff --git a/data/layouts/SilphCo_2F_Frlg/border.bin b/data/layouts/SilphCo_2F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SilphCo_2F_Frlg/border.bin differ
diff --git a/data/layouts/SilphCo_2F_Frlg/map.bin b/data/layouts/SilphCo_2F_Frlg/map.bin
new file mode 100644
index 000000000000..97ada04d85f3
--- /dev/null
+++ b/data/layouts/SilphCo_2F_Frlg/map.bin
@@ -0,0 +1 @@
+000i000jk8q88o000]00000000000^_0@BA0>rst253u2vw?00OOOe8888888OO88fg8HI8Fz{|243}2~G88VVV53535353535353VV53535353535353535353;3;3<343435353535353534343434343434343434353434343434343434343434343434343434343434343435343343434343434343435343343434343434343434343434343434343434343431323232323434323232323132323232323232323232323232323234343232323232300000534300000000000000000000005343000008888853438888888888OOOOOO8888885343888885353535353534353535353535353535353VVVVVV5353535353535343535353535353434343434343434343434343434343434343434343434343434343434343434343434353434343434343434343434343434343434343434343434343439323232323232323232353434343434343434343434343434343434343434343434343430^_000013232323234343232323232323:34343mnoW343mnoW3438fg88{|000053430]00}5343#343#343?>53535353535333|{8853438e885343u3v3w36343u3v3w36343GF534343434343434333535353534353535353~3534343434343434343434343535353x3y3z3434343435343x3y3z3434343434343M35343mnoW343mnoW34393:34334343M353433433434343U5343#343#3435363343U5343333634343434343M35343u3v3w36343u3v3w3634353333634343M35343434343434343434343U53434343434343434343434353434343434343U
\ No newline at end of file
diff --git a/data/layouts/SilphCo_3F_Frlg/border.bin b/data/layouts/SilphCo_3F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SilphCo_3F_Frlg/border.bin differ
diff --git a/data/layouts/SilphCo_3F_Frlg/map.bin b/data/layouts/SilphCo_3F_Frlg/map.bin
new file mode 100644
index 000000000000..e0a18ff16629
--- /dev/null
+++ b/data/layouts/SilphCo_3F_Frlg/map.bin
@@ -0,0 +1 @@
+000i000T88q8PQ000000000^_000^_00000@BA0>RS3533XY?00OOO888888fg888fg88888HI8FZ[\3433`aG88VVV5353535353535353535353535353535353535353535353;3;3<3434353535353535343434343434343434343434343434343434343434343434343434343434343433434353434343343434343434343434343434343434343434343434343434343434343434343132323232323232323232323232323232323232323:34343434393232323232323232323}0000000000000}053434343000|888888888888|53434343888~3353535353535353?>N3535353535353~33?>53434343?>53535353333343434343mnoW3GFV434343mnoW343GF53434343GF53434343x3y3z34343434343635353534343436343535353434343535353434343W3534343433#6393:3N343433#634393:34343434393:3434343363534334343u3v3w363V43343u3v3w363435343434353343433336313232323232323232313232323232323232353434343132323232323232300]00000000000000]000>53434343?00000000088e88888OOOOOO888e888F53434343G888888OOO5353535353535353VVVVVV53535353535353535343434353535353535353VVV5343434343434343434343434343434343434343434343434343434343434343434343435343433434343434343434343434343434343434343434343434343434343433434343534343434343434343434343434343434343434343434343434343434343434343434343
\ No newline at end of file
diff --git a/data/layouts/SilphCo_4F_Frlg/border.bin b/data/layouts/SilphCo_4F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SilphCo_4F_Frlg/border.bin differ
diff --git a/data/layouts/SilphCo_4F_Frlg/map.bin b/data/layouts/SilphCo_4F_Frlg/map.bin
new file mode 100644
index 000000000000..b6a91deb851d
--- /dev/null
+++ b/data/layouts/SilphCo_4F_Frlg/map.bin
@@ -0,0 +1 @@
+000i000jk8q88o00000000000^_000@BA0>rst253u2vw?0088888888888fg888HI8Fz{|243}2~G8853535353535353535353535353535353535353535353;3;3<343435353535353537777W343W35343mnnoW34353434343434343434343434343434353776353436335343434343434343434343434343435363533#$34353434343434343434343434343434353635343u3v3v3w3634353434393232323234343232323232353635334343434343435343430053430}}536313232343432323235343438853438537363000534300053434353535353435333~3~353634363{|85343888534343534343x3y3z3434343435373<34373<333535343535353534343534343W34343M353=3<34343=3;3<3435343434343434335343435343334343U132323434323232323132323434323232353434353434333363434343000534300000000053430000>534343534343x3y3z3434343M3O88534388OOOO88853438888F534343534343W34343UV535353435353VVVV535353534353535353535343435343334343435343434343434343434343434343434343434343434343434343333634343M3534334343434343434343434343434343434343434343434343434343434343U534343434343434343434343434343434343434343434343434343434343434343
\ No newline at end of file
diff --git a/data/layouts/SilphCo_5F_Frlg/border.bin b/data/layouts/SilphCo_5F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SilphCo_5F_Frlg/border.bin differ
diff --git a/data/layouts/SilphCo_5F_Frlg/map.bin b/data/layouts/SilphCo_5F_Frlg/map.bin
new file mode 100644
index 000000000000..0a4f53ad75f2
--- /dev/null
+++ b/data/layouts/SilphCo_5F_Frlg/map.bin
@@ -0,0 +1 @@
+000i000T88q8PQ00}}}000000]0000000@BA0>RS3533XY?0088888888e888OOO8HI8FZ[\3433`aG885353~3~3~353535353535353535353VVV535353535353;3;3<34343535353535353M343M343M3435343434343434343434343434343434343434343434343433434353U43U43U4353434343434343434393232323232323232323434323232323:34353434343434343?>53434343434334343}}0^_0053430005353434343434343GF5343932323232323238fg88534388O53534343434343435353534300000~3~353535353535353435353V5353M343M343M34393:343438{{|85343434343x3y3z33y3z343435353U43U43U4353435333353?>534343433W34353132323232323235343N343434343GF53434343433336343530000005343V4343434353535343434343434336343538888885343534343434393:343434343433y3z3634353535353535353535343N343434343534343433634353534343774343?>5343V43434343534343434333333363435353W3GF53431323232323132323232323232323232323235353=36353535343?00000000^_00000000000>535343=36393:34343G8O88O88OfgO8O88O88O88F5353433634335353V5353V5353V5353V5353V5353V5353V53535353534343=3;3;3<3434343434343434343434343434343434343434343434343434343
\ No newline at end of file
diff --git a/data/layouts/SilphCo_6F_Frlg/border.bin b/data/layouts/SilphCo_6F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SilphCo_6F_Frlg/border.bin differ
diff --git a/data/layouts/SilphCo_6F_Frlg/map.bin b/data/layouts/SilphCo_6F_Frlg/map.bin
new file mode 100644
index 000000000000..cf0b384e7dec
--- /dev/null
+++ b/data/layouts/SilphCo_6F_Frlg/map.bin
@@ -0,0 +1 @@
+0000i000jk88q88o0}}0000]0>rst253?00@BA00>53u2vw?0{8888e8Fz{|243G88HI88F53}2~G83~3~353535353535353;3;3<3435353535353535353535343535353535343434343?>534343439323232323232323232323434323232323:3343534334343GF53434343}000000053430^_534353M343M3435353534343M3{|8888853438fg534353U43U4393:3434343U~3335353535353535343535353534313232323235343434353434343x3y3y3y3y3y3y3z3434353430000534343M3N343434334353438888534343UV43434343435343535353535353434343N3434333435343534343?>534343M3V434343333333334343534353434343GF534343U132323434323232323232323232353435374343535353434343?000053430000000000>534353434393:343434343G888853438888888888F5343534343435343434353535353535343535353535353535353535353435343434343534343434343434343434343434343434343434343434343
\ No newline at end of file
diff --git a/data/layouts/SilphCo_7F_Frlg/border.bin b/data/layouts/SilphCo_7F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SilphCo_7F_Frlg/border.bin differ
diff --git a/data/layouts/SilphCo_7F_Frlg/map.bin b/data/layouts/SilphCo_7F_Frlg/map.bin
new file mode 100644
index 000000000000..373fa1f17c75
--- /dev/null
+++ b/data/layouts/SilphCo_7F_Frlg/map.bin
@@ -0,0 +1 @@
+000i0000T88q88PQ^_00000000RS353?@BA>533XY?fg88OO8d88Z[\343GHIF533`aG335353533VV5353t5353?>53;3<34353535353535343535353534343x3y3z3h3i3i3i3s4343GF5343434343434343434343434343534343pqqqr4343535353434393232323434323232323235343433331323234343232323:3434343005343000053434343433005343^_534343O853438888132323232323885343fg534343V53534353533353000}}}53535353435353534343N3434343434338{|53moW3moW3534343V434343434333635333~3~3~353#%63#%6353434313232343432323232353434343434353u3w363u3w36353434300053430]53M34343M34353433434334353434388853438e53U4343U43132323232323235343435353535343535333534343434343?00]000]00>5343435343434343434343b3534343434343G88e888e88F534343534343343434343j35343434343435353535353535353535353534343534343434343434343
\ No newline at end of file
diff --git a/data/layouts/SilphCo_8F_Frlg/border.bin b/data/layouts/SilphCo_8F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SilphCo_8F_Frlg/border.bin differ
diff --git a/data/layouts/SilphCo_8F_Frlg/map.bin b/data/layouts/SilphCo_8F_Frlg/map.bin
new file mode 100644
index 000000000000..73efec7e113f
--- /dev/null
+++ b/data/layouts/SilphCo_8F_Frlg/map.bin
@@ -0,0 +1 @@
+0000i000jk88q88o00^_00}00}rst253?00@BA00>53u2vw88fg88{|z{|243G88HI88F53}2~535353535353~333~353;3<3435353535353535353535343535353x3y3z343534343434353434393232323232323232323232323235343534343343534343000000^_3435343232323534343888888fg533?>534300534343335353533333343GF534388534343CCC443434343M3435343535353435353353434354344344343434343U43533334393:3534343CD53434353CD43J34343434343M343534334343534343KL53434353KL43E34343434343U4313232323235343232323534343132323232343432323232323000000>534300]0>534343?00^_0053430000O88888F534388e8F534343G88fg8853438888V535353535353534353535353535343435353535353535353435353535353N343343434343434343434343434343434343434343434343434343434343V434343434343434343434343434343434343434343434343434343434343
\ No newline at end of file
diff --git a/data/layouts/SilphCo_9F_Frlg/border.bin b/data/layouts/SilphCo_9F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SilphCo_9F_Frlg/border.bin differ
diff --git a/data/layouts/SilphCo_9F_Frlg/map.bin b/data/layouts/SilphCo_9F_Frlg/map.bin
new file mode 100644
index 000000000000..95d58dafb055
--- /dev/null
+++ b/data/layouts/SilphCo_9F_Frlg/map.bin
@@ -0,0 +1 @@
+000i000T88q8PQ000]000]0000RS3533XY?0@BA00000888e888e8888Z[\3433`aG8HI888885353535353535353533535353;3<343435353535353535353535353535343932323232323232323235343932323232343432323232323:343435343000^_0053430053430^_053435343OO8fg88N3438853438fg8N3435343?>VV535353535353V43535353534353535353V435343GF534343CD43J34353435343434343CD43J3N34353435353534343KL43E343N3435343434343KL43E3V43534393:34343439323232323V4313232343432323232335353435343430005343}}0534300005313235343438N343853438888530^_>534343?>53?>V43~3~35353435353535353538fgF534343GF534343GF53435343437777434343?>53334343535353434353535343534343434343GF53CCC44393:343434393:34343534343434343535353543443443435343435343534343433434343434343
\ No newline at end of file
diff --git a/data/layouts/SilphCo_Elevator_Frlg/border.bin b/data/layouts/SilphCo_Elevator_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/SilphCo_Elevator_Frlg/border.bin differ
diff --git a/data/layouts/SilphCo_Elevator_Frlg/map.bin b/data/layouts/SilphCo_Elevator_Frlg/map.bin
new file mode 100644
index 000000000000..42e08c38debb
--- /dev/null
+++ b/data/layouts/SilphCo_Elevator_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222
\ No newline at end of file
diff --git a/data/layouts/SixIsland_AlteringCave_Frlg/border.bin b/data/layouts/SixIsland_AlteringCave_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/SixIsland_AlteringCave_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SixIsland_AlteringCave_Frlg/map.bin b/data/layouts/SixIsland_AlteringCave_Frlg/map.bin
new file mode 100644
index 000000000000..7dde0cb15343
Binary files /dev/null and b/data/layouts/SixIsland_AlteringCave_Frlg/map.bin differ
diff --git a/data/layouts/SixIsland_DottedHole_1F_Frlg/border.bin b/data/layouts/SixIsland_DottedHole_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/SixIsland_DottedHole_1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SixIsland_DottedHole_1F_Frlg/map.bin b/data/layouts/SixIsland_DottedHole_1F_Frlg/map.bin
new file mode 100644
index 000000000000..ea33c9ead89b
--- /dev/null
+++ b/data/layouts/SixIsland_DottedHole_1F_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SixIsland_DottedHole_B1F_Frlg/border.bin b/data/layouts/SixIsland_DottedHole_B1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/SixIsland_DottedHole_B1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SixIsland_DottedHole_B1F_Frlg/map.bin b/data/layouts/SixIsland_DottedHole_B1F_Frlg/map.bin
new file mode 100644
index 000000000000..a610cdd58244
--- /dev/null
+++ b/data/layouts/SixIsland_DottedHole_B1F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222333222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SixIsland_DottedHole_B2F_Frlg/border.bin b/data/layouts/SixIsland_DottedHole_B2F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/SixIsland_DottedHole_B2F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SixIsland_DottedHole_B2F_Frlg/map.bin b/data/layouts/SixIsland_DottedHole_B2F_Frlg/map.bin
new file mode 100644
index 000000000000..3abe860dd640
--- /dev/null
+++ b/data/layouts/SixIsland_DottedHole_B2F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222223332222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SixIsland_DottedHole_B3F_Frlg/border.bin b/data/layouts/SixIsland_DottedHole_B3F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/SixIsland_DottedHole_B3F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SixIsland_DottedHole_B3F_Frlg/map.bin b/data/layouts/SixIsland_DottedHole_B3F_Frlg/map.bin
new file mode 100644
index 000000000000..c72c26c5c9fd
--- /dev/null
+++ b/data/layouts/SixIsland_DottedHole_B3F_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222223332222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SixIsland_DottedHole_B4F_Frlg/border.bin b/data/layouts/SixIsland_DottedHole_B4F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/SixIsland_DottedHole_B4F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SixIsland_DottedHole_B4F_Frlg/map.bin b/data/layouts/SixIsland_DottedHole_B4F_Frlg/map.bin
new file mode 100644
index 000000000000..a0c7e44e3604
--- /dev/null
+++ b/data/layouts/SixIsland_DottedHole_B4F_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222223332222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/SixIsland_DottedHole_SapphireRoom_Frlg/border.bin b/data/layouts/SixIsland_DottedHole_SapphireRoom_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/SixIsland_DottedHole_SapphireRoom_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SixIsland_DottedHole_SapphireRoom_Frlg/map.bin b/data/layouts/SixIsland_DottedHole_SapphireRoom_Frlg/map.bin
new file mode 100644
index 000000000000..67a89d25ed16
--- /dev/null
+++ b/data/layouts/SixIsland_DottedHole_SapphireRoom_Frlg/map.bin
@@ -0,0 +1 @@
+S22[322222222A3M33L3C3222F3222E322222G222223I3222H3322N3K32J3O3223332222
\ No newline at end of file
diff --git a/data/layouts/SixIsland_Frlg/border.bin b/data/layouts/SixIsland_Frlg/border.bin
new file mode 100644
index 000000000000..d9994d6cdc78
--- /dev/null
+++ b/data/layouts/SixIsland_Frlg/border.bin
@@ -0,0 +1 @@
+++++
\ No newline at end of file
diff --git a/data/layouts/SixIsland_Frlg/map.bin b/data/layouts/SixIsland_Frlg/map.bin
new file mode 100644
index 000000000000..a82f268bdaf4
--- /dev/null
+++ b/data/layouts/SixIsland_Frlg/map.bin
@@ -0,0 +1 @@
+vvvvvvvvvvvvvvtssqqqqqqvvvvvvvvvvvvsstssqqqqqqvvvvvvvvvssssstssqqqqqq]U]U]U]U]sssssstssqqqqqq|ssssstssqqqqqquqsssstsxyyqqqxyyy^3|1}1~1100000HIJK(0)0*0+000$'PQRS&%$'0123XYZ[89:;&%00`ab00 00@Abc00000000000000000000000000000000 00000022222000 0000000000&'000&'000 0000000000000000000000000000 0$%$'00000000000000000yy000yyy0 00000'&'r0 00000 00p|||z&%$'000phiiiiiikkkkkkkkkk222kklpsqqqqqqssssssss22tssqqqqqqvvvosssstssqkllllvvvvossstssqsqqqqvvvvvvostssqsqqqqvvvvvvvotssqsqqqqvvvvvvvvvvvvvvotssqsqqqq
\ No newline at end of file
diff --git a/data/layouts/SixIsland_GreenPath_Frlg/border.bin b/data/layouts/SixIsland_GreenPath_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/SixIsland_GreenPath_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SixIsland_GreenPath_Frlg/map.bin b/data/layouts/SixIsland_GreenPath_Frlg/map.bin
new file mode 100644
index 000000000000..647978c02f85
Binary files /dev/null and b/data/layouts/SixIsland_GreenPath_Frlg/map.bin differ
diff --git a/data/layouts/SixIsland_OutcastIsland_Frlg/border.bin b/data/layouts/SixIsland_OutcastIsland_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/SixIsland_OutcastIsland_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SixIsland_OutcastIsland_Frlg/map.bin b/data/layouts/SixIsland_OutcastIsland_Frlg/map.bin
new file mode 100644
index 000000000000..53e9333783ad
--- /dev/null
+++ b/data/layouts/SixIsland_OutcastIsland_Frlg/map.bin
@@ -0,0 +1,15 @@
++++++++++++++++++++++++++
++++++++
+++++++++++++++++qqq++++klllm++y+sqqqu++++
+++sqqquV+++++++++++sqqqllm
1
1++++{|qqqqu11qq++++ysqqq}qq++++sqqquqqqq++++sqqquqqqq++++{|||}qqqqq+++qy0yyyyyy++ y1111111+y
2111111qq1+
++++1111111yy1+++++11211111+++++++++qq+++++++++qqyq++++++++TUqqq+++++++qqqy++++++yyy1
++++
+++++++y++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++
++++++y+++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++y++++++++++
+++++++++++y++++++++
+++
+++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\ No newline at end of file
diff --git a/data/layouts/SixIsland_PatternBush_Frlg/border.bin b/data/layouts/SixIsland_PatternBush_Frlg/border.bin
new file mode 100644
index 000000000000..c1fe47df77bc
--- /dev/null
+++ b/data/layouts/SixIsland_PatternBush_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SixIsland_PatternBush_Frlg/map.bin b/data/layouts/SixIsland_PatternBush_Frlg/map.bin
new file mode 100644
index 000000000000..7cd07c6c8604
--- /dev/null
+++ b/data/layouts/SixIsland_PatternBush_Frlg/map.bin
@@ -0,0 +1 @@
+
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 00 0
0
0
0
000 000 000 000
0
0
0
000 000 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00 00
0
0
0
00
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00 000 000 0
0
0 0
0
00 00000
0
0
0
00
0
0
000 000 000 000 0 000 0000 000
0
0
0
0
0
0
0
0
0
0
0
0 0
0
00
0
00000 00
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 0
0
00
0
00
0
00 00000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00
0
00
0
0 000 000 000 000 0
0
00
0
00
0
0
0
0
00000 00
0
0 00 0
000 000 000 00
0
0 0
0
00
0
00
0
0
0
0
0
0
0
0
0
0
0
0
0
00
0
0 0
0
0
0
0
00 00000
0
00
0
0
0
0
0
0
0
0
0
0
00
0
0
00
0
0 000 0
0
00 0
0
00 000 0
0
0
0 0
0
00
0
0
0
0
00000 00
0
00
0
0
0
0
0
0
0
0
0
0
0 0
0
0
00
0
00
0
00
0
0
0
0
0
0
0
0
0
0
0
0
0
00
0
00
0
0
0
0
00 00000
0
0 000
0
0
000 000 00 0
0
0
0
0
00
0
00
0
0
0
0
0
0
0
0
0
0
0
0
0
00
0
0 0
0
0 0
0
00000 00
0
00
0
0
0
0
0
0
0
0
0
0
0
0000 000 0
0
00 000 000 000 00 0
0
0
0
0
00
0
00
0
00 00000
0
00
0
0
0
0
0
0
0
0
0
0
0
00
0
0
0
0
00
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00 00 0
0
00000 00
0
0 000 000 0 00 0
0
0
0 0
0
0
0
0
00
0
00 0
0
000 00 0
0
0
0 000 00
00
0
0 0
0
00 00000
0
00
0
0
0
0
0
0
0
0
0
0
0
00
0
0
0
0
0 0
0
0
0
0
0
0
0
0
0
0
0
0
0
00
0
0
0 0
0 0
0
00
0
00000 00
0
00
0
000 000 000 000
0
000 0000 000 0
0
0
0
0
0
0
0
00
0
0
00
00
0
0
0
0
00 00000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00
0
0
0
0
000 000 000 00
0
0
0
0
00000 00
0
0
0
0
0
0
0
0
0
0
0
0
0
0
000 00
0
0
0
0
0
0
0
00
0
0
0
0
0 0
0
0
0
0
0 0
0
0
0
0
0
0
0
00 00000
0
0 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 0
0
0
0
0
00
0
0
0
0
00
0
0
0
0
0
0
0
00000 00
0
0000 000 000
0
000 000 000 0 000 000
0
0
0
0
00
0
0
0
0
000 00
0
0
0
0
00 00000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00000 00
02
0
02
0
02
0
02
0
02
0
02
0
02
0
02
0
02
0
02
0
02
0
02
0
02
0
02
0
02
0
02
00 00000000222222
\ No newline at end of file
diff --git a/data/layouts/SixIsland_RuinValley_Frlg/border.bin b/data/layouts/SixIsland_RuinValley_Frlg/border.bin
new file mode 100644
index 000000000000..4531975c765e
Binary files /dev/null and b/data/layouts/SixIsland_RuinValley_Frlg/border.bin differ
diff --git a/data/layouts/SixIsland_RuinValley_Frlg/map.bin b/data/layouts/SixIsland_RuinValley_Frlg/map.bin
new file mode 100644
index 000000000000..848cbec2611d
Binary files /dev/null and b/data/layouts/SixIsland_RuinValley_Frlg/map.bin differ
diff --git a/data/layouts/SixIsland_WaterPath_Frlg/border.bin b/data/layouts/SixIsland_WaterPath_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/SixIsland_WaterPath_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SixIsland_WaterPath_Frlg/map.bin b/data/layouts/SixIsland_WaterPath_Frlg/map.bin
new file mode 100644
index 000000000000..42f48165bc0f
Binary files /dev/null and b/data/layouts/SixIsland_WaterPath_Frlg/map.bin differ
diff --git a/data/layouts/SootopolisCity_House1_Frlg/border.bin b/data/layouts/SootopolisCity_House1_Frlg/border.bin
new file mode 100644
index 000000000000..19d90667980c
--- /dev/null
+++ b/data/layouts/SootopolisCity_House1_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SootopolisCity_House1_Frlg/map.bin b/data/layouts/SootopolisCity_House1_Frlg/map.bin
new file mode 100644
index 000000000000..43f11b194e8c
--- /dev/null
+++ b/data/layouts/SootopolisCity_House1_Frlg/map.bin
@@ -0,0 +1 @@
+023333332332772333327723333333333333 333
\ No newline at end of file
diff --git a/data/layouts/SootopolisCity_House2_Frlg/border.bin b/data/layouts/SootopolisCity_House2_Frlg/border.bin
new file mode 100644
index 000000000000..19d90667980c
--- /dev/null
+++ b/data/layouts/SootopolisCity_House2_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SootopolisCity_House2_Frlg/map.bin b/data/layouts/SootopolisCity_House2_Frlg/map.bin
new file mode 100644
index 000000000000..632e1e36aa74
--- /dev/null
+++ b/data/layouts/SootopolisCity_House2_Frlg/map.bin
@@ -0,0 +1 @@
+vw62223336333277233333772333333333333 333
\ No newline at end of file
diff --git a/data/layouts/SootopolisCity_House3_Frlg/border.bin b/data/layouts/SootopolisCity_House3_Frlg/border.bin
new file mode 100644
index 000000000000..19d90667980c
--- /dev/null
+++ b/data/layouts/SootopolisCity_House3_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/SootopolisCity_House3_Frlg/map.bin b/data/layouts/SootopolisCity_House3_Frlg/map.bin
new file mode 100644
index 000000000000..8bbd6c517e1b
--- /dev/null
+++ b/data/layouts/SootopolisCity_House3_Frlg/map.bin
@@ -0,0 +1 @@
+62233322333333337723333377333333333 333
\ No newline at end of file
diff --git a/data/layouts/ThreeIsland_BerryForest_Frlg/border.bin b/data/layouts/ThreeIsland_BerryForest_Frlg/border.bin
new file mode 100644
index 000000000000..7797e033b59f
--- /dev/null
+++ b/data/layouts/ThreeIsland_BerryForest_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/ThreeIsland_BerryForest_Frlg/map.bin b/data/layouts/ThreeIsland_BerryForest_Frlg/map.bin
new file mode 100644
index 000000000000..e98d91119691
--- /dev/null
+++ b/data/layouts/ThreeIsland_BerryForest_Frlg/map.bin
@@ -0,0 +1 @@
+0222 000 00 00 0 00 00 00 02 0 0200 00 00 00 00 0 0
0 0002
0
0
02 000
02 0 0000 00 0 02 0 02 00000
0 0
0
002
0
0
0220
0
0 002 0 0
0 02 00 00
02
0
0
0
0 02
0
0
0 0
00 0
0
00
0
0
0202 02 00
0
0
0
0
0
0
0
0 00 0
0
0
00 00 00
0
0
0
0
0
0
0
0
0
0
0
00000000
0
0
0000002
0
0
0
0
0
0
0
0
00 0
0
0
0
0
0
0
00 00 00 0 0
0
00 000
00
0
0
0
02
0 02 0000
0 0
00000 0 000
00
0
0 0
0 02000
000
00
000$%%%%%%%&0 00
00 0 00 0
00
0 00 000 00 00000000 02 0 0200 00 00002 00
00
0 000000000 00 00 00 0000000 0202
0
0
0
0
00 0
0
0
00 020 0000000020002020
0
0
02
0
0
0
0
02
0 0 00 0 020222
0
0
02
00
0
0
0
00 0 02 00002 0 0 002222
0
00 0
0
0
0
000000202220
0
00
0 0
0
0
0
02 0202 00 0 002222
00
00 0
0
0
0
0
0000
0
00200000 00222 0
000000
00
0
02 0
0 0 00
0200 020 00 00 00200000 0200 000 00 0 0
000 00000000000000002 02 00000000 0000 02 0 00 00 00 020 000000020000002000000002 000 0
0 0
0 00 00
00000020 00 000$%%%%%%%%&
0
000000
0 00 0020 02 0000 0 00 0
0 0
0
0
0
0
0
0
02 0 00
00
0 0 020000002 00 00
00
0 0
0 0
0
0
0
0
000
0
00
000002000 0
0 0
002
0
02
0
02
0
0 0
00
0
0000222 0
0 0
0
0
0
0
0
0000
0 0
0
0
0
0
0
0
0
0 00020
0
0
0
0
0 0
0
0
0 000
0
0
0
0 0
0
0
0
0 0
0 002 0202$%%%%&0
0 00 00 00 00 02 020 00000 0
0 0000000000000202 002 0
02 0
02 0
0
0 0020020020020 00 0
0
0
0000
0
0
0222
0
0
0 02
0
02
0
02 0
\ No newline at end of file
diff --git a/data/layouts/ThreeIsland_BondBridge_Frlg/border.bin b/data/layouts/ThreeIsland_BondBridge_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/ThreeIsland_BondBridge_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/ThreeIsland_BondBridge_Frlg/map.bin b/data/layouts/ThreeIsland_BondBridge_Frlg/map.bin
new file mode 100644
index 000000000000..c554c03e3cbb
Binary files /dev/null and b/data/layouts/ThreeIsland_BondBridge_Frlg/map.bin differ
diff --git a/data/layouts/ThreeIsland_DunsparceTunnel_DugOut_Frlg/border.bin b/data/layouts/ThreeIsland_DunsparceTunnel_DugOut_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/ThreeIsland_DunsparceTunnel_DugOut_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/ThreeIsland_DunsparceTunnel_DugOut_Frlg/map.bin b/data/layouts/ThreeIsland_DunsparceTunnel_DugOut_Frlg/map.bin
new file mode 100644
index 000000000000..ffc668ba529b
--- /dev/null
+++ b/data/layouts/ThreeIsland_DunsparceTunnel_DugOut_Frlg/map.bin
@@ -0,0 +1 @@
+2222222 2222222222222222222222222 222222 2222
\ No newline at end of file
diff --git a/data/layouts/ThreeIsland_DunsparceTunnel_Frlg/border.bin b/data/layouts/ThreeIsland_DunsparceTunnel_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/ThreeIsland_DunsparceTunnel_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/ThreeIsland_DunsparceTunnel_Frlg/map.bin b/data/layouts/ThreeIsland_DunsparceTunnel_Frlg/map.bin
new file mode 100644
index 000000000000..4623ea1b3cd2
--- /dev/null
+++ b/data/layouts/ThreeIsland_DunsparceTunnel_Frlg/map.bin
@@ -0,0 +1 @@
+222222222
\ No newline at end of file
diff --git a/data/layouts/ThreeIsland_Frlg/border.bin b/data/layouts/ThreeIsland_Frlg/border.bin
new file mode 100644
index 000000000000..a701312cfff9
Binary files /dev/null and b/data/layouts/ThreeIsland_Frlg/border.bin differ
diff --git a/data/layouts/ThreeIsland_Frlg/map.bin b/data/layouts/ThreeIsland_Frlg/map.bin
new file mode 100644
index 000000000000..523f3e70c73a
--- /dev/null
+++ b/data/layouts/ThreeIsland_Frlg/map.bin
@@ -0,0 +1 @@
+$33333$333332222222222$'&'&%$%$%00 00303000003030000000000000001010000000 00000 00 00 00000033333(0)0*0+00000000000000123 00 00 00 00000089:;00000@Abc 0000000001030300030300010000000000 00000 00 00 0000000000033333 00000 00000000000000 0001003030000100000000000 00 00 0000000{1|1}1~11&%$%$%0000 0HIJKhiiiii00000PQRSpqklll0000 0XYZ[pqsqqq$%$'00000`abpqsqqq0010003030pqsqqq0010000100pqsqqq0000 00 0000pqsqqq000000000pqsqqq303001010000100pqsqqq000000001010000pqsqqq000pqsqqqhiiiiij000hiiiqsqqqpklllmr000pqklllqqqpsqqqur000pqsqqqqqqqpsqqqur000pqsqqqqqqq$'psqqqur000pqsqqqqqqq
\ No newline at end of file
diff --git a/data/layouts/ThreeIsland_House1_Frlg/border.bin b/data/layouts/ThreeIsland_House1_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/ThreeIsland_House1_Frlg/border.bin differ
diff --git a/data/layouts/ThreeIsland_House1_Frlg/map.bin b/data/layouts/ThreeIsland_House1_Frlg/map.bin
new file mode 100644
index 000000000000..871205cfab35
--- /dev/null
+++ b/data/layouts/ThreeIsland_House1_Frlg/map.bin
@@ -0,0 +1 @@
+=>`89EF& h@AM1N1.311111H1I111 1 1 1 1 1 1 1 1 1 1V1 1 1 1o1ef 1 1 1 1^ 1 1 1o1mn 1 1 1 1V1 1 1 1 1 1 1 1 1 1 1^ 1 1?1G1O1 1 1 1 1 1
\ No newline at end of file
diff --git a/data/layouts/ThreeIsland_Port_Frlg/border.bin b/data/layouts/ThreeIsland_Port_Frlg/border.bin
new file mode 100644
index 000000000000..75f2c916c55e
--- /dev/null
+++ b/data/layouts/ThreeIsland_Port_Frlg/border.bin
@@ -0,0 +1 @@
+vvvv
\ No newline at end of file
diff --git a/data/layouts/ThreeIsland_Port_Frlg/map.bin b/data/layouts/ThreeIsland_Port_Frlg/map.bin
new file mode 100644
index 000000000000..44f29053c138
Binary files /dev/null and b/data/layouts/ThreeIsland_Port_Frlg/map.bin differ
diff --git a/data/layouts/TradeCenter_Frlg/border.bin b/data/layouts/TradeCenter_Frlg/border.bin
new file mode 100644
index 000000000000..efef023e6f15
--- /dev/null
+++ b/data/layouts/TradeCenter_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/TradeCenter_Frlg/map.bin b/data/layouts/TradeCenter_Frlg/map.bin
new file mode 100644
index 000000000000..93050f0f57f6
--- /dev/null
+++ b/data/layouts/TradeCenter_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/TrainerTower_1F_Doubles_Frlg/border.bin b/data/layouts/TrainerTower_1F_Doubles_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_1F_Doubles_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_1F_Doubles_Frlg/map.bin b/data/layouts/TrainerTower_1F_Doubles_Frlg/map.bin
new file mode 100644
index 000000000000..891ae066e214
Binary files /dev/null and b/data/layouts/TrainerTower_1F_Doubles_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_1F_Frlg/border.bin b/data/layouts/TrainerTower_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_1F_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_1F_Frlg/map.bin b/data/layouts/TrainerTower_1F_Frlg/map.bin
new file mode 100644
index 000000000000..812cea451710
Binary files /dev/null and b/data/layouts/TrainerTower_1F_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_1F_Knockout_Frlg/border.bin b/data/layouts/TrainerTower_1F_Knockout_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_1F_Knockout_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_1F_Knockout_Frlg/map.bin b/data/layouts/TrainerTower_1F_Knockout_Frlg/map.bin
new file mode 100644
index 000000000000..3e3ebcc9401f
Binary files /dev/null and b/data/layouts/TrainerTower_1F_Knockout_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_2F_Doubles_Frlg/border.bin b/data/layouts/TrainerTower_2F_Doubles_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_2F_Doubles_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_2F_Doubles_Frlg/map.bin b/data/layouts/TrainerTower_2F_Doubles_Frlg/map.bin
new file mode 100644
index 000000000000..ab44abb18d99
Binary files /dev/null and b/data/layouts/TrainerTower_2F_Doubles_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_2F_Frlg/border.bin b/data/layouts/TrainerTower_2F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_2F_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_2F_Frlg/map.bin b/data/layouts/TrainerTower_2F_Frlg/map.bin
new file mode 100644
index 000000000000..7ae889af1467
Binary files /dev/null and b/data/layouts/TrainerTower_2F_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_2F_Knockout_Frlg/border.bin b/data/layouts/TrainerTower_2F_Knockout_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_2F_Knockout_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_2F_Knockout_Frlg/map.bin b/data/layouts/TrainerTower_2F_Knockout_Frlg/map.bin
new file mode 100644
index 000000000000..cfc96995c4c0
Binary files /dev/null and b/data/layouts/TrainerTower_2F_Knockout_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_3F_Doubles_Frlg/border.bin b/data/layouts/TrainerTower_3F_Doubles_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_3F_Doubles_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_3F_Doubles_Frlg/map.bin b/data/layouts/TrainerTower_3F_Doubles_Frlg/map.bin
new file mode 100644
index 000000000000..514cb72392ba
Binary files /dev/null and b/data/layouts/TrainerTower_3F_Doubles_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_3F_Frlg/border.bin b/data/layouts/TrainerTower_3F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_3F_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_3F_Frlg/map.bin b/data/layouts/TrainerTower_3F_Frlg/map.bin
new file mode 100644
index 000000000000..c01e70c2f83e
Binary files /dev/null and b/data/layouts/TrainerTower_3F_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_3F_Knockout_Frlg/border.bin b/data/layouts/TrainerTower_3F_Knockout_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_3F_Knockout_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_3F_Knockout_Frlg/map.bin b/data/layouts/TrainerTower_3F_Knockout_Frlg/map.bin
new file mode 100644
index 000000000000..da9cc3f7507f
Binary files /dev/null and b/data/layouts/TrainerTower_3F_Knockout_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_4F_Doubles_Frlg/border.bin b/data/layouts/TrainerTower_4F_Doubles_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_4F_Doubles_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_4F_Doubles_Frlg/map.bin b/data/layouts/TrainerTower_4F_Doubles_Frlg/map.bin
new file mode 100644
index 000000000000..d9a50b7a1d29
Binary files /dev/null and b/data/layouts/TrainerTower_4F_Doubles_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_4F_Frlg/border.bin b/data/layouts/TrainerTower_4F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_4F_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_4F_Frlg/map.bin b/data/layouts/TrainerTower_4F_Frlg/map.bin
new file mode 100644
index 000000000000..057d7f955ca7
Binary files /dev/null and b/data/layouts/TrainerTower_4F_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_4F_Knockout_Frlg/border.bin b/data/layouts/TrainerTower_4F_Knockout_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_4F_Knockout_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_4F_Knockout_Frlg/map.bin b/data/layouts/TrainerTower_4F_Knockout_Frlg/map.bin
new file mode 100644
index 000000000000..cf5e1e94ef22
Binary files /dev/null and b/data/layouts/TrainerTower_4F_Knockout_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_5F_Doubles_Frlg/border.bin b/data/layouts/TrainerTower_5F_Doubles_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_5F_Doubles_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_5F_Doubles_Frlg/map.bin b/data/layouts/TrainerTower_5F_Doubles_Frlg/map.bin
new file mode 100644
index 000000000000..37b4aba85eb6
Binary files /dev/null and b/data/layouts/TrainerTower_5F_Doubles_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_5F_Frlg/border.bin b/data/layouts/TrainerTower_5F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_5F_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_5F_Frlg/map.bin b/data/layouts/TrainerTower_5F_Frlg/map.bin
new file mode 100644
index 000000000000..d580e7d2def6
Binary files /dev/null and b/data/layouts/TrainerTower_5F_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_5F_Knockout_Frlg/border.bin b/data/layouts/TrainerTower_5F_Knockout_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_5F_Knockout_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_5F_Knockout_Frlg/map.bin b/data/layouts/TrainerTower_5F_Knockout_Frlg/map.bin
new file mode 100644
index 000000000000..1f10bfff1526
Binary files /dev/null and b/data/layouts/TrainerTower_5F_Knockout_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_6F_Doubles_Frlg/border.bin b/data/layouts/TrainerTower_6F_Doubles_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_6F_Doubles_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_6F_Doubles_Frlg/map.bin b/data/layouts/TrainerTower_6F_Doubles_Frlg/map.bin
new file mode 100644
index 000000000000..2df5cd891f98
Binary files /dev/null and b/data/layouts/TrainerTower_6F_Doubles_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_6F_Frlg/border.bin b/data/layouts/TrainerTower_6F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_6F_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_6F_Frlg/map.bin b/data/layouts/TrainerTower_6F_Frlg/map.bin
new file mode 100644
index 000000000000..3c2c3165c003
Binary files /dev/null and b/data/layouts/TrainerTower_6F_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_6F_Knockout_Frlg/border.bin b/data/layouts/TrainerTower_6F_Knockout_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_6F_Knockout_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_6F_Knockout_Frlg/map.bin b/data/layouts/TrainerTower_6F_Knockout_Frlg/map.bin
new file mode 100644
index 000000000000..fe3d6f90869b
Binary files /dev/null and b/data/layouts/TrainerTower_6F_Knockout_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_7F_Doubles_Frlg/border.bin b/data/layouts/TrainerTower_7F_Doubles_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_7F_Doubles_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_7F_Doubles_Frlg/map.bin b/data/layouts/TrainerTower_7F_Doubles_Frlg/map.bin
new file mode 100644
index 000000000000..e977b7e26cac
Binary files /dev/null and b/data/layouts/TrainerTower_7F_Doubles_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_7F_Frlg/border.bin b/data/layouts/TrainerTower_7F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_7F_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_7F_Frlg/map.bin b/data/layouts/TrainerTower_7F_Frlg/map.bin
new file mode 100644
index 000000000000..d9bb110cfe64
Binary files /dev/null and b/data/layouts/TrainerTower_7F_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_7F_Knockout_Frlg/border.bin b/data/layouts/TrainerTower_7F_Knockout_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_7F_Knockout_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_7F_Knockout_Frlg/map.bin b/data/layouts/TrainerTower_7F_Knockout_Frlg/map.bin
new file mode 100644
index 000000000000..241077797fb1
Binary files /dev/null and b/data/layouts/TrainerTower_7F_Knockout_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_8F_Doubles_Frlg/border.bin b/data/layouts/TrainerTower_8F_Doubles_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_8F_Doubles_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_8F_Doubles_Frlg/map.bin b/data/layouts/TrainerTower_8F_Doubles_Frlg/map.bin
new file mode 100644
index 000000000000..e358d2f3d760
Binary files /dev/null and b/data/layouts/TrainerTower_8F_Doubles_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_8F_Frlg/border.bin b/data/layouts/TrainerTower_8F_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_8F_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_8F_Frlg/map.bin b/data/layouts/TrainerTower_8F_Frlg/map.bin
new file mode 100644
index 000000000000..6ba6588be173
Binary files /dev/null and b/data/layouts/TrainerTower_8F_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_8F_Knockout_Frlg/border.bin b/data/layouts/TrainerTower_8F_Knockout_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_8F_Knockout_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_8F_Knockout_Frlg/map.bin b/data/layouts/TrainerTower_8F_Knockout_Frlg/map.bin
new file mode 100644
index 000000000000..bb5ccf05ca9c
Binary files /dev/null and b/data/layouts/TrainerTower_8F_Knockout_Frlg/map.bin differ
diff --git a/data/layouts/TrainerTower_Elevator_Frlg/border.bin b/data/layouts/TrainerTower_Elevator_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_Elevator_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_Elevator_Frlg/map.bin b/data/layouts/TrainerTower_Elevator_Frlg/map.bin
new file mode 100644
index 000000000000..42e08c38debb
--- /dev/null
+++ b/data/layouts/TrainerTower_Elevator_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222
\ No newline at end of file
diff --git a/data/layouts/TrainerTower_Lobby_Frlg/border.bin b/data/layouts/TrainerTower_Lobby_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TrainerTower_Lobby_Frlg/border.bin differ
diff --git a/data/layouts/TrainerTower_Lobby_Frlg/map.bin b/data/layouts/TrainerTower_Lobby_Frlg/map.bin
new file mode 100644
index 000000000000..b98077279ab8
--- /dev/null
+++ b/data/layouts/TrainerTower_Lobby_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222w2v222222b2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/TrainerTower_Roof_Frlg/border.bin b/data/layouts/TrainerTower_Roof_Frlg/border.bin
new file mode 100644
index 000000000000..f94adee613f8
--- /dev/null
+++ b/data/layouts/TrainerTower_Roof_Frlg/border.bin
@@ -0,0 +1 @@
+////
\ No newline at end of file
diff --git a/data/layouts/TrainerTower_Roof_Frlg/map.bin b/data/layouts/TrainerTower_Roof_Frlg/map.bin
new file mode 100644
index 000000000000..37d57f3feb3b
--- /dev/null
+++ b/data/layouts/TrainerTower_Roof_Frlg/map.bin
@@ -0,0 +1 @@
+pT[[[[[[[[[[[[PzEpT[[[[[[[[[[[[PzEpT[[[[[[[[[[[[PzEpT[[[h[[[[h[[[PzEpJIIIi[[[[jMNOKzEp`abQJIIIIKUVWSzEpcde33RQQQQS3333mEpfg_33Z3333333333tEp33333333333333tExq333333333333s|Cyrrrrrrrrrrrr{@A;!"((((((((((((%&<;)*080808080808-.<;12#$+,#$#$+,#$56<;9:#$34#$#$34#$=><;)F#$kl#$#$kl#$G.<
\ No newline at end of file
diff --git a/data/layouts/TwoIsland_CapeBrink_Frlg/border.bin b/data/layouts/TwoIsland_CapeBrink_Frlg/border.bin
new file mode 100644
index 000000000000..75f2c916c55e
--- /dev/null
+++ b/data/layouts/TwoIsland_CapeBrink_Frlg/border.bin
@@ -0,0 +1 @@
+vvvv
\ No newline at end of file
diff --git a/data/layouts/TwoIsland_CapeBrink_Frlg/map.bin b/data/layouts/TwoIsland_CapeBrink_Frlg/map.bin
new file mode 100644
index 000000000000..d48f75cd44f0
--- /dev/null
+++ b/data/layouts/TwoIsland_CapeBrink_Frlg/map.bin
@@ -0,0 +1 @@
+vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvDEvvvvvvvvvvvDEvvvvvvvvvLMvvvvvvvvvvvLMvvvvvvvvvvvvvDEvvvDEvvv//////////s}vLMvvvLMssz2131313131 3!3!3"3#3|ss}vvvvvvsszs00 00 066666u|ssvDEvszss 00000uqu|s}LMvszsss
00 00 041m|s}vzssss
0
0 00 00 00 00 0uqqu|svpsssss
0
0
000000000uqquu|}tssssx00 00 0uqqu|tssss
000p000uqqlmutssss
0
0
0p00 0uqqqquutssss
0
0
0p031{z3100uqqqquutssss
0
0
0x||'''|||}qqqquutsss{|00y||///|||qqqqtss{|00
0|777||sqqqqqqtssqqs
0
0
0us{qqqqqts{|s
0
0
0u{sqqqqqtsqqss
0
0
0u0sqqqqqtsqqs{
0
0ussqqqqqtsqqsqs
0
0ussqqqqqtsqq{s
0
0ussqqqqqtsqqqs{00}ssqqqqqtsqqq{33ssqqqqqqqqqs33ssqqqqqqqqqqqs333131313131313131psqqqqqqqqqqqs33}3~3000|3}3}3sqqqqqqqqqqqs3333}3}3}3333qqqqqqqqqqqs3333333333{||qqqqqqqq{||||33333qqq{||
\ No newline at end of file
diff --git a/data/layouts/TwoIsland_Frlg/border.bin b/data/layouts/TwoIsland_Frlg/border.bin
new file mode 100644
index 000000000000..4531975c765e
Binary files /dev/null and b/data/layouts/TwoIsland_Frlg/border.bin differ
diff --git a/data/layouts/TwoIsland_Frlg/map.bin b/data/layouts/TwoIsland_Frlg/map.bin
new file mode 100644
index 000000000000..60e9c0bc9ba2
Binary files /dev/null and b/data/layouts/TwoIsland_Frlg/map.bin differ
diff --git a/data/layouts/TwoIsland_JoyfulGameCorner_Frlg/border.bin b/data/layouts/TwoIsland_JoyfulGameCorner_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/TwoIsland_JoyfulGameCorner_Frlg/border.bin differ
diff --git a/data/layouts/TwoIsland_JoyfulGameCorner_Frlg/map.bin b/data/layouts/TwoIsland_JoyfulGameCorner_Frlg/map.bin
new file mode 100644
index 000000000000..c445c5cb31f3
Binary files /dev/null and b/data/layouts/TwoIsland_JoyfulGameCorner_Frlg/map.bin differ
diff --git a/data/layouts/UndergroundPath_EastWestTunnel_Frlg/border.bin b/data/layouts/UndergroundPath_EastWestTunnel_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/UndergroundPath_EastWestTunnel_Frlg/border.bin differ
diff --git a/data/layouts/UndergroundPath_EastWestTunnel_Frlg/map.bin b/data/layouts/UndergroundPath_EastWestTunnel_Frlg/map.bin
new file mode 100644
index 000000000000..b6890bacdcd8
--- /dev/null
+++ b/data/layouts/UndergroundPath_EastWestTunnel_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/UndergroundPath_Entrance_Frlg/border.bin b/data/layouts/UndergroundPath_Entrance_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/UndergroundPath_Entrance_Frlg/border.bin differ
diff --git a/data/layouts/UndergroundPath_Entrance_Frlg/map.bin b/data/layouts/UndergroundPath_Entrance_Frlg/map.bin
new file mode 100644
index 000000000000..58cc0f850e8c
--- /dev/null
+++ b/data/layouts/UndergroundPath_Entrance_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222662222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/UndergroundPath_NorthSouthTunnel_Frlg/border.bin b/data/layouts/UndergroundPath_NorthSouthTunnel_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/UndergroundPath_NorthSouthTunnel_Frlg/border.bin differ
diff --git a/data/layouts/UndergroundPath_NorthSouthTunnel_Frlg/map.bin b/data/layouts/UndergroundPath_NorthSouthTunnel_Frlg/map.bin
new file mode 100644
index 000000000000..4772a43cdbab
--- /dev/null
+++ b/data/layouts/UndergroundPath_NorthSouthTunnel_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/UnionRoom_Frlg/border.bin b/data/layouts/UnionRoom_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/UnionRoom_Frlg/border.bin differ
diff --git a/data/layouts/UnionRoom_Frlg/map.bin b/data/layouts/UnionRoom_Frlg/map.bin
new file mode 100644
index 000000000000..829e215544e4
--- /dev/null
+++ b/data/layouts/UnionRoom_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/VermilionCity_Frlg/border.bin b/data/layouts/VermilionCity_Frlg/border.bin
new file mode 100644
index 000000000000..730aab996458
--- /dev/null
+++ b/data/layouts/VermilionCity_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/VermilionCity_Frlg/map.bin b/data/layouts/VermilionCity_Frlg/map.bin
new file mode 100644
index 000000000000..1c90e0240ac9
--- /dev/null
+++ b/data/layouts/VermilionCity_Frlg/map.bin
@@ -0,0 +1,2 @@
+,0 00,000++++++,0 00+HIJK000++(PQRS0 00++++,XYZ[0 00&%$%$%$%$%$%++++,`ab000++++,102220000000000 000000000000000000++++,111111100000000000000000000000000++++,111111111111000 000000000000000000++++0#####!111111100000000000001010000++++++++++,111111111000000000000000000++++++++++0#####!111000000000000000000++++++++++++++++,111000000000000000000++++++++++2210000(0)0*0+00000000000++++(222221000001230000000000&%$%$%++++,111111000089:;000000000000000+++,111110000@Abc=>>>>>>>>?+++,111102221110220000000000000000000000000+++,1111000000000000000000000000000000000000+++,1100000000000000000000000001110000000000+++,11091:1:1:1:1:1;10011111002222"#$02220"########+++,110ABBBBBC011111110*+,02220*+++++++++++,11`1IJJJJJK01 ##!110*+,&3222'3*+++++++++++,hPQRSTUV1*++,111*+,01110*(+++,110X1Y1Z[\]1^101*++,1111122*+0#111#1,pqqqqqr++++,1111110 00 001*++0#######1+++111++,pqqqqqr++++,111111111111*++++++++++++++111++,pqqqqqr++++,111111111111*+1111111111111111++,x|||||z++++0############1+1111111111111111++0 #####+++++++++++++++++++1111111111111111++++++++++++++++++++++++111++++++++++++++++++++111+++++++++++++++++++++++++++++++3 3
+3++++++++++++++++++++++++222++++++++++++++++++++++++++++++++++,*++++++++++++++++++++,*+++++++,*++,*
\ No newline at end of file
diff --git a/data/layouts/VermilionCity_Gym_Frlg/border.bin b/data/layouts/VermilionCity_Gym_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/VermilionCity_Gym_Frlg/border.bin differ
diff --git a/data/layouts/VermilionCity_Gym_Frlg/map.bin b/data/layouts/VermilionCity_Gym_Frlg/map.bin
new file mode 100644
index 000000000000..6389bf60313b
--- /dev/null
+++ b/data/layouts/VermilionCity_Gym_Frlg/map.bin
@@ -0,0 +1 @@
+22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222tuv
\ No newline at end of file
diff --git a/data/layouts/VermilionCity_PokemonFanClub_Frlg/border.bin b/data/layouts/VermilionCity_PokemonFanClub_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/VermilionCity_PokemonFanClub_Frlg/border.bin differ
diff --git a/data/layouts/VermilionCity_PokemonFanClub_Frlg/map.bin b/data/layouts/VermilionCity_PokemonFanClub_Frlg/map.bin
new file mode 100644
index 000000000000..9e7443ba65d0
--- /dev/null
+++ b/data/layouts/VermilionCity_PokemonFanClub_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222BB2222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/VictoryRoad_1F_Frlg/border.bin b/data/layouts/VictoryRoad_1F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/VictoryRoad_1F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/VictoryRoad_1F_Frlg/map.bin b/data/layouts/VictoryRoad_1F_Frlg/map.bin
new file mode 100644
index 000000000000..fe99f6f05632
--- /dev/null
+++ b/data/layouts/VictoryRoad_1F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222BBBBBBBBBBBBB22222BBBBBBBBBBBBB22222BBBBBBBBBBBBB2222BBBBBBBBBBBBB2222BB2222222222BB2222222BBBB2BB2222BBBBBB22BBBBBB22BBBBBBBBB222222BBBBBBBBB22222222222222222222222222222222222222222222222222226666666666666
\ No newline at end of file
diff --git a/data/layouts/VictoryRoad_2F_Frlg/border.bin b/data/layouts/VictoryRoad_2F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/VictoryRoad_2F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/VictoryRoad_2F_Frlg/map.bin b/data/layouts/VictoryRoad_2F_Frlg/map.bin
new file mode 100644
index 000000000000..fa39935e6713
Binary files /dev/null and b/data/layouts/VictoryRoad_2F_Frlg/map.bin differ
diff --git a/data/layouts/VictoryRoad_3F_Frlg/border.bin b/data/layouts/VictoryRoad_3F_Frlg/border.bin
new file mode 100644
index 000000000000..a021ddd4ec70
--- /dev/null
+++ b/data/layouts/VictoryRoad_3F_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/VictoryRoad_3F_Frlg/map.bin b/data/layouts/VictoryRoad_3F_Frlg/map.bin
new file mode 100644
index 000000000000..3ca93972e63c
--- /dev/null
+++ b/data/layouts/VictoryRoad_3F_Frlg/map.bin
@@ -0,0 +1 @@
+222222222226666622262262222222222222222222222222222222222222222222222222222222222222222222222222226BBBBBBBBBBBBBB6222222222222222222226BBBBBBBBBBBBBB62222226662222222222226BBBBBBBBBBBBBB62222226662222222262226BBB666666662222226662222222262226BBB62222222222222222266662BBBBBBBB626BBB6222222222222222222222262BBBBBBBB666BBB62222222262222226222226BBBBBBBB666BBB62222222222222222222226266666BBBBBBBB622222222222226662222262622226BBBBBBBB6222222222222222222622226622226666666666222222222222222222222266622222222222222266666622222222266622222222222222622222222222222222222226666222222222222226662222222222222262222226666222222222222266622222222222222222222666662222222222222222222222222222222222226666666666666666666666666666622266666666666666666666666666666666666666622
\ No newline at end of file
diff --git a/data/layouts/ViridianCity_Frlg/border.bin b/data/layouts/ViridianCity_Frlg/border.bin
new file mode 100644
index 000000000000..a701312cfff9
Binary files /dev/null and b/data/layouts/ViridianCity_Frlg/border.bin differ
diff --git a/data/layouts/ViridianCity_Frlg/map.bin b/data/layouts/ViridianCity_Frlg/map.bin
new file mode 100644
index 000000000000..d633641ca37b
--- /dev/null
+++ b/data/layouts/ViridianCity_Frlg/map.bin
@@ -0,0 +1 @@
+qqlmqqr0 00 00qqqqmqr0000kllmquqr 0e1f1g10sqqmmr&%$%$%$%$'0m1n1o1 0$%$%$%$%$%$%$%sqqququr0m1n1o10&%$'0e1f1f1f1f1f1f1f1f1f1f1f1g1sqqququr000000000000m1n1o100 00 00m1n1n1n1n1n1n1n1n1n1n1n1o1sqqququr0 0m1n11f1f1f1f1f1f11n11v12222221n1o1sqqququr 0m1n1n1n1n1n1n1n1n1n1n1o10ABBBBCm1n1o1sqqququr 00m1n11v122222v1v1w10IJJJJKm1n1o1sqq}qur0m1n1o10 00`1PQRSTVm1n1o1sqquqqur 0 0m1n1o10000hX1Y1Z[\^1m1n1o1{||}q}r0m1n1o10 000 00 00 00u1v1w1qqqq}qr00m1n1o10000||||}qqr 0m1n1o100 00 00000000 00 00000qqqqqyz0 0m1n1o1 000000000 000 0 000 00 0yyyyyz0 0 0&%$%$%$'m1n1o10222220 00 00 00 000n1o100 000(0)0*0+000 000000000000000e1f1f1f1f1f1f11n1o100e1f1g1001230e1f1g1000000000 00 00m1n1n1n1n1n1n1n1n1o1 0m1n1o1 089:; 0m1n1o10000000000000u1v1v1v1v1v1v11n1o10202220m1n1o10@Abc0m1n1o1iiiiiij00 00 0000 00 00 0m1n11f1f1f1f1f1f1f11n11f1f1f1n1f1f11n1o1qkllmqr00000 000000 00m1n1n1n1n1n1n1n1n1n1n1n1n1n1n1n1n1n1n1n1n1o1kqquqr000000000000 0m1n11v122222v11n11v1v1v1v1v1v11n1o1sqqqmr000000000m1n1o10HIJK0m1n1o100 00 0 0m1n1o1sqqqqur&%$' 0000000m1n1o10PQRS0m1n1o1 0 00000m1n1o1sqqqqur00000&' 00 00 00m1n1o10XYZ[0m1n1o100 00 0 0m1n1o1sqqqqur0000000m1n1o10`ab0m1n1o1000000m1n1o1sqqqqur01000 00m1n11f1f1f1n1f1f1f11n11f1f1f1f1f1f11n1o1qqqqur0000000m1n1n1n1n1n1n1n1n1n1n1n1n1n1n1n1n1n1n1n1n1o1qqqqqur000 00 00u1v1v1v1v1v1v1v1v1v1v1v1v1v1v1v1v1v1v1v1v1w1qqqqqu000qqqq}r0 00 03131313131310 00000 000 00 00 000 00000000qqqquqr00000000000000000000000000000000000qqqqu00000000000000000000000000000000000qqqqrr0000000010010000000000000000qqqqrr0000000000000000000000000000qqqqrr0000qqqqrr0000qqqqrr0000qqqqrr0000
\ No newline at end of file
diff --git a/data/layouts/ViridianCity_Gym_Frlg/border.bin b/data/layouts/ViridianCity_Gym_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/ViridianCity_Gym_Frlg/border.bin differ
diff --git a/data/layouts/ViridianCity_Gym_Frlg/map.bin b/data/layouts/ViridianCity_Gym_Frlg/map.bin
new file mode 100644
index 000000000000..ea13b028027c
--- /dev/null
+++ b/data/layouts/ViridianCity_Gym_Frlg/map.bin
@@ -0,0 +1 @@
+2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/ViridianCity_House_Frlg/border.bin b/data/layouts/ViridianCity_House_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/ViridianCity_House_Frlg/border.bin differ
diff --git a/data/layouts/ViridianCity_House_Frlg/map.bin b/data/layouts/ViridianCity_House_Frlg/map.bin
new file mode 100644
index 000000000000..888436add5f1
--- /dev/null
+++ b/data/layouts/ViridianCity_House_Frlg/map.bin
@@ -0,0 +1 @@
+ ./ - !"1267(5(()*90:0>0?0 0=0 0 0 0 0 0 000C0D0D0D0D0F000 000S0K0LMN0V000 000S0K0TUN0V000W000[0\0\0\0\0^00G0_000000000O44444444
\ No newline at end of file
diff --git a/data/layouts/ViridianCity_School_Frlg/border.bin b/data/layouts/ViridianCity_School_Frlg/border.bin
new file mode 100644
index 000000000000..a886cd764697
Binary files /dev/null and b/data/layouts/ViridianCity_School_Frlg/border.bin differ
diff --git a/data/layouts/ViridianCity_School_Frlg/map.bin b/data/layouts/ViridianCity_School_Frlg/map.bin
new file mode 100644
index 000000000000..b6e23003bbda
--- /dev/null
+++ b/data/layouts/ViridianCity_School_Frlg/map.bin
@@ -0,0 +1 @@
+222222222222222222222222222222222222222222222222222222
\ No newline at end of file
diff --git a/data/layouts/ViridianForest_Frlg/border.bin b/data/layouts/ViridianForest_Frlg/border.bin
new file mode 100644
index 000000000000..7797e033b59f
--- /dev/null
+++ b/data/layouts/ViridianForest_Frlg/border.bin
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/data/layouts/ViridianForest_Frlg/map.bin b/data/layouts/ViridianForest_Frlg/map.bin
new file mode 100644
index 000000000000..74a9e6f5dbf5
--- /dev/null
+++ b/data/layouts/ViridianForest_Frlg/map.bin
@@ -0,0 +1 @@
+LMMMMMMMMMNLMMMMMMMMMNLMMMMMMMMMNLMMMMMMMMMNLMMMMMMMMMNLMMMMMMMMMN00 00 00 00 00 00 00 00 0 00 00 00 002 02020202 02000000000000000000000000000202 02 02 020 0 0000000000000 000 0002 0020 02 002002 000 00\]0]0]0]0^000100000100 00 000 00000de111ef0000 00 00 0000000 0000 00 021200000 020 00000 00000 00 00000 00 00 00 00 0000 00000000 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00 00 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 00 00
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00 0000 0 00 00 0 0 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00000000000000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00 0000 00020020
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0000000 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
02
0
020 0000 00
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0000000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0000
0
0
0 0000 00
0
0
0
0
0
0
0
0
0
00 000000000 000000 0
0
0
0
0
0
0
0
0
0
0200000000000000000 00
0
0
0
0
0
0
0
0
0
0000000000000 000000
0
0
0
0
0
0
0
0
0
00200200200200000 002 0202 0
0
0
0
0
0
0
0
0
0
0
0
00000 00202 02
0
0
0
0
0 00 0
0
0
0
0
0
0
0 0000000 00 02 000 00 00 00 00 00 00 00000000000 0000000 00 0000000
0
0
0
0002 00 00 0 000000000000000
0
0
0
0
00 00 000000000000000 00 00 00 0
0
0
0
0
00000000000000000000 00000 0
0
0
0
0
00 00 0020 020 020 020 020002020
0
0
0
0
00000020200
0
0
0
0
00 00 0022020
0
0
0
0
00000
0
0
0
0
00 00 0
0
0
0
0
00000
0
0
0
0
00 00 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00 00 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00 02 0
02
0
02
0
02
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 00000202
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
000
0
0
0
0
0000 00202 0
0
0
0
0
0
02
0
02
0
02
0
0
00 0 0
0
0
0
0
00 000202220 0
0
0
0
0
0000
0
0
0
0
0 00 000
0
0
0
0
00 00
0
0
0
0
00000 0
0
0
0
0
0000
0
0
0
0
0 00 000
0
0
0
0
00 00
0
0
0
0
00000 0
0
0
0
0
0000
0
0
0
0
0 00 000
0
0
0
0
00 00
0
0
0
0
00000 0
0
0
0
0
0000
0
0
0
0
0 00 000
0
0
0
0
00 00
0
0
0
0
0 00 00 0
0
0
0
0
0 020
0
0
0
0
0000
0
0
0
0
0
0
0
0
00 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00 00
0
0
0
0
0
0
0
0
0
0
0
0
0
0
000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00 00
0
0
0
0
0
0
0
0
0
0
0
0 00
0
0
0
0
0
0
0
0
000 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
00000
0
0
0
0
0
0
0
0
0
000 00 00 0
0
0
0
0
0
0
000 00
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 00 00000000000000 000000 00 00 00000 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
000000000000000000000000000000 00
0
0
0
0
0
0
0
0
02
0
02
0
02 0020020020020020 000000 02002 002002
0
02
0
02
022y1220DEEEEEEEEEFLMMMMMMMMMNLMMMMMMMMMNLMMMMMMMMMNLMMMMMMMMMNLMMMMMMMMMN
\ No newline at end of file
diff --git a/data/layouts/layouts.json b/data/layouts/layouts.json
index b8d841f72bcc..defdec54a9f5 100644
--- a/data/layouts/layouts.json
+++ b/data/layouts/layouts.json
@@ -9,7 +9,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Petalburg",
"border_filepath": "data/layouts/PetalburgCity/border.bin",
- "blockdata_filepath": "data/layouts/PetalburgCity/map.bin"
+ "blockdata_filepath": "data/layouts/PetalburgCity/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SLATEPORT_CITY",
@@ -19,7 +20,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Slateport",
"border_filepath": "data/layouts/SlateportCity/border.bin",
- "blockdata_filepath": "data/layouts/SlateportCity/map.bin"
+ "blockdata_filepath": "data/layouts/SlateportCity/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MAUVILLE_CITY",
@@ -29,7 +31,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Mauville",
"border_filepath": "data/layouts/MauvilleCity/border.bin",
- "blockdata_filepath": "data/layouts/MauvilleCity/map.bin"
+ "blockdata_filepath": "data/layouts/MauvilleCity/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_RUSTBORO_CITY",
@@ -39,7 +42,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Rustboro",
"border_filepath": "data/layouts/RustboroCity/border.bin",
- "blockdata_filepath": "data/layouts/RustboroCity/map.bin"
+ "blockdata_filepath": "data/layouts/RustboroCity/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_FORTREE_CITY",
@@ -49,7 +53,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Fortree",
"border_filepath": "data/layouts/FortreeCity/border.bin",
- "blockdata_filepath": "data/layouts/FortreeCity/map.bin"
+ "blockdata_filepath": "data/layouts/FortreeCity/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LILYCOVE_CITY",
@@ -59,7 +64,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lilycove",
"border_filepath": "data/layouts/LilycoveCity/border.bin",
- "blockdata_filepath": "data/layouts/LilycoveCity/map.bin"
+ "blockdata_filepath": "data/layouts/LilycoveCity/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MOSSDEEP_CITY",
@@ -69,7 +75,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Mossdeep",
"border_filepath": "data/layouts/MossdeepCity/border.bin",
- "blockdata_filepath": "data/layouts/MossdeepCity/map.bin"
+ "blockdata_filepath": "data/layouts/MossdeepCity/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SOOTOPOLIS_CITY",
@@ -79,7 +86,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Sootopolis",
"border_filepath": "data/layouts/SootopolisCity/border.bin",
- "blockdata_filepath": "data/layouts/SootopolisCity/map.bin"
+ "blockdata_filepath": "data/layouts/SootopolisCity/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_EVER_GRANDE_CITY",
@@ -89,7 +97,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_EverGrande",
"border_filepath": "data/layouts/EverGrandeCity/border.bin",
- "blockdata_filepath": "data/layouts/EverGrandeCity/map.bin"
+ "blockdata_filepath": "data/layouts/EverGrandeCity/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LITTLEROOT_TOWN",
@@ -99,7 +108,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Petalburg",
"border_filepath": "data/layouts/LittlerootTown/border.bin",
- "blockdata_filepath": "data/layouts/LittlerootTown/map.bin"
+ "blockdata_filepath": "data/layouts/LittlerootTown/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_OLDALE_TOWN",
@@ -109,7 +119,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Petalburg",
"border_filepath": "data/layouts/OldaleTown/border.bin",
- "blockdata_filepath": "data/layouts/OldaleTown/map.bin"
+ "blockdata_filepath": "data/layouts/OldaleTown/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_DEWFORD_TOWN",
@@ -119,7 +130,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Dewford",
"border_filepath": "data/layouts/DewfordTown/border.bin",
- "blockdata_filepath": "data/layouts/DewfordTown/map.bin"
+ "blockdata_filepath": "data/layouts/DewfordTown/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LAVARIDGE_TOWN",
@@ -129,7 +141,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lavaridge",
"border_filepath": "data/layouts/LavaridgeTown/border.bin",
- "blockdata_filepath": "data/layouts/LavaridgeTown/map.bin"
+ "blockdata_filepath": "data/layouts/LavaridgeTown/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_FALLARBOR_TOWN",
@@ -139,7 +152,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Fallarbor",
"border_filepath": "data/layouts/FallarborTown/border.bin",
- "blockdata_filepath": "data/layouts/FallarborTown/map.bin"
+ "blockdata_filepath": "data/layouts/FallarborTown/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_VERDANTURF_TOWN",
@@ -149,7 +163,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Mauville",
"border_filepath": "data/layouts/VerdanturfTown/border.bin",
- "blockdata_filepath": "data/layouts/VerdanturfTown/map.bin"
+ "blockdata_filepath": "data/layouts/VerdanturfTown/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_PACIFIDLOG_TOWN",
@@ -159,7 +174,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/PacifidlogTown/border.bin",
- "blockdata_filepath": "data/layouts/PacifidlogTown/map.bin"
+ "blockdata_filepath": "data/layouts/PacifidlogTown/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE101",
@@ -169,7 +185,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Petalburg",
"border_filepath": "data/layouts/Route101/border.bin",
- "blockdata_filepath": "data/layouts/Route101/map.bin"
+ "blockdata_filepath": "data/layouts/Route101/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE102",
@@ -179,7 +196,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Petalburg",
"border_filepath": "data/layouts/Route102/border.bin",
- "blockdata_filepath": "data/layouts/Route102/map.bin"
+ "blockdata_filepath": "data/layouts/Route102/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE103",
@@ -189,7 +207,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Petalburg",
"border_filepath": "data/layouts/Route103/border.bin",
- "blockdata_filepath": "data/layouts/Route103/map.bin"
+ "blockdata_filepath": "data/layouts/Route103/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE104",
@@ -199,7 +218,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Rustboro",
"border_filepath": "data/layouts/Route104/border.bin",
- "blockdata_filepath": "data/layouts/Route104/map.bin"
+ "blockdata_filepath": "data/layouts/Route104/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE105",
@@ -209,7 +229,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Dewford",
"border_filepath": "data/layouts/Route105/border.bin",
- "blockdata_filepath": "data/layouts/Route105/map.bin"
+ "blockdata_filepath": "data/layouts/Route105/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE106",
@@ -219,7 +240,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Dewford",
"border_filepath": "data/layouts/Route106/border.bin",
- "blockdata_filepath": "data/layouts/Route106/map.bin"
+ "blockdata_filepath": "data/layouts/Route106/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE107",
@@ -229,7 +251,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Dewford",
"border_filepath": "data/layouts/Route107/border.bin",
- "blockdata_filepath": "data/layouts/Route107/map.bin"
+ "blockdata_filepath": "data/layouts/Route107/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE108",
@@ -239,7 +262,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Slateport",
"border_filepath": "data/layouts/Route108/border.bin",
- "blockdata_filepath": "data/layouts/Route108/map.bin"
+ "blockdata_filepath": "data/layouts/Route108/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE109",
@@ -249,7 +273,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Slateport",
"border_filepath": "data/layouts/Route109/border.bin",
- "blockdata_filepath": "data/layouts/Route109/map.bin"
+ "blockdata_filepath": "data/layouts/Route109/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE110",
@@ -259,7 +284,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Mauville",
"border_filepath": "data/layouts/Route110/border.bin",
- "blockdata_filepath": "data/layouts/Route110/map.bin"
+ "blockdata_filepath": "data/layouts/Route110/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE111",
@@ -269,7 +295,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Mauville",
"border_filepath": "data/layouts/Route111/border.bin",
- "blockdata_filepath": "data/layouts/Route111/map.bin"
+ "blockdata_filepath": "data/layouts/Route111/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE112",
@@ -279,7 +306,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lavaridge",
"border_filepath": "data/layouts/Route112/border.bin",
- "blockdata_filepath": "data/layouts/Route112/map.bin"
+ "blockdata_filepath": "data/layouts/Route112/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE113",
@@ -289,7 +317,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Fallarbor",
"border_filepath": "data/layouts/Route113/border.bin",
- "blockdata_filepath": "data/layouts/Route113/map.bin"
+ "blockdata_filepath": "data/layouts/Route113/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE114",
@@ -299,7 +328,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Fallarbor",
"border_filepath": "data/layouts/Route114/border.bin",
- "blockdata_filepath": "data/layouts/Route114/map.bin"
+ "blockdata_filepath": "data/layouts/Route114/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE115",
@@ -309,7 +339,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Fallarbor",
"border_filepath": "data/layouts/Route115/border.bin",
- "blockdata_filepath": "data/layouts/Route115/map.bin"
+ "blockdata_filepath": "data/layouts/Route115/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE116",
@@ -319,7 +350,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Rustboro",
"border_filepath": "data/layouts/Route116/border.bin",
- "blockdata_filepath": "data/layouts/Route116/map.bin"
+ "blockdata_filepath": "data/layouts/Route116/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE117",
@@ -329,7 +361,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Mauville",
"border_filepath": "data/layouts/Route117/border.bin",
- "blockdata_filepath": "data/layouts/Route117/map.bin"
+ "blockdata_filepath": "data/layouts/Route117/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE118",
@@ -339,7 +372,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Mauville",
"border_filepath": "data/layouts/Route118/border.bin",
- "blockdata_filepath": "data/layouts/Route118/map.bin"
+ "blockdata_filepath": "data/layouts/Route118/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE119",
@@ -349,7 +383,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Fortree",
"border_filepath": "data/layouts/Route119/border.bin",
- "blockdata_filepath": "data/layouts/Route119/map.bin"
+ "blockdata_filepath": "data/layouts/Route119/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE120",
@@ -359,7 +394,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Fortree",
"border_filepath": "data/layouts/Route120/border.bin",
- "blockdata_filepath": "data/layouts/Route120/map.bin"
+ "blockdata_filepath": "data/layouts/Route120/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE121",
@@ -369,7 +405,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lilycove",
"border_filepath": "data/layouts/Route121/border.bin",
- "blockdata_filepath": "data/layouts/Route121/map.bin"
+ "blockdata_filepath": "data/layouts/Route121/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE122",
@@ -379,7 +416,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lilycove",
"border_filepath": "data/layouts/Route122/border.bin",
- "blockdata_filepath": "data/layouts/Route122/map.bin"
+ "blockdata_filepath": "data/layouts/Route122/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE123",
@@ -389,7 +427,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lilycove",
"border_filepath": "data/layouts/Route123/border.bin",
- "blockdata_filepath": "data/layouts/Route123/map.bin"
+ "blockdata_filepath": "data/layouts/Route123/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE124",
@@ -399,7 +438,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Mossdeep",
"border_filepath": "data/layouts/Route124/border.bin",
- "blockdata_filepath": "data/layouts/Route124/map.bin"
+ "blockdata_filepath": "data/layouts/Route124/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE125",
@@ -409,7 +449,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Mossdeep",
"border_filepath": "data/layouts/Route125/border.bin",
- "blockdata_filepath": "data/layouts/Route125/map.bin"
+ "blockdata_filepath": "data/layouts/Route125/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE126",
@@ -419,7 +460,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Mossdeep",
"border_filepath": "data/layouts/Route126/border.bin",
- "blockdata_filepath": "data/layouts/Route126/map.bin"
+ "blockdata_filepath": "data/layouts/Route126/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE127",
@@ -429,7 +471,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Mossdeep",
"border_filepath": "data/layouts/Route127/border.bin",
- "blockdata_filepath": "data/layouts/Route127/map.bin"
+ "blockdata_filepath": "data/layouts/Route127/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE128",
@@ -439,7 +482,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Mossdeep",
"border_filepath": "data/layouts/Route128/border.bin",
- "blockdata_filepath": "data/layouts/Route128/map.bin"
+ "blockdata_filepath": "data/layouts/Route128/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE129",
@@ -449,7 +493,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Mossdeep",
"border_filepath": "data/layouts/Route129/border.bin",
- "blockdata_filepath": "data/layouts/Route129/map.bin"
+ "blockdata_filepath": "data/layouts/Route129/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE130_MIRAGE_ISLAND",
@@ -459,7 +504,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/Route130_MirageIsland/border.bin",
- "blockdata_filepath": "data/layouts/Route130_MirageIsland/map.bin"
+ "blockdata_filepath": "data/layouts/Route130_MirageIsland/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE131",
@@ -469,7 +515,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/Route131/border.bin",
- "blockdata_filepath": "data/layouts/Route131/map.bin"
+ "blockdata_filepath": "data/layouts/Route131/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE132",
@@ -479,7 +526,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/Route132/border.bin",
- "blockdata_filepath": "data/layouts/Route132/map.bin"
+ "blockdata_filepath": "data/layouts/Route132/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE133",
@@ -489,7 +537,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/Route133/border.bin",
- "blockdata_filepath": "data/layouts/Route133/map.bin"
+ "blockdata_filepath": "data/layouts/Route133/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE134",
@@ -499,7 +548,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/Route134/border.bin",
- "blockdata_filepath": "data/layouts/Route134/map.bin"
+ "blockdata_filepath": "data/layouts/Route134/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNDERWATER_ROUTE126",
@@ -509,7 +559,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Underwater",
"border_filepath": "data/layouts/Underwater_Route126/border.bin",
- "blockdata_filepath": "data/layouts/Underwater_Route126/map.bin"
+ "blockdata_filepath": "data/layouts/Underwater_Route126/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNDERWATER_ROUTE127",
@@ -519,7 +570,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Underwater",
"border_filepath": "data/layouts/Underwater_Route127/border.bin",
- "blockdata_filepath": "data/layouts/Underwater_Route127/map.bin"
+ "blockdata_filepath": "data/layouts/Underwater_Route127/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNDERWATER_ROUTE128",
@@ -529,7 +581,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Underwater",
"border_filepath": "data/layouts/Underwater_Route128/border.bin",
- "blockdata_filepath": "data/layouts/Underwater_Route128/map.bin"
+ "blockdata_filepath": "data/layouts/Underwater_Route128/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F",
@@ -539,7 +592,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BrendansMaysHouse",
"border_filepath": "data/layouts/LittlerootTown_BrendansHouse_1F/border.bin",
- "blockdata_filepath": "data/layouts/LittlerootTown_BrendansHouse_1F/map.bin"
+ "blockdata_filepath": "data/layouts/LittlerootTown_BrendansHouse_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F",
@@ -549,7 +603,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BrendansMaysHouse",
"border_filepath": "data/layouts/LittlerootTown_BrendansHouse_2F/border.bin",
- "blockdata_filepath": "data/layouts/LittlerootTown_BrendansHouse_2F/map.bin"
+ "blockdata_filepath": "data/layouts/LittlerootTown_BrendansHouse_2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LITTLEROOT_TOWN_MAYS_HOUSE_1F",
@@ -559,7 +614,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BrendansMaysHouse",
"border_filepath": "data/layouts/LittlerootTown_MaysHouse_1F/border.bin",
- "blockdata_filepath": "data/layouts/LittlerootTown_MaysHouse_1F/map.bin"
+ "blockdata_filepath": "data/layouts/LittlerootTown_MaysHouse_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LITTLEROOT_TOWN_MAYS_HOUSE_2F",
@@ -569,7 +625,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BrendansMaysHouse",
"border_filepath": "data/layouts/LittlerootTown_MaysHouse_2F/border.bin",
- "blockdata_filepath": "data/layouts/LittlerootTown_MaysHouse_2F/map.bin"
+ "blockdata_filepath": "data/layouts/LittlerootTown_MaysHouse_2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB",
@@ -579,7 +636,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Lab",
"border_filepath": "data/layouts/LittlerootTown_ProfessorBirchsLab/border.bin",
- "blockdata_filepath": "data/layouts/LittlerootTown_ProfessorBirchsLab/map.bin"
+ "blockdata_filepath": "data/layouts/LittlerootTown_ProfessorBirchsLab/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_HOUSE1",
@@ -589,7 +647,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/House1/border.bin",
- "blockdata_filepath": "data/layouts/House1/map.bin"
+ "blockdata_filepath": "data/layouts/House1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_HOUSE2",
@@ -599,7 +658,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/House2/border.bin",
- "blockdata_filepath": "data/layouts/House2/map.bin"
+ "blockdata_filepath": "data/layouts/House2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_POKEMON_CENTER_1F",
@@ -609,7 +669,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_PokemonCenter",
"border_filepath": "data/layouts/PokemonCenter_1F/border.bin",
- "blockdata_filepath": "data/layouts/PokemonCenter_1F/map.bin"
+ "blockdata_filepath": "data/layouts/PokemonCenter_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_POKEMON_CENTER_2F",
@@ -619,7 +680,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_PokemonCenter",
"border_filepath": "data/layouts/PokemonCenter_2F/border.bin",
- "blockdata_filepath": "data/layouts/PokemonCenter_2F/map.bin"
+ "blockdata_filepath": "data/layouts/PokemonCenter_2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MART",
@@ -629,7 +691,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Shop",
"border_filepath": "data/layouts/Mart/border.bin",
- "blockdata_filepath": "data/layouts/Mart/map.bin"
+ "blockdata_filepath": "data/layouts/Mart/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_HOUSE3",
@@ -639,7 +702,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/House3/border.bin",
- "blockdata_filepath": "data/layouts/House3/map.bin"
+ "blockdata_filepath": "data/layouts/House3/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_DEWFORD_TOWN_GYM",
@@ -649,7 +713,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_DewfordGym",
"border_filepath": "data/layouts/DewfordTown_Gym/border.bin",
- "blockdata_filepath": "data/layouts/DewfordTown_Gym/map.bin"
+ "blockdata_filepath": "data/layouts/DewfordTown_Gym/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_DEWFORD_TOWN_HALL",
@@ -659,7 +724,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/DewfordTown_Hall/border.bin",
- "blockdata_filepath": "data/layouts/DewfordTown_Hall/map.bin"
+ "blockdata_filepath": "data/layouts/DewfordTown_Hall/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_HOUSE4",
@@ -669,7 +735,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/House4/border.bin",
- "blockdata_filepath": "data/layouts/House4/map.bin"
+ "blockdata_filepath": "data/layouts/House4/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LAVARIDGE_TOWN_HERB_SHOP",
@@ -679,7 +746,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Shop",
"border_filepath": "data/layouts/LavaridgeTown_HerbShop/border.bin",
- "blockdata_filepath": "data/layouts/LavaridgeTown_HerbShop/map.bin"
+ "blockdata_filepath": "data/layouts/LavaridgeTown_HerbShop/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LAVARIDGE_TOWN_GYM_1F",
@@ -689,7 +757,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_LavaridgeGym",
"border_filepath": "data/layouts/LavaridgeTown_Gym_1F/border.bin",
- "blockdata_filepath": "data/layouts/LavaridgeTown_Gym_1F/map.bin"
+ "blockdata_filepath": "data/layouts/LavaridgeTown_Gym_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LAVARIDGE_TOWN_GYM_B1F",
@@ -699,7 +768,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_LavaridgeGym",
"border_filepath": "data/layouts/LavaridgeTown_Gym_B1F/border.bin",
- "blockdata_filepath": "data/layouts/LavaridgeTown_Gym_B1F/map.bin"
+ "blockdata_filepath": "data/layouts/LavaridgeTown_Gym_B1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LAVARIDGE_TOWN_POKEMON_CENTER_1F",
@@ -709,7 +779,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_PokemonCenter",
"border_filepath": "data/layouts/LavaridgeTown_PokemonCenter_1F/border.bin",
- "blockdata_filepath": "data/layouts/LavaridgeTown_PokemonCenter_1F/map.bin"
+ "blockdata_filepath": "data/layouts/LavaridgeTown_PokemonCenter_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_FALLARBOR_TOWN_LEFTOVER_RSCONTEST_LOBBY",
@@ -719,7 +790,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/FallarborTown_LeftoverRSContestLobby/border.bin",
- "blockdata_filepath": "data/layouts/FallarborTown_LeftoverRSContestLobby/map.bin"
+ "blockdata_filepath": "data/layouts/FallarborTown_LeftoverRSContestLobby/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_FALLARBOR_TOWN_LEFTOVER_RSCONTEST_HALL",
@@ -729,7 +801,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/FallarborTown_LeftoverRSContestHall/border.bin",
- "blockdata_filepath": "data/layouts/FallarborTown_LeftoverRSContestHall/map.bin"
+ "blockdata_filepath": "data/layouts/FallarborTown_LeftoverRSContestHall/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LILYCOVE_CITY_HOUSE2",
@@ -739,7 +812,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/LilycoveCity_House2/border.bin",
- "blockdata_filepath": "data/layouts/LilycoveCity_House2/map.bin"
+ "blockdata_filepath": "data/layouts/LilycoveCity_House2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CONTEST_ROOM1",
@@ -749,7 +823,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/UnusedContestRoom1/border.bin",
- "blockdata_filepath": "data/layouts/UnusedContestRoom1/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedContestRoom1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_VERDANTURF_TOWN_WANDAS_HOUSE",
@@ -759,7 +834,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/VerdanturfTown_WandasHouse/border.bin",
- "blockdata_filepath": "data/layouts/VerdanturfTown_WandasHouse/map.bin"
+ "blockdata_filepath": "data/layouts/VerdanturfTown_WandasHouse/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_PACIFIDLOG_TOWN_HOUSE1",
@@ -769,7 +845,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/PacifidlogTown_House1/border.bin",
- "blockdata_filepath": "data/layouts/PacifidlogTown_House1/map.bin"
+ "blockdata_filepath": "data/layouts/PacifidlogTown_House1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_PACIFIDLOG_TOWN_HOUSE2",
@@ -779,7 +856,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/PacifidlogTown_House2/border.bin",
- "blockdata_filepath": "data/layouts/PacifidlogTown_House2/map.bin"
+ "blockdata_filepath": "data/layouts/PacifidlogTown_House2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_PETALBURG_CITY_GYM",
@@ -789,7 +867,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_PetalburgGym",
"border_filepath": "data/layouts/PetalburgCity_Gym/border.bin",
- "blockdata_filepath": "data/layouts/PetalburgCity_Gym/map.bin"
+ "blockdata_filepath": "data/layouts/PetalburgCity_Gym/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_HOUSE_WITH_BED",
@@ -799,7 +878,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/HouseWithBed/border.bin",
- "blockdata_filepath": "data/layouts/HouseWithBed/map.bin"
+ "blockdata_filepath": "data/layouts/HouseWithBed/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SLATEPORT_CITY_STERNS_SHIPYARD_1F",
@@ -809,7 +889,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/SlateportCity_SternsShipyard_1F/border.bin",
- "blockdata_filepath": "data/layouts/SlateportCity_SternsShipyard_1F/map.bin"
+ "blockdata_filepath": "data/layouts/SlateportCity_SternsShipyard_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SLATEPORT_CITY_STERNS_SHIPYARD_2F",
@@ -819,7 +900,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/SlateportCity_SternsShipyard_2F/border.bin",
- "blockdata_filepath": "data/layouts/SlateportCity_SternsShipyard_2F/map.bin"
+ "blockdata_filepath": "data/layouts/SlateportCity_SternsShipyard_2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CONTEST_ROOM2",
@@ -829,7 +911,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/UnusedContestRoom2/border.bin",
- "blockdata_filepath": "data/layouts/UnusedContestRoom2/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedContestRoom2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CONTEST_ROOM3",
@@ -839,7 +922,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/UnusedContestRoom3/border.bin",
- "blockdata_filepath": "data/layouts/UnusedContestRoom3/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedContestRoom3/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SLATEPORT_CITY_POKEMON_FAN_CLUB",
@@ -849,7 +933,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_PokemonFanClub",
"border_filepath": "data/layouts/SlateportCity_PokemonFanClub/border.bin",
- "blockdata_filepath": "data/layouts/SlateportCity_PokemonFanClub/map.bin"
+ "blockdata_filepath": "data/layouts/SlateportCity_PokemonFanClub/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SLATEPORT_CITY_OCEANIC_MUSEUM_1F",
@@ -859,7 +944,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_OceanicMuseum",
"border_filepath": "data/layouts/SlateportCity_OceanicMuseum_1F/border.bin",
- "blockdata_filepath": "data/layouts/SlateportCity_OceanicMuseum_1F/map.bin"
+ "blockdata_filepath": "data/layouts/SlateportCity_OceanicMuseum_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SLATEPORT_CITY_OCEANIC_MUSEUM_2F",
@@ -869,7 +955,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_OceanicMuseum",
"border_filepath": "data/layouts/SlateportCity_OceanicMuseum_2F/border.bin",
- "blockdata_filepath": "data/layouts/SlateportCity_OceanicMuseum_2F/map.bin"
+ "blockdata_filepath": "data/layouts/SlateportCity_OceanicMuseum_2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_HARBOR",
@@ -879,7 +966,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/Harbor/border.bin",
- "blockdata_filepath": "data/layouts/Harbor/map.bin"
+ "blockdata_filepath": "data/layouts/Harbor/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MAUVILLE_CITY_GYM",
@@ -889,7 +977,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_MauvilleGym",
"border_filepath": "data/layouts/MauvilleCity_Gym/border.bin",
- "blockdata_filepath": "data/layouts/MauvilleCity_Gym/map.bin"
+ "blockdata_filepath": "data/layouts/MauvilleCity_Gym/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MAUVILLE_CITY_BIKE_SHOP",
@@ -899,17 +988,19 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_BikeShop",
"border_filepath": "data/layouts/MauvilleCity_BikeShop/border.bin",
- "blockdata_filepath": "data/layouts/MauvilleCity_BikeShop/map.bin"
+ "blockdata_filepath": "data/layouts/MauvilleCity_BikeShop/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MAUVILLE_CITY_GAME_CORNER",
"name": "MauvilleCity_GameCorner_Layout",
- "width": 22,
- "height": 11,
+ "width": 30,
+ "height": 22,
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_MauvilleGameCorner",
"border_filepath": "data/layouts/MauvilleCity_GameCorner/border.bin",
- "blockdata_filepath": "data/layouts/MauvilleCity_GameCorner/map.bin"
+ "blockdata_filepath": "data/layouts/MauvilleCity_GameCorner/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_RUSTBORO_CITY_DEVON_CORP_1F",
@@ -919,7 +1010,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/RustboroCity_DevonCorp_1F/border.bin",
- "blockdata_filepath": "data/layouts/RustboroCity_DevonCorp_1F/map.bin"
+ "blockdata_filepath": "data/layouts/RustboroCity_DevonCorp_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_RUSTBORO_CITY_DEVON_CORP_2F",
@@ -929,7 +1021,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/RustboroCity_DevonCorp_2F/border.bin",
- "blockdata_filepath": "data/layouts/RustboroCity_DevonCorp_2F/map.bin"
+ "blockdata_filepath": "data/layouts/RustboroCity_DevonCorp_2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_RUSTBORO_CITY_GYM",
@@ -939,7 +1032,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_RustboroGym",
"border_filepath": "data/layouts/RustboroCity_Gym/border.bin",
- "blockdata_filepath": "data/layouts/RustboroCity_Gym/map.bin"
+ "blockdata_filepath": "data/layouts/RustboroCity_Gym/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_RUSTBORO_CITY_POKEMON_SCHOOL",
@@ -949,7 +1043,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_PokemonSchool",
"border_filepath": "data/layouts/RustboroCity_PokemonSchool/border.bin",
- "blockdata_filepath": "data/layouts/RustboroCity_PokemonSchool/map.bin"
+ "blockdata_filepath": "data/layouts/RustboroCity_PokemonSchool/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_RUSTBORO_CITY_HOUSE",
@@ -959,7 +1054,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/RustboroCity_House/border.bin",
- "blockdata_filepath": "data/layouts/RustboroCity_House/map.bin"
+ "blockdata_filepath": "data/layouts/RustboroCity_House/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_RUSTBORO_CITY_HOUSE1",
@@ -969,7 +1065,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/RustboroCity_House1/border.bin",
- "blockdata_filepath": "data/layouts/RustboroCity_House1/map.bin"
+ "blockdata_filepath": "data/layouts/RustboroCity_House1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_RUSTBORO_CITY_CUTTERS_HOUSE",
@@ -979,7 +1076,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/RustboroCity_CuttersHouse/border.bin",
- "blockdata_filepath": "data/layouts/RustboroCity_CuttersHouse/map.bin"
+ "blockdata_filepath": "data/layouts/RustboroCity_CuttersHouse/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_FORTREE_CITY_HOUSE1",
@@ -989,7 +1087,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/FortreeCity_House1/border.bin",
- "blockdata_filepath": "data/layouts/FortreeCity_House1/map.bin"
+ "blockdata_filepath": "data/layouts/FortreeCity_House1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_FORTREE_CITY_GYM",
@@ -999,7 +1098,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_FortreeGym",
"border_filepath": "data/layouts/FortreeCity_Gym/border.bin",
- "blockdata_filepath": "data/layouts/FortreeCity_Gym/map.bin"
+ "blockdata_filepath": "data/layouts/FortreeCity_Gym/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_FORTREE_CITY_HOUSE2",
@@ -1009,7 +1109,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/FortreeCity_House2/border.bin",
- "blockdata_filepath": "data/layouts/FortreeCity_House2/map.bin"
+ "blockdata_filepath": "data/layouts/FortreeCity_House2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE104_MR_BRINEYS_HOUSE",
@@ -1019,7 +1120,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/Route104_MrBrineysHouse/border.bin",
- "blockdata_filepath": "data/layouts/Route104_MrBrineysHouse/map.bin"
+ "blockdata_filepath": "data/layouts/Route104_MrBrineysHouse/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F",
@@ -1029,7 +1131,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_LilycoveMuseum",
"border_filepath": "data/layouts/LilycoveCity_LilycoveMuseum_1F/border.bin",
- "blockdata_filepath": "data/layouts/LilycoveCity_LilycoveMuseum_1F/map.bin"
+ "blockdata_filepath": "data/layouts/LilycoveCity_LilycoveMuseum_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F",
@@ -1039,7 +1142,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_LilycoveMuseum",
"border_filepath": "data/layouts/LilycoveCity_LilycoveMuseum_2F/border.bin",
- "blockdata_filepath": "data/layouts/LilycoveCity_LilycoveMuseum_2F/map.bin"
+ "blockdata_filepath": "data/layouts/LilycoveCity_LilycoveMuseum_2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LILYCOVE_CITY_CONTEST_LOBBY",
@@ -1049,7 +1153,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/LilycoveCity_ContestLobby/border.bin",
- "blockdata_filepath": "data/layouts/LilycoveCity_ContestLobby/map.bin"
+ "blockdata_filepath": "data/layouts/LilycoveCity_ContestLobby/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LILYCOVE_CITY_CONTEST_HALL",
@@ -1059,7 +1164,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/LilycoveCity_ContestHall/border.bin",
- "blockdata_filepath": "data/layouts/LilycoveCity_ContestHall/map.bin"
+ "blockdata_filepath": "data/layouts/LilycoveCity_ContestHall/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB",
@@ -1069,7 +1175,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/LilycoveCity_PokemonTrainerFanClub/border.bin",
- "blockdata_filepath": "data/layouts/LilycoveCity_PokemonTrainerFanClub/map.bin"
+ "blockdata_filepath": "data/layouts/LilycoveCity_PokemonTrainerFanClub/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MOSSDEEP_CITY_GYM",
@@ -1079,7 +1186,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_MossdeepGym",
"border_filepath": "data/layouts/MossdeepCity_Gym/border.bin",
- "blockdata_filepath": "data/layouts/MossdeepCity_Gym/map.bin"
+ "blockdata_filepath": "data/layouts/MossdeepCity_Gym/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SOOTOPOLIS_CITY_GYM_1F",
@@ -1089,7 +1197,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_SootopolisGym",
"border_filepath": "data/layouts/SootopolisCity_Gym_1F/border.bin",
- "blockdata_filepath": "data/layouts/SootopolisCity_Gym_1F/map.bin"
+ "blockdata_filepath": "data/layouts/SootopolisCity_Gym_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SOOTOPOLIS_CITY_GYM_B1F",
@@ -1099,7 +1208,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_SootopolisGym",
"border_filepath": "data/layouts/SootopolisCity_Gym_B1F/border.bin",
- "blockdata_filepath": "data/layouts/SootopolisCity_Gym_B1F/map.bin"
+ "blockdata_filepath": "data/layouts/SootopolisCity_Gym_B1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_EVER_GRANDE_CITY_SIDNEYS_ROOM",
@@ -1109,7 +1219,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_EliteFour",
"border_filepath": "data/layouts/EverGrandeCity_SidneysRoom/border.bin",
- "blockdata_filepath": "data/layouts/EverGrandeCity_SidneysRoom/map.bin"
+ "blockdata_filepath": "data/layouts/EverGrandeCity_SidneysRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_EVER_GRANDE_CITY_PHOEBES_ROOM",
@@ -1119,7 +1230,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_EliteFour",
"border_filepath": "data/layouts/EverGrandeCity_PhoebesRoom/border.bin",
- "blockdata_filepath": "data/layouts/EverGrandeCity_PhoebesRoom/map.bin"
+ "blockdata_filepath": "data/layouts/EverGrandeCity_PhoebesRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_EVER_GRANDE_CITY_GLACIAS_ROOM",
@@ -1129,7 +1241,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_EliteFour",
"border_filepath": "data/layouts/EverGrandeCity_GlaciasRoom/border.bin",
- "blockdata_filepath": "data/layouts/EverGrandeCity_GlaciasRoom/map.bin"
+ "blockdata_filepath": "data/layouts/EverGrandeCity_GlaciasRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_EVER_GRANDE_CITY_DRAKES_ROOM",
@@ -1139,7 +1252,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_EliteFour",
"border_filepath": "data/layouts/EverGrandeCity_DrakesRoom/border.bin",
- "blockdata_filepath": "data/layouts/EverGrandeCity_DrakesRoom/map.bin"
+ "blockdata_filepath": "data/layouts/EverGrandeCity_DrakesRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_EVER_GRANDE_CITY_CHAMPIONS_ROOM",
@@ -1149,7 +1263,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_EliteFour",
"border_filepath": "data/layouts/EverGrandeCity_ChampionsRoom/border.bin",
- "blockdata_filepath": "data/layouts/EverGrandeCity_ChampionsRoom/map.bin"
+ "blockdata_filepath": "data/layouts/EverGrandeCity_ChampionsRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_EVER_GRANDE_CITY_SHORT_HALL",
@@ -1159,7 +1274,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_EliteFour",
"border_filepath": "data/layouts/EverGrandeCity_ShortHall/border.bin",
- "blockdata_filepath": "data/layouts/EverGrandeCity_ShortHall/map.bin"
+ "blockdata_filepath": "data/layouts/EverGrandeCity_ShortHall/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE104_PRETTY_PETAL_FLOWER_SHOP",
@@ -1169,7 +1285,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_PrettyPetalFlowerShop",
"border_filepath": "data/layouts/Route104_PrettyPetalFlowerShop/border.bin",
- "blockdata_filepath": "data/layouts/Route104_PrettyPetalFlowerShop/map.bin"
+ "blockdata_filepath": "data/layouts/Route104_PrettyPetalFlowerShop/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_CABLE_CAR_STATION",
@@ -1179,7 +1296,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/CableCarStation/border.bin",
- "blockdata_filepath": "data/layouts/CableCarStation/map.bin"
+ "blockdata_filepath": "data/layouts/CableCarStation/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE114_FOSSIL_MANIACS_HOUSE",
@@ -1189,7 +1307,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/Route114_FossilManiacsHouse/border.bin",
- "blockdata_filepath": "data/layouts/Route114_FossilManiacsHouse/map.bin"
+ "blockdata_filepath": "data/layouts/Route114_FossilManiacsHouse/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE114_FOSSIL_MANIACS_TUNNEL",
@@ -1199,7 +1318,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Fallarbor",
"border_filepath": "data/layouts/Route114_FossilManiacsTunnel/border.bin",
- "blockdata_filepath": "data/layouts/Route114_FossilManiacsTunnel/map.bin"
+ "blockdata_filepath": "data/layouts/Route114_FossilManiacsTunnel/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE114_LANETTES_HOUSE",
@@ -1209,7 +1329,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Lab",
"border_filepath": "data/layouts/Route114_LanettesHouse/border.bin",
- "blockdata_filepath": "data/layouts/Route114_LanettesHouse/map.bin"
+ "blockdata_filepath": "data/layouts/Route114_LanettesHouse/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE116_TUNNELERS_REST_HOUSE",
@@ -1219,7 +1340,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/Route116_TunnelersRestHouse/border.bin",
- "blockdata_filepath": "data/layouts/Route116_TunnelersRestHouse/map.bin"
+ "blockdata_filepath": "data/layouts/Route116_TunnelersRestHouse/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE117_POKEMON_DAY_CARE",
@@ -1229,7 +1351,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_PokemonDayCare",
"border_filepath": "data/layouts/Route117_PokemonDayCare/border.bin",
- "blockdata_filepath": "data/layouts/Route117_PokemonDayCare/map.bin"
+ "blockdata_filepath": "data/layouts/Route117_PokemonDayCare/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE121_SAFARI_ZONE_ENTRANCE",
@@ -1239,7 +1362,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Shop",
"border_filepath": "data/layouts/Route121_SafariZoneEntrance/border.bin",
- "blockdata_filepath": "data/layouts/Route121_SafariZoneEntrance/map.bin"
+ "blockdata_filepath": "data/layouts/Route121_SafariZoneEntrance/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_METEOR_FALLS_1F_1R",
@@ -1249,7 +1373,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_MeteorFalls",
"border_filepath": "data/layouts/MeteorFalls_1F_1R/border.bin",
- "blockdata_filepath": "data/layouts/MeteorFalls_1F_1R/map.bin"
+ "blockdata_filepath": "data/layouts/MeteorFalls_1F_1R/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_METEOR_FALLS_1F_2R",
@@ -1259,7 +1384,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_MeteorFalls",
"border_filepath": "data/layouts/MeteorFalls_1F_2R/border.bin",
- "blockdata_filepath": "data/layouts/MeteorFalls_1F_2R/map.bin"
+ "blockdata_filepath": "data/layouts/MeteorFalls_1F_2R/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_METEOR_FALLS_B1F_1R",
@@ -1269,7 +1395,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_MeteorFalls",
"border_filepath": "data/layouts/MeteorFalls_B1F_1R/border.bin",
- "blockdata_filepath": "data/layouts/MeteorFalls_B1F_1R/map.bin"
+ "blockdata_filepath": "data/layouts/MeteorFalls_B1F_1R/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_METEOR_FALLS_B1F_2R",
@@ -1279,7 +1406,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_MeteorFalls",
"border_filepath": "data/layouts/MeteorFalls_B1F_2R/border.bin",
- "blockdata_filepath": "data/layouts/MeteorFalls_B1F_2R/map.bin"
+ "blockdata_filepath": "data/layouts/MeteorFalls_B1F_2R/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_RUSTURF_TUNNEL",
@@ -1289,7 +1417,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_RusturfTunnel",
"border_filepath": "data/layouts/RusturfTunnel/border.bin",
- "blockdata_filepath": "data/layouts/RusturfTunnel/map.bin"
+ "blockdata_filepath": "data/layouts/RusturfTunnel/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNDERWATER_SOOTOPOLIS_CITY",
@@ -1299,7 +1428,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Underwater",
"border_filepath": "data/layouts/Underwater_SootopolisCity/border.bin",
- "blockdata_filepath": "data/layouts/Underwater_SootopolisCity/map.bin"
+ "blockdata_filepath": "data/layouts/Underwater_SootopolisCity/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_DESERT_RUINS",
@@ -1309,7 +1439,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/DesertRuins/border.bin",
- "blockdata_filepath": "data/layouts/DesertRuins/map.bin"
+ "blockdata_filepath": "data/layouts/DesertRuins/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_GRANITE_CAVE_1F",
@@ -1319,7 +1450,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/GraniteCave_1F/border.bin",
- "blockdata_filepath": "data/layouts/GraniteCave_1F/map.bin"
+ "blockdata_filepath": "data/layouts/GraniteCave_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_GRANITE_CAVE_B1F",
@@ -1329,7 +1461,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/GraniteCave_B1F/border.bin",
- "blockdata_filepath": "data/layouts/GraniteCave_B1F/map.bin"
+ "blockdata_filepath": "data/layouts/GraniteCave_B1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_GRANITE_CAVE_B2F",
@@ -1339,7 +1472,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/GraniteCave_B2F/border.bin",
- "blockdata_filepath": "data/layouts/GraniteCave_B2F/map.bin"
+ "blockdata_filepath": "data/layouts/GraniteCave_B2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_PETALBURG_WOODS",
@@ -1349,7 +1483,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Rustboro",
"border_filepath": "data/layouts/PetalburgWoods/border.bin",
- "blockdata_filepath": "data/layouts/PetalburgWoods/map.bin"
+ "blockdata_filepath": "data/layouts/PetalburgWoods/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MT_CHIMNEY",
@@ -1359,7 +1494,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lavaridge",
"border_filepath": "data/layouts/MtChimney/border.bin",
- "blockdata_filepath": "data/layouts/MtChimney/map.bin"
+ "blockdata_filepath": "data/layouts/MtChimney/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MT_PYRE_1F",
@@ -1369,7 +1505,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/MtPyre_1F/border.bin",
- "blockdata_filepath": "data/layouts/MtPyre_1F/map.bin"
+ "blockdata_filepath": "data/layouts/MtPyre_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MT_PYRE_2F",
@@ -1379,7 +1516,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/MtPyre_2F/border.bin",
- "blockdata_filepath": "data/layouts/MtPyre_2F/map.bin"
+ "blockdata_filepath": "data/layouts/MtPyre_2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MT_PYRE_3F",
@@ -1389,7 +1527,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/MtPyre_3F/border.bin",
- "blockdata_filepath": "data/layouts/MtPyre_3F/map.bin"
+ "blockdata_filepath": "data/layouts/MtPyre_3F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MT_PYRE_4F",
@@ -1399,7 +1538,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/MtPyre_4F/border.bin",
- "blockdata_filepath": "data/layouts/MtPyre_4F/map.bin"
+ "blockdata_filepath": "data/layouts/MtPyre_4F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MT_PYRE_5F",
@@ -1409,7 +1549,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/MtPyre_5F/border.bin",
- "blockdata_filepath": "data/layouts/MtPyre_5F/map.bin"
+ "blockdata_filepath": "data/layouts/MtPyre_5F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MT_PYRE_6F",
@@ -1419,7 +1560,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/MtPyre_6F/border.bin",
- "blockdata_filepath": "data/layouts/MtPyre_6F/map.bin"
+ "blockdata_filepath": "data/layouts/MtPyre_6F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_AQUA_HIDEOUT_1F",
@@ -1429,7 +1571,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/AquaHideout_1F/border.bin",
- "blockdata_filepath": "data/layouts/AquaHideout_1F/map.bin"
+ "blockdata_filepath": "data/layouts/AquaHideout_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_AQUA_HIDEOUT_B1F",
@@ -1439,7 +1582,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/AquaHideout_B1F/border.bin",
- "blockdata_filepath": "data/layouts/AquaHideout_B1F/map.bin"
+ "blockdata_filepath": "data/layouts/AquaHideout_B1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_AQUA_HIDEOUT_B2F",
@@ -1449,7 +1593,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/AquaHideout_B2F/border.bin",
- "blockdata_filepath": "data/layouts/AquaHideout_B2F/map.bin"
+ "blockdata_filepath": "data/layouts/AquaHideout_B2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNDERWATER_SEAFLOOR_CAVERN",
@@ -1459,7 +1604,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Underwater",
"border_filepath": "data/layouts/Underwater_SeafloorCavern/border.bin",
- "blockdata_filepath": "data/layouts/Underwater_SeafloorCavern/map.bin"
+ "blockdata_filepath": "data/layouts/Underwater_SeafloorCavern/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SEAFLOOR_CAVERN_ENTRANCE",
@@ -1469,7 +1615,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/SeafloorCavern_Entrance/border.bin",
- "blockdata_filepath": "data/layouts/SeafloorCavern_Entrance/map.bin"
+ "blockdata_filepath": "data/layouts/SeafloorCavern_Entrance/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SEAFLOOR_CAVERN_ROOM1",
@@ -1479,7 +1626,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/SeafloorCavern_Room1/border.bin",
- "blockdata_filepath": "data/layouts/SeafloorCavern_Room1/map.bin"
+ "blockdata_filepath": "data/layouts/SeafloorCavern_Room1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SEAFLOOR_CAVERN_ROOM2",
@@ -1489,7 +1637,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/SeafloorCavern_Room2/border.bin",
- "blockdata_filepath": "data/layouts/SeafloorCavern_Room2/map.bin"
+ "blockdata_filepath": "data/layouts/SeafloorCavern_Room2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SEAFLOOR_CAVERN_ROOM3",
@@ -1499,7 +1648,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/SeafloorCavern_Room3/border.bin",
- "blockdata_filepath": "data/layouts/SeafloorCavern_Room3/map.bin"
+ "blockdata_filepath": "data/layouts/SeafloorCavern_Room3/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SEAFLOOR_CAVERN_ROOM4",
@@ -1509,7 +1659,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/SeafloorCavern_Room4/border.bin",
- "blockdata_filepath": "data/layouts/SeafloorCavern_Room4/map.bin"
+ "blockdata_filepath": "data/layouts/SeafloorCavern_Room4/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SEAFLOOR_CAVERN_ROOM5",
@@ -1519,7 +1670,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/SeafloorCavern_Room5/border.bin",
- "blockdata_filepath": "data/layouts/SeafloorCavern_Room5/map.bin"
+ "blockdata_filepath": "data/layouts/SeafloorCavern_Room5/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SEAFLOOR_CAVERN_ROOM6",
@@ -1529,7 +1681,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/SeafloorCavern_Room6/border.bin",
- "blockdata_filepath": "data/layouts/SeafloorCavern_Room6/map.bin"
+ "blockdata_filepath": "data/layouts/SeafloorCavern_Room6/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SEAFLOOR_CAVERN_ROOM7",
@@ -1539,7 +1692,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/SeafloorCavern_Room7/border.bin",
- "blockdata_filepath": "data/layouts/SeafloorCavern_Room7/map.bin"
+ "blockdata_filepath": "data/layouts/SeafloorCavern_Room7/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SEAFLOOR_CAVERN_ROOM8",
@@ -1549,7 +1703,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/SeafloorCavern_Room8/border.bin",
- "blockdata_filepath": "data/layouts/SeafloorCavern_Room8/map.bin"
+ "blockdata_filepath": "data/layouts/SeafloorCavern_Room8/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SEAFLOOR_CAVERN_ROOM9",
@@ -1559,7 +1714,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/SeafloorCavern_Room9/border.bin",
- "blockdata_filepath": "data/layouts/SeafloorCavern_Room9/map.bin"
+ "blockdata_filepath": "data/layouts/SeafloorCavern_Room9/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_CAVE_OF_ORIGIN_ENTRANCE",
@@ -1569,7 +1725,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/CaveOfOrigin_Entrance/border.bin",
- "blockdata_filepath": "data/layouts/CaveOfOrigin_Entrance/map.bin"
+ "blockdata_filepath": "data/layouts/CaveOfOrigin_Entrance/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_CAVE_OF_ORIGIN_1F",
@@ -1579,7 +1736,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/CaveOfOrigin_1F/border.bin",
- "blockdata_filepath": "data/layouts/CaveOfOrigin_1F/map.bin"
+ "blockdata_filepath": "data/layouts/CaveOfOrigin_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1",
@@ -1589,7 +1747,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/CaveOfOrigin_UnusedRubySapphireMap1/border.bin",
- "blockdata_filepath": "data/layouts/CaveOfOrigin_UnusedRubySapphireMap1/map.bin"
+ "blockdata_filepath": "data/layouts/CaveOfOrigin_UnusedRubySapphireMap1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2",
@@ -1599,7 +1758,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/CaveOfOrigin_UnusedRubySapphireMap2/border.bin",
- "blockdata_filepath": "data/layouts/CaveOfOrigin_UnusedRubySapphireMap2/map.bin"
+ "blockdata_filepath": "data/layouts/CaveOfOrigin_UnusedRubySapphireMap2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3",
@@ -1609,7 +1769,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/CaveOfOrigin_UnusedRubySapphireMap3/border.bin",
- "blockdata_filepath": "data/layouts/CaveOfOrigin_UnusedRubySapphireMap3/map.bin"
+ "blockdata_filepath": "data/layouts/CaveOfOrigin_UnusedRubySapphireMap3/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_CAVE_OF_ORIGIN_B1F",
@@ -1619,7 +1780,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/CaveOfOrigin_B1F/border.bin",
- "blockdata_filepath": "data/layouts/CaveOfOrigin_B1F/map.bin"
+ "blockdata_filepath": "data/layouts/CaveOfOrigin_B1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_VICTORY_ROAD_1F",
@@ -1629,7 +1791,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/VictoryRoad_1F/border.bin",
- "blockdata_filepath": "data/layouts/VictoryRoad_1F/map.bin"
+ "blockdata_filepath": "data/layouts/VictoryRoad_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM",
@@ -1639,7 +1802,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/ShoalCave_LowTideEntranceRoom/border.bin",
- "blockdata_filepath": "data/layouts/ShoalCave_LowTideEntranceRoom/map.bin"
+ "blockdata_filepath": "data/layouts/ShoalCave_LowTideEntranceRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SHOAL_CAVE_LOW_TIDE_INNER_ROOM",
@@ -1649,7 +1813,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/ShoalCave_LowTideInnerRoom/border.bin",
- "blockdata_filepath": "data/layouts/ShoalCave_LowTideInnerRoom/map.bin"
+ "blockdata_filepath": "data/layouts/ShoalCave_LowTideInnerRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM",
@@ -1659,7 +1824,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/ShoalCave_LowTideStairsRoom/border.bin",
- "blockdata_filepath": "data/layouts/ShoalCave_LowTideStairsRoom/map.bin"
+ "blockdata_filepath": "data/layouts/ShoalCave_LowTideStairsRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM",
@@ -1669,7 +1835,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/ShoalCave_LowTideLowerRoom/border.bin",
- "blockdata_filepath": "data/layouts/ShoalCave_LowTideLowerRoom/map.bin"
+ "blockdata_filepath": "data/layouts/ShoalCave_LowTideLowerRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM",
@@ -1679,7 +1846,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/ShoalCave_HighTideEntranceRoom/border.bin",
- "blockdata_filepath": "data/layouts/ShoalCave_HighTideEntranceRoom/map.bin"
+ "blockdata_filepath": "data/layouts/ShoalCave_HighTideEntranceRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM",
@@ -1689,7 +1857,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/ShoalCave_HighTideInnerRoom/border.bin",
- "blockdata_filepath": "data/layouts/ShoalCave_HighTideInnerRoom/map.bin"
+ "blockdata_filepath": "data/layouts/ShoalCave_HighTideInnerRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CAVE1",
@@ -1699,7 +1868,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/UnusedCave1/border.bin",
- "blockdata_filepath": "data/layouts/UnusedCave1/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedCave1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CAVE2",
@@ -1709,7 +1879,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/UnusedCave2/border.bin",
- "blockdata_filepath": "data/layouts/UnusedCave2/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedCave2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CAVE3",
@@ -1719,7 +1890,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/UnusedCave3/border.bin",
- "blockdata_filepath": "data/layouts/UnusedCave3/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedCave3/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CAVE4",
@@ -1729,7 +1901,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/UnusedCave4/border.bin",
- "blockdata_filepath": "data/layouts/UnusedCave4/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedCave4/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CAVE5",
@@ -1739,7 +1912,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/UnusedCave5/border.bin",
- "blockdata_filepath": "data/layouts/UnusedCave5/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedCave5/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CAVE6",
@@ -1749,7 +1923,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/UnusedCave6/border.bin",
- "blockdata_filepath": "data/layouts/UnusedCave6/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedCave6/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CAVE7",
@@ -1759,7 +1934,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/UnusedCave7/border.bin",
- "blockdata_filepath": "data/layouts/UnusedCave7/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedCave7/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CAVE8",
@@ -1769,7 +1945,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/UnusedCave8/border.bin",
- "blockdata_filepath": "data/layouts/UnusedCave8/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedCave8/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CAVE9",
@@ -1779,7 +1956,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/UnusedCave9/border.bin",
- "blockdata_filepath": "data/layouts/UnusedCave9/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedCave9/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CAVE10",
@@ -1789,7 +1967,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/UnusedCave10/border.bin",
- "blockdata_filepath": "data/layouts/UnusedCave10/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedCave10/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CAVE11",
@@ -1799,7 +1978,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/UnusedCave11/border.bin",
- "blockdata_filepath": "data/layouts/UnusedCave11/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedCave11/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CAVE12",
@@ -1809,7 +1989,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/UnusedCave12/border.bin",
- "blockdata_filepath": "data/layouts/UnusedCave12/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedCave12/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CAVE13",
@@ -1819,7 +2000,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/UnusedCave13/border.bin",
- "blockdata_filepath": "data/layouts/UnusedCave13/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedCave13/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CAVE14",
@@ -1829,7 +2011,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/UnusedCave14/border.bin",
- "blockdata_filepath": "data/layouts/UnusedCave14/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedCave14/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_NEW_MAUVILLE_ENTRANCE",
@@ -1839,7 +2022,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/NewMauville_Entrance/border.bin",
- "blockdata_filepath": "data/layouts/NewMauville_Entrance/map.bin"
+ "blockdata_filepath": "data/layouts/NewMauville_Entrance/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_NEW_MAUVILLE_INSIDE",
@@ -1849,7 +2033,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_BikeShop",
"border_filepath": "data/layouts/NewMauville_Inside/border.bin",
- "blockdata_filepath": "data/layouts/NewMauville_Inside/map.bin"
+ "blockdata_filepath": "data/layouts/NewMauville_Inside/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ABANDONED_SHIP_DECK",
@@ -1859,7 +2044,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/AbandonedShip_Deck/border.bin",
- "blockdata_filepath": "data/layouts/AbandonedShip_Deck/map.bin"
+ "blockdata_filepath": "data/layouts/AbandonedShip_Deck/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ABANDONED_SHIP_CORRIDORS_1F",
@@ -1869,7 +2055,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_InsideShip",
"border_filepath": "data/layouts/AbandonedShip_Corridors_1F/border.bin",
- "blockdata_filepath": "data/layouts/AbandonedShip_Corridors_1F/map.bin"
+ "blockdata_filepath": "data/layouts/AbandonedShip_Corridors_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ABANDONED_SHIP_ROOMS_1F",
@@ -1879,7 +2066,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_InsideShip",
"border_filepath": "data/layouts/AbandonedShip_Rooms_1F/border.bin",
- "blockdata_filepath": "data/layouts/AbandonedShip_Rooms_1F/map.bin"
+ "blockdata_filepath": "data/layouts/AbandonedShip_Rooms_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ABANDONED_SHIP_CORRIDORS_B1F",
@@ -1889,7 +2077,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_InsideShip",
"border_filepath": "data/layouts/AbandonedShip_Corridors_B1F/border.bin",
- "blockdata_filepath": "data/layouts/AbandonedShip_Corridors_B1F/map.bin"
+ "blockdata_filepath": "data/layouts/AbandonedShip_Corridors_B1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ABANDONED_SHIP_ROOMS_B1F",
@@ -1899,7 +2088,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_InsideShip",
"border_filepath": "data/layouts/AbandonedShip_Rooms_B1F/border.bin",
- "blockdata_filepath": "data/layouts/AbandonedShip_Rooms_B1F/map.bin"
+ "blockdata_filepath": "data/layouts/AbandonedShip_Rooms_B1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ABANDONED_SHIP_ROOMS2_B1F",
@@ -1909,7 +2099,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_InsideShip",
"border_filepath": "data/layouts/AbandonedShip_Rooms2_B1F/border.bin",
- "blockdata_filepath": "data/layouts/AbandonedShip_Rooms2_B1F/map.bin"
+ "blockdata_filepath": "data/layouts/AbandonedShip_Rooms2_B1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ABANDONED_SHIP_UNDERWATER1",
@@ -1919,7 +2110,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_InsideShip",
"border_filepath": "data/layouts/AbandonedShip_Underwater1/border.bin",
- "blockdata_filepath": "data/layouts/AbandonedShip_Underwater1/map.bin"
+ "blockdata_filepath": "data/layouts/AbandonedShip_Underwater1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ABANDONED_SHIP_ROOM_B1F",
@@ -1929,7 +2121,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_InsideShip",
"border_filepath": "data/layouts/AbandonedShip_Room_B1F/border.bin",
- "blockdata_filepath": "data/layouts/AbandonedShip_Room_B1F/map.bin"
+ "blockdata_filepath": "data/layouts/AbandonedShip_Room_B1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ABANDONED_SHIP_ROOMS2_1F",
@@ -1939,7 +2132,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_InsideShip",
"border_filepath": "data/layouts/AbandonedShip_Rooms2_1F/border.bin",
- "blockdata_filepath": "data/layouts/AbandonedShip_Rooms2_1F/map.bin"
+ "blockdata_filepath": "data/layouts/AbandonedShip_Rooms2_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ABANDONED_SHIP_CAPTAINS_OFFICE",
@@ -1949,7 +2143,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/AbandonedShip_CaptainsOffice/border.bin",
- "blockdata_filepath": "data/layouts/AbandonedShip_CaptainsOffice/map.bin"
+ "blockdata_filepath": "data/layouts/AbandonedShip_CaptainsOffice/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ABANDONED_SHIP_UNDERWATER2",
@@ -1959,7 +2154,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_InsideShip",
"border_filepath": "data/layouts/AbandonedShip_Underwater2/border.bin",
- "blockdata_filepath": "data/layouts/AbandonedShip_Underwater2/map.bin"
+ "blockdata_filepath": "data/layouts/AbandonedShip_Underwater2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_RED_CAVE1",
@@ -1969,7 +2165,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseRedCave",
"border_filepath": "data/layouts/SecretBase_RedCave1/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_RedCave1/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_RedCave1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_BROWN_CAVE1",
@@ -1979,7 +2176,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseBrownCave",
"border_filepath": "data/layouts/SecretBase_BrownCave1/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_BrownCave1/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_BrownCave1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_BLUE_CAVE1",
@@ -1989,7 +2187,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseBlueCave",
"border_filepath": "data/layouts/SecretBase_BlueCave1/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_BlueCave1/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_BlueCave1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_YELLOW_CAVE1",
@@ -1999,7 +2198,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseYellowCave",
"border_filepath": "data/layouts/SecretBase_YellowCave1/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_YellowCave1/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_YellowCave1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_TREE1",
@@ -2009,7 +2209,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseTree",
"border_filepath": "data/layouts/SecretBase_Tree1/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_Tree1/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_Tree1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_SHRUB1",
@@ -2019,7 +2220,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseShrub",
"border_filepath": "data/layouts/SecretBase_Shrub1/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_Shrub1/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_Shrub1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_RED_CAVE2",
@@ -2029,7 +2231,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseRedCave",
"border_filepath": "data/layouts/SecretBase_RedCave2/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_RedCave2/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_RedCave2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_BROWN_CAVE2",
@@ -2039,7 +2242,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseBrownCave",
"border_filepath": "data/layouts/SecretBase_BrownCave2/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_BrownCave2/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_BrownCave2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_BLUE_CAVE2",
@@ -2049,7 +2253,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseBlueCave",
"border_filepath": "data/layouts/SecretBase_BlueCave2/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_BlueCave2/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_BlueCave2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_YELLOW_CAVE2",
@@ -2059,7 +2264,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseYellowCave",
"border_filepath": "data/layouts/SecretBase_YellowCave2/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_YellowCave2/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_YellowCave2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_TREE2",
@@ -2069,7 +2275,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseTree",
"border_filepath": "data/layouts/SecretBase_Tree2/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_Tree2/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_Tree2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_SHRUB2",
@@ -2079,7 +2286,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseShrub",
"border_filepath": "data/layouts/SecretBase_Shrub2/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_Shrub2/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_Shrub2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_RED_CAVE3",
@@ -2089,7 +2297,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseRedCave",
"border_filepath": "data/layouts/SecretBase_RedCave3/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_RedCave3/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_RedCave3/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_BROWN_CAVE3",
@@ -2099,7 +2308,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseBrownCave",
"border_filepath": "data/layouts/SecretBase_BrownCave3/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_BrownCave3/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_BrownCave3/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_BLUE_CAVE3",
@@ -2109,7 +2319,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseBlueCave",
"border_filepath": "data/layouts/SecretBase_BlueCave3/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_BlueCave3/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_BlueCave3/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_YELLOW_CAVE3",
@@ -2119,7 +2330,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseYellowCave",
"border_filepath": "data/layouts/SecretBase_YellowCave3/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_YellowCave3/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_YellowCave3/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_TREE3",
@@ -2129,7 +2341,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseTree",
"border_filepath": "data/layouts/SecretBase_Tree3/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_Tree3/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_Tree3/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_SHRUB3",
@@ -2139,7 +2352,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseShrub",
"border_filepath": "data/layouts/SecretBase_Shrub3/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_Shrub3/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_Shrub3/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_RED_CAVE4",
@@ -2149,7 +2363,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseRedCave",
"border_filepath": "data/layouts/SecretBase_RedCave4/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_RedCave4/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_RedCave4/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_BROWN_CAVE4",
@@ -2159,7 +2374,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseBrownCave",
"border_filepath": "data/layouts/SecretBase_BrownCave4/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_BrownCave4/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_BrownCave4/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_BLUE_CAVE4",
@@ -2169,7 +2385,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseBlueCave",
"border_filepath": "data/layouts/SecretBase_BlueCave4/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_BlueCave4/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_BlueCave4/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_YELLOW_CAVE4",
@@ -2179,7 +2396,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseYellowCave",
"border_filepath": "data/layouts/SecretBase_YellowCave4/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_YellowCave4/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_YellowCave4/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_TREE4",
@@ -2189,7 +2407,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseTree",
"border_filepath": "data/layouts/SecretBase_Tree4/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_Tree4/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_Tree4/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SECRET_BASE_SHRUB4",
@@ -2199,7 +2418,8 @@
"primary_tileset": "gTileset_SecretBase",
"secondary_tileset": "gTileset_SecretBaseShrub",
"border_filepath": "data/layouts/SecretBase_Shrub4/border.bin",
- "blockdata_filepath": "data/layouts/SecretBase_Shrub4/map.bin"
+ "blockdata_filepath": "data/layouts/SecretBase_Shrub4/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_COLOSSEUM_2P",
@@ -2209,7 +2429,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_CableClub",
"border_filepath": "data/layouts/BattleColosseum_2P/border.bin",
- "blockdata_filepath": "data/layouts/BattleColosseum_2P/map.bin"
+ "blockdata_filepath": "data/layouts/BattleColosseum_2P/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_TRADE_CENTER",
@@ -2219,7 +2440,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_CableClub",
"border_filepath": "data/layouts/TradeCenter/border.bin",
- "blockdata_filepath": "data/layouts/TradeCenter/map.bin"
+ "blockdata_filepath": "data/layouts/TradeCenter/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_RECORD_CORNER",
@@ -2229,7 +2451,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_CableClub",
"border_filepath": "data/layouts/RecordCorner/border.bin",
- "blockdata_filepath": "data/layouts/RecordCorner/map.bin"
+ "blockdata_filepath": "data/layouts/RecordCorner/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_COLOSSEUM_4P",
@@ -2239,7 +2462,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_CableClub",
"border_filepath": "data/layouts/BattleColosseum_4P/border.bin",
- "blockdata_filepath": "data/layouts/BattleColosseum_4P/map.bin"
+ "blockdata_filepath": "data/layouts/BattleColosseum_4P/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_CONTEST_HALL",
@@ -2249,7 +2473,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/ContestHall/border.bin",
- "blockdata_filepath": "data/layouts/ContestHall/map.bin"
+ "blockdata_filepath": "data/layouts/ContestHall/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CONTEST_HALL1",
@@ -2259,7 +2484,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/UnusedContestHall1/border.bin",
- "blockdata_filepath": "data/layouts/UnusedContestHall1/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedContestHall1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CONTEST_HALL2",
@@ -2269,7 +2495,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/UnusedContestHall2/border.bin",
- "blockdata_filepath": "data/layouts/UnusedContestHall2/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedContestHall2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CONTEST_HALL3",
@@ -2279,7 +2506,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/UnusedContestHall3/border.bin",
- "blockdata_filepath": "data/layouts/UnusedContestHall3/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedContestHall3/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CONTEST_HALL4",
@@ -2289,7 +2517,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/UnusedContestHall4/border.bin",
- "blockdata_filepath": "data/layouts/UnusedContestHall4/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedContestHall4/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CONTEST_HALL5",
@@ -2299,7 +2528,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/UnusedContestHall5/border.bin",
- "blockdata_filepath": "data/layouts/UnusedContestHall5/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedContestHall5/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_CONTEST_HALL6",
@@ -2309,7 +2539,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/UnusedContestHall6/border.bin",
- "blockdata_filepath": "data/layouts/UnusedContestHall6/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedContestHall6/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_CONTEST_HALL_BEAUTY",
@@ -2319,7 +2550,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/ContestHallBeauty/border.bin",
- "blockdata_filepath": "data/layouts/ContestHallBeauty/map.bin"
+ "blockdata_filepath": "data/layouts/ContestHallBeauty/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_CONTEST_HALL_TOUGH",
@@ -2329,7 +2561,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/ContestHallTough/border.bin",
- "blockdata_filepath": "data/layouts/ContestHallTough/map.bin"
+ "blockdata_filepath": "data/layouts/ContestHallTough/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_CONTEST_HALL_COOL",
@@ -2339,7 +2572,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/ContestHallCool/border.bin",
- "blockdata_filepath": "data/layouts/ContestHallCool/map.bin"
+ "blockdata_filepath": "data/layouts/ContestHallCool/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_CONTEST_HALL_SMART",
@@ -2349,7 +2583,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/ContestHallSmart/border.bin",
- "blockdata_filepath": "data/layouts/ContestHallSmart/map.bin"
+ "blockdata_filepath": "data/layouts/ContestHallSmart/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_CONTEST_HALL_CUTE",
@@ -2359,7 +2594,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Contest",
"border_filepath": "data/layouts/ContestHallCute/border.bin",
- "blockdata_filepath": "data/layouts/ContestHallCute/map.bin"
+ "blockdata_filepath": "data/layouts/ContestHallCute/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_INSIDE_OF_TRUCK",
@@ -2369,7 +2605,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_InsideOfTruck",
"border_filepath": "data/layouts/InsideOfTruck/border.bin",
- "blockdata_filepath": "data/layouts/InsideOfTruck/map.bin"
+ "blockdata_filepath": "data/layouts/InsideOfTruck/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SAFARI_ZONE_NORTHWEST",
@@ -2379,7 +2616,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lilycove",
"border_filepath": "data/layouts/SafariZone_Northwest/border.bin",
- "blockdata_filepath": "data/layouts/SafariZone_Northwest/map.bin"
+ "blockdata_filepath": "data/layouts/SafariZone_Northwest/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SAFARI_ZONE_NORTH",
@@ -2389,7 +2627,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lilycove",
"border_filepath": "data/layouts/SafariZone_North/border.bin",
- "blockdata_filepath": "data/layouts/SafariZone_North/map.bin"
+ "blockdata_filepath": "data/layouts/SafariZone_North/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SAFARI_ZONE_SOUTHWEST",
@@ -2399,7 +2638,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lilycove",
"border_filepath": "data/layouts/SafariZone_Southwest/border.bin",
- "blockdata_filepath": "data/layouts/SafariZone_Southwest/map.bin"
+ "blockdata_filepath": "data/layouts/SafariZone_Southwest/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SAFARI_ZONE_SOUTH",
@@ -2409,7 +2649,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lilycove",
"border_filepath": "data/layouts/SafariZone_South/border.bin",
- "blockdata_filepath": "data/layouts/SafariZone_South/map.bin"
+ "blockdata_filepath": "data/layouts/SafariZone_South/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNUSED_OUTDOOR_AREA",
@@ -2419,7 +2660,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "0",
"border_filepath": "data/layouts/UnusedOutdoorArea/border.bin",
- "blockdata_filepath": "data/layouts/UnusedOutdoorArea/map.bin"
+ "blockdata_filepath": "data/layouts/UnusedOutdoorArea/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE109_SEASHORE_HOUSE",
@@ -2429,7 +2671,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_SeashoreHouse",
"border_filepath": "data/layouts/Route109_SeashoreHouse/border.bin",
- "blockdata_filepath": "data/layouts/Route109_SeashoreHouse/map.bin"
+ "blockdata_filepath": "data/layouts/Route109_SeashoreHouse/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE110_TRICK_HOUSE_ENTRANCE",
@@ -2439,7 +2682,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/Route110_TrickHouseEntrance/border.bin",
- "blockdata_filepath": "data/layouts/Route110_TrickHouseEntrance/map.bin"
+ "blockdata_filepath": "data/layouts/Route110_TrickHouseEntrance/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE110_TRICK_HOUSE_END",
@@ -2449,7 +2693,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/Route110_TrickHouseEnd/border.bin",
- "blockdata_filepath": "data/layouts/Route110_TrickHouseEnd/map.bin"
+ "blockdata_filepath": "data/layouts/Route110_TrickHouseEnd/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE110_TRICK_HOUSE_CORRIDOR",
@@ -2459,7 +2704,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/Route110_TrickHouseCorridor/border.bin",
- "blockdata_filepath": "data/layouts/Route110_TrickHouseCorridor/map.bin"
+ "blockdata_filepath": "data/layouts/Route110_TrickHouseCorridor/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE1",
@@ -2469,7 +2715,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_TrickHousePuzzle",
"border_filepath": "data/layouts/Route110_TrickHousePuzzle1/border.bin",
- "blockdata_filepath": "data/layouts/Route110_TrickHousePuzzle1/map.bin"
+ "blockdata_filepath": "data/layouts/Route110_TrickHousePuzzle1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE2",
@@ -2479,7 +2726,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_TrickHousePuzzle",
"border_filepath": "data/layouts/Route110_TrickHousePuzzle2/border.bin",
- "blockdata_filepath": "data/layouts/Route110_TrickHousePuzzle2/map.bin"
+ "blockdata_filepath": "data/layouts/Route110_TrickHousePuzzle2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE3",
@@ -2489,7 +2737,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_TrickHousePuzzle",
"border_filepath": "data/layouts/Route110_TrickHousePuzzle3/border.bin",
- "blockdata_filepath": "data/layouts/Route110_TrickHousePuzzle3/map.bin"
+ "blockdata_filepath": "data/layouts/Route110_TrickHousePuzzle3/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE4",
@@ -2499,7 +2748,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_TrickHousePuzzle",
"border_filepath": "data/layouts/Route110_TrickHousePuzzle4/border.bin",
- "blockdata_filepath": "data/layouts/Route110_TrickHousePuzzle4/map.bin"
+ "blockdata_filepath": "data/layouts/Route110_TrickHousePuzzle4/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE5",
@@ -2509,7 +2759,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_TrickHousePuzzle",
"border_filepath": "data/layouts/Route110_TrickHousePuzzle5/border.bin",
- "blockdata_filepath": "data/layouts/Route110_TrickHousePuzzle5/map.bin"
+ "blockdata_filepath": "data/layouts/Route110_TrickHousePuzzle5/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE6",
@@ -2519,7 +2770,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_TrickHousePuzzle",
"border_filepath": "data/layouts/Route110_TrickHousePuzzle6/border.bin",
- "blockdata_filepath": "data/layouts/Route110_TrickHousePuzzle6/map.bin"
+ "blockdata_filepath": "data/layouts/Route110_TrickHousePuzzle6/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE7",
@@ -2529,7 +2781,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_TrickHousePuzzle",
"border_filepath": "data/layouts/Route110_TrickHousePuzzle7/border.bin",
- "blockdata_filepath": "data/layouts/Route110_TrickHousePuzzle7/map.bin"
+ "blockdata_filepath": "data/layouts/Route110_TrickHousePuzzle7/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE8",
@@ -2539,7 +2792,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_TrickHousePuzzle",
"border_filepath": "data/layouts/Route110_TrickHousePuzzle8/border.bin",
- "blockdata_filepath": "data/layouts/Route110_TrickHousePuzzle8/map.bin"
+ "blockdata_filepath": "data/layouts/Route110_TrickHousePuzzle8/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_FORTREE_CITY_DECORATION_SHOP",
@@ -2549,7 +2803,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/FortreeCity_DecorationShop/border.bin",
- "blockdata_filepath": "data/layouts/FortreeCity_DecorationShop/map.bin"
+ "blockdata_filepath": "data/layouts/FortreeCity_DecorationShop/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE110_SEASIDE_CYCLING_ROAD_ENTRANCE",
@@ -2559,7 +2814,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Shop",
"border_filepath": "data/layouts/Route110_SeasideCyclingRoadEntrance/border.bin",
- "blockdata_filepath": "data/layouts/Route110_SeasideCyclingRoadEntrance/map.bin"
+ "blockdata_filepath": "data/layouts/Route110_SeasideCyclingRoadEntrance/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_1F",
@@ -2569,7 +2825,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Shop",
"border_filepath": "data/layouts/LilycoveCity_DepartmentStore_1F/border.bin",
- "blockdata_filepath": "data/layouts/LilycoveCity_DepartmentStore_1F/map.bin"
+ "blockdata_filepath": "data/layouts/LilycoveCity_DepartmentStore_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_2F",
@@ -2579,7 +2836,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Shop",
"border_filepath": "data/layouts/LilycoveCity_DepartmentStore_2F/border.bin",
- "blockdata_filepath": "data/layouts/LilycoveCity_DepartmentStore_2F/map.bin"
+ "blockdata_filepath": "data/layouts/LilycoveCity_DepartmentStore_2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_3F",
@@ -2589,7 +2847,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Shop",
"border_filepath": "data/layouts/LilycoveCity_DepartmentStore_3F/border.bin",
- "blockdata_filepath": "data/layouts/LilycoveCity_DepartmentStore_3F/map.bin"
+ "blockdata_filepath": "data/layouts/LilycoveCity_DepartmentStore_3F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_4F",
@@ -2599,7 +2858,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Shop",
"border_filepath": "data/layouts/LilycoveCity_DepartmentStore_4F/border.bin",
- "blockdata_filepath": "data/layouts/LilycoveCity_DepartmentStore_4F/map.bin"
+ "blockdata_filepath": "data/layouts/LilycoveCity_DepartmentStore_4F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_5F",
@@ -2609,7 +2869,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Shop",
"border_filepath": "data/layouts/LilycoveCity_DepartmentStore_5F/border.bin",
- "blockdata_filepath": "data/layouts/LilycoveCity_DepartmentStore_5F/map.bin"
+ "blockdata_filepath": "data/layouts/LilycoveCity_DepartmentStore_5F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP",
@@ -2619,7 +2880,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Shop",
"border_filepath": "data/layouts/LilycoveCity_DepartmentStoreRooftop/border.bin",
- "blockdata_filepath": "data/layouts/LilycoveCity_DepartmentStoreRooftop/map.bin"
+ "blockdata_filepath": "data/layouts/LilycoveCity_DepartmentStoreRooftop/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE130",
@@ -2629,7 +2891,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/Route130/border.bin",
- "blockdata_filepath": "data/layouts/Route130/map.bin"
+ "blockdata_filepath": "data/layouts/Route130/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY",
@@ -2639,7 +2902,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleFrontier",
"border_filepath": "data/layouts/BattleFrontier_BattleTowerLobby/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattleTowerLobby/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattleTowerLobby/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_OUTSIDE_WEST",
@@ -2649,7 +2913,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_BattleFrontierOutsideWest",
"border_filepath": "data/layouts/BattleFrontier_OutsideWest/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_OutsideWest/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_OutsideWest/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_ELEVATOR",
@@ -2659,7 +2924,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleFrontier",
"border_filepath": "data/layouts/BattleElevator/border.bin",
- "blockdata_filepath": "data/layouts/BattleElevator/map.bin"
+ "blockdata_filepath": "data/layouts/BattleElevator/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR",
@@ -2669,7 +2935,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleFrontier",
"border_filepath": "data/layouts/BattleFrontier_BattleTowerCorridor/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattleTowerCorridor/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattleTowerCorridor/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM",
@@ -2679,7 +2946,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleFrontier",
"border_filepath": "data/layouts/BattleFrontier_BattleTowerBattleRoom/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattleTowerBattleRoom/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattleTowerBattleRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_RUSTBORO_CITY_DEVON_CORP_3F",
@@ -2689,7 +2957,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/RustboroCity_DevonCorp_3F/border.bin",
- "blockdata_filepath": "data/layouts/RustboroCity_DevonCorp_3F/map.bin"
+ "blockdata_filepath": "data/layouts/RustboroCity_DevonCorp_3F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F",
@@ -2699,7 +2968,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_PokemonCenter",
"border_filepath": "data/layouts/EverGrandeCity_PokemonLeague_1F/border.bin",
- "blockdata_filepath": "data/layouts/EverGrandeCity_PokemonLeague_1F/map.bin"
+ "blockdata_filepath": "data/layouts/EverGrandeCity_PokemonLeague_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE119_WEATHER_INSTITUTE_1F",
@@ -2709,7 +2979,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Lab",
"border_filepath": "data/layouts/Route119_WeatherInstitute_1F/border.bin",
- "blockdata_filepath": "data/layouts/Route119_WeatherInstitute_1F/map.bin"
+ "blockdata_filepath": "data/layouts/Route119_WeatherInstitute_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE119_WEATHER_INSTITUTE_2F",
@@ -2719,7 +2990,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Lab",
"border_filepath": "data/layouts/Route119_WeatherInstitute_2F/border.bin",
- "blockdata_filepath": "data/layouts/Route119_WeatherInstitute_2F/map.bin"
+ "blockdata_filepath": "data/layouts/Route119_WeatherInstitute_2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR",
@@ -2729,7 +3001,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleFrontier",
"border_filepath": "data/layouts/LilycoveCity_DepartmentStoreElevator/border.bin",
- "blockdata_filepath": "data/layouts/LilycoveCity_DepartmentStoreElevator/map.bin"
+ "blockdata_filepath": "data/layouts/LilycoveCity_DepartmentStoreElevator/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNDERWATER_ROUTE124",
@@ -2739,7 +3012,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Underwater",
"border_filepath": "data/layouts/Underwater_Route124/border.bin",
- "blockdata_filepath": "data/layouts/Underwater_Route124/map.bin"
+ "blockdata_filepath": "data/layouts/Underwater_Route124/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MOSSDEEP_CITY_SPACE_CENTER_1F",
@@ -2749,7 +3023,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/MossdeepCity_SpaceCenter_1F/border.bin",
- "blockdata_filepath": "data/layouts/MossdeepCity_SpaceCenter_1F/map.bin"
+ "blockdata_filepath": "data/layouts/MossdeepCity_SpaceCenter_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MOSSDEEP_CITY_SPACE_CENTER_2F",
@@ -2759,7 +3034,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/MossdeepCity_SpaceCenter_2F/border.bin",
- "blockdata_filepath": "data/layouts/MossdeepCity_SpaceCenter_2F/map.bin"
+ "blockdata_filepath": "data/layouts/MossdeepCity_SpaceCenter_2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SS_TIDAL_CORRIDOR",
@@ -2769,7 +3045,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_InsideShip",
"border_filepath": "data/layouts/SSTidalCorridor/border.bin",
- "blockdata_filepath": "data/layouts/SSTidalCorridor/map.bin"
+ "blockdata_filepath": "data/layouts/SSTidalCorridor/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SS_TIDAL_LOWER_DECK",
@@ -2779,7 +3056,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_InsideShip",
"border_filepath": "data/layouts/SSTidalLowerDeck/border.bin",
- "blockdata_filepath": "data/layouts/SSTidalLowerDeck/map.bin"
+ "blockdata_filepath": "data/layouts/SSTidalLowerDeck/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SS_TIDAL_ROOMS",
@@ -2789,7 +3067,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_InsideShip",
"border_filepath": "data/layouts/SSTidalRooms/border.bin",
- "blockdata_filepath": "data/layouts/SSTidalRooms/map.bin"
+ "blockdata_filepath": "data/layouts/SSTidalRooms/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ISLAND_CAVE",
@@ -2799,7 +3078,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/IslandCave/border.bin",
- "blockdata_filepath": "data/layouts/IslandCave/map.bin"
+ "blockdata_filepath": "data/layouts/IslandCave/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ANCIENT_TOMB",
@@ -2809,7 +3089,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/AncientTomb/border.bin",
- "blockdata_filepath": "data/layouts/AncientTomb/map.bin"
+ "blockdata_filepath": "data/layouts/AncientTomb/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNDERWATER_ROUTE134",
@@ -2819,7 +3100,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Underwater",
"border_filepath": "data/layouts/Underwater_Route134/border.bin",
- "blockdata_filepath": "data/layouts/Underwater_Route134/map.bin"
+ "blockdata_filepath": "data/layouts/Underwater_Route134/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNDERWATER_SEALED_CHAMBER",
@@ -2829,7 +3111,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Underwater",
"border_filepath": "data/layouts/Underwater_SealedChamber/border.bin",
- "blockdata_filepath": "data/layouts/Underwater_SealedChamber/map.bin"
+ "blockdata_filepath": "data/layouts/Underwater_SealedChamber/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SEALED_CHAMBER_OUTER_ROOM",
@@ -2839,7 +3122,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/SealedChamber_OuterRoom/border.bin",
- "blockdata_filepath": "data/layouts/SealedChamber_OuterRoom/map.bin"
+ "blockdata_filepath": "data/layouts/SealedChamber_OuterRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_VICTORY_ROAD_B1F",
@@ -2849,7 +3133,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/VictoryRoad_B1F/border.bin",
- "blockdata_filepath": "data/layouts/VictoryRoad_B1F/map.bin"
+ "blockdata_filepath": "data/layouts/VictoryRoad_B1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_VICTORY_ROAD_B2F",
@@ -2859,7 +3144,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/VictoryRoad_B2F/border.bin",
- "blockdata_filepath": "data/layouts/VictoryRoad_B2F/map.bin"
+ "blockdata_filepath": "data/layouts/VictoryRoad_B2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE104_PROTOTYPE",
@@ -2869,7 +3155,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Rustboro",
"border_filepath": "data/layouts/Route104_Prototype/border.bin",
- "blockdata_filepath": "data/layouts/Route104_Prototype/map.bin"
+ "blockdata_filepath": "data/layouts/Route104_Prototype/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_GRANITE_CAVE_STEVENS_ROOM",
@@ -2879,7 +3166,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/GraniteCave_StevensRoom/border.bin",
- "blockdata_filepath": "data/layouts/GraniteCave_StevensRoom/map.bin"
+ "blockdata_filepath": "data/layouts/GraniteCave_StevensRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS",
@@ -2889,7 +3177,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_InsideShip",
"border_filepath": "data/layouts/AbandonedShip_HiddenFloorCorridors/border.bin",
- "blockdata_filepath": "data/layouts/AbandonedShip_HiddenFloorCorridors/map.bin"
+ "blockdata_filepath": "data/layouts/AbandonedShip_HiddenFloorCorridors/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SOUTHERN_ISLAND_EXTERIOR",
@@ -2899,7 +3188,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Rustboro",
"border_filepath": "data/layouts/SouthernIsland_Exterior/border.bin",
- "blockdata_filepath": "data/layouts/SouthernIsland_Exterior/map.bin"
+ "blockdata_filepath": "data/layouts/SouthernIsland_Exterior/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SOUTHERN_ISLAND_INTERIOR",
@@ -2909,7 +3199,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Rustboro",
"border_filepath": "data/layouts/SouthernIsland_Interior/border.bin",
- "blockdata_filepath": "data/layouts/SouthernIsland_Interior/map.bin"
+ "blockdata_filepath": "data/layouts/SouthernIsland_Interior/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_JAGGED_PASS",
@@ -2919,7 +3210,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lavaridge",
"border_filepath": "data/layouts/JaggedPass/border.bin",
- "blockdata_filepath": "data/layouts/JaggedPass/map.bin"
+ "blockdata_filepath": "data/layouts/JaggedPass/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_FIERY_PATH",
@@ -2929,7 +3221,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lavaridge",
"border_filepath": "data/layouts/FieryPath/border.bin",
- "blockdata_filepath": "data/layouts/FieryPath/map.bin"
+ "blockdata_filepath": "data/layouts/FieryPath/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_RUSTBORO_CITY_FLAT2_1F",
@@ -2939,7 +3232,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/RustboroCity_Flat2_1F/border.bin",
- "blockdata_filepath": "data/layouts/RustboroCity_Flat2_1F/map.bin"
+ "blockdata_filepath": "data/layouts/RustboroCity_Flat2_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_RUSTBORO_CITY_FLAT2_2F",
@@ -2949,7 +3243,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/RustboroCity_Flat2_2F/border.bin",
- "blockdata_filepath": "data/layouts/RustboroCity_Flat2_2F/map.bin"
+ "blockdata_filepath": "data/layouts/RustboroCity_Flat2_2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_RUSTBORO_CITY_FLAT2_3F",
@@ -2959,7 +3254,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/RustboroCity_Flat2_3F/border.bin",
- "blockdata_filepath": "data/layouts/RustboroCity_Flat2_3F/map.bin"
+ "blockdata_filepath": "data/layouts/RustboroCity_Flat2_3F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SOOTOPOLIS_CITY_LOTAD_AND_SEEDOT_HOUSE",
@@ -2969,7 +3265,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/SootopolisCity_LotadAndSeedotHouse/border.bin",
- "blockdata_filepath": "data/layouts/SootopolisCity_LotadAndSeedotHouse/map.bin"
+ "blockdata_filepath": "data/layouts/SootopolisCity_LotadAndSeedotHouse/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_EVER_GRANDE_CITY_HALL_OF_FAME",
@@ -2979,7 +3276,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_CableClub",
"border_filepath": "data/layouts/EverGrandeCity_HallOfFame/border.bin",
- "blockdata_filepath": "data/layouts/EverGrandeCity_HallOfFame/map.bin"
+ "blockdata_filepath": "data/layouts/EverGrandeCity_HallOfFame/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LILYCOVE_CITY_COVE_LILY_MOTEL_1F",
@@ -2989,7 +3287,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/LilycoveCity_CoveLilyMotel_1F/border.bin",
- "blockdata_filepath": "data/layouts/LilycoveCity_CoveLilyMotel_1F/map.bin"
+ "blockdata_filepath": "data/layouts/LilycoveCity_CoveLilyMotel_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LILYCOVE_CITY_COVE_LILY_MOTEL_2F",
@@ -2999,7 +3298,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/LilycoveCity_CoveLilyMotel_2F/border.bin",
- "blockdata_filepath": "data/layouts/LilycoveCity_CoveLilyMotel_2F/map.bin"
+ "blockdata_filepath": "data/layouts/LilycoveCity_CoveLilyMotel_2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE",
@@ -3009,7 +3309,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/Route124_DivingTreasureHuntersHouse/border.bin",
- "blockdata_filepath": "data/layouts/Route124_DivingTreasureHuntersHouse/map.bin"
+ "blockdata_filepath": "data/layouts/Route124_DivingTreasureHuntersHouse/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MT_PYRE_EXTERIOR",
@@ -3019,7 +3320,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/MtPyre_Exterior/border.bin",
- "blockdata_filepath": "data/layouts/MtPyre_Exterior/map.bin"
+ "blockdata_filepath": "data/layouts/MtPyre_Exterior/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MT_PYRE_SUMMIT",
@@ -3029,7 +3331,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/MtPyre_Summit/border.bin",
- "blockdata_filepath": "data/layouts/MtPyre_Summit/map.bin"
+ "blockdata_filepath": "data/layouts/MtPyre_Summit/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SEALED_CHAMBER_INNER_ROOM",
@@ -3039,7 +3342,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/SealedChamber_InnerRoom/border.bin",
- "blockdata_filepath": "data/layouts/SealedChamber_InnerRoom/map.bin"
+ "blockdata_filepath": "data/layouts/SealedChamber_InnerRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MOSSDEEP_CITY_GAME_CORNER_1F",
@@ -3049,7 +3353,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_MossdeepGameCorner",
"border_filepath": "data/layouts/MossdeepCity_GameCorner_1F/border.bin",
- "blockdata_filepath": "data/layouts/MossdeepCity_GameCorner_1F/map.bin"
+ "blockdata_filepath": "data/layouts/MossdeepCity_GameCorner_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MOSSDEEP_CITY_GAME_CORNER_B1F",
@@ -3059,7 +3364,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/MossdeepCity_GameCorner_B1F/border.bin",
- "blockdata_filepath": "data/layouts/MossdeepCity_GameCorner_B1F/map.bin"
+ "blockdata_filepath": "data/layouts/MossdeepCity_GameCorner_B1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SOOTOPOLIS_CITY_HOUSE1",
@@ -3069,7 +3375,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/SootopolisCity_House1/border.bin",
- "blockdata_filepath": "data/layouts/SootopolisCity_House1/map.bin"
+ "blockdata_filepath": "data/layouts/SootopolisCity_House1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SOOTOPOLIS_CITY_HOUSE2",
@@ -3079,7 +3386,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/SootopolisCity_House2/border.bin",
- "blockdata_filepath": "data/layouts/SootopolisCity_House2/map.bin"
+ "blockdata_filepath": "data/layouts/SootopolisCity_House2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SOOTOPOLIS_CITY_HOUSE3",
@@ -3089,7 +3397,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/SootopolisCity_House3/border.bin",
- "blockdata_filepath": "data/layouts/SootopolisCity_House3/map.bin"
+ "blockdata_filepath": "data/layouts/SootopolisCity_House3/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS",
@@ -3099,7 +3408,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_InsideShip",
"border_filepath": "data/layouts/AbandonedShip_HiddenFloorRooms/border.bin",
- "blockdata_filepath": "data/layouts/AbandonedShip_HiddenFloorRooms/map.bin"
+ "blockdata_filepath": "data/layouts/AbandonedShip_HiddenFloorRooms/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SCORCHED_SLAB",
@@ -3109,7 +3419,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/ScorchedSlab/border.bin",
- "blockdata_filepath": "data/layouts/ScorchedSlab/map.bin"
+ "blockdata_filepath": "data/layouts/ScorchedSlab/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_CAVE_OF_ORIGIN_UNUSED_B4F_LAVA",
@@ -3119,7 +3430,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/CaveOfOrigin_Unused_B4F_Lava/border.bin",
- "blockdata_filepath": "data/layouts/CaveOfOrigin_Unused_B4F_Lava/map.bin"
+ "blockdata_filepath": "data/layouts/CaveOfOrigin_Unused_B4F_Lava/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_RUSTBORO_CITY_FLAT1_1F",
@@ -3129,7 +3441,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/RustboroCity_Flat1_1F/border.bin",
- "blockdata_filepath": "data/layouts/RustboroCity_Flat1_1F/map.bin"
+ "blockdata_filepath": "data/layouts/RustboroCity_Flat1_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_RUSTBORO_CITY_FLAT1_2F",
@@ -3139,7 +3452,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/RustboroCity_Flat1_2F/border.bin",
- "blockdata_filepath": "data/layouts/RustboroCity_Flat1_2F/map.bin"
+ "blockdata_filepath": "data/layouts/RustboroCity_Flat1_2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_EVER_GRANDE_CITY_HALL4",
@@ -3149,7 +3463,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_EliteFour",
"border_filepath": "data/layouts/EverGrandeCity_Hall4/border.bin",
- "blockdata_filepath": "data/layouts/EverGrandeCity_Hall4/map.bin"
+ "blockdata_filepath": "data/layouts/EverGrandeCity_Hall4/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_AQUA_HIDEOUT_UNUSED_RUBY_MAP1",
@@ -3159,7 +3474,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/AquaHideout_UnusedRubyMap1/border.bin",
- "blockdata_filepath": "data/layouts/AquaHideout_UnusedRubyMap1/map.bin"
+ "blockdata_filepath": "data/layouts/AquaHideout_UnusedRubyMap1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_AQUA_HIDEOUT_UNUSED_RUBY_MAP2",
@@ -3169,7 +3485,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/AquaHideout_UnusedRubyMap2/border.bin",
- "blockdata_filepath": "data/layouts/AquaHideout_UnusedRubyMap2/map.bin"
+ "blockdata_filepath": "data/layouts/AquaHideout_UnusedRubyMap2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_AQUA_HIDEOUT_UNUSED_RUBY_MAP3",
@@ -3179,7 +3496,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Facility",
"border_filepath": "data/layouts/AquaHideout_UnusedRubyMap3/border.bin",
- "blockdata_filepath": "data/layouts/AquaHideout_UnusedRubyMap3/map.bin"
+ "blockdata_filepath": "data/layouts/AquaHideout_UnusedRubyMap3/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE131_SKY_PILLAR",
@@ -3189,7 +3507,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/Route131_SkyPillar/border.bin",
- "blockdata_filepath": "data/layouts/Route131_SkyPillar/map.bin"
+ "blockdata_filepath": "data/layouts/Route131_SkyPillar/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SKY_PILLAR_ENTRANCE",
@@ -3199,7 +3518,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/SkyPillar_Entrance/border.bin",
- "blockdata_filepath": "data/layouts/SkyPillar_Entrance/map.bin"
+ "blockdata_filepath": "data/layouts/SkyPillar_Entrance/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SKY_PILLAR_OUTSIDE",
@@ -3209,7 +3529,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/SkyPillar_Outside/border.bin",
- "blockdata_filepath": "data/layouts/SkyPillar_Outside/map.bin"
+ "blockdata_filepath": "data/layouts/SkyPillar_Outside/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SKY_PILLAR_1F",
@@ -3219,7 +3540,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/SkyPillar_1F/border.bin",
- "blockdata_filepath": "data/layouts/SkyPillar_1F/map.bin"
+ "blockdata_filepath": "data/layouts/SkyPillar_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SKY_PILLAR_2F",
@@ -3229,7 +3551,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/SkyPillar_2F/border.bin",
- "blockdata_filepath": "data/layouts/SkyPillar_2F/map.bin"
+ "blockdata_filepath": "data/layouts/SkyPillar_2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SKY_PILLAR_3F",
@@ -3239,7 +3562,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/SkyPillar_3F/border.bin",
- "blockdata_filepath": "data/layouts/SkyPillar_3F/map.bin"
+ "blockdata_filepath": "data/layouts/SkyPillar_3F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SKY_PILLAR_4F",
@@ -3249,7 +3573,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/SkyPillar_4F/border.bin",
- "blockdata_filepath": "data/layouts/SkyPillar_4F/map.bin"
+ "blockdata_filepath": "data/layouts/SkyPillar_4F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SEAFLOOR_CAVERN_ROOM9_LAVA",
@@ -3259,7 +3584,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/SeafloorCavern_Room9_Lava/border.bin",
- "blockdata_filepath": "data/layouts/SeafloorCavern_Room9_Lava/map.bin"
+ "blockdata_filepath": "data/layouts/SeafloorCavern_Room9_Lava/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MOSSDEEP_CITY_STEVENS_HOUSE",
@@ -3269,7 +3595,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/MossdeepCity_StevensHouse/border.bin",
- "blockdata_filepath": "data/layouts/MossdeepCity_StevensHouse/map.bin"
+ "blockdata_filepath": "data/layouts/MossdeepCity_StevensHouse/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SHOAL_CAVE_LOW_TIDE_ICE_ROOM",
@@ -3279,7 +3606,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/ShoalCave_LowTideIceRoom/border.bin",
- "blockdata_filepath": "data/layouts/ShoalCave_LowTideIceRoom/map.bin"
+ "blockdata_filepath": "data/layouts/ShoalCave_LowTideIceRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SAFARI_ZONE_REST_HOUSE",
@@ -3289,7 +3617,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_GenericBuilding",
"border_filepath": "data/layouts/SafariZone_RestHouse/border.bin",
- "blockdata_filepath": "data/layouts/SafariZone_RestHouse/map.bin"
+ "blockdata_filepath": "data/layouts/SafariZone_RestHouse/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SKY_PILLAR_5F",
@@ -3299,7 +3628,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/SkyPillar_5F/border.bin",
- "blockdata_filepath": "data/layouts/SkyPillar_5F/map.bin"
+ "blockdata_filepath": "data/layouts/SkyPillar_5F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SKY_PILLAR_TOP",
@@ -3309,7 +3639,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/SkyPillar_Top/border.bin",
- "blockdata_filepath": "data/layouts/SkyPillar_Top/map.bin"
+ "blockdata_filepath": "data/layouts/SkyPillar_Top/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_DOME_LOBBY",
@@ -3319,7 +3650,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleDome",
"border_filepath": "data/layouts/BattleFrontier_BattleDomeLobby/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattleDomeLobby/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattleDomeLobby/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR",
@@ -3329,7 +3661,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleDome",
"border_filepath": "data/layouts/BattleFrontier_BattleDomeCorridor/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattleDomeCorridor/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattleDomeCorridor/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM",
@@ -3339,7 +3672,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleDome",
"border_filepath": "data/layouts/BattleFrontier_BattleDomePreBattleRoom/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattleDomePreBattleRoom/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattleDomePreBattleRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM",
@@ -3349,7 +3683,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleDome",
"border_filepath": "data/layouts/BattleFrontier_BattleDomeBattleRoom/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattleDomeBattleRoom/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattleDomeBattleRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MAGMA_HIDEOUT_1F",
@@ -3359,7 +3694,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lavaridge",
"border_filepath": "data/layouts/MagmaHideout_1F/border.bin",
- "blockdata_filepath": "data/layouts/MagmaHideout_1F/map.bin"
+ "blockdata_filepath": "data/layouts/MagmaHideout_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MAGMA_HIDEOUT_2F_1R",
@@ -3369,7 +3705,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lavaridge",
"border_filepath": "data/layouts/MagmaHideout_2F_1R/border.bin",
- "blockdata_filepath": "data/layouts/MagmaHideout_2F_1R/map.bin"
+ "blockdata_filepath": "data/layouts/MagmaHideout_2F_1R/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MAGMA_HIDEOUT_2F_2R",
@@ -3379,7 +3716,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lavaridge",
"border_filepath": "data/layouts/MagmaHideout_2F_2R/border.bin",
- "blockdata_filepath": "data/layouts/MagmaHideout_2F_2R/map.bin"
+ "blockdata_filepath": "data/layouts/MagmaHideout_2F_2R/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MAGMA_HIDEOUT_3F_1R",
@@ -3389,7 +3727,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lavaridge",
"border_filepath": "data/layouts/MagmaHideout_3F_1R/border.bin",
- "blockdata_filepath": "data/layouts/MagmaHideout_3F_1R/map.bin"
+ "blockdata_filepath": "data/layouts/MagmaHideout_3F_1R/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MAGMA_HIDEOUT_3F_2R",
@@ -3399,7 +3738,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lavaridge",
"border_filepath": "data/layouts/MagmaHideout_3F_2R/border.bin",
- "blockdata_filepath": "data/layouts/MagmaHideout_3F_2R/map.bin"
+ "blockdata_filepath": "data/layouts/MagmaHideout_3F_2R/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MAGMA_HIDEOUT_4F",
@@ -3409,7 +3749,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lavaridge",
"border_filepath": "data/layouts/MagmaHideout_4F/border.bin",
- "blockdata_filepath": "data/layouts/MagmaHideout_4F/map.bin"
+ "blockdata_filepath": "data/layouts/MagmaHideout_4F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_PALACE_LOBBY",
@@ -3419,7 +3760,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePalace",
"border_filepath": "data/layouts/BattleFrontier_BattlePalaceLobby/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattlePalaceLobby/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattlePalaceLobby/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_PALACE_CORRIDOR",
@@ -3429,7 +3771,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_BattlePalace",
"border_filepath": "data/layouts/BattleFrontier_BattlePalaceCorridor/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattlePalaceCorridor/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattlePalaceCorridor/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM",
@@ -3439,7 +3782,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_BattlePalace",
"border_filepath": "data/layouts/BattleFrontier_BattlePalaceBattleRoom/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattlePalaceBattleRoom/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattlePalaceBattleRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_OUTSIDE_EAST",
@@ -3449,7 +3793,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_BattleFrontierOutsideEast",
"border_filepath": "data/layouts/BattleFrontier_OutsideEast/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_OutsideEast/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_OutsideEast/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY",
@@ -3459,7 +3804,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleFactory",
"border_filepath": "data/layouts/BattleFrontier_BattleFactoryLobby/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattleFactoryLobby/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattleFactoryLobby/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM",
@@ -3469,7 +3815,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleFactory",
"border_filepath": "data/layouts/BattleFrontier_BattleFactoryPreBattleRoom/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattleFactoryPreBattleRoom/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattleFactoryPreBattleRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM",
@@ -3479,7 +3826,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleFactory",
"border_filepath": "data/layouts/BattleFrontier_BattleFactoryBattleRoom/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattleFactoryBattleRoom/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattleFactoryBattleRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY",
@@ -3489,7 +3837,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePike",
"border_filepath": "data/layouts/BattleFrontier_BattlePikeLobby/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattlePikeLobby/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattlePikeLobby/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR",
@@ -3499,7 +3848,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePike",
"border_filepath": "data/layouts/BattleFrontier_BattlePikeCorridor/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattlePikeCorridor/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattlePikeCorridor/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM",
@@ -3509,7 +3859,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePike",
"border_filepath": "data/layouts/BattleFrontier_BattlePikeThreePathRoom/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattlePikeThreePathRoom/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattlePikeThreePathRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL",
@@ -3519,7 +3870,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePike",
"border_filepath": "data/layouts/BattleFrontier_BattlePikeRoomNormal/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattlePikeRoomNormal/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattlePikeRoomNormal/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_FINAL",
@@ -3529,7 +3881,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePike",
"border_filepath": "data/layouts/BattleFrontier_BattlePikeRoomFinal/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattlePikeRoomFinal/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattlePikeRoomFinal/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY",
@@ -3539,7 +3892,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleArena",
"border_filepath": "data/layouts/BattleFrontier_BattleArenaLobby/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattleArenaLobby/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattleArenaLobby/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR",
@@ -3549,7 +3903,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleArena",
"border_filepath": "data/layouts/BattleFrontier_BattleArenaCorridor/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattleArenaCorridor/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattleArenaCorridor/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM",
@@ -3559,7 +3914,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleArena",
"border_filepath": "data/layouts/BattleFrontier_BattleArenaBattleRoom/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattleArenaBattleRoom/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattleArenaBattleRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SOOTOPOLIS_CITY_LEGENDS_BATTLE",
@@ -3569,7 +3925,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Sootopolis",
"border_filepath": "data/layouts/SootopolisCity_LegendsBattle/border.bin",
- "blockdata_filepath": "data/layouts/SootopolisCity_LegendsBattle/map.bin"
+ "blockdata_filepath": "data/layouts/SootopolisCity_LegendsBattle/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS",
@@ -3579,7 +3936,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePike",
"border_filepath": "data/layouts/BattleFrontier_BattlePikeRoomWildMons/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattlePikeRoomWildMons/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattlePikeRoomWildMons/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_UNUSED",
@@ -3589,7 +3947,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePike",
"border_filepath": "data/layouts/BattleFrontier_BattlePikeRoomUnused/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattlePikeRoomUnused/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattlePikeRoomUnused/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY",
@@ -3599,7 +3958,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattleFrontier_BattlePyramidLobby/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattlePyramidLobby/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattlePyramidLobby/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR",
@@ -3609,7 +3969,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattleFrontier_BattlePyramidFloor/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattlePyramidFloor/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattlePyramidFloor/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_PYRAMID_SQUARE01",
@@ -3619,7 +3980,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattlePyramidSquare01/border.bin",
- "blockdata_filepath": "data/layouts/BattlePyramidSquare01/map.bin"
+ "blockdata_filepath": "data/layouts/BattlePyramidSquare01/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_PYRAMID_SQUARE02",
@@ -3629,7 +3991,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattlePyramidSquare02/border.bin",
- "blockdata_filepath": "data/layouts/BattlePyramidSquare02/map.bin"
+ "blockdata_filepath": "data/layouts/BattlePyramidSquare02/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_PYRAMID_SQUARE03",
@@ -3639,7 +4002,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattlePyramidSquare03/border.bin",
- "blockdata_filepath": "data/layouts/BattlePyramidSquare03/map.bin"
+ "blockdata_filepath": "data/layouts/BattlePyramidSquare03/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_PYRAMID_SQUARE04",
@@ -3649,7 +4013,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattlePyramidSquare04/border.bin",
- "blockdata_filepath": "data/layouts/BattlePyramidSquare04/map.bin"
+ "blockdata_filepath": "data/layouts/BattlePyramidSquare04/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_PYRAMID_SQUARE05",
@@ -3659,7 +4024,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattlePyramidSquare05/border.bin",
- "blockdata_filepath": "data/layouts/BattlePyramidSquare05/map.bin"
+ "blockdata_filepath": "data/layouts/BattlePyramidSquare05/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_PYRAMID_SQUARE06",
@@ -3669,7 +4035,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattlePyramidSquare06/border.bin",
- "blockdata_filepath": "data/layouts/BattlePyramidSquare06/map.bin"
+ "blockdata_filepath": "data/layouts/BattlePyramidSquare06/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_PYRAMID_SQUARE07",
@@ -3679,7 +4046,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattlePyramidSquare07/border.bin",
- "blockdata_filepath": "data/layouts/BattlePyramidSquare07/map.bin"
+ "blockdata_filepath": "data/layouts/BattlePyramidSquare07/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_PYRAMID_SQUARE08",
@@ -3689,7 +4057,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattlePyramidSquare08/border.bin",
- "blockdata_filepath": "data/layouts/BattlePyramidSquare08/map.bin"
+ "blockdata_filepath": "data/layouts/BattlePyramidSquare08/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_PYRAMID_SQUARE09",
@@ -3699,7 +4068,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattlePyramidSquare09/border.bin",
- "blockdata_filepath": "data/layouts/BattlePyramidSquare09/map.bin"
+ "blockdata_filepath": "data/layouts/BattlePyramidSquare09/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_PYRAMID_SQUARE10",
@@ -3709,7 +4079,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattlePyramidSquare10/border.bin",
- "blockdata_filepath": "data/layouts/BattlePyramidSquare10/map.bin"
+ "blockdata_filepath": "data/layouts/BattlePyramidSquare10/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_PYRAMID_SQUARE11",
@@ -3719,7 +4090,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattlePyramidSquare11/border.bin",
- "blockdata_filepath": "data/layouts/BattlePyramidSquare11/map.bin"
+ "blockdata_filepath": "data/layouts/BattlePyramidSquare11/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_PYRAMID_SQUARE12",
@@ -3729,7 +4101,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattlePyramidSquare12/border.bin",
- "blockdata_filepath": "data/layouts/BattlePyramidSquare12/map.bin"
+ "blockdata_filepath": "data/layouts/BattlePyramidSquare12/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_PYRAMID_SQUARE13",
@@ -3739,7 +4112,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattlePyramidSquare13/border.bin",
- "blockdata_filepath": "data/layouts/BattlePyramidSquare13/map.bin"
+ "blockdata_filepath": "data/layouts/BattlePyramidSquare13/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_PYRAMID_SQUARE14",
@@ -3749,7 +4123,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattlePyramidSquare14/border.bin",
- "blockdata_filepath": "data/layouts/BattlePyramidSquare14/map.bin"
+ "blockdata_filepath": "data/layouts/BattlePyramidSquare14/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_PYRAMID_SQUARE15",
@@ -3759,7 +4134,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattlePyramidSquare15/border.bin",
- "blockdata_filepath": "data/layouts/BattlePyramidSquare15/map.bin"
+ "blockdata_filepath": "data/layouts/BattlePyramidSquare15/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_PYRAMID_SQUARE16",
@@ -3769,7 +4145,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattlePyramidSquare16/border.bin",
- "blockdata_filepath": "data/layouts/BattlePyramidSquare16/map.bin"
+ "blockdata_filepath": "data/layouts/BattlePyramidSquare16/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP",
@@ -3779,7 +4156,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePyramid",
"border_filepath": "data/layouts/BattleFrontier_BattlePyramidTop/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattlePyramidTop/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattlePyramidTop/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MAGMA_HIDEOUT_3F_3R",
@@ -3789,7 +4167,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lavaridge",
"border_filepath": "data/layouts/MagmaHideout_3F_3R/border.bin",
- "blockdata_filepath": "data/layouts/MagmaHideout_3F_3R/map.bin"
+ "blockdata_filepath": "data/layouts/MagmaHideout_3F_3R/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MAGMA_HIDEOUT_2F_3R",
@@ -3799,7 +4178,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lavaridge",
"border_filepath": "data/layouts/MagmaHideout_2F_3R/border.bin",
- "blockdata_filepath": "data/layouts/MagmaHideout_2F_3R/map.bin"
+ "blockdata_filepath": "data/layouts/MagmaHideout_2F_3R/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MIRAGE_TOWER_1F",
@@ -3809,7 +4189,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_MirageTower",
"border_filepath": "data/layouts/MirageTower_1F/border.bin",
- "blockdata_filepath": "data/layouts/MirageTower_1F/map.bin"
+ "blockdata_filepath": "data/layouts/MirageTower_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MIRAGE_TOWER_2F",
@@ -3819,7 +4200,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_MirageTower",
"border_filepath": "data/layouts/MirageTower_2F/border.bin",
- "blockdata_filepath": "data/layouts/MirageTower_2F/map.bin"
+ "blockdata_filepath": "data/layouts/MirageTower_2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MIRAGE_TOWER_3F",
@@ -3829,7 +4211,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_MirageTower",
"border_filepath": "data/layouts/MirageTower_3F/border.bin",
- "blockdata_filepath": "data/layouts/MirageTower_3F/map.bin"
+ "blockdata_filepath": "data/layouts/MirageTower_3F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_TENT_LOBBY",
@@ -3839,7 +4222,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleTent",
"border_filepath": "data/layouts/BattleTentLobby/border.bin",
- "blockdata_filepath": "data/layouts/BattleTentLobby/map.bin"
+ "blockdata_filepath": "data/layouts/BattleTentLobby/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_TENT_CORRIDOR",
@@ -3849,7 +4233,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleTent",
"border_filepath": "data/layouts/BattleTentCorridor/border.bin",
- "blockdata_filepath": "data/layouts/BattleTentCorridor/map.bin"
+ "blockdata_filepath": "data/layouts/BattleTentCorridor/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_TENT_BATTLE_ROOM",
@@ -3859,7 +4244,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleTent",
"border_filepath": "data/layouts/BattleTentBattleRoom/border.bin",
- "blockdata_filepath": "data/layouts/BattleTentBattleRoom/map.bin"
+ "blockdata_filepath": "data/layouts/BattleTentBattleRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM",
@@ -3869,7 +4255,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_BattleTent",
"border_filepath": "data/layouts/VerdanturfTown_BattleTentBattleRoom/border.bin",
- "blockdata_filepath": "data/layouts/VerdanturfTown_BattleTentBattleRoom/map.bin"
+ "blockdata_filepath": "data/layouts/VerdanturfTown_BattleTentBattleRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MIRAGE_TOWER_4F",
@@ -3879,7 +4266,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_MirageTower",
"border_filepath": "data/layouts/MirageTower_4F/border.bin",
- "blockdata_filepath": "data/layouts/MirageTower_4F/map.bin"
+ "blockdata_filepath": "data/layouts/MirageTower_4F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_DESERT_UNDERPASS",
@@ -3889,7 +4277,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/DesertUnderpass/border.bin",
- "blockdata_filepath": "data/layouts/DesertUnderpass/map.bin"
+ "blockdata_filepath": "data/layouts/DesertUnderpass/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM",
@@ -3899,7 +4288,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleFrontier",
"border_filepath": "data/layouts/BattleFrontier_BattleTowerMultiPartnerRoom/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattleTowerMultiPartnerRoom/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattleTowerMultiPartnerRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR",
@@ -3909,7 +4299,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleFrontier",
"border_filepath": "data/layouts/BattleFrontier_BattleTowerMultiCorridor/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_BattleTowerMultiCorridor/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattleTowerMultiCorridor/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ROUTE111_NO_MIRAGE_TOWER",
@@ -3919,7 +4310,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Mauville",
"border_filepath": "data/layouts/Route111_NoMirageTower/border.bin",
- "blockdata_filepath": "data/layouts/Route111_NoMirageTower/map.bin"
+ "blockdata_filepath": "data/layouts/Route111_NoMirageTower/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNION_ROOM",
@@ -3929,7 +4321,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_UnionRoom",
"border_filepath": "data/layouts/UnionRoom/border.bin",
- "blockdata_filepath": "data/layouts/UnionRoom/map.bin"
+ "blockdata_filepath": "data/layouts/UnionRoom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SAFARI_ZONE_NORTHEAST",
@@ -3939,7 +4332,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lilycove",
"border_filepath": "data/layouts/SafariZone_Northeast/border.bin",
- "blockdata_filepath": "data/layouts/SafariZone_Northeast/map.bin"
+ "blockdata_filepath": "data/layouts/SafariZone_Northeast/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SAFARI_ZONE_SOUTHEAST",
@@ -3949,7 +4343,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Lilycove",
"border_filepath": "data/layouts/SafariZone_Southeast/border.bin",
- "blockdata_filepath": "data/layouts/SafariZone_Southeast/map.bin"
+ "blockdata_filepath": "data/layouts/SafariZone_Southeast/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_RANKING_HALL",
@@ -3959,7 +4354,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleFrontierRankingHall",
"border_filepath": "data/layouts/BattleFrontier_RankingHall/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_RankingHall/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_RankingHall/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_LOUNGE1",
@@ -3969,7 +4365,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleFrontier",
"border_filepath": "data/layouts/BattleFrontier_Lounge1/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_Lounge1/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_Lounge1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_EXCHANGE_SERVICE_CORNER",
@@ -3979,7 +4376,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleFrontier",
"border_filepath": "data/layouts/BattleFrontier_ExchangeServiceCorner/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_ExchangeServiceCorner/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_ExchangeServiceCorner/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_RECEPTION_GATE",
@@ -3989,7 +4387,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_BattleFrontier",
"border_filepath": "data/layouts/BattleFrontier_ReceptionGate/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_ReceptionGate/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_ReceptionGate/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ARTISAN_CAVE_B1F",
@@ -3999,7 +4398,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/ArtisanCave_B1F/border.bin",
- "blockdata_filepath": "data/layouts/ArtisanCave_B1F/map.bin"
+ "blockdata_filepath": "data/layouts/ArtisanCave_B1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ARTISAN_CAVE_1F",
@@ -4009,7 +4409,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/ArtisanCave_1F/border.bin",
- "blockdata_filepath": "data/layouts/ArtisanCave_1F/map.bin"
+ "blockdata_filepath": "data/layouts/ArtisanCave_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_FARAWAY_ISLAND_ENTRANCE",
@@ -4019,7 +4420,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Rustboro",
"border_filepath": "data/layouts/FarawayIsland_Entrance/border.bin",
- "blockdata_filepath": "data/layouts/FarawayIsland_Entrance/map.bin"
+ "blockdata_filepath": "data/layouts/FarawayIsland_Entrance/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_FARAWAY_ISLAND_INTERIOR",
@@ -4029,7 +4431,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Fortree",
"border_filepath": "data/layouts/FarawayIsland_Interior/border.bin",
- "blockdata_filepath": "data/layouts/FarawayIsland_Interior/map.bin"
+ "blockdata_filepath": "data/layouts/FarawayIsland_Interior/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BIRTH_ISLAND_EXTERIOR",
@@ -4039,7 +4442,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Dewford",
"border_filepath": "data/layouts/BirthIsland_Exterior/border.bin",
- "blockdata_filepath": "data/layouts/BirthIsland_Exterior/map.bin"
+ "blockdata_filepath": "data/layouts/BirthIsland_Exterior/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ISLAND_HARBOR",
@@ -4049,7 +4453,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_IslandHarbor",
"border_filepath": "data/layouts/IslandHarbor/border.bin",
- "blockdata_filepath": "data/layouts/IslandHarbor/map.bin"
+ "blockdata_filepath": "data/layouts/IslandHarbor/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNDERWATER_MARINE_CAVE",
@@ -4059,7 +4464,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Underwater",
"border_filepath": "data/layouts/Underwater_MarineCave/border.bin",
- "blockdata_filepath": "data/layouts/Underwater_MarineCave/map.bin"
+ "blockdata_filepath": "data/layouts/Underwater_MarineCave/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MARINE_CAVE_ENTRANCE",
@@ -4069,7 +4475,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/MarineCave_Entrance/border.bin",
- "blockdata_filepath": "data/layouts/MarineCave_Entrance/map.bin"
+ "blockdata_filepath": "data/layouts/MarineCave_Entrance/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_TERRA_CAVE_ENTRANCE",
@@ -4079,7 +4486,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/TerraCave_Entrance/border.bin",
- "blockdata_filepath": "data/layouts/TerraCave_Entrance/map.bin"
+ "blockdata_filepath": "data/layouts/TerraCave_Entrance/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_TERRA_CAVE_END",
@@ -4089,7 +4497,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/TerraCave_End/border.bin",
- "blockdata_filepath": "data/layouts/TerraCave_End/map.bin"
+ "blockdata_filepath": "data/layouts/TerraCave_End/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNDERWATER_ROUTE105",
@@ -4099,7 +4508,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Underwater",
"border_filepath": "data/layouts/Underwater_Route105/border.bin",
- "blockdata_filepath": "data/layouts/Underwater_Route105/map.bin"
+ "blockdata_filepath": "data/layouts/Underwater_Route105/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNDERWATER_ROUTE125",
@@ -4109,7 +4519,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Underwater",
"border_filepath": "data/layouts/Underwater_Route125/border.bin",
- "blockdata_filepath": "data/layouts/Underwater_Route125/map.bin"
+ "blockdata_filepath": "data/layouts/Underwater_Route125/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_UNDERWATER_ROUTE129",
@@ -4119,7 +4530,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Underwater",
"border_filepath": "data/layouts/Underwater_Route129/border.bin",
- "blockdata_filepath": "data/layouts/Underwater_Route129/map.bin"
+ "blockdata_filepath": "data/layouts/Underwater_Route129/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_MARINE_CAVE_END",
@@ -4129,7 +4541,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/MarineCave_End/border.bin",
- "blockdata_filepath": "data/layouts/MarineCave_End/map.bin"
+ "blockdata_filepath": "data/layouts/MarineCave_End/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_TRAINER_HILL_ENTRANCE",
@@ -4139,7 +4552,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_TrainerHill",
"border_filepath": "data/layouts/TrainerHill_Entrance/border.bin",
- "blockdata_filepath": "data/layouts/TrainerHill_Entrance/map.bin"
+ "blockdata_filepath": "data/layouts/TrainerHill_Entrance/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_TRAINER_HILL_1F",
@@ -4149,7 +4563,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_TrainerHill",
"border_filepath": "data/layouts/TrainerHill_1F/border.bin",
- "blockdata_filepath": "data/layouts/TrainerHill_1F/map.bin"
+ "blockdata_filepath": "data/layouts/TrainerHill_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_TRAINER_HILL_2F",
@@ -4159,7 +4574,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_TrainerHill",
"border_filepath": "data/layouts/TrainerHill_2F/border.bin",
- "blockdata_filepath": "data/layouts/TrainerHill_2F/map.bin"
+ "blockdata_filepath": "data/layouts/TrainerHill_2F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_TRAINER_HILL_3F",
@@ -4169,7 +4585,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_TrainerHill",
"border_filepath": "data/layouts/TrainerHill_3F/border.bin",
- "blockdata_filepath": "data/layouts/TrainerHill_3F/map.bin"
+ "blockdata_filepath": "data/layouts/TrainerHill_3F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_TRAINER_HILL_4F",
@@ -4179,7 +4596,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_TrainerHill",
"border_filepath": "data/layouts/TrainerHill_4F/border.bin",
- "blockdata_filepath": "data/layouts/TrainerHill_4F/map.bin"
+ "blockdata_filepath": "data/layouts/TrainerHill_4F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_TRAINER_HILL_ROOF",
@@ -4189,7 +4607,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_TrainerHill",
"border_filepath": "data/layouts/TrainerHill_Roof/border.bin",
- "blockdata_filepath": "data/layouts/TrainerHill_Roof/map.bin"
+ "blockdata_filepath": "data/layouts/TrainerHill_Roof/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_ALTERING_CAVE",
@@ -4199,7 +4618,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
"border_filepath": "data/layouts/AlteringCave/border.bin",
- "blockdata_filepath": "data/layouts/AlteringCave/map.bin"
+ "blockdata_filepath": "data/layouts/AlteringCave/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_NAVEL_ROCK_EXTERIOR",
@@ -4209,7 +4629,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Dewford",
"border_filepath": "data/layouts/NavelRock_Exterior/border.bin",
- "blockdata_filepath": "data/layouts/NavelRock_Exterior/map.bin"
+ "blockdata_filepath": "data/layouts/NavelRock_Exterior/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_NAVEL_ROCK_ENTRANCE",
@@ -4219,7 +4640,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_NavelRock",
"border_filepath": "data/layouts/NavelRock_Entrance/border.bin",
- "blockdata_filepath": "data/layouts/NavelRock_Entrance/map.bin"
+ "blockdata_filepath": "data/layouts/NavelRock_Entrance/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_NAVEL_ROCK_TOP",
@@ -4229,7 +4651,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_NavelRock",
"border_filepath": "data/layouts/NavelRock_Top/border.bin",
- "blockdata_filepath": "data/layouts/NavelRock_Top/map.bin"
+ "blockdata_filepath": "data/layouts/NavelRock_Top/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_NAVEL_ROCK_BOTTOM",
@@ -4239,7 +4662,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_NavelRock",
"border_filepath": "data/layouts/NavelRock_Bottom/border.bin",
- "blockdata_filepath": "data/layouts/NavelRock_Bottom/map.bin"
+ "blockdata_filepath": "data/layouts/NavelRock_Bottom/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_NAVEL_ROCK_LADDER_ROOM1",
@@ -4249,7 +4673,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_NavelRock",
"border_filepath": "data/layouts/NavelRock_LadderRoom1/border.bin",
- "blockdata_filepath": "data/layouts/NavelRock_LadderRoom1/map.bin"
+ "blockdata_filepath": "data/layouts/NavelRock_LadderRoom1/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_NAVEL_ROCK_LADDER_ROOM2",
@@ -4259,7 +4684,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_NavelRock",
"border_filepath": "data/layouts/NavelRock_LadderRoom2/border.bin",
- "blockdata_filepath": "data/layouts/NavelRock_LadderRoom2/map.bin"
+ "blockdata_filepath": "data/layouts/NavelRock_LadderRoom2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_NAVEL_ROCK_B1F",
@@ -4269,7 +4695,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_NavelRock",
"border_filepath": "data/layouts/NavelRock_B1F/border.bin",
- "blockdata_filepath": "data/layouts/NavelRock_B1F/map.bin"
+ "blockdata_filepath": "data/layouts/NavelRock_B1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_NAVEL_ROCK_FORK",
@@ -4279,7 +4706,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_NavelRock",
"border_filepath": "data/layouts/NavelRock_Fork/border.bin",
- "blockdata_filepath": "data/layouts/NavelRock_Fork/map.bin"
+ "blockdata_filepath": "data/layouts/NavelRock_Fork/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_LOUNGE2",
@@ -4289,7 +4717,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleFrontier",
"border_filepath": "data/layouts/BattleFrontier_Lounge2/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_Lounge2/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_Lounge2/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_SCOTTS_HOUSE",
@@ -4299,7 +4728,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattleFrontier",
"border_filepath": "data/layouts/BattleFrontier_ScottsHouse/border.bin",
- "blockdata_filepath": "data/layouts/BattleFrontier_ScottsHouse/map.bin"
+ "blockdata_filepath": "data/layouts/BattleFrontier_ScottsHouse/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_METEOR_FALLS_STEVENS_CAVE",
@@ -4309,7 +4739,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_MeteorFalls",
"border_filepath": "data/layouts/MeteorFalls_StevensCave/border.bin",
- "blockdata_filepath": "data/layouts/MeteorFalls_StevensCave/map.bin"
+ "blockdata_filepath": "data/layouts/MeteorFalls_StevensCave/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB_WITH_TABLE",
@@ -4319,7 +4750,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Lab",
"border_filepath": "data/layouts/LittlerootTown_ProfessorBirchsLabWithTable/border.bin",
- "blockdata_filepath": "data/layouts/LittlerootTown_ProfessorBirchsLabWithTable/map.bin"
+ "blockdata_filepath": "data/layouts/LittlerootTown_ProfessorBirchsLabWithTable/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SKY_PILLAR_1F_CLEAN",
@@ -4329,7 +4761,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/SkyPillar_1F_Clean/border.bin",
- "blockdata_filepath": "data/layouts/SkyPillar_1F_Clean/map.bin"
+ "blockdata_filepath": "data/layouts/SkyPillar_1F_Clean/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SKY_PILLAR_2F_CLEAN",
@@ -4339,7 +4772,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/SkyPillar_2F_Clean/border.bin",
- "blockdata_filepath": "data/layouts/SkyPillar_2F_Clean/map.bin"
+ "blockdata_filepath": "data/layouts/SkyPillar_2F_Clean/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SKY_PILLAR_3F_CLEAN",
@@ -4349,7 +4783,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/SkyPillar_3F_Clean/border.bin",
- "blockdata_filepath": "data/layouts/SkyPillar_3F_Clean/map.bin"
+ "blockdata_filepath": "data/layouts/SkyPillar_3F_Clean/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SKY_PILLAR_4F_CLEAN",
@@ -4359,7 +4794,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/SkyPillar_4F_Clean/border.bin",
- "blockdata_filepath": "data/layouts/SkyPillar_4F_Clean/map.bin"
+ "blockdata_filepath": "data/layouts/SkyPillar_4F_Clean/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SKY_PILLAR_5F_CLEAN",
@@ -4369,7 +4805,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/SkyPillar_5F_Clean/border.bin",
- "blockdata_filepath": "data/layouts/SkyPillar_5F_Clean/map.bin"
+ "blockdata_filepath": "data/layouts/SkyPillar_5F_Clean/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SKY_PILLAR_TOP_CLEAN",
@@ -4379,7 +4816,8 @@
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Pacifidlog",
"border_filepath": "data/layouts/SkyPillar_Top_Clean/border.bin",
- "blockdata_filepath": "data/layouts/SkyPillar_Top_Clean/map.bin"
+ "blockdata_filepath": "data/layouts/SkyPillar_Top_Clean/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_1F",
@@ -4389,7 +4827,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_MysteryEventsHouse",
"border_filepath": "data/layouts/SootopolisCity_MysteryEventsHouse_1F/border.bin",
- "blockdata_filepath": "data/layouts/SootopolisCity_MysteryEventsHouse_1F/map.bin"
+ "blockdata_filepath": "data/layouts/SootopolisCity_MysteryEventsHouse_1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_B1F",
@@ -4399,7 +4838,8 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_MysteryEventsHouse",
"border_filepath": "data/layouts/SootopolisCity_MysteryEventsHouse_B1F/border.bin",
- "blockdata_filepath": "data/layouts/SootopolisCity_MysteryEventsHouse_B1F/map.bin"
+ "blockdata_filepath": "data/layouts/SootopolisCity_MysteryEventsHouse_B1F/map.bin",
+ "layout_version": "emerald"
},
{
"id": "LAYOUT_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_1F_STAIRS_UNBLOCKED",
@@ -4409,7 +4849,4480 @@
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_MysteryEventsHouse",
"border_filepath": "data/layouts/SootopolisCity_MysteryEventsHouse_1F_StairsUnblocked/border.bin",
- "blockdata_filepath": "data/layouts/SootopolisCity_MysteryEventsHouse_1F_StairsUnblocked/map.bin"
+ "blockdata_filepath": "data/layouts/SootopolisCity_MysteryEventsHouse_1F_StairsUnblocked/map.bin",
+ "layout_version": "emerald"
+ },
+ {
+ "id": "LAYOUT_PALLET_TOWN_PLAYERS_HOUSE_1F_FRLG",
+ "name": "PalletTown_PlayersHouse_1F_Layout",
+ "width": 13,
+ "height": 10,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding1",
+ "border_filepath": "data/layouts/PalletTown_PlayersHouse_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PalletTown_PlayersHouse_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_PALLET_TOWN_PLAYERS_HOUSE_2F_FRLG",
+ "name": "PalletTown_PlayersHouse_2F_FRLG_Layout",
+ "width": 12,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding1",
+ "border_filepath": "data/layouts/PalletTown_PlayersHouse_2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PalletTown_PlayersHouse_2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_PALLET_TOWN_RIVALS_HOUSE",
+ "name": "PalletTown_RivalsHouse_Layout",
+ "width": 13,
+ "height": 10,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/PalletTown_RivalsHouse_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PalletTown_RivalsHouse_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_PALLET_TOWN_PROFESSOR_OAKS_LAB",
+ "name": "PalletTown_ProfessorOaksLab_Layout",
+ "width": 13,
+ "height": 14,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_Lab_Frlg",
+ "border_filepath": "data/layouts/PalletTown_ProfessorOaksLab_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PalletTown_ProfessorOaksLab_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_HOUSE1_FRLG",
+ "name": "House1_FRLG_Layout",
+ "width": 11,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding1",
+ "border_filepath": "data/layouts/House1_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/House1_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_HOUSE2_FRLG",
+ "name": "House2_FRLG_Layout",
+ "width": 11,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/House2_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/House2_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "name": "PokemonCenter_1F_FRLG_Layout",
+ "width": 15,
+ "height": 10,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonCenterFrlg",
+ "border_filepath": "data/layouts/PokemonCenter_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonCenter_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "name": "PokemonCenter_2F_FRLG_Layout",
+ "width": 15,
+ "height": 10,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonCenterFrlg",
+ "border_filepath": "data/layouts/PokemonCenter_2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonCenter_2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MART_FRLG",
+ "name": "Mart_Layout_FRLG",
+ "width": 11,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_Mart",
+ "border_filepath": "data/layouts/Mart_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Mart_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_HOUSE3_FRLG",
+ "name": "House3_FRLG_Layout",
+ "width": 11,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/House3_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/House3_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CERULEAN_CITY_GYM",
+ "name": "CeruleanCity_Gym_Layout",
+ "width": 17,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_CeruleanGym",
+ "border_filepath": "data/layouts/CeruleanCity_Gym_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeruleanCity_Gym_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_HOUSE4_FRLG",
+ "name": "House4_FRLG_Layout",
+ "width": 11,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/House4_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/House4_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_GYM",
+ "name": "CeladonCity_Gym_Layout",
+ "width": 13,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_CeladonGym",
+ "border_filepath": "data/layouts/CeladonCity_Gym_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_Gym_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_RS_POKEMON_CENTER_1F",
+ "name": "RS_PokemonCenter_1F_Layout",
+ "width": 14,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonCenterFrlg",
+ "border_filepath": "data/layouts/RS_PokemonCenter_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/RS_PokemonCenter_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_RESORT_GORGEOUS_HOUSE",
+ "name": "FiveIsland_ResortGorgeous_House_Layout",
+ "width": 11,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_Museum",
+ "border_filepath": "data/layouts/FiveIsland_ResortGorgeous_House_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_ResortGorgeous_House_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FUCHSIA_CITY_GYM",
+ "name": "FuchsiaCity_Gym_Layout",
+ "width": 15,
+ "height": 23,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_FuchsiaGym",
+ "border_filepath": "data/layouts/FuchsiaCity_Gym_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FuchsiaCity_Gym_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_HOUSE5_FRLG",
+ "name": "House5_Layout",
+ "width": 11,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding1",
+ "border_filepath": "data/layouts/House5_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/House5_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_VERMILION_CITY_GYM",
+ "name": "VermilionCity_Gym_Layout",
+ "width": 11,
+ "height": 21,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_VermilionGym",
+ "border_filepath": "data/layouts/VermilionCity_Gym_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/VermilionCity_Gym_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CERULEAN_CITY_BIKE_SHOP",
+ "name": "CeruleanCity_BikeShop_Layout",
+ "width": 11,
+ "height": 10,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_BikeShop_Frlg",
+ "border_filepath": "data/layouts/CeruleanCity_BikeShop_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeruleanCity_BikeShop_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_GAME_CORNER",
+ "name": "CeladonCity_GameCorner_Layout",
+ "width": 18,
+ "height": 15,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GameCorner",
+ "border_filepath": "data/layouts/CeladonCity_GameCorner_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_GameCorner_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_PEWTER_CITY_GYM",
+ "name": "PewterCity_Gym_Layout",
+ "width": 13,
+ "height": 16,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PewterGym",
+ "border_filepath": "data/layouts/PewterCity_Gym_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PewterCity_Gym_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FOUR_ISLAND_LORELEIS_HOUSE",
+ "name": "FourIsland_LoreleisHouse_Layout",
+ "width": 11,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SafariZoneBuilding",
+ "border_filepath": "data/layouts/FourIsland_LoreleisHouse_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FourIsland_LoreleisHouse_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_THREE_ISLAND_HOUSE1",
+ "name": "ThreeIsland_House1_Layout",
+ "width": 11,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_Lab_Frlg",
+ "border_filepath": "data/layouts/ThreeIsland_House1_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/ThreeIsland_House1_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SAFFRON_CITY_GYM",
+ "name": "SaffronCity_Gym_Layout",
+ "width": 29,
+ "height": 25,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SaffronGym",
+ "border_filepath": "data/layouts/SaffronCity_Gym_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SaffronCity_Gym_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CINNABAR_ISLAND_GYM",
+ "name": "CinnabarIsland_Gym_Layout",
+ "width": 30,
+ "height": 25,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_CinnabarGym",
+ "border_filepath": "data/layouts/CinnabarIsland_Gym_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CinnabarIsland_Gym_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_VIRIDIAN_CITY_GYM",
+ "name": "ViridianCity_Gym_Layout",
+ "width": 20,
+ "height": 24,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_ViridianGym",
+ "border_filepath": "data/layouts/ViridianCity_Gym_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/ViridianCity_Gym_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_RS_SAFARI_ZONE_ENTRANCE",
+ "name": "RS_SafariZone_Entrance_Layout",
+ "width": 18,
+ "height": 14,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_Mart",
+ "border_filepath": "data/layouts/RS_SafariZone_Entrance_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/RS_SafariZone_Entrance_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_BATTLE_COLOSSEUM_2P_FRLG",
+ "name": "BattleColosseum_2P_FRLG_Layout",
+ "width": 14,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_CableClub_Frlg",
+ "border_filepath": "data/layouts/BattleColosseum_2P_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/BattleColosseum_2P_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRADE_CENTER_FRLG",
+ "name": "TradeCenter_FRLG_Layout",
+ "width": 12,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_CableClub_Frlg",
+ "border_filepath": "data/layouts/TradeCenter_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TradeCenter_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_RECORD_CORNER_FRLG",
+ "name": "RecordCorner_FRLG_Layout",
+ "width": 20,
+ "height": 10,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_CableClub_Frlg",
+ "border_filepath": "data/layouts/RecordCorner_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/RecordCorner_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_BATTLE_COLOSSEUM_4P_FRLG",
+ "name": "BattleColosseum_4P_FRLG_Layout",
+ "width": 14,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_CableClub_Frlg",
+ "border_filepath": "data/layouts/BattleColosseum_4P_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/BattleColosseum_4P_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE",
+ "name": "FuchsiaCity_SafariZone_Entrance_Layout",
+ "width": 9,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SafariZoneBuilding",
+ "border_filepath": "data/layouts/FuchsiaCity_SafariZone_Entrance_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FuchsiaCity_SafariZone_Entrance_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_RS_SAFARI_ZONE_NORTHEAST",
+ "name": "RS_SafariZone_Northeast_Layout",
+ "width": 40,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CinnabarIsland",
+ "border_filepath": "data/layouts/RS_SafariZone_Northeast_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/RS_SafariZone_Northeast_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_RS_SAFARI_ZONE_SOUTHWEST",
+ "name": "RS_SafariZone_Southwest_Layout",
+ "width": 40,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CinnabarIsland",
+ "border_filepath": "data/layouts/RS_SafariZone_Southwest_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/RS_SafariZone_Southwest_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_RS_SAFARI_ZONE_SOUTHEAST",
+ "name": "RS_SafariZone_Southeast_Layout",
+ "width": 40,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CinnabarIsland",
+ "border_filepath": "data/layouts/RS_SafariZone_Southeast_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/RS_SafariZone_Southeast_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_RS_BATTLE_TOWER",
+ "name": "RS_BattleTower_Layout",
+ "width": 29,
+ "height": 30,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_PewterCity",
+ "border_filepath": "data/layouts/RS_BattleTower_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/RS_BattleTower_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MOSSDEEP_CITY_EREADER_TRAINER_HOUSE_1F",
+ "name": "MossdeepCity_EReaderTrainerHouse_1F_Layout",
+ "width": 11,
+ "height": 8,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_HoennBuilding",
+ "border_filepath": "data/layouts/MossdeepCity_EReaderTrainerHouse_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MossdeepCity_EReaderTrainerHouse_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MOSSDEEP_CITY_EREADER_TRAINER_HOUSE_2F",
+ "name": "MossdeepCity_EReaderTrainerHouse_2F_Layout",
+ "width": 12,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_HoennBuilding",
+ "border_filepath": "data/layouts/MossdeepCity_EReaderTrainerHouse_2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MossdeepCity_EReaderTrainerHouse_2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_RS_SAFARI_ZONE_REST_HOUSE",
+ "name": "RS_SafariZone_RestHouse_Layout",
+ "width": 10,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_HoennBuilding",
+ "border_filepath": "data/layouts/RS_SafariZone_RestHouse_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/RS_SafariZone_RestHouse_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_PALLET_TOWN",
+ "name": "PalletTown_Layout",
+ "width": 24,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_PalletTown",
+ "border_filepath": "data/layouts/PalletTown_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PalletTown_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_VIRIDIAN_CITY",
+ "name": "ViridianCity_Layout",
+ "width": 48,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_ViridianCity",
+ "border_filepath": "data/layouts/ViridianCity_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/ViridianCity_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_PEWTER_CITY",
+ "name": "PewterCity_Layout",
+ "width": 48,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_PewterCity",
+ "border_filepath": "data/layouts/PewterCity_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PewterCity_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CERULEAN_CITY",
+ "name": "CeruleanCity_Layout",
+ "width": 48,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeruleanCity",
+ "border_filepath": "data/layouts/CeruleanCity_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeruleanCity_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_LAVENDER_TOWN",
+ "name": "LavenderTown_Layout",
+ "width": 24,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_LavenderTown",
+ "border_filepath": "data/layouts/LavenderTown_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/LavenderTown_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_VERMILION_CITY",
+ "name": "VermilionCity_Layout",
+ "width": 48,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_VermilionCity",
+ "border_filepath": "data/layouts/VermilionCity_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/VermilionCity_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY",
+ "name": "CeladonCity_Layout",
+ "width": 60,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeladonCity",
+ "border_filepath": "data/layouts/CeladonCity_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FUCHSIA_CITY",
+ "name": "FuchsiaCity_Layout",
+ "width": 48,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_FuchsiaCity",
+ "border_filepath": "data/layouts/FuchsiaCity_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FuchsiaCity_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CINNABAR_ISLAND",
+ "name": "CinnabarIsland_Layout",
+ "width": 24,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CinnabarIsland",
+ "border_filepath": "data/layouts/CinnabarIsland_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CinnabarIsland_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_INDIGO_PLATEAU_EXTERIOR",
+ "name": "IndigoPlateau_Exterior_Layout",
+ "width": 24,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_IndigoPlateau",
+ "border_filepath": "data/layouts/IndigoPlateau_Exterior_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/IndigoPlateau_Exterior_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SAFFRON_CITY_CONNECTION",
+ "name": "SaffronCity_Connection_Layout",
+ "width": 48,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SaffronCity",
+ "border_filepath": "data/layouts/SaffronCity_Connection_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SaffronCity_Connection_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE1",
+ "name": "Route1_Layout",
+ "width": 24,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_PalletTown",
+ "border_filepath": "data/layouts/Route1_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route1_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE2",
+ "name": "Route2_Layout",
+ "width": 24,
+ "height": 80,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_ViridianCity",
+ "border_filepath": "data/layouts/Route2_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route2_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE3",
+ "name": "Route3_Layout",
+ "width": 84,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_PewterCity",
+ "border_filepath": "data/layouts/Route3_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route3_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE4",
+ "name": "Route4_Layout",
+ "width": 108,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeruleanCity",
+ "border_filepath": "data/layouts/Route4_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route4_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE5",
+ "name": "Route5_Layout",
+ "width": 48,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeruleanCity",
+ "border_filepath": "data/layouts/Route5_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route5_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE6",
+ "name": "Route6_Layout",
+ "width": 24,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_VermilionCity",
+ "border_filepath": "data/layouts/Route6_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route6_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE7",
+ "name": "Route7_Layout",
+ "width": 24,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeladonCity",
+ "border_filepath": "data/layouts/Route7_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route7_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE8",
+ "name": "Route8_Layout",
+ "width": 72,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_LavenderTown",
+ "border_filepath": "data/layouts/Route8_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route8_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE9",
+ "name": "Route9_Layout",
+ "width": 72,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeruleanCity",
+ "border_filepath": "data/layouts/Route9_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route9_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE10",
+ "name": "Route10_Layout",
+ "width": 24,
+ "height": 80,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_LavenderTown",
+ "border_filepath": "data/layouts/Route10_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route10_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE11",
+ "name": "Route11_Layout",
+ "width": 72,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_VermilionCity",
+ "border_filepath": "data/layouts/Route11_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route11_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE12",
+ "name": "Route12_Layout",
+ "width": 24,
+ "height": 120,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_LavenderTown",
+ "border_filepath": "data/layouts/Route12_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route12_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE13",
+ "name": "Route13_Layout",
+ "width": 72,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_LavenderTown",
+ "border_filepath": "data/layouts/Route13_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route13_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE14",
+ "name": "Route14_Layout",
+ "width": 24,
+ "height": 60,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_LavenderTown",
+ "border_filepath": "data/layouts/Route14_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route14_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE15",
+ "name": "Route15_Layout",
+ "width": 72,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_FuchsiaCity",
+ "border_filepath": "data/layouts/Route15_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route15_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE16",
+ "name": "Route16_Layout",
+ "width": 48,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeladonCity",
+ "border_filepath": "data/layouts/Route16_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route16_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE17",
+ "name": "Route17_Layout",
+ "width": 24,
+ "height": 160,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeladonCity",
+ "border_filepath": "data/layouts/Route17_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route17_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE18",
+ "name": "Route18_Layout",
+ "width": 60,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeladonCity",
+ "border_filepath": "data/layouts/Route18_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route18_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE19",
+ "name": "Route19_Layout",
+ "width": 24,
+ "height": 60,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_FuchsiaCity",
+ "border_filepath": "data/layouts/Route19_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route19_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE20",
+ "name": "Route20_Layout",
+ "width": 120,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CinnabarIsland",
+ "border_filepath": "data/layouts/Route20_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route20_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE21_NORTH",
+ "name": "Route21_North_Layout",
+ "width": 24,
+ "height": 50,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_PalletTown",
+ "border_filepath": "data/layouts/Route21_North_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route21_North_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE22",
+ "name": "Route22_Layout",
+ "width": 48,
+ "height": 24,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_ViridianCity",
+ "border_filepath": "data/layouts/Route22_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route22_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE23",
+ "name": "Route23_Layout",
+ "width": 24,
+ "height": 160,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_IndigoPlateau",
+ "border_filepath": "data/layouts/Route23_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route23_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE24",
+ "name": "Route24_Layout",
+ "width": 24,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeruleanCity",
+ "border_filepath": "data/layouts/Route24_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route24_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE25",
+ "name": "Route25_Layout",
+ "width": 72,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeruleanCity",
+ "border_filepath": "data/layouts/Route25_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route25_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MT_MOON_1F",
+ "name": "MtMoon_1F_Layout",
+ "width": 48,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/MtMoon_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MtMoon_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MT_MOON_B1F",
+ "name": "MtMoon_B1F_Layout",
+ "width": 49,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/MtMoon_B1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MtMoon_B1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MT_MOON_B2F",
+ "name": "MtMoon_B2F_Layout",
+ "width": 48,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/MtMoon_B2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MtMoon_B2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_VIRIDIAN_FOREST",
+ "name": "ViridianForest_Layout",
+ "width": 54,
+ "height": 69,
+ "border_width": 3,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_ViridianForest",
+ "border_filepath": "data/layouts/ViridianForest_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/ViridianForest_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SSANNE_EXTERIOR",
+ "name": "SSAnne_Exterior_Layout",
+ "width": 70,
+ "height": 32,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_VermilionCity",
+ "border_filepath": "data/layouts/SSAnne_Exterior_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SSAnne_Exterior_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SSANNE_1F_CORRIDOR",
+ "name": "SSAnne_1F_Corridor_Layout",
+ "width": 31,
+ "height": 21,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SSAnne",
+ "border_filepath": "data/layouts/SSAnne_1F_Corridor_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SSAnne_1F_Corridor_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SSANNE_2F_CORRIDOR",
+ "name": "SSAnne_2F_Corridor_Layout",
+ "width": 34,
+ "height": 16,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SSAnne",
+ "border_filepath": "data/layouts/SSAnne_2F_Corridor_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SSAnne_2F_Corridor_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SSANNE_3F_CORRIDOR",
+ "name": "SSAnne_3F_Corridor_Layout",
+ "width": 22,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SSAnne",
+ "border_filepath": "data/layouts/SSAnne_3F_Corridor_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SSAnne_3F_Corridor_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SSANNE_B1F_CORRIDOR",
+ "name": "SSAnne_B1F_Corridor_Layout",
+ "width": 23,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SSAnne",
+ "border_filepath": "data/layouts/SSAnne_B1F_Corridor_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SSAnne_B1F_Corridor_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SSANNE_DECK",
+ "name": "SSAnne_Deck_Layout",
+ "width": 24,
+ "height": 19,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SSAnne",
+ "border_filepath": "data/layouts/SSAnne_Deck_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SSAnne_Deck_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_DIGLETTS_CAVE_B1F",
+ "name": "DiglettsCave_B1F_Layout",
+ "width": 85,
+ "height": 80,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_DiglettsCave",
+ "border_filepath": "data/layouts/DiglettsCave_B1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/DiglettsCave_B1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_VICTORY_ROAD_1F_FRLG",
+ "name": "VictoryRoad_1F_FRLG_Layout",
+ "width": 48,
+ "height": 22,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/VictoryRoad_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/VictoryRoad_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_VICTORY_ROAD_2F",
+ "name": "VictoryRoad_2F_Layout",
+ "width": 51,
+ "height": 22,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/VictoryRoad_2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/VictoryRoad_2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_VICTORY_ROAD_3F",
+ "name": "VictoryRoad_3F_Layout",
+ "width": 45,
+ "height": 22,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/VictoryRoad_3F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/VictoryRoad_3F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROCKET_HIDEOUT_B1F",
+ "name": "RocketHideout_B1F_Layout",
+ "width": 28,
+ "height": 34,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/RocketHideout_B1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/RocketHideout_B1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROCKET_HIDEOUT_B2F",
+ "name": "RocketHideout_B2F_Layout",
+ "width": 32,
+ "height": 22,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/RocketHideout_B2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/RocketHideout_B2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROCKET_HIDEOUT_B3F",
+ "name": "RocketHideout_B3F_Layout",
+ "width": 22,
+ "height": 27,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/RocketHideout_B3F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/RocketHideout_B3F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROCKET_HIDEOUT_B4F",
+ "name": "RocketHideout_B4F_Layout",
+ "width": 24,
+ "height": 26,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/RocketHideout_B4F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/RocketHideout_B4F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SILPH_CO_1F",
+ "name": "SilphCo_1F_Layout",
+ "width": 36,
+ "height": 22,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/SilphCo_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SilphCo_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SILPH_CO_2F",
+ "name": "SilphCo_2F_Layout",
+ "width": 36,
+ "height": 22,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/SilphCo_2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SilphCo_2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SILPH_CO_3F",
+ "name": "SilphCo_3F_Layout",
+ "width": 36,
+ "height": 22,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/SilphCo_3F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SilphCo_3F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SILPH_CO_4F",
+ "name": "SilphCo_4F_Layout",
+ "width": 36,
+ "height": 22,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/SilphCo_4F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SilphCo_4F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SILPH_CO_5F",
+ "name": "SilphCo_5F_Layout",
+ "width": 36,
+ "height": 22,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/SilphCo_5F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SilphCo_5F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SILPH_CO_6F",
+ "name": "SilphCo_6F_Layout",
+ "width": 31,
+ "height": 19,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/SilphCo_6F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SilphCo_6F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SILPH_CO_7F",
+ "name": "SilphCo_7F_Layout",
+ "width": 31,
+ "height": 19,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/SilphCo_7F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SilphCo_7F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SILPH_CO_8F",
+ "name": "SilphCo_8F_Layout",
+ "width": 31,
+ "height": 19,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/SilphCo_8F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SilphCo_8F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SILPH_CO_9F",
+ "name": "SilphCo_9F_Layout",
+ "width": 31,
+ "height": 19,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/SilphCo_9F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SilphCo_9F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SILPH_CO_10F",
+ "name": "SilphCo_10F_Layout",
+ "width": 17,
+ "height": 19,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/SilphCo_10F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SilphCo_10F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SILPH_CO_11F",
+ "name": "SilphCo_11F_Layout",
+ "width": 17,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/SilphCo_11F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SilphCo_11F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_MANSION_1F",
+ "name": "PokemonMansion_1F_Layout",
+ "width": 38,
+ "height": 35,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonMansion",
+ "border_filepath": "data/layouts/PokemonMansion_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonMansion_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_MANSION_2F",
+ "name": "PokemonMansion_2F_Layout",
+ "width": 38,
+ "height": 38,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonMansion",
+ "border_filepath": "data/layouts/PokemonMansion_2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonMansion_2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_MANSION_3F",
+ "name": "PokemonMansion_3F_Layout",
+ "width": 38,
+ "height": 35,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonMansion",
+ "border_filepath": "data/layouts/PokemonMansion_3F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonMansion_3F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_MANSION_B1F",
+ "name": "PokemonMansion_B1F_Layout",
+ "width": 38,
+ "height": 35,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonMansion",
+ "border_filepath": "data/layouts/PokemonMansion_B1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonMansion_B1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SAFARI_ZONE_CENTER",
+ "name": "SafariZone_Center_Layout",
+ "width": 51,
+ "height": 36,
+ "border_width": 3,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_FuchsiaCity",
+ "border_filepath": "data/layouts/SafariZone_Center_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SafariZone_Center_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SAFARI_ZONE_EAST",
+ "name": "SafariZone_East_Layout",
+ "width": 54,
+ "height": 35,
+ "border_width": 3,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_FuchsiaCity",
+ "border_filepath": "data/layouts/SafariZone_East_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SafariZone_East_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SAFARI_ZONE_NORTH_FRLG",
+ "name": "SafariZone_North_FRLG_Layout",
+ "width": 57,
+ "height": 40,
+ "border_width": 3,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_FuchsiaCity",
+ "border_filepath": "data/layouts/SafariZone_North_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SafariZone_North_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SAFARI_ZONE_WEST",
+ "name": "SafariZone_West_Layout",
+ "width": 48,
+ "height": 36,
+ "border_width": 3,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_FuchsiaCity",
+ "border_filepath": "data/layouts/SafariZone_West_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SafariZone_West_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CERULEAN_CAVE_1F",
+ "name": "CeruleanCave_1F_Layout",
+ "width": 40,
+ "height": 23,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeruleanCave",
+ "border_filepath": "data/layouts/CeruleanCave_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeruleanCave_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CERULEAN_CAVE_2F",
+ "name": "CeruleanCave_2F_Layout",
+ "width": 40,
+ "height": 23,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeruleanCave",
+ "border_filepath": "data/layouts/CeruleanCave_2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeruleanCave_2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CERULEAN_CAVE_B1F",
+ "name": "CeruleanCave_B1F_Layout",
+ "width": 40,
+ "height": 23,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeruleanCave",
+ "border_filepath": "data/layouts/CeruleanCave_B1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeruleanCave_B1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROCK_TUNNEL_1F",
+ "name": "RockTunnel_1F_Layout",
+ "width": 48,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_RockTunnel",
+ "border_filepath": "data/layouts/RockTunnel_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/RockTunnel_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROCK_TUNNEL_B1F",
+ "name": "RockTunnel_B1F_Layout",
+ "width": 48,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_RockTunnel",
+ "border_filepath": "data/layouts/RockTunnel_B1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/RockTunnel_B1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEAFOAM_ISLANDS_1F",
+ "name": "SeafoamIslands_1F_Layout",
+ "width": 38,
+ "height": 24,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeafoamIslands",
+ "border_filepath": "data/layouts/SeafoamIslands_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SeafoamIslands_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEAFOAM_ISLANDS_B1F",
+ "name": "SeafoamIslands_B1F_Layout",
+ "width": 38,
+ "height": 23,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeafoamIslands",
+ "border_filepath": "data/layouts/SeafoamIslands_B1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SeafoamIslands_B1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEAFOAM_ISLANDS_B2F",
+ "name": "SeafoamIslands_B2F_Layout",
+ "width": 38,
+ "height": 24,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeafoamIslands",
+ "border_filepath": "data/layouts/SeafoamIslands_B2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SeafoamIslands_B2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEAFOAM_ISLANDS_B3F",
+ "name": "SeafoamIslands_B3F_Layout",
+ "width": 38,
+ "height": 24,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeafoamIslands",
+ "border_filepath": "data/layouts/SeafoamIslands_B3F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SeafoamIslands_B3F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEAFOAM_ISLANDS_B4F",
+ "name": "SeafoamIslands_B4F_Layout",
+ "width": 38,
+ "height": 24,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeafoamIslands",
+ "border_filepath": "data/layouts/SeafoamIslands_B4F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SeafoamIslands_B4F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_TOWER_1F",
+ "name": "PokemonTower_1F_Layout",
+ "width": 24,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonTower",
+ "border_filepath": "data/layouts/PokemonTower_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonTower_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_TOWER_2F",
+ "name": "PokemonTower_2F_Layout",
+ "width": 24,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonTower",
+ "border_filepath": "data/layouts/PokemonTower_2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonTower_2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_TOWER_3F",
+ "name": "PokemonTower_3F_Layout",
+ "width": 24,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonTower",
+ "border_filepath": "data/layouts/PokemonTower_3F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonTower_3F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_TOWER_4F",
+ "name": "PokemonTower_4F_Layout",
+ "width": 24,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonTower",
+ "border_filepath": "data/layouts/PokemonTower_4F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonTower_4F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_TOWER_5F",
+ "name": "PokemonTower_5F_Layout",
+ "width": 24,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonTower",
+ "border_filepath": "data/layouts/PokemonTower_5F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonTower_5F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_TOWER_6F",
+ "name": "PokemonTower_6F_Layout",
+ "width": 24,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonTower",
+ "border_filepath": "data/layouts/PokemonTower_6F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonTower_6F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_TOWER_7F",
+ "name": "PokemonTower_7F_Layout",
+ "width": 24,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonTower",
+ "border_filepath": "data/layouts/PokemonTower_7F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonTower_7F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POWER_PLANT",
+ "name": "PowerPlant_Layout",
+ "width": 49,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PowerPlant",
+ "border_filepath": "data/layouts/PowerPlant_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PowerPlant_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE25_SEA_COTTAGE",
+ "name": "Route25_SeaCottage_Layout",
+ "width": 15,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SeaCottage",
+ "border_filepath": "data/layouts/Route25_SeaCottage_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route25_SeaCottage_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SSANNE_KITCHEN",
+ "name": "SSAnne_Kitchen_Layout",
+ "width": 16,
+ "height": 14,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SSAnne",
+ "border_filepath": "data/layouts/SSAnne_Kitchen_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SSAnne_Kitchen_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SSANNE_CAPTAINS_OFFICE",
+ "name": "SSAnne_CaptainsOffice_Layout",
+ "width": 9,
+ "height": 10,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SSAnne",
+ "border_filepath": "data/layouts/SSAnne_CaptainsOffice_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SSAnne_CaptainsOffice_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_UNDERGROUND_PATH_ENTRANCE",
+ "name": "UndergroundPath_Entrance_Layout",
+ "width": 13,
+ "height": 10,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/UndergroundPath_Entrance_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/UndergroundPath_Entrance_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_UNDERGROUND_PATH_EAST_WEST_TUNNEL",
+ "name": "UndergroundPath_EastWestTunnel_Layout",
+ "width": 80,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_UndergroundPath",
+ "border_filepath": "data/layouts/UndergroundPath_EastWestTunnel_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/UndergroundPath_EastWestTunnel_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_UNDERGROUND_PATH_NORTH_SOUTH_TUNNEL",
+ "name": "UndergroundPath_NorthSouthTunnel_Layout",
+ "width": 8,
+ "height": 63,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_UndergroundPath",
+ "border_filepath": "data/layouts/UndergroundPath_NorthSouthTunnel_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/UndergroundPath_NorthSouthTunnel_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE12_NORTH_ENTRANCE_1F",
+ "name": "Route12_NorthEntrance_1F_Layout",
+ "width": 11,
+ "height": 13,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/Route12_NorthEntrance_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route12_NorthEntrance_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SSANNE_ROOM1",
+ "name": "SSAnne_Room1_Layout",
+ "width": 6,
+ "height": 8,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SSAnne",
+ "border_filepath": "data/layouts/SSAnne_Room1_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SSAnne_Room1_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SSANNE_ROOM2",
+ "name": "SSAnne_Room2_Layout",
+ "width": 6,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SSAnne",
+ "border_filepath": "data/layouts/SSAnne_Room2_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SSAnne_Room2_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_DEPARTMENT_STORE_ELEVATOR",
+ "name": "CeladonCity_DepartmentStore_Elevator_Layout",
+ "width": 5,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/CeladonCity_DepartmentStore_Elevator_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_DepartmentStore_Elevator_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_PEWTER_CITY_MUSEUM_1F",
+ "name": "PewterCity_Museum_1F_Layout",
+ "width": 28,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_Museum",
+ "border_filepath": "data/layouts/PewterCity_Museum_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PewterCity_Museum_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_PEWTER_CITY_MUSEUM_2F",
+ "name": "PewterCity_Museum_2F_Layout",
+ "width": 19,
+ "height": 10,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_Museum",
+ "border_filepath": "data/layouts/PewterCity_Museum_2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PewterCity_Museum_2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CERULEAN_CITY_HOUSE2",
+ "name": "CeruleanCity_House2_Layout",
+ "width": 10,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_BurgledHouse",
+ "border_filepath": "data/layouts/CeruleanCity_House2_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeruleanCity_House2_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CERULEAN_CITY_HOUSE1",
+ "name": "CeruleanCity_House1_Layout",
+ "width": 10,
+ "height": 10,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/CeruleanCity_House1_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeruleanCity_House1_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_CONDOMINIUMS_1F",
+ "name": "CeladonCity_Condominiums_1F_Layout",
+ "width": 15,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_Condominiums",
+ "border_filepath": "data/layouts/CeladonCity_Condominiums_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_Condominiums_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_CONDOMINIUMS_2F",
+ "name": "CeladonCity_Condominiums_2F_Layout",
+ "width": 15,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_Condominiums",
+ "border_filepath": "data/layouts/CeladonCity_Condominiums_2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_Condominiums_2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_CONDOMINIUMS_3F",
+ "name": "CeladonCity_Condominiums_3F_Layout",
+ "width": 15,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_Condominiums",
+ "border_filepath": "data/layouts/CeladonCity_Condominiums_3F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_Condominiums_3F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_CONDOMINIUMS_ROOF",
+ "name": "CeladonCity_Condominiums_Roof_Layout",
+ "width": 14,
+ "height": 23,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_Condominiums",
+ "border_filepath": "data/layouts/CeladonCity_Condominiums_Roof_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_Condominiums_Roof_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_CONDOMINIUMS_ROOF_ROOM",
+ "name": "CeladonCity_Condominiums_RoofRoom_Layout",
+ "width": 10,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_School",
+ "border_filepath": "data/layouts/CeladonCity_Condominiums_RoofRoom_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_Condominiums_RoofRoom_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_GAME_CORNER_PRIZE_ROOM",
+ "name": "CeladonCity_GameCorner_PrizeRoom_Layout",
+ "width": 9,
+ "height": 10,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GameCorner",
+ "border_filepath": "data/layouts/CeladonCity_GameCorner_PrizeRoom_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_GameCorner_PrizeRoom_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_RESTAURANT",
+ "name": "CeladonCity_Restaurant_Layout",
+ "width": 15,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_RestaurantHotel",
+ "border_filepath": "data/layouts/CeladonCity_Restaurant_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_Restaurant_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_HOTEL",
+ "name": "CeladonCity_Hotel_Layout",
+ "width": 17,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_RestaurantHotel",
+ "border_filepath": "data/layouts/CeladonCity_Hotel_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_Hotel_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_DEPARTMENT_STORE_1F",
+ "name": "CeladonCity_DepartmentStore_1F_Layout",
+ "width": 13,
+ "height": 16,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_DepartmentStore",
+ "border_filepath": "data/layouts/CeladonCity_DepartmentStore_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_DepartmentStore_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_DEPARTMENT_STORE_2F",
+ "name": "CeladonCity_DepartmentStore_2F_Layout",
+ "width": 13,
+ "height": 15,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_DepartmentStore",
+ "border_filepath": "data/layouts/CeladonCity_DepartmentStore_2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_DepartmentStore_2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_DEPARTMENT_STORE_3F",
+ "name": "CeladonCity_DepartmentStore_3F_Layout",
+ "width": 13,
+ "height": 15,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_DepartmentStore",
+ "border_filepath": "data/layouts/CeladonCity_DepartmentStore_3F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_DepartmentStore_3F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_DEPARTMENT_STORE_4F",
+ "name": "CeladonCity_DepartmentStore_4F_Layout",
+ "width": 13,
+ "height": 15,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_DepartmentStore",
+ "border_filepath": "data/layouts/CeladonCity_DepartmentStore_4F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_DepartmentStore_4F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_DEPARTMENT_STORE_5F",
+ "name": "CeladonCity_DepartmentStore_5F_Layout",
+ "width": 13,
+ "height": 15,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_DepartmentStore",
+ "border_filepath": "data/layouts/CeladonCity_DepartmentStore_5F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_DepartmentStore_5F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_DEPARTMENT_STORE_ROOF",
+ "name": "CeladonCity_DepartmentStore_Roof_Layout",
+ "width": 19,
+ "height": 14,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_DepartmentStore",
+ "border_filepath": "data/layouts/CeladonCity_DepartmentStore_Roof_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_DepartmentStore_Roof_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SAFARI_ZONE_REST_HOUSE_FRLG",
+ "name": "SafariZone_RestHouse_FRLG_Layout",
+ "width": 13,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SafariZoneBuilding",
+ "border_filepath": "data/layouts/SafariZone_RestHouse_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SafariZone_RestHouse_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SAFARI_ZONE_SECRET_HOUSE",
+ "name": "SafariZone_SecretHouse_Layout",
+ "width": 13,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SafariZoneBuilding",
+ "border_filepath": "data/layouts/SafariZone_SecretHouse_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SafariZone_SecretHouse_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FUCHSIA_CITY_SAFARI_ZONE_OFFICE",
+ "name": "FuchsiaCity_SafariZone_Office_Layout",
+ "width": 20,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SafariZoneBuilding",
+ "border_filepath": "data/layouts/FuchsiaCity_SafariZone_Office_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FuchsiaCity_SafariZone_Office_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FUCHSIA_CITY_WARDENS_HOUSE",
+ "name": "FuchsiaCity_WardensHouse_Layout",
+ "width": 13,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_Museum",
+ "border_filepath": "data/layouts/FuchsiaCity_WardensHouse_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FuchsiaCity_WardensHouse_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FUCHSIA_CITY_HOUSE2",
+ "name": "FuchsiaCity_House2_Layout",
+ "width": 10,
+ "height": 10,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_Museum",
+ "border_filepath": "data/layouts/FuchsiaCity_House2_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FuchsiaCity_House2_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CINNABAR_ISLAND_POKEMON_LAB_ENTRANCE",
+ "name": "CinnabarIsland_PokemonLab_Entrance_Layout",
+ "width": 28,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_Lab_Frlg",
+ "border_filepath": "data/layouts/CinnabarIsland_PokemonLab_Entrance_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CinnabarIsland_PokemonLab_Entrance_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CINNABAR_ISLAND_POKEMON_LAB_LOUNGE",
+ "name": "CinnabarIsland_PokemonLab_Lounge_Layout",
+ "width": 15,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_Lab_Frlg",
+ "border_filepath": "data/layouts/CinnabarIsland_PokemonLab_Lounge_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CinnabarIsland_PokemonLab_Lounge_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CINNABAR_ISLAND_POKEMON_LAB_RESEARCH_ROOM",
+ "name": "CinnabarIsland_PokemonLab_ResearchRoom_Layout",
+ "width": 15,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_Lab_Frlg",
+ "border_filepath": "data/layouts/CinnabarIsland_PokemonLab_ResearchRoom_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CinnabarIsland_PokemonLab_ResearchRoom_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM",
+ "name": "CinnabarIsland_PokemonLab_ExperimentRoom_Layout",
+ "width": 15,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_Lab_Frlg",
+ "border_filepath": "data/layouts/CinnabarIsland_PokemonLab_ExperimentRoom_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CinnabarIsland_PokemonLab_ExperimentRoom_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SAFFRON_CITY",
+ "name": "SaffronCity_Layout",
+ "width": 66,
+ "height": 55,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SaffronCity",
+ "border_filepath": "data/layouts/SaffronCity_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SaffronCity_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SAFFRON_CITY_NORTH_SOUTH_ENTRANCE",
+ "name": "SaffronCity_NorthSouthEntrance_Layout",
+ "width": 9,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/SaffronCity_NorthSouthEntrance_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SaffronCity_NorthSouthEntrance_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SAFFRON_CITY_EAST_WEST_ENTRANCE",
+ "name": "SaffronCity_EastWestEntrance_Layout",
+ "width": 13,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/SaffronCity_EastWestEntrance_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SaffronCity_EastWestEntrance_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_DIGLETTS_CAVE_NORTH_ENTRANCE",
+ "name": "DiglettsCave_NorthEntrance_Layout",
+ "width": 10,
+ "height": 8,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_DiglettsCave",
+ "border_filepath": "data/layouts/DiglettsCave_NorthEntrance_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/DiglettsCave_NorthEntrance_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_DIGLETTS_CAVE_SOUTH_ENTRANCE",
+ "name": "DiglettsCave_SouthEntrance_Layout",
+ "width": 10,
+ "height": 8,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_DiglettsCave",
+ "border_filepath": "data/layouts/DiglettsCave_SouthEntrance_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/DiglettsCave_SouthEntrance_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_INDIGO_PLATEAU_POKEMON_CENTER_1F",
+ "name": "IndigoPlateau_PokemonCenter_1F_Layout",
+ "width": 25,
+ "height": 18,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonCenterFrlg",
+ "border_filepath": "data/layouts/IndigoPlateau_PokemonCenter_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/IndigoPlateau_PokemonCenter_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_LEAGUE_LORELEIS_ROOM",
+ "name": "PokemonLeague_LoreleisRoom_Layout",
+ "width": 13,
+ "height": 13,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonLeague",
+ "border_filepath": "data/layouts/PokemonLeague_LoreleisRoom_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonLeague_LoreleisRoom_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_LEAGUE_BRUNOS_ROOM",
+ "name": "PokemonLeague_BrunosRoom_Layout",
+ "width": 13,
+ "height": 13,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonLeague",
+ "border_filepath": "data/layouts/PokemonLeague_BrunosRoom_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonLeague_BrunosRoom_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_LEAGUE_AGATHAS_ROOM",
+ "name": "PokemonLeague_AgathasRoom_Layout",
+ "width": 13,
+ "height": 13,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonLeague",
+ "border_filepath": "data/layouts/PokemonLeague_AgathasRoom_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonLeague_AgathasRoom_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_LEAGUE_LANCES_ROOM",
+ "name": "PokemonLeague_LancesRoom_Layout",
+ "width": 28,
+ "height": 24,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonLeague",
+ "border_filepath": "data/layouts/PokemonLeague_LancesRoom_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonLeague_LancesRoom_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_LEAGUE_CHAMPIONS_ROOM",
+ "name": "PokemonLeague_ChampionsRoom_Layout",
+ "width": 13,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonLeague",
+ "border_filepath": "data/layouts/PokemonLeague_ChampionsRoom_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonLeague_ChampionsRoom_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_POKEMON_LEAGUE_HALL_OF_FAME",
+ "name": "PokemonLeague_HallOfFame_Layout",
+ "width": 11,
+ "height": 13,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_HallOfFame",
+ "border_filepath": "data/layouts/PokemonLeague_HallOfFame_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/PokemonLeague_HallOfFame_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE21_SOUTH",
+ "name": "Route21_South_Layout",
+ "width": 24,
+ "height": 50,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CinnabarIsland",
+ "border_filepath": "data/layouts/Route21_South_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route21_South_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ENTRANCE_2F",
+ "name": "Entrance_2F_Layout",
+ "width": 13,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/Entrance_2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Entrance_2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE2_ENTRANCE",
+ "name": "Route2_Entrance_Layout",
+ "width": 15,
+ "height": 12,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/Route2_Entrance_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route2_Entrance_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE22_NORTH_ENTRANCE",
+ "name": "Route22_NorthEntrance_Layout",
+ "width": 15,
+ "height": 12,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/Route22_NorthEntrance_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route22_NorthEntrance_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE16_NORTH_ENTRANCE_1F",
+ "name": "Route16_NorthEntrance_1F_Layout",
+ "width": 13,
+ "height": 18,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/Route16_NorthEntrance_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route16_NorthEntrance_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ENTRANCE_1F",
+ "name": "Entrance_1F_Layout",
+ "width": 13,
+ "height": 12,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/Entrance_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Entrance_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROCKET_HIDEOUT_ELEVATOR",
+ "name": "RocketHideout_Elevator_Layout",
+ "width": 5,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/RocketHideout_Elevator_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/RocketHideout_Elevator_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SAFFRON_CITY_COPYCATS_HOUSE_1F",
+ "name": "SaffronCity_CopycatsHouse_1F_Layout",
+ "width": 13,
+ "height": 10,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding1",
+ "border_filepath": "data/layouts/SaffronCity_CopycatsHouse_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SaffronCity_CopycatsHouse_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SAFFRON_CITY_COPYCATS_HOUSE_2F",
+ "name": "SaffronCity_CopycatsHouse_2F_Layout",
+ "width": 12,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding1",
+ "border_filepath": "data/layouts/SaffronCity_CopycatsHouse_2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SaffronCity_CopycatsHouse_2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SAFFRON_CITY_DOJO",
+ "name": "SaffronCity_Dojo_Layout",
+ "width": 13,
+ "height": 16,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PewterGym",
+ "border_filepath": "data/layouts/SaffronCity_Dojo_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SaffronCity_Dojo_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SILPH_CO_ELEVATOR",
+ "name": "SilphCo_Elevator_Layout",
+ "width": 5,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/SilphCo_Elevator_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SilphCo_Elevator_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ONE_ISLAND",
+ "name": "OneIsland_Layout",
+ "width": 24,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands123",
+ "border_filepath": "data/layouts/OneIsland_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/OneIsland_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TWO_ISLAND",
+ "name": "TwoIsland_Layout",
+ "width": 48,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands123",
+ "border_filepath": "data/layouts/TwoIsland_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TwoIsland_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_THREE_ISLAND",
+ "name": "ThreeIsland_Layout",
+ "width": 24,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands123",
+ "border_filepath": "data/layouts/ThreeIsland_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/ThreeIsland_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FOUR_ISLAND",
+ "name": "FourIsland_Layout",
+ "width": 48,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands45",
+ "border_filepath": "data/layouts/FourIsland_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FourIsland_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND",
+ "name": "FiveIsland_Layout",
+ "width": 24,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands45",
+ "border_filepath": "data/layouts/FiveIsland_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEVEN_ISLAND",
+ "name": "SevenIsland_Layout",
+ "width": 24,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands67",
+ "border_filepath": "data/layouts/SevenIsland_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SevenIsland_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SIX_ISLAND",
+ "name": "SixIsland_Layout",
+ "width": 24,
+ "height": 30,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands67",
+ "border_filepath": "data/layouts/SixIsland_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SixIsland_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ONE_ISLAND_KINDLE_ROAD",
+ "name": "OneIsland_KindleRoad_Layout",
+ "width": 24,
+ "height": 140,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands123",
+ "border_filepath": "data/layouts/OneIsland_KindleRoad_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/OneIsland_KindleRoad_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ONE_ISLAND_TREASURE_BEACH",
+ "name": "OneIsland_TreasureBeach_Layout",
+ "width": 24,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands123",
+ "border_filepath": "data/layouts/OneIsland_TreasureBeach_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/OneIsland_TreasureBeach_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TWO_ISLAND_CAPE_BRINK",
+ "name": "TwoIsland_CapeBrink_Layout",
+ "width": 24,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands123",
+ "border_filepath": "data/layouts/TwoIsland_CapeBrink_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TwoIsland_CapeBrink_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_THREE_ISLAND_BOND_BRIDGE",
+ "name": "ThreeIsland_BondBridge_Layout",
+ "width": 96,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands123",
+ "border_filepath": "data/layouts/ThreeIsland_BondBridge_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/ThreeIsland_BondBridge_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_THREE_ISLAND_PORT",
+ "name": "ThreeIsland_Port_Layout",
+ "width": 48,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands123",
+ "border_filepath": "data/layouts/ThreeIsland_Port_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/ThreeIsland_Port_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_PROTOTYPE_SEVII_ISLE_6",
+ "name": "Prototype_SeviiIsle_6_Layout",
+ "width": 1,
+ "height": 1,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeladonCity",
+ "border_filepath": "data/layouts/Prototype_SeviiIsle_6_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Prototype_SeviiIsle_6_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_PROTOTYPE_SEVII_ISLE_7",
+ "name": "Prototype_SeviiIsle_7_Layout",
+ "width": 1,
+ "height": 1,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeladonCity",
+ "border_filepath": "data/layouts/Prototype_SeviiIsle_7_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Prototype_SeviiIsle_7_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_PROTOTYPE_SEVII_ISLE_8",
+ "name": "Prototype_SeviiIsle_8_Layout",
+ "width": 84,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeladonCity",
+ "border_filepath": "data/layouts/Prototype_SeviiIsle_8_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Prototype_SeviiIsle_8_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_PROTOTYPE_SEVII_ISLE_9",
+ "name": "Prototype_SeviiIsle_9_Layout",
+ "width": 24,
+ "height": 60,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_CeladonCity",
+ "border_filepath": "data/layouts/Prototype_SeviiIsle_9_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Prototype_SeviiIsle_9_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_RESORT_GORGEOUS",
+ "name": "FiveIsland_ResortGorgeous_Layout",
+ "width": 72,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands45",
+ "border_filepath": "data/layouts/FiveIsland_ResortGorgeous_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_ResortGorgeous_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_WATER_LABYRINTH",
+ "name": "FiveIsland_WaterLabyrinth_Layout",
+ "width": 72,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands45",
+ "border_filepath": "data/layouts/FiveIsland_WaterLabyrinth_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_WaterLabyrinth_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_MEADOW",
+ "name": "FiveIsland_Meadow_Layout",
+ "width": 24,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands45",
+ "border_filepath": "data/layouts/FiveIsland_Meadow_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_Meadow_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_MEMORIAL_PILLAR",
+ "name": "FiveIsland_MemorialPillar_Layout",
+ "width": 24,
+ "height": 60,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands45",
+ "border_filepath": "data/layouts/FiveIsland_MemorialPillar_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_MemorialPillar_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SIX_ISLAND_OUTCAST_ISLAND",
+ "name": "SixIsland_OutcastIsland_Layout",
+ "width": 24,
+ "height": 80,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands67",
+ "border_filepath": "data/layouts/SixIsland_OutcastIsland_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SixIsland_OutcastIsland_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SIX_ISLAND_GREEN_PATH",
+ "name": "SixIsland_GreenPath_Layout",
+ "width": 72,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands67",
+ "border_filepath": "data/layouts/SixIsland_GreenPath_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SixIsland_GreenPath_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SIX_ISLAND_WATER_PATH",
+ "name": "SixIsland_WaterPath_Layout",
+ "width": 24,
+ "height": 100,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands67",
+ "border_filepath": "data/layouts/SixIsland_WaterPath_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SixIsland_WaterPath_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SIX_ISLAND_RUIN_VALLEY",
+ "name": "SixIsland_RuinValley_Layout",
+ "width": 48,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands67",
+ "border_filepath": "data/layouts/SixIsland_RuinValley_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SixIsland_RuinValley_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER",
+ "name": "SevenIsland_TrainerTower_Layout",
+ "width": 120,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands67",
+ "border_filepath": "data/layouts/SevenIsland_TrainerTower_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SevenIsland_TrainerTower_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE",
+ "name": "SevenIsland_SevaultCanyon_Entrance_Layout",
+ "width": 24,
+ "height": 40,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands67",
+ "border_filepath": "data/layouts/SevenIsland_SevaultCanyon_Entrance_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SevenIsland_SevaultCanyon_Entrance_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEVEN_ISLAND_SEVAULT_CANYON",
+ "name": "SevenIsland_SevaultCanyon_Layout",
+ "width": 24,
+ "height": 80,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands67",
+ "border_filepath": "data/layouts/SevenIsland_SevaultCanyon_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SevenIsland_SevaultCanyon_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEVEN_ISLAND_TANOBY_RUINS",
+ "name": "SevenIsland_TanobyRuins_Layout",
+ "width": 144,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands67",
+ "border_filepath": "data/layouts/SevenIsland_TanobyRuins_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SevenIsland_TanobyRuins_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_PROTOTYPE_SEVII_ISLE_22",
+ "name": "Prototype_SeviiIsle_22_Layout",
+ "width": 24,
+ "height": 60,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_PalletTown",
+ "border_filepath": "data/layouts/Prototype_SeviiIsle_22_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Prototype_SeviiIsle_22_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_PROTOTYPE_SEVII_ISLE_23_EAST",
+ "name": "Prototype_SeviiIsle_23_East_Layout",
+ "width": 144,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_PalletTown",
+ "border_filepath": "data/layouts/Prototype_SeviiIsle_23_East_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Prototype_SeviiIsle_23_East_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_PROTOTYPE_SEVII_ISLE_23_WEST",
+ "name": "Prototype_SeviiIsle_23_West_Layout",
+ "width": 24,
+ "height": 60,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_PalletTown",
+ "border_filepath": "data/layouts/Prototype_SeviiIsle_23_West_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Prototype_SeviiIsle_23_West_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_PROTOTYPE_SEVII_ISLE_24",
+ "name": "Prototype_SeviiIsle_24_Layout",
+ "width": 24,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_PalletTown",
+ "border_filepath": "data/layouts/Prototype_SeviiIsle_24_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Prototype_SeviiIsle_24_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_UNION_ROOM_FRLG",
+ "name": "UnionRoom_FRLG_Layout",
+ "width": 15,
+ "height": 12,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_HallOfFame",
+ "border_filepath": "data/layouts/UnionRoom_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/UnionRoom_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB",
+ "name": "SaffronCity_PokemonTrainerFanClub_Layout",
+ "width": 11,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_FanClubDaycare",
+ "border_filepath": "data/layouts/SaffronCity_PokemonTrainerFanClub_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SaffronCity_PokemonTrainerFanClub_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEVEN_ISLAND_HOUSE_ROOM1_DOOR_OPEN",
+ "name": "SevenIsland_House_Room1_DoorOpen_Layout",
+ "width": 11,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/SevenIsland_House_Room1_DoorOpen_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SevenIsland_House_Room1_DoorOpen_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEVEN_ISLAND_HOUSE_ROOM2",
+ "name": "SevenIsland_House_Room2_Layout",
+ "width": 12,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/SevenIsland_House_Room2_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SevenIsland_House_Room2_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_VIRIDIAN_CITY_SCHOOL",
+ "name": "ViridianCity_School_Layout",
+ "width": 10,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_School",
+ "border_filepath": "data/layouts/ViridianCity_School_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/ViridianCity_School_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_RESTAURANT_DUPLICATE",
+ "name": "CeladonCity_Restaurant_Duplicate_Layout",
+ "width": 15,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_RestaurantHotel",
+ "border_filepath": "data/layouts/CeladonCity_Restaurant_Duplicate_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_Restaurant_Duplicate_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CELADON_CITY_HOTEL_DUPLICATE",
+ "name": "CeladonCity_Hotel_Duplicate_Layout",
+ "width": 17,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_RestaurantHotel",
+ "border_filepath": "data/layouts/CeladonCity_Hotel_Duplicate_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeladonCity_Hotel_Duplicate_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MT_EMBER_RUBY_PATH_B4F",
+ "name": "MtEmber_RubyPath_B4F_Layout",
+ "width": 18,
+ "height": 16,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_MtEmber",
+ "border_filepath": "data/layouts/MtEmber_RubyPath_B4F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MtEmber_RubyPath_B4F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_THREE_ISLAND_BERRY_FOREST",
+ "name": "ThreeIsland_BerryForest_Layout",
+ "width": 57,
+ "height": 47,
+ "border_width": 3,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_BerryForest",
+ "border_filepath": "data/layouts/ThreeIsland_BerryForest_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/ThreeIsland_BerryForest_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ONE_ISLAND_POKEMON_CENTER_1F",
+ "name": "OneIsland_PokemonCenter_1F_Layout",
+ "width": 19,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonCenterFrlg",
+ "border_filepath": "data/layouts/OneIsland_PokemonCenter_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/OneIsland_PokemonCenter_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TWO_ISLAND_JOYFUL_GAME_CORNER",
+ "name": "TwoIsland_JoyfulGameCorner_Layout",
+ "width": 12,
+ "height": 10,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GameCorner",
+ "border_filepath": "data/layouts/TwoIsland_JoyfulGameCorner_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TwoIsland_JoyfulGameCorner_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_VERMILION_CITY_POKEMON_FAN_CLUB",
+ "name": "VermilionCity_PokemonFanClub_Layout",
+ "width": 12,
+ "height": 12,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_FanClubDaycare",
+ "border_filepath": "data/layouts/VermilionCity_PokemonFanClub_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/VermilionCity_PokemonFanClub_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_LAVENDER_TOWN_VOLUNTEER_POKEMON_HOUSE",
+ "name": "LavenderTown_VolunteerPokemonHouse_Layout",
+ "width": 12,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_FanClubDaycare",
+ "border_filepath": "data/layouts/LavenderTown_VolunteerPokemonHouse_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/LavenderTown_VolunteerPokemonHouse_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ROUTE5_POKEMON_DAY_CARE",
+ "name": "Route5_PokemonDayCare_Layout",
+ "width": 12,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_FanClubDaycare",
+ "border_filepath": "data/layouts/Route5_PokemonDayCare_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Route5_PokemonDayCare_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_VIRIDIAN_CITY_HOUSE",
+ "name": "ViridianCity_House_Layout",
+ "width": 11,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/ViridianCity_House_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/ViridianCity_House_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FOUR_ISLAND_POKEMON_DAY_CARE",
+ "name": "FourIsland_PokemonDayCare_Layout",
+ "width": 12,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_FanClubDaycare",
+ "border_filepath": "data/layouts/FourIsland_PokemonDayCare_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FourIsland_PokemonDayCare_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEAFOAM_ISLANDS_B3F_CURRENT_STOPPED",
+ "name": "SeafoamIslands_B3F_CurrentStopped_Layout",
+ "width": 38,
+ "height": 24,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeafoamIslands",
+ "border_filepath": "data/layouts/SeafoamIslands_B3F_CurrentStopped_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SeafoamIslands_B3F_CurrentStopped_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEAFOAM_ISLANDS_B4F_CURRENT_STOPPED",
+ "name": "SeafoamIslands_B4F_CurrentStopped_Layout",
+ "width": 38,
+ "height": 24,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeafoamIslands",
+ "border_filepath": "data/layouts/SeafoamIslands_B4F_CurrentStopped_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SeafoamIslands_B4F_CurrentStopped_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MT_EMBER_EXTERIOR",
+ "name": "MtEmber_Exterior_Layout",
+ "width": 57,
+ "height": 54,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands123",
+ "border_filepath": "data/layouts/MtEmber_Exterior_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MtEmber_Exterior_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MT_EMBER_SUMMIT",
+ "name": "MtEmber_Summit_Layout",
+ "width": 19,
+ "height": 22,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands123",
+ "border_filepath": "data/layouts/MtEmber_Summit_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MtEmber_Summit_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MT_EMBER_SUMMIT_PATH_1F",
+ "name": "MtEmber_SummitPath_1F_Layout",
+ "width": 15,
+ "height": 18,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_MtEmber",
+ "border_filepath": "data/layouts/MtEmber_SummitPath_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MtEmber_SummitPath_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MT_EMBER_SUMMIT_PATH_2F",
+ "name": "MtEmber_SummitPath_2F_Layout",
+ "width": 48,
+ "height": 46,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_MtEmber",
+ "border_filepath": "data/layouts/MtEmber_SummitPath_2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MtEmber_SummitPath_2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MT_EMBER_SUMMIT_PATH_3F",
+ "name": "MtEmber_SummitPath_3F_Layout",
+ "width": 15,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_MtEmber",
+ "border_filepath": "data/layouts/MtEmber_SummitPath_3F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MtEmber_SummitPath_3F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MT_EMBER_RUBY_PATH_1F",
+ "name": "MtEmber_RubyPath_1F_Layout",
+ "width": 27,
+ "height": 19,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_MtEmber",
+ "border_filepath": "data/layouts/MtEmber_RubyPath_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MtEmber_RubyPath_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MT_EMBER_RUBY_PATH_B1F",
+ "name": "MtEmber_RubyPath_B1F_Layout",
+ "width": 11,
+ "height": 23,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_MtEmber",
+ "border_filepath": "data/layouts/MtEmber_RubyPath_B1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MtEmber_RubyPath_B1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MT_EMBER_RUBY_PATH_B2F",
+ "name": "MtEmber_RubyPath_B2F_Layout",
+ "width": 16,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_MtEmber",
+ "border_filepath": "data/layouts/MtEmber_RubyPath_B2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MtEmber_RubyPath_B2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MT_EMBER_RUBY_PATH_B3F",
+ "name": "MtEmber_RubyPath_B3F_Layout",
+ "width": 31,
+ "height": 23,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_MtEmber",
+ "border_filepath": "data/layouts/MtEmber_RubyPath_B3F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MtEmber_RubyPath_B3F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MT_EMBER_RUBY_PATH_B1F_STAIRS",
+ "name": "MtEmber_RubyPath_B1F_Stairs_Layout",
+ "width": 6,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_MtEmber",
+ "border_filepath": "data/layouts/MtEmber_RubyPath_B1F_Stairs_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MtEmber_RubyPath_B1F_Stairs_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MT_EMBER_RUBY_PATH_B2F_STAIRS",
+ "name": "MtEmber_RubyPath_B2F_Stairs_Layout",
+ "width": 8,
+ "height": 6,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_MtEmber",
+ "border_filepath": "data/layouts/MtEmber_RubyPath_B2F_Stairs_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MtEmber_RubyPath_B2F_Stairs_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_MT_EMBER_RUBY_PATH_B5F",
+ "name": "MtEmber_RubyPath_B5F_Layout",
+ "width": 16,
+ "height": 15,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_MtEmber",
+ "border_filepath": "data/layouts/MtEmber_RubyPath_B5F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/MtEmber_RubyPath_B5F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_ROCKET_WAREHOUSE",
+ "name": "FiveIsland_RocketWarehouse_Layout",
+ "width": 29,
+ "height": 27,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/FiveIsland_RocketWarehouse_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_RocketWarehouse_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE",
+ "name": "FourIsland_IcefallCave_Entrance_Layout",
+ "width": 30,
+ "height": 36,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeafoamIslands",
+ "border_filepath": "data/layouts/FourIsland_IcefallCave_Entrance_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FourIsland_IcefallCave_Entrance_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FOUR_ISLAND_ICEFALL_CAVE_1F",
+ "name": "FourIsland_IcefallCave_1F_Layout",
+ "width": 20,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeafoamIslands",
+ "border_filepath": "data/layouts/FourIsland_IcefallCave_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FourIsland_IcefallCave_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FOUR_ISLAND_ICEFALL_CAVE_B1F",
+ "name": "FourIsland_IcefallCave_B1F_Layout",
+ "width": 24,
+ "height": 20,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeafoamIslands",
+ "border_filepath": "data/layouts/FourIsland_IcefallCave_B1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FourIsland_IcefallCave_B1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FOUR_ISLAND_ICEFALL_CAVE_BACK",
+ "name": "FourIsland_IcefallCave_Back_Layout",
+ "width": 25,
+ "height": 26,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeafoamIslands",
+ "border_filepath": "data/layouts/FourIsland_IcefallCave_Back_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FourIsland_IcefallCave_Back_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_LOBBY",
+ "name": "TrainerTower_Lobby_Layout",
+ "width": 19,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_Lobby_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_Lobby_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_1F",
+ "name": "TrainerTower_1F_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_2F",
+ "name": "TrainerTower_2F_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_3F",
+ "name": "TrainerTower_3F_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_3F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_3F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_4F",
+ "name": "TrainerTower_4F_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_4F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_4F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_5F",
+ "name": "TrainerTower_5F_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_5F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_5F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_6F",
+ "name": "TrainerTower_6F_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_6F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_6F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_7F",
+ "name": "TrainerTower_7F_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_7F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_7F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_8F",
+ "name": "TrainerTower_8F_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_8F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_8F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_ROOF",
+ "name": "TrainerTower_Roof_Layout",
+ "width": 18,
+ "height": 16,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_Roof_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_Roof_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_ELEVATOR",
+ "name": "TrainerTower_Elevator_Layout",
+ "width": 5,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SilphCo",
+ "border_filepath": "data/layouts/TrainerTower_Elevator_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_Elevator_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_CERULEAN_CITY_HOUSE5",
+ "name": "CeruleanCity_House5_Layout",
+ "width": 11,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_GenericBuilding2",
+ "border_filepath": "data/layouts/CeruleanCity_House5_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/CeruleanCity_House5_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SIX_ISLAND_DOTTED_HOLE_1F",
+ "name": "SixIsland_DottedHole_1F_Layout",
+ "width": 16,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/SixIsland_DottedHole_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SixIsland_DottedHole_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SIX_ISLAND_DOTTED_HOLE_B1F",
+ "name": "SixIsland_DottedHole_B1F_Layout",
+ "width": 13,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/SixIsland_DottedHole_B1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SixIsland_DottedHole_B1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SIX_ISLAND_DOTTED_HOLE_B2F",
+ "name": "SixIsland_DottedHole_B2F_Layout",
+ "width": 13,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/SixIsland_DottedHole_B2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SixIsland_DottedHole_B2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SIX_ISLAND_DOTTED_HOLE_B3F",
+ "name": "SixIsland_DottedHole_B3F_Layout",
+ "width": 13,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/SixIsland_DottedHole_B3F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SixIsland_DottedHole_B3F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SIX_ISLAND_DOTTED_HOLE_B4F",
+ "name": "SixIsland_DottedHole_B4F_Layout",
+ "width": 13,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/SixIsland_DottedHole_B4F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SixIsland_DottedHole_B4F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SIX_ISLAND_DOTTED_HOLE_SAPPHIRE_ROOM",
+ "name": "SixIsland_DottedHole_SapphireRoom_Layout",
+ "width": 16,
+ "height": 15,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/SixIsland_DottedHole_SapphireRoom_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SixIsland_DottedHole_SapphireRoom_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ISLAND_HARBOR_FRLG",
+ "name": "Island_Harbor_FRLG_Layout",
+ "width": 17,
+ "height": 13,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_IslandHarbor_Frlg",
+ "border_filepath": "data/layouts/Island_Harbor_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/Island_Harbor_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ONE_ISLAND_POKEMON_CENTER_2F",
+ "name": "OneIsland_PokemonCenter_2F_Layout",
+ "width": 15,
+ "height": 10,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_PokemonCenterFrlg",
+ "border_filepath": "data/layouts/OneIsland_PokemonCenter_2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/OneIsland_PokemonCenter_2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SIX_ISLAND_PATTERN_BUSH",
+ "name": "SixIsland_PatternBush_Layout",
+ "width": 60,
+ "height": 32,
+ "border_width": 3,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_ViridianForest",
+ "border_filepath": "data/layouts/SixIsland_PatternBush_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SixIsland_PatternBush_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_THREE_ISLAND_DUNSPARCE_TUNNEL",
+ "name": "ThreeIsland_DunsparceTunnel_Layout",
+ "width": 30,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/ThreeIsland_DunsparceTunnel_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/ThreeIsland_DunsparceTunnel_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_THREE_ISLAND_DUNSPARCE_TUNNEL_DUG_OUT",
+ "name": "ThreeIsland_DunsparceTunnel_DugOut_Layout",
+ "width": 30,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/ThreeIsland_DunsparceTunnel_DugOut_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/ThreeIsland_DunsparceTunnel_DugOut_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ENTRANCE",
+ "name": "FiveIsland_LostCave_Entrance_Layout",
+ "width": 11,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/FiveIsland_LostCave_Entrance_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_LostCave_Entrance_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "name": "FiveIsland_LostCave_Room1_Layout",
+ "width": 11,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/FiveIsland_LostCave_Room1_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_LostCave_Room1_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM2",
+ "name": "FiveIsland_LostCave_Room2_Layout",
+ "width": 11,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/FiveIsland_LostCave_Room2_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_LostCave_Room2_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM3",
+ "name": "FiveIsland_LostCave_Room3_Layout",
+ "width": 11,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/FiveIsland_LostCave_Room3_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_LostCave_Room3_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM4",
+ "name": "FiveIsland_LostCave_Room4_Layout",
+ "width": 11,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/FiveIsland_LostCave_Room4_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_LostCave_Room4_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM5",
+ "name": "FiveIsland_LostCave_Room5_Layout",
+ "width": 11,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/FiveIsland_LostCave_Room5_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_LostCave_Room5_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM6",
+ "name": "FiveIsland_LostCave_Room6_Layout",
+ "width": 11,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/FiveIsland_LostCave_Room6_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_LostCave_Room6_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM7",
+ "name": "FiveIsland_LostCave_Room7_Layout",
+ "width": 11,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/FiveIsland_LostCave_Room7_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_LostCave_Room7_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM8",
+ "name": "FiveIsland_LostCave_Room8_Layout",
+ "width": 11,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/FiveIsland_LostCave_Room8_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_LostCave_Room8_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM9",
+ "name": "FiveIsland_LostCave_Room9_Layout",
+ "width": 11,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/FiveIsland_LostCave_Room9_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_LostCave_Room9_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM10",
+ "name": "FiveIsland_LostCave_Room10_Layout",
+ "width": 11,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/FiveIsland_LostCave_Room10_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_LostCave_Room10_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM11",
+ "name": "FiveIsland_LostCave_Room11_Layout",
+ "width": 11,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/FiveIsland_LostCave_Room11_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_LostCave_Room11_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM12",
+ "name": "FiveIsland_LostCave_Room12_Layout",
+ "width": 11,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/FiveIsland_LostCave_Room12_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_LostCave_Room12_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM13",
+ "name": "FiveIsland_LostCave_Room13_Layout",
+ "width": 11,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/FiveIsland_LostCave_Room13_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_LostCave_Room13_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM14",
+ "name": "FiveIsland_LostCave_Room14_Layout",
+ "width": 11,
+ "height": 11,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_Cave_Frlg",
+ "border_filepath": "data/layouts/FiveIsland_LostCave_Room14_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/FiveIsland_LostCave_Room14_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER",
+ "name": "SevenIsland_TanobyRuins_MoneanChamber_Layout",
+ "width": 23,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TanobyRuins",
+ "border_filepath": "data/layouts/SevenIsland_TanobyRuins_MoneanChamber_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SevenIsland_TanobyRuins_MoneanChamber_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEVEN_ISLAND_TANOBY_RUINS_LIPTOO_CHAMBER",
+ "name": "SevenIsland_TanobyRuins_LiptooChamber_Layout",
+ "width": 23,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TanobyRuins",
+ "border_filepath": "data/layouts/SevenIsland_TanobyRuins_LiptooChamber_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SevenIsland_TanobyRuins_LiptooChamber_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEVEN_ISLAND_TANOBY_RUINS_WEEPTH_CHAMBER",
+ "name": "SevenIsland_TanobyRuins_WeepthChamber_Layout",
+ "width": 23,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TanobyRuins",
+ "border_filepath": "data/layouts/SevenIsland_TanobyRuins_WeepthChamber_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SevenIsland_TanobyRuins_WeepthChamber_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEVEN_ISLAND_TANOBY_RUINS_DILFORD_CHAMBER",
+ "name": "SevenIsland_TanobyRuins_DilfordChamber_Layout",
+ "width": 23,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TanobyRuins",
+ "border_filepath": "data/layouts/SevenIsland_TanobyRuins_DilfordChamber_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SevenIsland_TanobyRuins_DilfordChamber_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEVEN_ISLAND_TANOBY_RUINS_SCUFIB_CHAMBER",
+ "name": "SevenIsland_TanobyRuins_ScufibChamber_Layout",
+ "width": 23,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TanobyRuins",
+ "border_filepath": "data/layouts/SevenIsland_TanobyRuins_ScufibChamber_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SevenIsland_TanobyRuins_ScufibChamber_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SIX_ISLAND_ALTERING_CAVE",
+ "name": "SixIsland_AlteringCave_Layout",
+ "width": 32,
+ "height": 24,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_RockTunnel",
+ "border_filepath": "data/layouts/SixIsland_AlteringCave_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SixIsland_AlteringCave_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEVEN_ISLAND_SEVAULT_CANYON_TANOBY_KEY",
+ "name": "SevenIsland_SevaultCanyon_TanobyKey_Layout",
+ "width": 15,
+ "height": 16,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_DiglettsCave",
+ "border_filepath": "data/layouts/SevenIsland_SevaultCanyon_TanobyKey_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SevenIsland_SevaultCanyon_TanobyKey_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_BIRTH_ISLAND_EXTERIOR_FRLG",
+ "name": "BirthIsland_Exterior_FRLG_Layout",
+ "width": 30,
+ "height": 30,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands67",
+ "border_filepath": "data/layouts/BirthIsland_Exterior_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/BirthIsland_Exterior_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_EXTERIOR_FRLG",
+ "name": "NavelRock_Exterior_FRLG_Layout",
+ "width": 20,
+ "height": 23,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_SeviiIslands123",
+ "border_filepath": "data/layouts/NavelRock_Exterior_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_Exterior_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_1F",
+ "name": "NavelRock_1F_Layout",
+ "width": 17,
+ "height": 26,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_SUMMIT",
+ "name": "NavelRock_Summit_Layout",
+ "width": 19,
+ "height": 25,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_Summit_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_Summit_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_BASE_FRLG",
+ "name": "NavelRock_Base_Frlg_Layout",
+ "width": 21,
+ "height": 23,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_Base_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_Base_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_SUMMIT_PATH_2F",
+ "name": "NavelRock_SummitPath_2F_Layout",
+ "width": 7,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_SummitPath_2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_SummitPath_2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_SUMMIT_PATH_3F",
+ "name": "NavelRock_SummitPath_3F_Layout",
+ "width": 7,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_SummitPath_3F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_SummitPath_3F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_SUMMIT_PATH_4F",
+ "name": "NavelRock_SummitPath_4F_Layout",
+ "width": 7,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_SummitPath_4F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_SummitPath_4F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_SUMMIT_PATH_5F",
+ "name": "NavelRock_SummitPath_5F_Layout",
+ "width": 7,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_SummitPath_5F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_SummitPath_5F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_BASE_PATH_B1F",
+ "name": "NavelRock_BasePath_B1F_Layout",
+ "width": 7,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_BasePath_B1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_BasePath_B1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_BASE_PATH_B2F",
+ "name": "NavelRock_BasePath_B2F_Layout",
+ "width": 7,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_BasePath_B2F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_BasePath_B2F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_BASE_PATH_B3F",
+ "name": "NavelRock_BasePath_B3F_Layout",
+ "width": 7,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_BasePath_B3F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_BasePath_B3F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_BASE_PATH_B4F",
+ "name": "NavelRock_BasePath_B4F_Layout",
+ "width": 7,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_BasePath_B4F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_BasePath_B4F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_BASE_PATH_B5F",
+ "name": "NavelRock_BasePath_B5F_Layout",
+ "width": 7,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_BasePath_B5F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_BasePath_B5F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_BASE_PATH_B6F",
+ "name": "NavelRock_BasePath_B6F_Layout",
+ "width": 7,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_BasePath_B6F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_BasePath_B6F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_BASE_PATH_B7F",
+ "name": "NavelRock_BasePath_B7F_Layout",
+ "width": 7,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_BasePath_B7F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_BasePath_B7F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_BASE_PATH_B8F",
+ "name": "NavelRock_BasePath_B8F_Layout",
+ "width": 7,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_BasePath_B8F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_BasePath_B8F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_BASE_PATH_B9F",
+ "name": "NavelRock_BasePath_B9F_Layout",
+ "width": 7,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_BasePath_B9F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_BasePath_B9F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_BASE_PATH_B10F",
+ "name": "NavelRock_BasePath_B10F_Layout",
+ "width": 7,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_BasePath_B10F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_BasePath_B10F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_BASE_PATH_B11F",
+ "name": "NavelRock_BasePath_B11F_Layout",
+ "width": 7,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_BasePath_B11F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_BasePath_B11F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEVEN_ISLAND_TANOBY_RUINS_RIXY_CHAMBER",
+ "name": "SevenIsland_TanobyRuins_RixyChamber_Layout",
+ "width": 23,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TanobyRuins",
+ "border_filepath": "data/layouts/SevenIsland_TanobyRuins_RixyChamber_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SevenIsland_TanobyRuins_RixyChamber_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEVEN_ISLAND_TANOBY_RUINS_VIAPOIS_CHAMBER",
+ "name": "SevenIsland_TanobyRuins_ViapoisChamber_Layout",
+ "width": 23,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TanobyRuins",
+ "border_filepath": "data/layouts/SevenIsland_TanobyRuins_ViapoisChamber_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SevenIsland_TanobyRuins_ViapoisChamber_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_B1F_FRLG",
+ "name": "NavelRock_B1F_FRLG_Layout",
+ "width": 17,
+ "height": 7,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_B1F_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_B1F_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_NAVEL_ROCK_FORK_FRLG",
+ "name": "NavelRock_Fork_FRLG_Layout",
+ "width": 30,
+ "height": 100,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_NavelRock_Frlg",
+ "border_filepath": "data/layouts/NavelRock_Fork_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/NavelRock_Fork_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_1F_DOUBLES",
+ "name": "TrainerTower_1F_Doubles_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_1F_Doubles_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_1F_Doubles_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_2F_DOUBLES",
+ "name": "TrainerTower_2F_Doubles_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_2F_Doubles_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_2F_Doubles_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_3F_DOUBLES",
+ "name": "TrainerTower_3F_Doubles_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_3F_Doubles_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_3F_Doubles_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_4F_DOUBLES",
+ "name": "TrainerTower_4F_Doubles_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_4F_Doubles_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_4F_Doubles_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_5F_DOUBLES",
+ "name": "TrainerTower_5F_Doubles_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_5F_Doubles_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_5F_Doubles_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_6F_DOUBLES",
+ "name": "TrainerTower_6F_Doubles_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_6F_Doubles_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_6F_Doubles_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_7F_DOUBLES",
+ "name": "TrainerTower_7F_Doubles_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_7F_Doubles_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_7F_Doubles_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_8F_DOUBLES",
+ "name": "TrainerTower_8F_Doubles_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_8F_Doubles_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_8F_Doubles_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_1F_KNOCKOUT",
+ "name": "TrainerTower_1F_Knockout_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_1F_Knockout_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_1F_Knockout_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_2F_KNOCKOUT",
+ "name": "TrainerTower_2F_Knockout_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_2F_Knockout_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_2F_Knockout_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_3F_KNOCKOUT",
+ "name": "TrainerTower_3F_Knockout_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_3F_Knockout_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_3F_Knockout_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_4F_KNOCKOUT",
+ "name": "TrainerTower_4F_Knockout_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_4F_Knockout_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_4F_Knockout_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_5F_KNOCKOUT",
+ "name": "TrainerTower_5F_Knockout_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_5F_Knockout_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_5F_Knockout_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_6F_KNOCKOUT",
+ "name": "TrainerTower_6F_Knockout_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_6F_Knockout_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_6F_Knockout_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_7F_KNOCKOUT",
+ "name": "TrainerTower_7F_Knockout_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_7F_Knockout_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_7F_Knockout_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_TRAINER_TOWER_8F_KNOCKOUT",
+ "name": "TrainerTower_8F_Knockout_Layout",
+ "width": 18,
+ "height": 17,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_TrainerTower",
+ "border_filepath": "data/layouts/TrainerTower_8F_Knockout_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_8F_Knockout_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_SEVEN_ISLAND_HOUSE_ROOM1",
+ "name": "SevenIsland_House_Room1_Layout",
+ "width": 11,
+ "height": 9,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_BuildingFrlg",
+ "secondary_tileset": "gTileset_SeafoamIslands",
+ "border_filepath": "data/layouts/SevenIsland_House_Room1_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/SevenIsland_House_Room1_Frlg/map.bin",
+ "layout_version": "frlg"
+ },
+ {
+ "id": "LAYOUT_ONE_ISLAND_KINDLE_ROAD_EMBER_SPA",
+ "name": "OneIsland_KindleRoad_EmberSpa_Layout",
+ "width": 27,
+ "height": 39,
+ "border_width": 2,
+ "border_height": 2,
+ "primary_tileset": "gTileset_General_Frlg",
+ "secondary_tileset": "gTileset_MtEmber",
+ "border_filepath": "data/layouts/OneIsland_KindleRoad_EmberSpa_Frlg/border.bin",
+ "blockdata_filepath": "data/layouts/OneIsland_KindleRoad_EmberSpa_Frlg/map.bin",
+ "layout_version": "frlg"
}
]
}
diff --git a/data/maps/BattleColosseum_2P_Frlg/map.json b/data/maps/BattleColosseum_2P_Frlg/map.json
new file mode 100644
index 000000000000..558361381fc1
--- /dev/null
+++ b/data/maps/BattleColosseum_2P_Frlg/map.json
@@ -0,0 +1,71 @@
+{
+ "id": "MAP_BATTLE_COLOSSEUM_2P_FRLG",
+ "name": "BattleColosseum_2P_Frlg",
+ "layout": "LAYOUT_BATTLE_COLOSSEUM_2P_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SPECIAL_AREA",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_LINK",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_UNION_ROOM_RECEPTIONIST",
+ "x": 9,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "BattleColosseum_2P_EventScript_Attendant_Frlg",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 3,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_TEMP_0",
+ "var_value": "0",
+ "script": "BattleColosseum_2P_EventScript_PlayerSpot0"
+ },
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_TEMP_0",
+ "var_value": "0",
+ "script": "BattleColosseum_2P_EventScript_PlayerSpot1"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/BattleColosseum_2P_Frlg/scripts.inc b/data/maps/BattleColosseum_2P_Frlg/scripts.inc
new file mode 100644
index 000000000000..71a21162495e
--- /dev/null
+++ b/data/maps/BattleColosseum_2P_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+BattleColosseum_2P_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/BattleColosseum_4P_Frlg/map.json b/data/maps/BattleColosseum_4P_Frlg/map.json
new file mode 100644
index 000000000000..16beacb42c22
--- /dev/null
+++ b/data/maps/BattleColosseum_4P_Frlg/map.json
@@ -0,0 +1,88 @@
+{
+ "id": "MAP_BATTLE_COLOSSEUM_4P_FRLG",
+ "name": "BattleColosseum_4P_Frlg",
+ "layout": "LAYOUT_BATTLE_COLOSSEUM_4P_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SPECIAL_AREA",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_LINK",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ },
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ },
+ {
+ "x": 8,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 3,
+ "y": 4,
+ "elevation": 3,
+ "var": "VAR_TEMP_0",
+ "var_value": "0",
+ "script": "BattleColosseum_4P_EventScript_PlayerSpot0"
+ },
+ {
+ "type": "trigger",
+ "x": 3,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_TEMP_0",
+ "var_value": "0",
+ "script": "BattleColosseum_4P_EventScript_PlayerSpot2"
+ },
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 4,
+ "elevation": 3,
+ "var": "VAR_TEMP_0",
+ "var_value": "0",
+ "script": "BattleColosseum_4P_EventScript_PlayerSpot1"
+ },
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_TEMP_0",
+ "var_value": "0",
+ "script": "BattleColosseum_4P_EventScript_PlayerSpot3"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/BattleColosseum_4P_Frlg/scripts.inc b/data/maps/BattleColosseum_4P_Frlg/scripts.inc
new file mode 100644
index 000000000000..5397fd4ecd6e
--- /dev/null
+++ b/data/maps/BattleColosseum_4P_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+BattleColosseum_4P_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc
index 1dec6328d6e9..725783a1ec14 100644
--- a/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleArenaBattleRoom/scripts.inc
@@ -364,9 +364,7 @@ BattleFrontier_BattleArenaBattleRoom_EventScript_DoArenaBattle::
setvar VAR_TEMP_2, 0
frontier_set FRONTIER_DATA_RECORD_DISABLED, FALSE
special HealPlayerParty
- setvar VAR_0x8004, SPECIAL_BATTLE_ARENA
- setvar VAR_0x8005, 0
- special DoSpecialTrainerBattle
+ dofacilitytrainerbattle FACILITY_BATTLE_ARENA
waitstate
frontier_restorehelditems
special HealPlayerParty
diff --git a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc
index 9f5a5f4d77f2..bcd2a482aa7e 100644
--- a/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleDomeBattleRoom/scripts.inc
@@ -445,10 +445,8 @@ BattleFrontier_BattleDomeBattleRoom_EventScript_TuckerDraw::
BattleFrontier_BattleDomeBattleRoom_EventScript_DoDomeBattle::
frontier_set FRONTIER_DATA_RECORD_DISABLED, FALSE
special HealPlayerParty
- setvar VAR_0x8004, SPECIAL_BATTLE_DOME
- setvar VAR_0x8005, 0
setvar VAR_TEMP_9, 1
- special DoSpecialTrainerBattle
+ dofacilitytrainerbattle FACILITY_BATTLE_DOME
waitstate
setvar VAR_TEMP_9, 0
dome_restorehelditems
diff --git a/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc
index e6da4070f7b2..80ac23075e8f 100644
--- a/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleFactoryBattleRoom/scripts.inc
@@ -80,9 +80,7 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_BattleOpponent::
closemessage
frontier_set FRONTIER_DATA_RECORD_DISABLED, FALSE
special HealPlayerParty
- setvar VAR_0x8004, SPECIAL_BATTLE_FACTORY
- setvar VAR_0x8005, 0
- special DoSpecialTrainerBattle
+ dofacilitytrainerbattle FRONTIER_FACILITY_FACTORY
waitstate
switch VAR_RESULT
case 1, BattleFrontier_BattleFactoryBattleRoom_EventScript_DefeatedOpponent
@@ -171,9 +169,7 @@ BattleFrontier_BattleFactoryBattleRoom_EventScript_DoNolandBattle::
closemessage
frontier_set FRONTIER_DATA_RECORD_DISABLED, FALSE
special HealPlayerParty
- setvar VAR_0x8004, SPECIAL_BATTLE_FACTORY
- setvar VAR_0x8005, 0
- special DoSpecialTrainerBattle
+ dofacilitytrainerbattle FACILITY_BATTLE_FACTORY
waitstate
return
diff --git a/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc
index 7223b14f3d09..4c4b01c592f4 100644
--- a/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePalaceBattleRoom/scripts.inc
@@ -274,9 +274,7 @@ BattleFrontier_BattlePalaceBattleRoom_EventScript_DoPalaceBattle::
setvar VAR_TEMP_2, 0
frontier_set FRONTIER_DATA_RECORD_DISABLED, FALSE
special HealPlayerParty
- setvar VAR_0x8004, SPECIAL_BATTLE_PALACE
- setvar VAR_0x8005, 0
- special DoSpecialTrainerBattle
+ dofacilitytrainerbattle FACILITY_BATTLE_PALACE
waitstate
frontier_restorehelditems
special HealPlayerParty
diff --git a/data/maps/BattleFrontier_BattlePikeRoomNormal/scripts.inc b/data/maps/BattleFrontier_BattlePikeRoomNormal/scripts.inc
index 44da68a6d79c..fca494981817 100644
--- a/data/maps/BattleFrontier_BattlePikeRoomNormal/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePikeRoomNormal/scripts.inc
@@ -31,9 +31,7 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_EnterSingleBattleRoom::
waitmessage
closemessage
releaseall
- setvar VAR_0x8004, SPECIAL_BATTLE_PIKE_SINGLE
- setvar VAR_0x8005, 0
- special DoSpecialTrainerBattle
+ dofacilitytrainerbattle FACILITY_BATTLE_PIKE_SINGLE
waitstate
switch VAR_RESULT
case 1, BattleFrontier_BattlePikeRoomNormal_EventScript_WonSingleBattle
@@ -61,9 +59,7 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_EnterHardBattleRoom::
waitmessage
closemessage
releaseall
- setvar VAR_0x8004, SPECIAL_BATTLE_PIKE_SINGLE
- setvar VAR_0x8005, 0
- special DoSpecialTrainerBattle
+ dofacilitytrainerbattle FACILITY_BATTLE_PIKE_SINGLE
waitstate
switch VAR_RESULT
case 1, BattleFrontier_BattlePikeRoomNormal_EventScript_WonHardBattle
@@ -252,9 +248,7 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_EnterDoubleBattleRoom::
pike_gettrainerintro 1
msgbox gStringVar4, MSGBOX_DEFAULT
closemessage
- setvar VAR_0x8004, SPECIAL_BATTLE_PIKE_DOUBLE
- setvar VAR_0x8005, 0
- special DoSpecialTrainerBattle
+ dofacilitytrainerbattle FACILITY_BATTLE_PIKE_DOUBLE
waitstate
switch VAR_RESULT
case 1, BattleFrontier_BattlePikeRoomNormal_EventScript_WonDoubleBattle
@@ -380,9 +374,7 @@ BattleFrontier_BattlePikeRoomNormal_EventScript_DoPikeQueenBattle::
closemessage
applymovement LOCALID_PLAYER, BattleFrontier_BattlePikeRoomNormal_Movement_PlayerWalkUp2
waitmovement 0
- setvar VAR_0x8004, SPECIAL_BATTLE_PIKE_SINGLE
- setvar VAR_0x8005, 0
- special DoSpecialTrainerBattle
+ dofacilitytrainerbattle FACILITY_BATTLE_PIKE_SINGLE
waitstate
return
diff --git a/data/maps/BattleFrontier_BattlePyramidFloor/scripts.inc b/data/maps/BattleFrontier_BattlePyramidFloor/scripts.inc
index 791f29f6e746..a9473d87501c 100644
--- a/data/maps/BattleFrontier_BattlePyramidFloor/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePyramidFloor/scripts.inc
@@ -105,7 +105,7 @@ BattlePyramid_WarpToTop::
@ TRAINER_PHILLIP is used as a placeholder
BattlePyramid_TrainerBattle::
- trainerbattle TRAINER_BATTLE_HILL, LOCALID_NONE, TRAINER_PHILLIP, BattleFacility_TrainerBattle_PlaceholderText, BattleFacility_TrainerBattle_PlaceholderText, NULL, LOCALID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE
+ facilitytrainerbattle FACILITY_BATTLE_PYRAMID
pyramid_showhint
waitmessage
waitbuttonpress
diff --git a/data/maps/BattleFrontier_BattlePyramidTop/scripts.inc b/data/maps/BattleFrontier_BattlePyramidTop/scripts.inc
index 3bf7b7b17e60..db2add717ca4 100644
--- a/data/maps/BattleFrontier_BattlePyramidTop/scripts.inc
+++ b/data/maps/BattleFrontier_BattlePyramidTop/scripts.inc
@@ -180,9 +180,7 @@ BattleFrontier_BattlePyramidTop_EventScript_DefeatedBrandonGold::
BattleFrontier_BattlePyramidTop_EventScript_DoBrandonBattle::
closemessage
- setvar VAR_0x8004, SPECIAL_BATTLE_PYRAMID
- setvar VAR_0x8005, 0
- special DoSpecialTrainerBattle
+ dofacilitytrainerbattle FACILITY_BATTLE_PYRAMID
waitstate
return
diff --git a/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc b/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc
index bfa94f04b80a..24caccc783a5 100644
--- a/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc
+++ b/data/maps/BattleFrontier_BattleTowerBattleRoom/scripts.inc
@@ -296,9 +296,7 @@ BattleFrontier_BattleTowerBattleRoom_EventScript_DoTowerBattle::
setvar VAR_TEMP_2, 0
frontier_set FRONTIER_DATA_RECORD_DISABLED, FALSE
special HealPlayerParty
- setvar VAR_0x8004, SPECIAL_BATTLE_TOWER
- setvar VAR_0x8005, 0
- special DoSpecialTrainerBattle
+ dofacilitytrainerbattle FACILITY_BATTLE_TOWER
waitstate
copyvar VAR_0x8004, VAR_FRONTIER_BATTLE_MODE
goto_if_eq VAR_0x8004, FRONTIER_MODE_LINK_MULTIS, BattleFrontier_BattleTowerBattleRoom_EventScript_EndTowerBattle
diff --git a/data/maps/BattleFrontier_ExchangeServiceCorner/scripts.inc b/data/maps/BattleFrontier_ExchangeServiceCorner/scripts.inc
index 703b1ec900fc..0e98cbe9b24b 100644
--- a/data/maps/BattleFrontier_ExchangeServiceCorner/scripts.inc
+++ b/data/maps/BattleFrontier_ExchangeServiceCorner/scripts.inc
@@ -1,6 +1,11 @@
BattleFrontier_ExchangeServiceCorner_MapScripts::
.byte 0
+.macro setitemandprice item:req, price:req
+ setvar VAR_0x8009, \item
+ setvar VAR_0x8008, \price
+.endm
+
BattleFrontier_ExchangeServiceCorner_EventScript_ClerkWelcome::
msgbox BattleFrontier_ExchangeServiceCorner_Text_WelcomePleaseChoosePrize, MSGBOX_DEFAULT
special ShowBattlePointsWindow
@@ -95,85 +100,52 @@ BattleFrontier_ExchangeServiceCorner_EventScript_ChooseDecor1::
case MULTI_B_PRESSED, BattleFrontier_ExchangeServiceCorner_EventScript_ClerkGoodbye
end
-BattleFrontier_ExchangeServiceCorner_EventScript_KissPoster::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmKissPoster, MSGBOX_YESNO
+BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseDecor1::
+ bufferdecorationname STR_VAR_1, VAR_0x8009
+ msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmPurchase, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseDecor1
- setvar VAR_0x8008, 16
- setvar VAR_0x8009, DECOR_KISS_POSTER
goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
end
+BattleFrontier_ExchangeServiceCorner_EventScript_KissPoster::
+ setitemandprice DECOR_KISS_POSTER, 16
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseDecor1
+
BattleFrontier_ExchangeServiceCorner_EventScript_KissCushion::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmKissCushion, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseDecor1
- setvar VAR_0x8008, 32
- setvar VAR_0x8009, DECOR_KISS_CUSHION
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice DECOR_KISS_CUSHION, 32
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseDecor1
BattleFrontier_ExchangeServiceCorner_EventScript_SmoochumDoll::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmSmoochumDoll, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseDecor1
- setvar VAR_0x8008, 32
- setvar VAR_0x8009, DECOR_SMOOCHUM_DOLL
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice DECOR_SMOOCHUM_DOLL, 32
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseDecor1
BattleFrontier_ExchangeServiceCorner_EventScript_TogepiDoll::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmTogepiDoll, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseDecor1
- setvar VAR_0x8008, 48
- setvar VAR_0x8009, DECOR_TOGEPI_DOLL
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice DECOR_TOGEPI_DOLL, 48
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseDecor1
BattleFrontier_ExchangeServiceCorner_EventScript_MeowthDoll::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmMeowthDoll, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseDecor1
- setvar VAR_0x8008, 48
- setvar VAR_0x8009, DECOR_MEOWTH_DOLL
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice DECOR_MEOWTH_DOLL, 48
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseDecor1
BattleFrontier_ExchangeServiceCorner_EventScript_ClefairyDoll::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmClefairyDoll, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseDecor1
- setvar VAR_0x8008, 48
- setvar VAR_0x8009, DECOR_CLEFAIRY_DOLL
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice DECOR_CLEFAIRY_DOLL, 48
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseDecor1
BattleFrontier_ExchangeServiceCorner_EventScript_DittoDoll::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmDittoDoll, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseDecor1
- setvar VAR_0x8008, 48
- setvar VAR_0x8009, DECOR_DITTO_DOLL
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice DECOR_DITTO_DOLL, 48
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseDecor1
BattleFrontier_ExchangeServiceCorner_EventScript_CyndaquilDoll::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmCyndaquilDoll, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseDecor1
- setvar VAR_0x8008, 80
- setvar VAR_0x8009, DECOR_CYNDAQUIL_DOLL
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice DECOR_CYNDAQUIL_DOLL, 80
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseDecor1
BattleFrontier_ExchangeServiceCorner_EventScript_ChikoritaDoll::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmChikoritaDoll, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseDecor1
- setvar VAR_0x8008, 80
- setvar VAR_0x8009, DECOR_CHIKORITA_DOLL
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice DECOR_CHIKORITA_DOLL, 80
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseDecor1
BattleFrontier_ExchangeServiceCorner_EventScript_TotodileDoll::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmTotodileDoll, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseDecor1
- setvar VAR_0x8008, 80
- setvar VAR_0x8009, DECOR_TOTODILE_DOLL
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice DECOR_TOTODILE_DOLL, 80
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseDecor1
BattleFrontier_ExchangeServiceCorner_EventScript_DecorClerk2::
lock
@@ -199,45 +171,32 @@ BattleFrontier_ExchangeServiceCorner_EventScript_ChooseDecor2::
case MULTI_B_PRESSED, BattleFrontier_ExchangeServiceCorner_EventScript_ClerkGoodbye
end
-BattleFrontier_ExchangeServiceCorner_EventScript_LaprasDoll::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmLaprasDoll, MSGBOX_YESNO
+BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseDecor2::
+ bufferdecorationname STR_VAR_1, VAR_0x8009
+ msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmPurchase, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseDecor2
- setvar VAR_0x8008, 128
- setvar VAR_0x8009, DECOR_LAPRAS_DOLL
goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
end
+BattleFrontier_ExchangeServiceCorner_EventScript_LaprasDoll::
+ setitemandprice DECOR_LAPRAS_DOLL, 128
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseDecor2
+
BattleFrontier_ExchangeServiceCorner_EventScript_SnorlaxDoll::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmSnorlaxDoll, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseDecor2
- setvar VAR_0x8008, 128
- setvar VAR_0x8009, DECOR_SNORLAX_DOLL
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice DECOR_SNORLAX_DOLL, 128
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseDecor2
BattleFrontier_ExchangeServiceCorner_EventScript_VenusaurDoll::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmVenusaurDoll, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseDecor2
- setvar VAR_0x8008, 256
- setvar VAR_0x8009, DECOR_VENUSAUR_DOLL
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice DECOR_VENUSAUR_DOLL, 256
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseDecor2
BattleFrontier_ExchangeServiceCorner_EventScript_CharizardDoll::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmCharizardDoll, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseDecor2
- setvar VAR_0x8008, 256
- setvar VAR_0x8009, DECOR_CHARIZARD_DOLL
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice DECOR_CHARIZARD_DOLL, 256
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseDecor2
BattleFrontier_ExchangeServiceCorner_EventScript_BlastoiseDoll::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmBlastoiseDoll, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseDecor2
- setvar VAR_0x8008, 256
- setvar VAR_0x8009, DECOR_BLASTOISE_DOLL
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice DECOR_BLASTOISE_DOLL, 256
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseDecor2
BattleFrontier_ExchangeServiceCorner_EventScript_VitaminClerk::
lock
@@ -264,53 +223,37 @@ BattleFrontier_ExchangeServiceCorner_EventScript_ChooseVitamin::
case MULTI_B_PRESSED, BattleFrontier_ExchangeServiceCorner_EventScript_ClerkGoodbye
end
-BattleFrontier_ExchangeServiceCorner_EventScript_Protein::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmProtein, MSGBOX_YESNO
+BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseVitamin::
+ bufferitemname STR_VAR_1, VAR_0x8009
+ msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmPurchase, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseVitamin
- setvar VAR_0x8008, 1
- setvar VAR_0x8009, ITEM_PROTEIN
goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
end
+BattleFrontier_ExchangeServiceCorner_EventScript_Protein::
+ setitemandprice ITEM_PROTEIN, 1
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseVitamin
+
BattleFrontier_ExchangeServiceCorner_EventScript_Calcium::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmCalcium, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseVitamin
- setvar VAR_0x8008, 1
- setvar VAR_0x8009, ITEM_CALCIUM
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice ITEM_CALCIUM, 1
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseVitamin
BattleFrontier_ExchangeServiceCorner_EventScript_Iron::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmIron, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseVitamin
- setvar VAR_0x8008, 1
- setvar VAR_0x8009, ITEM_IRON
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice ITEM_IRON, 1
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseVitamin
BattleFrontier_ExchangeServiceCorner_EventScript_Zinc::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmZinc, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseVitamin
- setvar VAR_0x8008, 1
- setvar VAR_0x8009, ITEM_ZINC
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice ITEM_ZINC, 1
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseVitamin
BattleFrontier_ExchangeServiceCorner_EventScript_Carbos::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmCarbos, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseVitamin
- setvar VAR_0x8008, 1
- setvar VAR_0x8009, ITEM_CARBOS
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice ITEM_CARBOS, 1
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseVitamin
BattleFrontier_ExchangeServiceCorner_EventScript_HPUp::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmHPUp, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseVitamin
- setvar VAR_0x8008, 1
- setvar VAR_0x8009, ITEM_HP_UP
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice ITEM_HP_UP, 1
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseVitamin
+
BattleFrontier_ExchangeServiceCorner_EventScript_HoldItemClerk::
lock
@@ -340,77 +283,48 @@ BattleFrontier_ExchangeServiceCorner_EventScript_ChooseHoldItem::
case MULTI_B_PRESSED, BattleFrontier_ExchangeServiceCorner_EventScript_ClerkGoodbye
end
-BattleFrontier_ExchangeServiceCorner_EventScript_Leftovers::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmLeftovers, MSGBOX_YESNO
+BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseHoldItem::
+ bufferitemname STR_VAR_1, VAR_0x8009
+ msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmPurchase, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseHoldItem
- setvar VAR_0x8008, 48
- setvar VAR_0x8009, ITEM_LEFTOVERS
goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
end
+BattleFrontier_ExchangeServiceCorner_EventScript_Leftovers::
+ setitemandprice ITEM_LEFTOVERS, 48
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseHoldItem
+
BattleFrontier_ExchangeServiceCorner_EventScript_WhiteHerb::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmWhiteHerb, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseHoldItem
- setvar VAR_0x8008, 48
- setvar VAR_0x8009, ITEM_WHITE_HERB
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice ITEM_WHITE_HERB, 48
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseHoldItem
BattleFrontier_ExchangeServiceCorner_EventScript_QuickClaw::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmQuickClaw, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseHoldItem
- setvar VAR_0x8008, 48
- setvar VAR_0x8009, ITEM_QUICK_CLAW
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice ITEM_QUICK_CLAW, 48
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseHoldItem
BattleFrontier_ExchangeServiceCorner_EventScript_MentalHerb::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmMentalHerb, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseHoldItem
- setvar VAR_0x8008, 48
- setvar VAR_0x8009, ITEM_MENTAL_HERB
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice ITEM_MENTAL_HERB, 48
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseHoldItem
BattleFrontier_ExchangeServiceCorner_EventScript_Brightpowder::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmBrightpowder, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseHoldItem
- setvar VAR_0x8008, 64
- setvar VAR_0x8009, ITEM_BRIGHT_POWDER
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice ITEM_BRIGHT_POWDER, 64
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseHoldItem
BattleFrontier_ExchangeServiceCorner_EventScript_ChoiceBand::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmChoiceBand, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseHoldItem
- setvar VAR_0x8008, 64
- setvar VAR_0x8009, ITEM_CHOICE_BAND
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice ITEM_CHOICE_BAND, 64
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseHoldItem
BattleFrontier_ExchangeServiceCorner_EventScript_KingsRock::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmKingsRock, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseHoldItem
- setvar VAR_0x8008, 64
- setvar VAR_0x8009, ITEM_KINGS_ROCK
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice ITEM_KINGS_ROCK, 64
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseHoldItem
BattleFrontier_ExchangeServiceCorner_EventScript_FocusBand::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmFocusBand, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseHoldItem
- setvar VAR_0x8008, 64
- setvar VAR_0x8009, ITEM_FOCUS_BAND
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice ITEM_FOCUS_BAND, 64
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseHoldItem
BattleFrontier_ExchangeServiceCorner_EventScript_ScopeLens::
- msgbox BattleFrontier_ExchangeServiceCorner_Text_ConfirmScopeLens, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_ExchangeServiceCorner_EventScript_ChooseHoldItem
- setvar VAR_0x8008, 64
- setvar VAR_0x8009, ITEM_SCOPE_LENS
- goto BattleFrontier_ExchangeServiceCorner_EventScript_TryPurchasePrize
- end
+ setitemandprice ITEM_SCOPE_LENS, 64
+ goto BattleFrontier_ExchangeServiceCorner_EventScript_PurchaseHoldItem
BattleFrontier_ExchangeServiceCorner_EventScript_Man::
msgbox BattleFrontier_ExchangeServiceCorner_Text_GoGetYourOwnDoll, MSGBOX_NPC
@@ -445,124 +359,8 @@ BattleFrontier_ExchangeServiceCorner_Text_WelcomePleaseChoosePrize:
BattleFrontier_ExchangeServiceCorner_Text_PleaseChoosePrize:
.string "Please choose a prize from this list.$"
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmKissPoster:
- .string "You've chosen the KISS POSTER.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmKissCushion:
- .string "You've chosen the KISS CUSHION.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmSmoochumDoll:
- .string "You've chosen the SMOOCHUM DOLL.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmTogepiDoll:
- .string "You've chosen the TOGEPI DOLL.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmMeowthDoll:
- .string "You've chosen the MEOWTH DOLL.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmClefairyDoll:
- .string "You've chosen the CLEFAIRY DOLL.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmDittoDoll:
- .string "You've chosen the DITTO DOLL.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmCyndaquilDoll:
- .string "You've chosen the CYNDAQUIL DOLL.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmChikoritaDoll:
- .string "You've chosen the CHIKORITA DOLL.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmTotodileDoll:
- .string "You've chosen the TOTODILE DOLL.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmLaprasDoll:
- .string "You've chosen the LAPRAS DOLL.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmSnorlaxDoll:
- .string "You've chosen the SNORLAX DOLL.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmVenusaurDoll:
- .string "You've chosen the VENUSAUR DOLL.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmCharizardDoll:
- .string "You've chosen the CHARIZARD DOLL.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmBlastoiseDoll:
- .string "You've chosen the BLASTOISE DOLL.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmProtein:
- .string "You've chosen the PROTEIN.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmCalcium:
- .string "You've chosen the CALCIUM.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmIron:
- .string "You've chosen the IRON.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmZinc:
- .string "You've chosen the ZINC.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmCarbos:
- .string "You've chosen the CARBOS.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmHPUp:
- .string "You've chosen the HP UP.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmBrightpowder:
- .string "You've chosen the BRIGHTPOWDER.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmWhiteHerb:
- .string "You've chosen the WHITE HERB.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmQuickClaw:
- .string "You've chosen the QUICK CLAW.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmMentalHerb:
- .string "You've chosen the MENTAL HERB.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmChoiceBand:
- .string "You've chosen the CHOICE BAND.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmKingsRock:
- .string "You've chosen the KING'S ROCK.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmFocusBand:
- .string "You've chosen the FOCUS BAND.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmScopeLens:
- .string "You've chosen the SCOPE LENS.\n"
- .string "Is that correct?$"
-
-BattleFrontier_ExchangeServiceCorner_Text_ConfirmLeftovers:
- .string "You've chosen the LEFTOVERS.\n"
+BattleFrontier_ExchangeServiceCorner_Text_ConfirmPurchase:
+ .string "You've chosen the {STR_VAR_1}.\n"
.string "Is that correct?$"
BattleFrontier_ExchangeServiceCorner_Text_WellSendItToPC:
diff --git a/data/maps/BattleFrontier_Lounge1/scripts.inc b/data/maps/BattleFrontier_Lounge1/scripts.inc
index 6aca2b4ced78..e37139cfbd22 100644
--- a/data/maps/BattleFrontier_Lounge1/scripts.inc
+++ b/data/maps/BattleFrontier_Lounge1/scripts.inc
@@ -12,7 +12,7 @@ BattleFrontier_Lounge1_EventScript_Breeder::
end
BattleFrontier_Lounge1_EventScript_ChooseMonToShowBreeder::
- special ChoosePartyMon
+ chooseboxmon
waitstate
goto_if_ne VAR_0x8004, PARTY_NOTHING_CHOSEN, BattleFrontier_Lounge1_EventScript_ShowMonToBreeder
goto_if_eq VAR_0x8004, PARTY_NOTHING_CHOSEN, BattleFrontier_Lounge1_EventScript_CancelMonSelect
diff --git a/data/maps/BattleFrontier_Lounge5/scripts.inc b/data/maps/BattleFrontier_Lounge5/scripts.inc
index 7dc4251fcc01..71839832608d 100644
--- a/data/maps/BattleFrontier_Lounge5/scripts.inc
+++ b/data/maps/BattleFrontier_Lounge5/scripts.inc
@@ -6,7 +6,7 @@ BattleFrontier_Lounge5_EventScript_NatureGirl::
faceplayer
msgbox BattleFrontier_Lounge5_Text_NatureGirlGreeting, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, BattleFrontier_Lounge5_EventScript_NatureGirlNoneShown
- special ChoosePartyMon
+ chooseboxmon
waitstate
lock
faceplayer
diff --git a/data/maps/BattleFrontier_Lounge6/scripts.inc b/data/maps/BattleFrontier_Lounge6/scripts.inc
index 0b01b32e3e22..df8787918c54 100644
--- a/data/maps/BattleFrontier_Lounge6/scripts.inc
+++ b/data/maps/BattleFrontier_Lounge6/scripts.inc
@@ -5,26 +5,7 @@ BattleFrontier_Lounge6_EventScript_Trader::
lock
faceplayer
goto_if_set FLAG_BATTLE_FRONTIER_TRADE_DONE, BattleFrontier_Lounge6_EventScript_TradeCompleted
- setvar VAR_0x8008, INGAME_TRADE_MEOWTH
- copyvar VAR_0x8004, VAR_0x8008
- specialvar VAR_RESULT, GetInGameTradeSpeciesInfo
- copyvar VAR_0x8009, VAR_RESULT
- msgbox BattleFrontier_Lounge6_Text_WouldYouLikeToTrade, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, BattleFrontier_Lounge6_EventScript_DeclineTrade
- special ChoosePartyMon
- waitstate
- copyvar VAR_0x800A, VAR_0x8004
- goto_if_eq VAR_0x8004, PARTY_NOTHING_CHOSEN, BattleFrontier_Lounge6_EventScript_DeclineTrade
- copyvar VAR_0x8005, VAR_0x800A
- specialvar VAR_RESULT, GetTradeSpecies
- copyvar VAR_0x800B, VAR_RESULT
- goto_if_ne VAR_RESULT, VAR_0x8009, BattleFrontier_Lounge6_EventScript_NotRequestedMon
- copyvar VAR_0x8004, VAR_0x8008
- copyvar VAR_0x8005, VAR_0x800A
- special CreateInGameTradePokemon
- special DoInGameTradeScene
- waitstate
- msgbox BattleFrontier_Lounge6_Text_PromiseIllBeGoodToIt, MSGBOX_DEFAULT
+ ingame_trade INGAME_TRADE_MEOWTH, BattleFrontier_Lounge6_Text_WouldYouLikeToTrade, BattleFrontier_Lounge6_EventScript_DeclineTrade, BattleFrontier_Lounge6_EventScript_NotRequestedMon, BattleFrontier_Lounge6_Text_PromiseIllBeGoodToIt
setflag FLAG_BATTLE_FRONTIER_TRADE_DONE
release
end
diff --git a/data/maps/BattleFrontier_Lounge7/scripts.inc b/data/maps/BattleFrontier_Lounge7/scripts.inc
index 3ff8005e1dd7..22d75d579e8d 100644
--- a/data/maps/BattleFrontier_Lounge7/scripts.inc
+++ b/data/maps/BattleFrontier_Lounge7/scripts.inc
@@ -1,6 +1,7 @@
BattleFrontier_Lounge7_MapScripts::
.byte 0
+@special ChooseMonForMoveTutor
BattleFrontier_Lounge7_EventScript_LeftMoveTutor::
lock
faceplayer
@@ -276,12 +277,13 @@ BattleFrontier_Lounge7_EventScript_ConfirmMoveSelection::
goto BattleFrontier_Lounge7_EventScript_ChooseNewMove
end
+
BattleFrontier_Lounge7_EventScript_TeachTutorMove::
msgbox BattleFrontier_Lounge7_Text_TeachMoveToWhichMon, MSGBOX_DEFAULT
fadescreen FADE_TO_BLACK
special CloseBattlePointsWindow
special CloseBattleFrontierTutorWindow
- special ChooseMonForMoveTutor
+ chooseboxmon SELECT_PC_MON_MOVE_TUTOR
waitstate
goto_if_eq VAR_RESULT, FALSE, BattleFrontier_Lounge7_EventScript_CancelChooseMon
msgbox BattleFrontier_Lounge7_Text_IllTakeBattlePoints, MSGBOX_DEFAULT
diff --git a/data/maps/BirthIsland_Exterior_Frlg/map.json b/data/maps/BirthIsland_Exterior_Frlg/map.json
new file mode 100644
index 000000000000..22a80d140830
--- /dev/null
+++ b/data/maps/BirthIsland_Exterior_Frlg/map.json
@@ -0,0 +1,65 @@
+{
+ "id": "MAP_BIRTH_ISLAND_EXTERIOR_FRLG",
+ "name": "BirthIsland_Exterior_Frlg",
+ "layout": "LAYOUT_BIRTH_ISLAND_EXTERIOR_FRLG",
+ "music": "MUS_NONE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_BIRTH_ISLAND_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "local_id": "LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_METEORITE",
+ "x": 15,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "BirthIsland_Exterior_Frlg_EventScript_Triangle",
+ "flag": "FLAG_HIDE_BIRTH_ISLAND_METEORITE"
+ },
+ {
+ "local_id": "LOCALID_BIRTH_ISLAND_DEOXYS",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_0",
+ "x": 15,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_DEOXYS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 15,
+ "y": 24,
+ "elevation": 3,
+ "dest_map": "MAP_BIRTH_ISLAND_HARBOR_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/BirthIsland_Exterior_Frlg/scripts.inc b/data/maps/BirthIsland_Exterior_Frlg/scripts.inc
new file mode 100644
index 000000000000..88979724f48c
--- /dev/null
+++ b/data/maps/BirthIsland_Exterior_Frlg/scripts.inc
@@ -0,0 +1,113 @@
+BirthIsland_Exterior_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, BirthIsland_Exterior_Frlg_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, BirthIsland_Exterior_Frlg_OnResume
+ map_script MAP_SCRIPT_ON_RETURN_TO_FIELD, BirthIsland_Exterior_Frlg_OnReturnToField
+ .byte 0
+
+BirthIsland_Exterior_Frlg_OnReturnToField::
+ special SetDeoxysRockPalette
+ end
+
+BirthIsland_Exterior_Frlg_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_BIRTH_ISLAND_EXTERIOR
+ setvar VAR_OBJ_GFX_ID_0, OBJ_EVENT_GFX_DEOXYS_N
+ setvar VAR_DEOXYS_INTERACTION_STEP_COUNTER, 0
+ setvar VAR_DEOXYS_INTERACTION_NUM, 0
+ call_if_set FLAG_FOUGHT_DEOXYS, BirthIsland_Exterior_Frlg_EventScript_HideDeoxysAndPuzzle
+ call_if_unset FLAG_FOUGHT_DEOXYS, BirthIsland_Exterior_Frlg_EventScript_TryShowDeoxysPuzzle
+ end
+
+BirthIsland_Exterior_Frlg_EventScript_HideDeoxysAndPuzzle::
+ setflag FLAG_HIDE_DEOXYS
+ setflag FLAG_HIDE_BIRTH_ISLAND_METEORITE
+ return
+
+BirthIsland_Exterior_Frlg_EventScript_TryShowDeoxysPuzzle::
+ goto_if_set FLAG_DEOXYS_FLEW_AWAY, Common_EventScript_NopReturn
+ clearflag FLAG_HIDE_BIRTH_ISLAND_METEORITE
+ clearflag FLAG_DEOXYS_ROCK_COMPLETE
+ return
+
+BirthIsland_Exterior_Frlg_OnResume::
+ call_if_set FLAG_SYS_CTRL_OBJ_DELETE, BirthIsland_Exterior_Frlg_EventScript_TryRemoveDeoxys
+ end
+
+BirthIsland_Exterior_Frlg_EventScript_TryRemoveDeoxys::
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_ne VAR_RESULT, B_OUTCOME_CAUGHT, Common_EventScript_NopReturn
+ removeobject LOCALID_BIRTH_ISLAND_DEOXYS
+ return
+
+BirthIsland_Exterior_Frlg_EventScript_Triangle::
+ lock
+ faceplayer
+ special DoDeoxysRockInteraction
+ waitstate
+ switch VAR_RESULT
+ case 0, BirthIsland_Exterior_EventScript_NotSolved1
+ case 1, BirthIsland_Exterior_EventScript_NotSolved2
+ case 2, BirthIsland_Exterior_Frlg_EventScript_Deoxys
+ case 3, BirthIsland_Exterior_EventScript_NotSolved3
+ end
+
+BirthIsland_Exterior_EventScript_NotSolved1::
+ release
+ end
+
+BirthIsland_Exterior_EventScript_NotSolved2::
+ release
+ end
+
+BirthIsland_Exterior_EventScript_NotSolved3::
+ release
+ end
+
+BirthIsland_Exterior_Frlg_EventScript_Deoxys::
+ addobject LOCALID_BIRTH_ISLAND_DEOXYS
+ waitse
+ setfieldeffectargument 0, LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK
+ setfieldeffectargument 1, MAP_NUM(MAP_BIRTH_ISLAND_EXTERIOR_FRLG)
+ setfieldeffectargument 2, MAP_GROUP(MAP_BIRTH_ISLAND_EXTERIOR_FRLG)
+ dofieldeffect FLDEFF_DESTROY_DEOXYS_ROCK
+ playbgm MUS_RG_ENCOUNTER_DEOXYS, 0
+ waitfieldeffect FLDEFF_DESTROY_DEOXYS_ROCK
+ applymovement LOCALID_BIRTH_ISLAND_DEOXYS, Movement_DeoxysApproach
+ waitmovement 0
+ waitse
+ playmoncry SPECIES_DEOXYS, CRY_MODE_ENCOUNTER
+ delay 40
+ waitmoncry
+ setvar VAR_LAST_TALKED, LOCALID_BIRTH_ISLAND_DEOXYS
+ seteventmon SPECIES_DEOXYS, 30
+ setflag FLAG_SYS_CTRL_OBJ_DELETE
+ special BattleSetup_StartLegendaryBattle
+ waitstate
+ clearflag FLAG_SYS_CTRL_OBJ_DELETE
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_eq VAR_RESULT, B_OUTCOME_WON, BirthIsland_Exterior_Frlg_EventScript_DefeatedDeoxys
+ goto_if_eq VAR_RESULT, B_OUTCOME_RAN, BirthIsland_Exterior_Frlg_EventScript_RanFromDeoxys
+ goto_if_eq VAR_RESULT, B_OUTCOME_PLAYER_TELEPORTED, BirthIsland_Exterior_Frlg_EventScript_RanFromDeoxys
+ setflag FLAG_FOUGHT_DEOXYS
+ release
+ end
+
+BirthIsland_Exterior_Frlg_EventScript_DefeatedDeoxys::
+ setflag FLAG_DEOXYS_FLEW_AWAY
+ setvar VAR_0x8004, SPECIES_DEOXYS
+ goto EventScript_MonFlewAway
+ end
+
+BirthIsland_Exterior_Frlg_EventScript_RanFromDeoxys::
+ setvar VAR_0x8004, SPECIES_DEOXYS
+ goto EventScript_MonFlewAway
+ end
+
+Movement_DeoxysApproach:
+ walk_slow_down
+ walk_slow_down
+ walk_slow_down
+ walk_slow_down
+ walk_slow_down
+ walk_slow_down
+ walk_slow_down
+ step_end
diff --git a/data/maps/BirthIsland_Harbor_Frlg/map.json b/data/maps/BirthIsland_Harbor_Frlg/map.json
new file mode 100644
index 000000000000..3ac3e0cb15ff
--- /dev/null
+++ b/data/maps/BirthIsland_Harbor_Frlg/map.json
@@ -0,0 +1,63 @@
+{
+ "id": "MAP_BIRTH_ISLAND_HARBOR_FRLG",
+ "name": "BirthIsland_Harbor_Frlg",
+ "layout": "LAYOUT_ISLAND_HARBOR_FRLG",
+ "music": "MUS_NONE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_BIRTH_ISLAND_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SEAGALLOP",
+ "x": 8,
+ "y": 9,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 8,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "BirthIsland_Harbor_EventScript_Sailor_Frlg",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_BIRTH_ISLAND_EXTERIOR_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/BirthIsland_Harbor_Frlg/scripts.inc b/data/maps/BirthIsland_Harbor_Frlg/scripts.inc
new file mode 100644
index 000000000000..327229815cb8
--- /dev/null
+++ b/data/maps/BirthIsland_Harbor_Frlg/scripts.inc
@@ -0,0 +1,15 @@
+BirthIsland_Harbor_Frlg_MapScripts::
+ .byte 0
+
+BirthIsland_Harbor_EventScript_Sailor_Frlg::
+ lock
+ faceplayer
+ message Text_WhereDoYouWantToSail
+ waitmessage
+ setvar VAR_0x8004, SEAGALLOP_BIRTH_ISLAND
+ multichoice 20, 8, MULTI_SEAGALLOP_VERMILION, FALSE
+ switch VAR_RESULT
+ case 0, EventScript_SailToVermilionCity
+ case 1, EventScript_CancelSail
+ case 127, EventScript_CancelSail
+ end
diff --git a/data/maps/CeladonCity_Condominiums_1F_Frlg/map.json b/data/maps/CeladonCity_Condominiums_1F_Frlg/map.json
new file mode 100644
index 000000000000..14317a8c520c
--- /dev/null
+++ b/data/maps/CeladonCity_Condominiums_1F_Frlg/map.json
@@ -0,0 +1,139 @@
+{
+ "id": "MAP_CELADON_CITY_CONDOMINIUMS_1F",
+ "name": "CeladonCity_Condominiums_1F_Frlg",
+ "layout": "LAYOUT_CELADON_CITY_CONDOMINIUMS_1F",
+ "music": "MUS_RG_CELADON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MEOWTH",
+ "x": 1,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Condominiums_1F_EventScript_Meowth",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLEFAIRY",
+ "x": 5,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Condominiums_1F_EventScript_Clefairy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NIDORAN_F",
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Condominiums_1F_EventScript_Nidoran",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_WOMAN_FRLG",
+ "x": 2,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Condominiums_1F_EventScript_TeaWoman",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 19,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 12,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 13,
+ "y": 19,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_2F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 12,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_2F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 2,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "11"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_Condominiums_1F_EventScript_SuiteSign"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_Condominiums_1F_EventScript_SuiteSign"
+ }
+ ]
+}
diff --git a/data/maps/CeladonCity_Condominiums_1F_Frlg/scripts.inc b/data/maps/CeladonCity_Condominiums_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..0646dcedd988
--- /dev/null
+++ b/data/maps/CeladonCity_Condominiums_1F_Frlg/scripts.inc
@@ -0,0 +1,100 @@
+CeladonCity_Condominiums_1F_Frlg_MapScripts::
+ .byte 0
+
+CeladonCity_Condominiums_1F_EventScript_TeaWoman::
+ lock
+ faceplayer
+ goto_if_set FLAG_TALKED_TO_TEA_LADY_AFTER_HOF, CeladonCity_Condominiums_1F_EventScript_TeaWomanAfterTea
+ goto_if_set FLAG_SYS_GAME_CLEAR, CeladonCity_Condominiums_1F_EventScript_TeaWomanMentionDaisy
+ goto_if_set FLAG_GOT_TEA, CeladonCity_Condominiums_1F_EventScript_TeaWomanAfterTea
+ msgbox CeladonCity_Condominiums_1F_Text_TryThisDrinkInstead
+ setflag FLAG_GOT_TEA
+ giveitem ITEM_TEA
+ goto_if_eq VAR_RESULT, FALSE, EventScript_BagIsFull
+ msgbox CeladonCity_Condominiums_1F_Text_NothingBeatsThirstLikeTea
+ release
+ end
+
+CeladonCity_Condominiums_1F_EventScript_TeaWomanAfterTea::
+ msgbox CeladonCity_Condominiums_1F_Text_MyDearMonsKeepMeCompany
+ release
+ end
+
+CeladonCity_Condominiums_1F_EventScript_TeaWomanMentionDaisy::
+ famechecker FAMECHECKER_DAISY, 4
+ setflag FLAG_TALKED_TO_TEA_LADY_AFTER_HOF
+ msgbox CeladonCity_Condominiums_1F_Text_DaisyComesToBuyTea
+ release
+ end
+
+CeladonCity_Condominiums_1F_EventScript_Meowth::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_MEOWTH, CRY_MODE_NORMAL
+ msgbox CeladonCity_Condominiums_1F_Text_Meowth
+ waitmoncry
+ release
+ end
+
+CeladonCity_Condominiums_1F_EventScript_Clefairy::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_CLEFAIRY, CRY_MODE_NORMAL
+ msgbox CeladonCity_Condominiums_1F_Text_Clefairy
+ waitmoncry
+ release
+ end
+
+CeladonCity_Condominiums_1F_EventScript_Nidoran::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_NIDORAN_F, CRY_MODE_NORMAL
+ msgbox CeladonCity_Condominiums_1F_Text_Nidoran
+ waitmoncry
+ release
+ end
+
+CeladonCity_Condominiums_1F_EventScript_SuiteSign::
+ msgbox CeladonCity_Condominiums_1F_Text_ManagersSuite, MSGBOX_SIGN
+ end
+
+CeladonCity_Condominiums_1F_Text_Meowth::
+ .string "MEOWTH: Meow!$"
+
+CeladonCity_Condominiums_1F_Text_TryThisDrinkInstead::
+ .string "You shouldn't spend all your money\n"
+ .string "on drinks.\p"
+ .string "Try this instead.$"
+
+CeladonCity_Condominiums_1F_Text_NothingBeatsThirstLikeTea::
+ .string "Nothing beats thirst like some hot\n"
+ .string "TEA.\p"
+ .string "It really is the best.$"
+
+CeladonCity_Condominiums_1F_Text_MyDearMonsKeepMeCompany::
+ .string "My dear POKéMON keep me company.\n"
+ .string "MEOWTH even brings money home!$"
+
+CeladonCity_Condominiums_1F_Text_DaisyComesToBuyTea::
+ .string "Oh, hello, dearie.\n"
+ .string "Did you enjoy my TEA?\p"
+ .string "By the way, dear. Are you, by any\n"
+ .string "chance, from PALLET TOWN?\p"
+ .string "A girl from PALLET TOWN, DAISY,\n"
+ .string "she enjoys TEA every day.\p"
+ .string "She visits the CELADON DEPT. STORE\n"
+ .string "to buy some TEA.$"
+
+CeladonCity_Condominiums_1F_Text_Clefairy::
+ .string "CLEFAIRY: Pi pippippi!$"
+
+CeladonCity_Condominiums_1F_Text_Nidoran::
+ .string "NIDORAN♀: Kya kyaoo!$"
+
+CeladonCity_Condominiums_1F_Text_ManagersSuite::
+ .string "CELADON MANSION\n"
+ .string "Manager's Suite$"
+
diff --git a/data/maps/CeladonCity_Condominiums_2F_Frlg/map.json b/data/maps/CeladonCity_Condominiums_2F_Frlg/map.json
new file mode 100644
index 000000000000..dc47e1ba7ab6
--- /dev/null
+++ b/data/maps/CeladonCity_Condominiums_2F_Frlg/map.json
@@ -0,0 +1,97 @@
+{
+ "id": "MAP_CELADON_CITY_CONDOMINIUMS_2F",
+ "name": "CeladonCity_Condominiums_2F_Frlg",
+ "layout": "LAYOUT_CELADON_CITY_CONDOMINIUMS_2F",
+ "music": "MUS_RG_CELADON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 6,
+ "y": 6,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Condominiums_2F_EventScript_PokemonJournalErika",
+ "flag": "FLAG_HIDE_FAME_CHECKER_ERIKA_JOURNALS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 5,
+ "y": 6,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Condominiums_2F_EventScript_PokemonJournalErika",
+ "flag": "FLAG_HIDE_FAME_CHECKER_ERIKA_JOURNALS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_3F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 11,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_3F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 12,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_1F",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_Condominiums_2F_EventScript_MeetingRoomSign"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_Condominiums_2F_EventScript_MeetingRoomSign"
+ }
+ ]
+}
diff --git a/data/maps/CeladonCity_Condominiums_2F_Frlg/scripts.inc b/data/maps/CeladonCity_Condominiums_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..567b8fa772ef
--- /dev/null
+++ b/data/maps/CeladonCity_Condominiums_2F_Frlg/scripts.inc
@@ -0,0 +1,10 @@
+CeladonCity_Condominiums_2F_Frlg_MapScripts::
+ .byte 0
+
+CeladonCity_Condominiums_2F_EventScript_MeetingRoomSign::
+ msgbox CeladonCity_Condominiums_2F_Text_GameFreakMeetingRoom, MSGBOX_SIGN
+ end
+
+CeladonCity_Condominiums_2F_Text_GameFreakMeetingRoom::
+ .string "GAME FREAK Meeting Room$"
+
diff --git a/data/maps/CeladonCity_Condominiums_3F_Frlg/map.json b/data/maps/CeladonCity_Condominiums_3F_Frlg/map.json
new file mode 100644
index 000000000000..5c8a24f214d6
--- /dev/null
+++ b/data/maps/CeladonCity_Condominiums_3F_Frlg/map.json
@@ -0,0 +1,173 @@
+{
+ "id": "MAP_CELADON_CITY_CONDOMINIUMS_3F",
+ "name": "CeladonCity_Condominiums_3F_Frlg",
+ "layout": "LAYOUT_CELADON_CITY_CONDOMINIUMS_3F",
+ "music": "MUS_RG_CELADON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 0,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Condominiums_3F_EventScript_Programmer",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 3,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Condominiums_3F_EventScript_Designer",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SUPER_NERD",
+ "x": 4,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Condominiums_3F_EventScript_GraphicArtist",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FAT_MAN_FRLG",
+ "x": 0,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Condominiums_3F_EventScript_Writer",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_2F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_ROOF",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 12,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_ROOF",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 11,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_2F",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_Condominiums_3F_EventScript_DevelopmentRoomSign"
+ },
+ {
+ "type": "sign",
+ "x": 1,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CeladonCity_Condominiums_3F_EventScript_Computer1"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CeladonCity_Condominiums_3F_EventScript_Computer2"
+ },
+ {
+ "type": "sign",
+ "x": 1,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CeladonCity_Condominiums_3F_EventScript_Computer3"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_Condominiums_3F_EventScript_DevelopmentRoomSign"
+ },
+ {
+ "type": "sign",
+ "x": 0,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CeladonCity_Condominiums_3F_EventScript_Computer3"
+ },
+ {
+ "type": "sign",
+ "x": 0,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CeladonCity_Condominiums_3F_EventScript_Computer1"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CeladonCity_Condominiums_3F_EventScript_Computer2"
+ }
+ ]
+}
diff --git a/data/maps/CeladonCity_Condominiums_3F_Frlg/scripts.inc b/data/maps/CeladonCity_Condominiums_3F_Frlg/scripts.inc
new file mode 100644
index 000000000000..3705e7ad4172
--- /dev/null
+++ b/data/maps/CeladonCity_Condominiums_3F_Frlg/scripts.inc
@@ -0,0 +1,95 @@
+CeladonCity_Condominiums_3F_Frlg_MapScripts::
+ .byte 0
+
+CeladonCity_Condominiums_3F_EventScript_Programmer::
+ msgbox CeladonCity_Condominiums_3F_Text_ImTheProgrammer, MSGBOX_NPC
+ end
+
+CeladonCity_Condominiums_3F_EventScript_GraphicArtist::
+ msgbox CeladonCity_Condominiums_3F_Text_ImTheGraphicArtist, MSGBOX_NPC
+ end
+
+CeladonCity_Condominiums_3F_EventScript_Writer::
+ msgbox CeladonCity_Condominiums_3F_Text_IWroteTheStory, MSGBOX_NPC
+ end
+
+CeladonCity_Condominiums_3F_EventScript_Designer::
+ lock
+ faceplayer
+ specialvar VAR_RESULT, HasAllKantoMons
+ goto_if_eq VAR_RESULT, TRUE, CeladonCity_Condominiums_3F_EventScript_CompletedPokedex
+ msgbox CeladonCity_Condominiums_3F_Text_ImGameDesignerShowMeFinishedPokedex
+ release
+ end
+
+CeladonCity_Condominiums_3F_EventScript_CompletedPokedex::
+ goto CeladonCity_Condominiums_3F_EventScript_ShowDiploma
+ end
+
+CeladonCity_Condominiums_3F_EventScript_ShowDiploma::
+ message CeladonCity_Condominiums_3F_Text_CompletedPokedexCongratulations
+ waitmessage
+ delay 60
+ special Special_ShowDiploma
+ waitstate
+ release
+ end
+
+CeladonCity_Condominiums_3F_EventScript_DevelopmentRoomSign::
+ msgbox CeladonCity_Condominiums_3F_Text_GameFreakDevelopmentRoom, MSGBOX_SIGN
+ end
+
+CeladonCity_Condominiums_3F_EventScript_Computer1::
+ msgbox CeladonCity_Condominiums_3F_Text_ItsTheGameProgram, MSGBOX_SIGN
+ end
+
+CeladonCity_Condominiums_3F_EventScript_Computer2::
+ msgbox CeladonCity_Condominiums_3F_Text_SomeonesPlayingGame, MSGBOX_SIGN
+ end
+
+CeladonCity_Condominiums_3F_EventScript_Computer3::
+ msgbox CeladonCity_Condominiums_3F_Text_ItsScriptBetterNotLookAtEnding, MSGBOX_SIGN
+ end
+
+CeladonCity_Condominiums_3F_Text_ImTheProgrammer::
+ .string "Me?\n"
+ .string "I'm the programmer!$"
+
+CeladonCity_Condominiums_3F_Text_ImTheGraphicArtist::
+ .string "I'm the graphic artist!\n"
+ .string "I drew you!$"
+
+CeladonCity_Condominiums_3F_Text_IWroteTheStory::
+ .string "I wrote the story!\n"
+ .string "Isn't ERIKA cute?\p"
+ .string "I like MISTY a lot, too!\n"
+ .string "Oh, and SABRINA, I like her!$"
+
+CeladonCity_Condominiums_3F_Text_ImGameDesignerShowMeFinishedPokedex::
+ .string "Is that right?\p"
+ .string "I'm the game designer!\p"
+ .string "Filling up your POKéDEX is tough,\n"
+ .string "but don't quit!\p"
+ .string "When you finish, come tell me!$"
+
+CeladonCity_Condominiums_3F_Text_CompletedPokedexCongratulations::
+ .string "Wow! Excellent!\n"
+ .string "You completed your POKéDEX!\l"
+ .string "Congratulations!\l"
+ .string "…$"
+
+CeladonCity_Condominiums_3F_Text_ItsTheGameProgram::
+ .string "It's the game program! Messing with\n"
+ .string "it could bug out the game!$"
+
+CeladonCity_Condominiums_3F_Text_SomeonesPlayingGame::
+ .string "Someone's playing a game instead of\n"
+ .string "working!$"
+
+CeladonCity_Condominiums_3F_Text_ItsScriptBetterNotLookAtEnding::
+ .string "It's the script!\n"
+ .string "Better not look at the ending!$"
+
+CeladonCity_Condominiums_3F_Text_GameFreakDevelopmentRoom::
+ .string "GAME FREAK Development Room$"
+
diff --git a/data/maps/CeladonCity_Condominiums_RoofRoom_Frlg/map.json b/data/maps/CeladonCity_Condominiums_RoofRoom_Frlg/map.json
new file mode 100644
index 000000000000..3da82a1bfb86
--- /dev/null
+++ b/data/maps/CeladonCity_Condominiums_RoofRoom_Frlg/map.json
@@ -0,0 +1,99 @@
+{
+ "id": "MAP_CELADON_CITY_CONDOMINIUMS_ROOF_ROOM",
+ "name": "CeladonCity_Condominiums_RoofRoom_Frlg",
+ "layout": "LAYOUT_CELADON_CITY_CONDOMINIUMS_ROOF_ROOM",
+ "music": "MUS_RG_CELADON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 3,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Condominiums_RoofRoom_EventScript_BlackBelt",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_EEVEE_POKEBALL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 7,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Condominiums_RoofRoom_EventScript_EeveeBall",
+ "flag": "FLAG_HIDE_EEVEE_BALL"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 8,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_ROOF",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_ROOF",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_ROOF",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_Condominiums_RoofRoom_EventScript_Blackboard"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_Condominiums_RoofRoom_EventScript_Blackboard"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_Condominiums_RoofRoom_EventScript_TMsPamphlet"
+ }
+ ]
+}
diff --git a/data/maps/CeladonCity_Condominiums_RoofRoom_Frlg/scripts.inc b/data/maps/CeladonCity_Condominiums_RoofRoom_Frlg/scripts.inc
new file mode 100644
index 000000000000..4dd8cc24869a
--- /dev/null
+++ b/data/maps/CeladonCity_Condominiums_RoofRoom_Frlg/scripts.inc
@@ -0,0 +1,157 @@
+CeladonCity_Condominiums_RoofRoom_Frlg_MapScripts::
+ .byte 0
+
+CeladonCity_Condominiums_RoofRoom_EventScript_BlackBelt::
+ msgbox CeladonCity_Condominiums_RoofRoom_Text_TheresNothingIDontKnow, MSGBOX_NPC
+ end
+
+CeladonCity_Condominiums_RoofRoom_EventScript_EeveeBall::
+ lock
+ faceplayer
+ setvar VAR_TEMP_1, SPECIES_EEVEE
+ givemon SPECIES_EEVEE, 25
+ goto_if_eq VAR_RESULT, 0, CeladonCity_Condominiums_RoofRoom_EventScript_GetEeveeParty
+ goto_if_eq VAR_RESULT, 1, CeladonCity_Condominiums_RoofRoom_EventScript_GetEeveePC
+ goto_if_eq VAR_RESULT, 2, Common_EventScript_NoMoreRoomForPokemon
+ release
+ end
+
+CeladonCity_Condominiums_RoofRoom_EventScript_GetEeveeParty::
+ removeobject LOCALID_EEVEE_POKEBALL
+ playfanfare MUS_LEVEL_UP
+ message CeladonCity_Condominiums_RoofRoom_Text_ObtainedAnEevee
+ waitmessage
+ waitfanfare
+ bufferspeciesname STR_VAR_1, SPECIES_EEVEE
+ msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CeladonCity_Condominiums_RoofRoom_EventScript_SetGotEevee
+ call Common_EventScript_GetGiftMonPartySlot
+ call Common_EventScript_NameReceivedPartyMon
+ goto CeladonCity_Condominiums_RoofRoom_EventScript_SetGotEevee
+ end
+
+CeladonCity_Condominiums_RoofRoom_EventScript_GetEeveePC::
+ removeobject LOCALID_EEVEE_POKEBALL
+ playfanfare MUS_LEVEL_UP
+ message CeladonCity_Condominiums_RoofRoom_Text_ObtainedAnEevee
+ waitmessage
+ waitfanfare
+ bufferspeciesname STR_VAR_1, SPECIES_EEVEE
+ msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CeladonCity_Condominiums_RoofRoom_EventScript_TransferEeveeToPC
+ call Common_EventScript_NameReceivedBoxMon
+ goto CeladonCity_Condominiums_RoofRoom_EventScript_TransferEeveeToPC
+ end
+
+CeladonCity_Condominiums_RoofRoom_EventScript_TransferEeveeToPC::
+ call Common_EventScript_TransferredToPC
+ goto CeladonCity_Condominiums_RoofRoom_EventScript_SetGotEevee
+ end
+
+CeladonCity_Condominiums_RoofRoom_EventScript_SetGotEevee::
+ setflag FLAG_GOT_EEVEE
+ release
+ end
+
+CeladonCity_Condominiums_RoofRoom_EventScript_TMsPamphlet::
+ msgbox CeladonCity_Condominiums_RoofRoom_Text_PamphletOnTMs, MSGBOX_SIGN
+ end
+
+CeladonCity_Condominiums_RoofRoom_EventScript_Blackboard::
+ lockall
+ msgbox CeladonCity_Condominiums_RoofRoom_Text_WirelessAdapterLecture
+ message CeladonCity_Condominiums_RoofRoom_Text_ReadWhichHeading
+ waitmessage
+ setvar VAR_0x8004, 4
+ multichoice 0, 0, MULTI_LINKED_DIRECT_UNION, FALSE
+ switch VAR_RESULT
+ case 0, CeladonCity_Condominiums_RoofRoom_EventScript_WirelessClub
+ case 1, CeladonCity_Condominiums_RoofRoom_EventScript_DirectCorner
+ case 2, CeladonCity_Condominiums_RoofRoom_EventScript_UnionRoom
+ case 3, CeladonCity_Condominiums_RoofRoom_EventScript_ExitBlackboard
+ case 127, CeladonCity_Condominiums_RoofRoom_EventScript_ExitBlackboard
+ end
+
+CeladonCity_Condominiums_RoofRoom_EventScript_ReadAnotherHeading::
+ message CeladonCity_Condominiums_RoofRoom_Text_ReadWhichHeading
+ waitmessage
+ multichoice 0, 0, MULTI_LINKED_DIRECT_UNION, FALSE
+ switch VAR_RESULT
+ case 0, CeladonCity_Condominiums_RoofRoom_EventScript_WirelessClub
+ case 1, CeladonCity_Condominiums_RoofRoom_EventScript_DirectCorner
+ case 2, CeladonCity_Condominiums_RoofRoom_EventScript_UnionRoom
+ case 3, CeladonCity_Condominiums_RoofRoom_EventScript_ExitBlackboard
+ case 127, CeladonCity_Condominiums_RoofRoom_EventScript_ExitBlackboard
+ end
+
+CeladonCity_Condominiums_RoofRoom_EventScript_WirelessClub::
+ msgbox CeladonCity_Condominiums_RoofRoom_Text_ExplainWirelessClub
+ goto CeladonCity_Condominiums_RoofRoom_EventScript_ReadAnotherHeading
+ end
+
+CeladonCity_Condominiums_RoofRoom_EventScript_DirectCorner::
+ msgbox CeladonCity_Condominiums_RoofRoom_Text_ExplainDirectCorner
+ goto CeladonCity_Condominiums_RoofRoom_EventScript_ReadAnotherHeading
+ end
+
+CeladonCity_Condominiums_RoofRoom_EventScript_UnionRoom::
+ msgbox CeladonCity_Condominiums_RoofRoom_Text_ExplainUnionRoom
+ goto CeladonCity_Condominiums_RoofRoom_EventScript_ReadAnotherHeading
+ end
+
+CeladonCity_Condominiums_RoofRoom_EventScript_ExitBlackboard::
+ releaseall
+ end
+
+CeladonCity_Condominiums_RoofRoom_Text_TheresNothingIDontKnow::
+ .string "There is nothing that I don't know,\n"
+ .string "like I wrote on the blackboard.\p"
+ .string "I know about the world of POKéMON\n"
+ .string "in your GAME BOY ADVANCE!\p"
+ .string "Get together with your friends and\n"
+ .string "enjoy trading POKéMON!$"
+
+CeladonCity_Condominiums_RoofRoom_Text_ObtainedAnEevee::
+ .string "{PLAYER} obtained an EEVEE!$"
+
+CeladonCity_Condominiums_RoofRoom_Text_BoxIsFull::
+ .string "ポケモンが いっぱいだ\n"
+ .string "ボックスを かえて きなさい$"
+
+CeladonCity_Condominiums_RoofRoom_Text_WirelessAdapterLecture::
+ .string "POKéMON Lecture\p"
+ .string "Playing with the Wireless Adapter$"
+
+CeladonCity_Condominiums_RoofRoom_Text_ReadWhichHeading::
+ .string "Which heading do you want to read?$"
+
+CeladonCity_Condominiums_RoofRoom_Text_ExplainWirelessClub::
+ .string "The POKéMON WIRELESS CLUB is\n"
+ .string "upstairs at any POKéMON CENTER.\p"
+ .string "Visit one to link up with friend(s)\n"
+ .string "using your Wireless Adapter.$"
+
+CeladonCity_Condominiums_RoofRoom_Text_ExplainDirectCorner::
+ .string "To link only with a friend, go to\n"
+ .string "the DIRECT CORNER.\p"
+ .string "It is the right counter at the\n"
+ .string "POKéMON WIRELESS CLUB.\p"
+ .string "Go into the TRADE CORNER or the\n"
+ .string "COLOSSEUM with your friend.$"
+
+CeladonCity_Condominiums_RoofRoom_Text_ExplainUnionRoom::
+ .string "To link and communicate with\n"
+ .string "anyone, go to the UNION ROOM.\p"
+ .string "It is the left counter at the\n"
+ .string "POKéMON WIRELESS CLUB.\p"
+ .string "Go to the UNION ROOM and enjoy\n"
+ .string "meeting other TRAINERS.$"
+
+CeladonCity_Condominiums_RoofRoom_Text_PamphletOnTMs::
+ .string "It's a pamphlet on TMs.\p"
+ .string "… …\p"
+ .string "There are fifty TMs in all.\p"
+ .string "There are also seven HMs that\n"
+ .string "can be used repeatedly.\p"
+ .string "SILPH CO.$"
+
diff --git a/data/maps/CeladonCity_Condominiums_Roof_Frlg/map.json b/data/maps/CeladonCity_Condominiums_Roof_Frlg/map.json
new file mode 100644
index 000000000000..54edc480a006
--- /dev/null
+++ b/data/maps/CeladonCity_Condominiums_Roof_Frlg/map.json
@@ -0,0 +1,61 @@
+{
+ "id": "MAP_CELADON_CITY_CONDOMINIUMS_ROOF",
+ "name": "CeladonCity_Condominiums_Roof_Frlg",
+ "layout": "LAYOUT_CELADON_CITY_CONDOMINIUMS_ROOF",
+ "music": "MUS_RG_CELADON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_3F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_3F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 2,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_ROOF_ROOM",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_Condominiums_Roof_EventScript_Sign"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_Condominiums_Roof_EventScript_Sign"
+ }
+ ]
+}
diff --git a/data/maps/CeladonCity_Condominiums_Roof_Frlg/scripts.inc b/data/maps/CeladonCity_Condominiums_Roof_Frlg/scripts.inc
new file mode 100644
index 000000000000..d39c192b516f
--- /dev/null
+++ b/data/maps/CeladonCity_Condominiums_Roof_Frlg/scripts.inc
@@ -0,0 +1,10 @@
+CeladonCity_Condominiums_Roof_Frlg_MapScripts::
+ .byte 0
+
+CeladonCity_Condominiums_Roof_EventScript_Sign::
+ msgbox CeladonCity_Condominiums_Roof_Text_IKnowEverything, MSGBOX_SIGN
+ end
+
+CeladonCity_Condominiums_Roof_Text_IKnowEverything::
+ .string "I KNOW EVERYTHING!$"
+
diff --git a/data/maps/CeladonCity_DepartmentStore_1F_Frlg/map.json b/data/maps/CeladonCity_DepartmentStore_1F_Frlg/map.json
new file mode 100644
index 000000000000..2614530fbdc4
--- /dev/null
+++ b/data/maps/CeladonCity_DepartmentStore_1F_Frlg/map.json
@@ -0,0 +1,111 @@
+{
+ "id": "MAP_CELADON_CITY_DEPARTMENT_STORE_1F",
+ "name": "CeladonCity_DepartmentStore_1F_Frlg",
+ "layout": "LAYOUT_CELADON_CITY_DEPARTMENT_STORE_1F",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": true,
+ "floor_number": 1,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_F",
+ "x": 6,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_1F_EventScript_Receptionist",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 15,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 3,
+ "y": 15,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 9,
+ "y": 15,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 10,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 11,
+ "y": 15,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 6,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_DEPARTMENT_STORE_ELEVATOR",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_DEPARTMENT_STORE_2F",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_DepartmentStore_1F_EventScript_LayoutSign"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_DepartmentStore_1F_EventScript_FloorSign"
+ }
+ ]
+}
diff --git a/data/maps/CeladonCity_DepartmentStore_1F_Frlg/scripts.inc b/data/maps/CeladonCity_DepartmentStore_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..d1a8bed8fbe7
--- /dev/null
+++ b/data/maps/CeladonCity_DepartmentStore_1F_Frlg/scripts.inc
@@ -0,0 +1,32 @@
+CeladonCity_DepartmentStore_1F_Frlg_MapScripts::
+ .byte 0
+
+CeladonCity_DepartmentStore_1F_EventScript_Receptionist::
+ msgbox CeladonCity_DepartmentStore_1F_Text_WelcomeToDeptStore, MSGBOX_NPC
+ end
+
+CeladonCity_DepartmentStore_1F_EventScript_LayoutSign::
+ msgbox CeladonCity_DepartmentStore_1F_Text_FloorDescriptions, MSGBOX_SIGN
+ end
+
+CeladonCity_DepartmentStore_1F_EventScript_FloorSign::
+ msgbox CeladonCity_DepartmentStore_1F_Text_ServiceCounter, MSGBOX_SIGN
+ end
+
+CeladonCity_DepartmentStore_1F_Text_WelcomeToDeptStore::
+ .string "Hello!\n"
+ .string "Welcome to CELADON DEPT. STORE.\p"
+ .string "The board on the right describes\n"
+ .string "the store layout.$"
+
+CeladonCity_DepartmentStore_1F_Text_FloorDescriptions::
+ .string "1F: SERVICE COUNTER\p"
+ .string "2F: TRAINER'S MARKET\p"
+ .string "3F: TV GAME SHOP\p"
+ .string "4F: WISE MAN GIFTS\p"
+ .string "5F: DRUGSTORE\p"
+ .string "ROOFTOP SQUARE: VENDING MACHINES$"
+
+CeladonCity_DepartmentStore_1F_Text_ServiceCounter::
+ .string "1F: SERVICE COUNTER$"
+
diff --git a/data/maps/CeladonCity_DepartmentStore_2F_Frlg/map.json b/data/maps/CeladonCity_DepartmentStore_2F_Frlg/map.json
new file mode 100644
index 000000000000..80c8768194e5
--- /dev/null
+++ b/data/maps/CeladonCity_DepartmentStore_2F_Frlg/map.json
@@ -0,0 +1,110 @@
+{
+ "id": "MAP_CELADON_CITY_DEPARTMENT_STORE_2F",
+ "name": "CeladonCity_DepartmentStore_2F_Frlg",
+ "layout": "LAYOUT_CELADON_CITY_DEPARTMENT_STORE_2F",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": true,
+ "floor_number": 2,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 5,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_2F_EventScript_Lass",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 1,
+ "y": 8,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 3,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_2F_EventScript_ClerkItems",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 1,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 3,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_2F_EventScript_ClerkTMs",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 11,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_2F_EventScript_Woman",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_DEPARTMENT_STORE_ELEVATOR",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 3,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_DEPARTMENT_STORE_1F",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 9,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_DEPARTMENT_STORE_3F",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_DepartmentStore_2F_EventScript_FloorSign"
+ }
+ ]
+}
diff --git a/data/maps/CeladonCity_DepartmentStore_2F_Frlg/scripts.inc b/data/maps/CeladonCity_DepartmentStore_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..05657111352e
--- /dev/null
+++ b/data/maps/CeladonCity_DepartmentStore_2F_Frlg/scripts.inc
@@ -0,0 +1,81 @@
+CeladonCity_DepartmentStore_2F_Frlg_MapScripts::
+ .byte 0
+
+CeladonCity_DepartmentStore_2F_EventScript_UnusedNPC::
+ msgbox CeladonCity_DepartmentStore_2F_Text_SuperRepelMorePowerfulRepel, MSGBOX_NPC
+ end
+
+CeladonCity_DepartmentStore_2F_EventScript_Lass::
+ msgbox CeladonCity_DepartmentStore_2F_Text_BuyReviveForLongOutings, MSGBOX_NPC
+ end
+
+CeladonCity_DepartmentStore_2F_EventScript_FloorSign::
+ msgbox CeladonCity_DepartmentStore_2F_Text_FloorSign, MSGBOX_SIGN
+ end
+
+CeladonCity_DepartmentStore_2F_EventScript_ClerkItems::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart CeladonCity_DepartmentStore_2F_Items
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+CeladonCity_DepartmentStore_2F_Items::
+ .2byte ITEM_GREAT_BALL
+ .2byte ITEM_SUPER_POTION
+ .2byte ITEM_REVIVE
+ .2byte ITEM_ANTIDOTE
+ .2byte ITEM_PARALYZE_HEAL
+ .2byte ITEM_AWAKENING
+ .2byte ITEM_BURN_HEAL
+ .2byte ITEM_ICE_HEAL
+ .2byte ITEM_SUPER_REPEL
+ .2byte ITEM_NONE
+ release
+ end
+
+CeladonCity_DepartmentStore_2F_EventScript_ClerkTMs::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart CeladonCity_DepartmentStore_2F_TMs
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+CeladonCity_DepartmentStore_2F_TMs::
+ .2byte ITEM_TM05
+ .2byte ITEM_TM15
+ .2byte ITEM_TM28
+ .2byte ITEM_TM31
+ .2byte ITEM_TM43
+ .2byte ITEM_TM45
+ .2byte ITEM_NONE
+ release
+ end
+
+CeladonCity_DepartmentStore_2F_Text_SuperRepelMorePowerfulRepel::
+ .string "SUPER REPEL keeps weak POKéMON at\n"
+ .string "bay…\p"
+ .string "Hmm, it's a more powerful REPEL.$"
+
+CeladonCity_DepartmentStore_2F_Text_BuyReviveForLongOutings::
+ .string "For long outings, you should buy\n"
+ .string "REVIVE.$"
+
+CeladonCity_DepartmentStore_2F_Text_FloorSign::
+ .string "Top-Grade Items for TRAINERS!\p"
+ .string "2F: TRAINER'S MARKET$"
+
+CeladonCity_DepartmentStore_2F_Text_LanceComesToBuyCapes::
+ .string "We have a customer, LANCE, who\n"
+ .string "occasionally comes.\p"
+ .string "He always buys capes.\p"
+ .string "I wonder… Does he have many\n"
+ .string "identical capes at home?$"
diff --git a/data/maps/CeladonCity_DepartmentStore_3F_Frlg/map.json b/data/maps/CeladonCity_DepartmentStore_3F_Frlg/map.json
new file mode 100644
index 000000000000..4ebd200844a6
--- /dev/null
+++ b/data/maps/CeladonCity_DepartmentStore_3F_Frlg/map.json
@@ -0,0 +1,204 @@
+{
+ "id": "MAP_CELADON_CITY_DEPARTMENT_STORE_3F",
+ "name": "CeladonCity_DepartmentStore_3F_Frlg",
+ "layout": "LAYOUT_CELADON_CITY_DEPARTMENT_STORE_3F",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": true,
+ "floor_number": 3,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 10,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_3F_EventScript_CounterTutor",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GBA_KID",
+ "x": 11,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_3F_EventScript_GBAKid1",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GBA_KID",
+ "x": 4,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_3F_EventScript_GBAKid3",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GBA_KID",
+ "x": 1,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_3F_EventScript_GBAKid2",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 9,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_3F_EventScript_LittleGirl",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_DEPARTMENT_STORE_ELEVATOR",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 2,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_DEPARTMENT_STORE_2F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 3,
+ "y": 2,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_DEPARTMENT_STORE_4F",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_DepartmentStore_3F_EventScript_FloorSign"
+ },
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CeladonCity_DepartmentStore_3F_EventScript_TV1"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CeladonCity_DepartmentStore_3F_EventScript_TV2"
+ },
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CeladonCity_DepartmentStore_3F_EventScript_TV3"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CeladonCity_DepartmentStore_3F_EventScript_TV4"
+ },
+ {
+ "type": "sign",
+ "x": 1,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_DepartmentStore_3F_EventScript_SuperNES"
+ },
+ {
+ "type": "sign",
+ "x": 1,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_DepartmentStore_3F_EventScript_SuperNES"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_DepartmentStore_3F_EventScript_SuperNES"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_DepartmentStore_3F_EventScript_SuperNES"
+ },
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CeladonCity_DepartmentStore_3F_EventScript_Poster"
+ },
+ {
+ "type": "sign",
+ "x": 0,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CeladonCity_DepartmentStore_3F_EventScript_Poster"
+ }
+ ]
+}
diff --git a/data/maps/CeladonCity_DepartmentStore_3F_Frlg/scripts.inc b/data/maps/CeladonCity_DepartmentStore_3F_Frlg/scripts.inc
new file mode 100644
index 000000000000..bd22e62f2e65
--- /dev/null
+++ b/data/maps/CeladonCity_DepartmentStore_3F_Frlg/scripts.inc
@@ -0,0 +1,121 @@
+CeladonCity_DepartmentStore_3F_Frlg_MapScripts::
+ .byte 0
+
+CeladonCity_DepartmentStore_3F_EventScript_CounterTutor::
+ goto EventScript_CounterTutor
+ end
+
+CeladonCity_DepartmentStore_3F_EventScript_GBAKid1::
+ msgbox CeladonCity_DepartmentStore_3F_Text_OTStandsForOriginalTrainer, MSGBOX_NPC
+ end
+
+CeladonCity_DepartmentStore_3F_EventScript_GBAKid2::
+ msgbox CeladonCity_DepartmentStore_3F_Text_BuddyTradingKangaskhanForHaunter, MSGBOX_NPC
+ end
+
+CeladonCity_DepartmentStore_3F_EventScript_GBAKid3::
+ msgbox CeladonCity_DepartmentStore_3F_Text_HaunterEvolvedOnTrade, MSGBOX_NPC
+ end
+
+CeladonCity_DepartmentStore_3F_EventScript_LittleGirl::
+ msgbox CeladonCity_DepartmentStore_3F_Text_CanIdentifyTradeMonsByID, MSGBOX_NPC
+ end
+
+CeladonCity_DepartmentStore_3F_EventScript_SuperNES::
+ msgbox CeladonCity_DepartmentStore_3F_Text_ItsSuperNES, MSGBOX_SIGN
+ end
+
+CeladonCity_DepartmentStore_3F_EventScript_TV1::
+ msgbox CeladonCity_DepartmentStore_3F_Text_AnRPG, MSGBOX_SIGN
+ end
+
+CeladonCity_DepartmentStore_3F_EventScript_TV2::
+ msgbox CeladonCity_DepartmentStore_3F_Text_SportsGame, MSGBOX_SIGN
+ end
+
+CeladonCity_DepartmentStore_3F_EventScript_TV3::
+ msgbox CeladonCity_DepartmentStore_3F_Text_PuzzleGame, MSGBOX_SIGN
+ end
+
+CeladonCity_DepartmentStore_3F_EventScript_TV4::
+ msgbox CeladonCity_DepartmentStore_3F_Text_FightingGame, MSGBOX_SIGN
+ end
+
+CeladonCity_DepartmentStore_3F_EventScript_FloorSign::
+ msgbox CeladonCity_DepartmentStore_3F_Text_TVGameShop, MSGBOX_SIGN
+ end
+
+CeladonCity_DepartmentStore_3F_EventScript_Poster::
+ msgbox CeladonCity_DepartmentStore_3F_Text_RedGreenBothArePokemon, MSGBOX_SIGN
+ end
+
+CeladonCity_DepartmentStore_3F_Text_OTStandsForOriginalTrainer::
+ .string "Captured POKéMON are registered\n"
+ .string "with an ID No. and the OT.\p"
+ .string "OT stands for “Original TRAINER” -\n"
+ .string "the TRAINER that caught it first.$"
+
+CeladonCity_DepartmentStore_3F_Text_BuddyTradingKangaskhanForHaunter::
+ .string "All right!\p"
+ .string "My buddy's going to trade me his\n"
+ .string "KANGASKHAN for my HAUNTER!$"
+
+CeladonCity_DepartmentStore_3F_Text_HaunterEvolvedOnTrade::
+ .string "Come on, HAUNTER!\p"
+ .string "I love HAUNTER!\n"
+ .string "I collect them!\p"
+ .string "Huh?\p"
+ .string "HAUNTER turned into a different\n"
+ .string "POKéMON while being traded!$"
+
+CeladonCity_DepartmentStore_3F_Text_CanIdentifyTradeMonsByID::
+ .string "You can identify POKéMON you get\n"
+ .string "in trades by their ID Numbers.$"
+
+CeladonCity_DepartmentStore_3F_Text_ItsSuperNES::
+ .string "It's a Super NES.$"
+
+CeladonCity_DepartmentStore_3F_Text_AnRPG::
+ .string "An RPG!\n"
+ .string "There's no time for that!$"
+
+CeladonCity_DepartmentStore_3F_Text_SportsGame::
+ .string "A sports game!\n"
+ .string "Dad'll like that!$"
+
+CeladonCity_DepartmentStore_3F_Text_PuzzleGame::
+ .string "A puzzle game!\n"
+ .string "Looks addictive!$"
+
+CeladonCity_DepartmentStore_3F_Text_FightingGame::
+ .string "A fighting game!\n"
+ .string "Looks tough!$"
+
+CeladonCity_DepartmentStore_3F_Text_TVGameShop::
+ .string "3F: TV GAME SHOP$"
+
+CeladonCity_DepartmentStore_3F_Text_RedGreenBothArePokemon::
+ .string "Red and Green!\n"
+ .string "Both are POKéMON!$"
+
+Text_CounterTeach::
+ .string "Oh, hi!\n"
+ .string "I finally finished POKéMON.\p"
+ .string "Not done yet? How about I teach\n"
+ .string "you a good move?\p"
+ .string "The move I have in mind is\n"
+ .string "COUNTER.\p"
+ .string "Not like the one I'm leaning on,\n"
+ .string "mind you!$"
+
+Text_CounterDeclined::
+ .string "You're not interested? Come see\n"
+ .string "me if you change your mind.$"
+
+Text_CounterWhichMon::
+ .string "Which POKéMON should I teach\n"
+ .string "COUNTER to?$"
+
+Text_CounterTaught::
+ .string "Are you using that COUNTER move\n"
+ .string "I taught your POKéMON?$"
diff --git a/data/maps/CeladonCity_DepartmentStore_4F_Frlg/map.json b/data/maps/CeladonCity_DepartmentStore_4F_Frlg/map.json
new file mode 100644
index 000000000000..bd9e3bcac534
--- /dev/null
+++ b/data/maps/CeladonCity_DepartmentStore_4F_Frlg/map.json
@@ -0,0 +1,96 @@
+{
+ "id": "MAP_CELADON_CITY_DEPARTMENT_STORE_4F",
+ "name": "CeladonCity_DepartmentStore_4F_Frlg",
+ "layout": "LAYOUT_CELADON_CITY_DEPARTMENT_STORE_4F",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": true,
+ "floor_number": 4,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 6,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_4F_EventScript_Man",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 10,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_4F_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 3,
+ "y": 13,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 3,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_4F_EventScript_Clerk",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_DEPARTMENT_STORE_ELEVATOR",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 3,
+ "y": 2,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_DEPARTMENT_STORE_3F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 9,
+ "y": 2,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_DEPARTMENT_STORE_5F",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_DepartmentStore_4F_EventScript_FloorSign"
+ }
+ ]
+}
diff --git a/data/maps/CeladonCity_DepartmentStore_4F_Frlg/scripts.inc b/data/maps/CeladonCity_DepartmentStore_4F_Frlg/scripts.inc
new file mode 100644
index 000000000000..ec69a5baf97a
--- /dev/null
+++ b/data/maps/CeladonCity_DepartmentStore_4F_Frlg/scripts.inc
@@ -0,0 +1,55 @@
+CeladonCity_DepartmentStore_4F_Frlg_MapScripts::
+ .byte 0
+
+CeladonCity_DepartmentStore_4F_EventScript_Man::
+ msgbox CeladonCity_DepartmentStore_4F_Text_GettingPokeDollAsPresent, MSGBOX_NPC
+ end
+
+CeladonCity_DepartmentStore_4F_EventScript_Youngster::
+ msgbox CeladonCity_DepartmentStore_4F_Text_CanRunAwayWithPokeDoll, MSGBOX_NPC
+ end
+
+CeladonCity_DepartmentStore_4F_EventScript_FloorSign::
+ msgbox CeladonCity_DepartmentStore_4F_Text_FloorSign, MSGBOX_SIGN
+ end
+
+CeladonCity_DepartmentStore_4F_EventScript_Clerk::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart CeladonCity_DepartmentStore_4F_Items
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+CeladonCity_DepartmentStore_4F_Items::
+ .2byte ITEM_POKE_DOLL
+ .2byte ITEM_RETRO_MAIL
+ .2byte ITEM_FIRE_STONE
+ .2byte ITEM_THUNDER_STONE
+ .2byte ITEM_WATER_STONE
+ .2byte ITEM_LEAF_STONE
+ .2byte ITEM_NONE
+ release
+ end
+
+CeladonCity_DepartmentStore_4F_Text_GettingPokeDollAsPresent::
+ .string "I'm getting a present for my\n"
+ .string "girlfriend.\p"
+ .string "I guess a POKé DOLL will be it.\n"
+ .string "It's the popular thing.$"
+
+CeladonCity_DepartmentStore_4F_Text_CanRunAwayWithPokeDoll::
+ .string "I heard something useful.\p"
+ .string "If a wild POKéMON appears, you can\n"
+ .string "distract it with a POKé DOLL.\p"
+ .string "You can run away while the wild\n"
+ .string "POKéMON is distracted.$"
+
+CeladonCity_DepartmentStore_4F_Text_FloorSign::
+ .string "Express yourself with gifts!\n"
+ .string "4F: WISE MAN GIFTS\p"
+ .string "Evolution Special!\n"
+ .string "Element STONES on sale now!$"
diff --git a/data/maps/CeladonCity_DepartmentStore_5F_Frlg/map.json b/data/maps/CeladonCity_DepartmentStore_5F_Frlg/map.json
new file mode 100644
index 000000000000..36eb29a6a2c8
--- /dev/null
+++ b/data/maps/CeladonCity_DepartmentStore_5F_Frlg/map.json
@@ -0,0 +1,110 @@
+{
+ "id": "MAP_CELADON_CITY_DEPARTMENT_STORE_5F",
+ "name": "CeladonCity_DepartmentStore_5F_Frlg",
+ "layout": "LAYOUT_CELADON_CITY_DEPARTMENT_STORE_5F",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": true,
+ "floor_number": 5,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 11,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_5F_EventScript_Gentleman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_5F_EventScript_Sailor",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 1,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_5F_EventScript_ClerkXItems",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 1,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_5F_EventScript_ClerkVitamins",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_DEPARTMENT_STORE_ELEVATOR",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_DEPARTMENT_STORE_4F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 3,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_DEPARTMENT_STORE_ROOF",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_DepartmentStore_5F_EventScript_FloorSign"
+ }
+ ]
+}
diff --git a/data/maps/CeladonCity_DepartmentStore_5F_Frlg/scripts.inc b/data/maps/CeladonCity_DepartmentStore_5F_Frlg/scripts.inc
new file mode 100644
index 000000000000..54d5ffebbed7
--- /dev/null
+++ b/data/maps/CeladonCity_DepartmentStore_5F_Frlg/scripts.inc
@@ -0,0 +1,83 @@
+CeladonCity_DepartmentStore_5F_Frlg_MapScripts::
+ .byte 0
+
+CeladonCity_DepartmentStore_5F_EventScript_Gentleman::
+ msgbox CeladonCity_DepartmentStore_5F_Text_ExplainStatEnhancers, MSGBOX_NPC
+ end
+
+CeladonCity_DepartmentStore_5F_EventScript_Sailor::
+ msgbox CeladonCity_DepartmentStore_5F_Text_HereForStatEnhancers, MSGBOX_NPC
+ end
+
+CeladonCity_DepartmentStore_5F_EventScript_FloorSign::
+ msgbox CeladonCity_DepartmentStore_5F_Text_Drugstore, MSGBOX_SIGN
+ end
+
+CeladonCity_DepartmentStore_5F_EventScript_ClerkXItems::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart CeladonCity_DepartmentStore_5F_XItems
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+CeladonCity_DepartmentStore_5F_XItems::
+ .2byte ITEM_X_ATTACK
+ .2byte ITEM_X_DEFEND
+ .2byte ITEM_X_SPEED
+ .2byte ITEM_X_SPECIAL
+ .2byte ITEM_X_ACCURACY
+ .2byte ITEM_GUARD_SPEC
+ .2byte ITEM_DIRE_HIT
+ .2byte ITEM_NONE
+ release
+ end
+
+CeladonCity_DepartmentStore_5F_EventScript_ClerkVitamins::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart CeladonCity_DepartmentStore_5F_Vitamins
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+CeladonCity_DepartmentStore_5F_Vitamins::
+ .2byte ITEM_HP_UP
+ .2byte ITEM_PROTEIN
+ .2byte ITEM_IRON
+ .2byte ITEM_CALCIUM
+ .2byte ITEM_ZINC
+ .2byte ITEM_CARBOS
+ .2byte ITEM_NONE
+ release
+ end
+
+CeladonCity_DepartmentStore_5F_Text_ExplainStatEnhancers::
+ .string "POKéMON stat enhancers can be\n"
+ .string "bought only here.\p"
+ .string "HP UP increases the base HP of a\n"
+ .string "POKéMON.\p"
+ .string "CALCIUM raises the base SP. ATK\n"
+ .string "stat of one POKéMON.\p"
+ .string "ZINC boosts the base SP. DEF stat\n"
+ .string "of one POKéMON.\p"
+ .string "CARBOS enhances the base SPEED\n"
+ .string "stat.$"
+
+CeladonCity_DepartmentStore_5F_Text_HereForStatEnhancers::
+ .string "I'm here for POKéMON stat\n"
+ .string "enhancers.\p"
+ .string "PROTEIN increases the base ATTACK\n"
+ .string "power.\p"
+ .string "IRON increases the base DEFENSE\n"
+ .string "stat.$"
+
+CeladonCity_DepartmentStore_5F_Text_Drugstore::
+ .string "5F: DRUGSTORE$"
+
diff --git a/data/maps/CeladonCity_DepartmentStore_Elevator_Frlg/map.json b/data/maps/CeladonCity_DepartmentStore_Elevator_Frlg/map.json
new file mode 100644
index 000000000000..34b3731b4806
--- /dev/null
+++ b/data/maps/CeladonCity_DepartmentStore_Elevator_Frlg/map.json
@@ -0,0 +1,54 @@
+{
+ "id": "MAP_CELADON_CITY_DEPARTMENT_STORE_ELEVATOR",
+ "name": "CeladonCity_DepartmentStore_Elevator_Frlg",
+ "layout": "LAYOUT_CELADON_CITY_DEPARTMENT_STORE_ELEVATOR",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ },
+ {
+ "x": 2,
+ "y": 6,
+ "elevation": 0,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 0,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelect"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelect"
+ }
+ ]
+}
diff --git a/data/maps/CeladonCity_DepartmentStore_Elevator_Frlg/scripts.inc b/data/maps/CeladonCity_DepartmentStore_Elevator_Frlg/scripts.inc
new file mode 100644
index 000000000000..a9c844a7aee6
--- /dev/null
+++ b/data/maps/CeladonCity_DepartmentStore_Elevator_Frlg/scripts.inc
@@ -0,0 +1,115 @@
+CeladonCity_DepartmentStore_Elevator_Frlg_MapScripts::
+ .byte 0
+
+CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelect::
+ lockall
+ setvar VAR_0x8004, 3
+ call_if_unset FLAG_TEMP_2, EventScript_GetElevatorFloor
+ copyvar VAR_0x8005, VAR_ELEVATOR_FLOOR
+ special DrawElevatorCurrentFloorWindow
+ message gText_WantWhichFloor
+ waitmessage
+ setvar VAR_0x8004, 3
+ specialvar VAR_RESULT, InitElevatorFloorSelectMenuPos
+ switch VAR_RESULT
+ case 0, CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelectFrom5F
+ case 1, CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelectFrom4F
+ case 2, CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelectFrom3F
+ case 3, CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelectFrom2F
+ case 4, CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelectFrom1F
+ end
+
+CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelectFrom5F::
+ multichoicedefault 0, 0, MULTI_DEPT_STORE_ELEVATOR, 0, FALSE
+ goto CeladonCity_DepartmentStore_Elevator_EventScript_ChooseFloor
+ end
+
+CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelectFrom4F::
+ multichoicedefault 0, 0, MULTI_DEPT_STORE_ELEVATOR, 1, FALSE
+ goto CeladonCity_DepartmentStore_Elevator_EventScript_ChooseFloor
+ end
+
+CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelectFrom3F::
+ multichoicedefault 0, 0, MULTI_DEPT_STORE_ELEVATOR, 2, FALSE
+ goto CeladonCity_DepartmentStore_Elevator_EventScript_ChooseFloor
+ end
+
+CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelectFrom2F::
+ multichoicedefault 0, 0, MULTI_DEPT_STORE_ELEVATOR, 3, FALSE
+ goto CeladonCity_DepartmentStore_Elevator_EventScript_ChooseFloor
+ end
+
+CeladonCity_DepartmentStore_Elevator_EventScript_FloorSelectFrom1F::
+ multichoicedefault 0, 0, MULTI_DEPT_STORE_ELEVATOR, 4, FALSE
+ goto CeladonCity_DepartmentStore_Elevator_EventScript_ChooseFloor
+ end
+
+CeladonCity_DepartmentStore_Elevator_EventScript_ChooseFloor::
+ switch VAR_RESULT
+ case 0, CeladonCity_DepartmentStore_Elevator_EventScript_To5F
+ case 1, CeladonCity_DepartmentStore_Elevator_EventScript_To4F
+ case 2, CeladonCity_DepartmentStore_Elevator_EventScript_To3F
+ case 3, CeladonCity_DepartmentStore_Elevator_EventScript_To2F
+ case 4, CeladonCity_DepartmentStore_Elevator_EventScript_To1F
+ case 5, CeladonCity_DepartmentStore_Elevator_EventScript_ExitFloorSelect
+ case 127, CeladonCity_DepartmentStore_Elevator_EventScript_ExitFloorSelect
+ end
+
+CeladonCity_DepartmentStore_Elevator_EventScript_To1F::
+ setvar VAR_0x8006, 4
+ setdynamicwarp MAP_CELADON_CITY_DEPARTMENT_STORE_1F, 255, 6, 1
+ goto_if_eq VAR_ELEVATOR_FLOOR, 4, CeladonCity_DepartmentStore_Elevator_EventScript_ExitFloorSelect
+ call CeladonCity_DepartmentStore_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 4
+ goto CeladonCity_DepartmentStore_Elevator_EventScript_ExitFloorSelect
+ end
+
+CeladonCity_DepartmentStore_Elevator_EventScript_To2F::
+ setvar VAR_0x8006, 5
+ setdynamicwarp MAP_CELADON_CITY_DEPARTMENT_STORE_2F, 255, 6, 1
+ goto_if_eq VAR_ELEVATOR_FLOOR, 5, CeladonCity_DepartmentStore_Elevator_EventScript_ExitFloorSelect
+ call CeladonCity_DepartmentStore_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 5
+ goto CeladonCity_DepartmentStore_Elevator_EventScript_ExitFloorSelect
+ end
+
+CeladonCity_DepartmentStore_Elevator_EventScript_To3F::
+ setvar VAR_0x8006, 6
+ setdynamicwarp MAP_CELADON_CITY_DEPARTMENT_STORE_3F, 255, 6, 1
+ goto_if_eq VAR_ELEVATOR_FLOOR, 6, CeladonCity_DepartmentStore_Elevator_EventScript_ExitFloorSelect
+ call CeladonCity_DepartmentStore_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 6
+ goto CeladonCity_DepartmentStore_Elevator_EventScript_ExitFloorSelect
+ end
+
+CeladonCity_DepartmentStore_Elevator_EventScript_To4F::
+ setvar VAR_0x8006, 7
+ setdynamicwarp MAP_CELADON_CITY_DEPARTMENT_STORE_4F, 255, 6, 1
+ goto_if_eq VAR_ELEVATOR_FLOOR, 7, CeladonCity_DepartmentStore_Elevator_EventScript_ExitFloorSelect
+ call CeladonCity_DepartmentStore_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 7
+ goto CeladonCity_DepartmentStore_Elevator_EventScript_ExitFloorSelect
+ end
+
+CeladonCity_DepartmentStore_Elevator_EventScript_To5F::
+ setvar VAR_0x8006, 8
+ setdynamicwarp MAP_CELADON_CITY_DEPARTMENT_STORE_5F, 255, 6, 1
+ goto_if_eq VAR_ELEVATOR_FLOOR, 8, CeladonCity_DepartmentStore_Elevator_EventScript_ExitFloorSelect
+ call CeladonCity_DepartmentStore_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 8
+ goto CeladonCity_DepartmentStore_Elevator_EventScript_ExitFloorSelect
+ end
+
+CeladonCity_DepartmentStore_Elevator_EventScript_ExitFloorSelect::
+ special CloseElevatorCurrentFloorWindow
+ releaseall
+ end
+
+CeladonCity_DepartmentStore_Elevator_EventScript_MoveElevator::
+ special CloseElevatorCurrentFloorWindow
+ closemessage
+ waitse
+ special AnimateElevator
+ waitstate
+ setflag FLAG_TEMP_2
+ return
diff --git a/data/maps/CeladonCity_DepartmentStore_Roof_Frlg/map.json b/data/maps/CeladonCity_DepartmentStore_Roof_Frlg/map.json
new file mode 100644
index 000000000000..d1c436d9d6de
--- /dev/null
+++ b/data/maps/CeladonCity_DepartmentStore_Roof_Frlg/map.json
@@ -0,0 +1,92 @@
+{
+ "id": "MAP_CELADON_CITY_DEPARTMENT_STORE_ROOF",
+ "name": "CeladonCity_DepartmentStore_Roof_Frlg",
+ "layout": "LAYOUT_CELADON_CITY_DEPARTMENT_STORE_ROOF",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": true,
+ "floor_number": 127,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 9,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_Roof_EventScript_CooltrainerM",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 5,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_DepartmentStore_Roof_EventScript_ThirstyGirl",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 15,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_DEPARTMENT_STORE_5F",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 14,
+ "y": 3,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_DepartmentStore_Roof_EventScript_FloorSign"
+ },
+ {
+ "type": "sign",
+ "x": 10,
+ "y": 3,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_DepartmentStore_Roof_EventScript_VendingMachine"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 3,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_DepartmentStore_Roof_EventScript_VendingMachine"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 3,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_DepartmentStore_Roof_EventScript_VendingMachine"
+ }
+ ]
+}
diff --git a/data/maps/CeladonCity_DepartmentStore_Roof_Frlg/scripts.inc b/data/maps/CeladonCity_DepartmentStore_Roof_Frlg/scripts.inc
new file mode 100644
index 000000000000..323535addb31
--- /dev/null
+++ b/data/maps/CeladonCity_DepartmentStore_Roof_Frlg/scripts.inc
@@ -0,0 +1,364 @@
+CeladonCity_DepartmentStore_Roof_Frlg_MapScripts::
+ .byte 0
+
+CeladonCity_DepartmentStore_Roof_EventScript_ThirstyGirl::
+ lock
+ faceplayer
+ call CeladonCity_DepartmentStore_Roof_EventScript_CheckPlayerHasDrinks
+ goto_if_eq VAR_TEMP_1, 0, CeladonCity_DepartmentStore_Roof_EventScript_IWantDrink
+ goto CeladonCity_DepartmentStore_Roof_EventScript_AskGiveDrink
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_CheckPlayerHasDrinks::
+ setvar VAR_TEMP_1, 0
+ checkitem ITEM_FRESH_WATER
+ call_if_eq VAR_RESULT, TRUE, CeladonCity_DepartmentStore_Roof_EventScript_SetHasFreshWater
+ checkitem ITEM_SODA_POP
+ call_if_eq VAR_RESULT, TRUE, CeladonCity_DepartmentStore_Roof_EventScript_SetHasSodaPop
+ checkitem ITEM_LEMONADE
+ call_if_eq VAR_RESULT, TRUE, CeladonCity_DepartmentStore_Roof_EventScript_SetHasLemonade
+ return
+
+CeladonCity_DepartmentStore_Roof_EventScript_SetHasFreshWater::
+ addvar VAR_TEMP_1, 1
+ return
+
+CeladonCity_DepartmentStore_Roof_EventScript_SetHasSodaPop::
+ addvar VAR_TEMP_1, 2
+ return
+
+CeladonCity_DepartmentStore_Roof_EventScript_SetHasLemonade::
+ addvar VAR_TEMP_1, 4
+ return
+
+CeladonCity_DepartmentStore_Roof_EventScript_AskGiveDrink::
+ msgbox CeladonCity_DepartmentStore_Roof_Text_ImThirstyGiveHerDrink, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ message CeladonCity_DepartmentStore_Roof_Text_GiveWhichDrink
+ waitmessage
+ textcolor NPC_TEXT_COLOR_FEMALE
+ switch VAR_TEMP_1
+ case 1, CeladonCity_DepartmentStore_Roof_EventScript_AskGiveFreshWater
+ case 2, CeladonCity_DepartmentStore_Roof_EventScript_AskGiveSodaPop
+ case 3, CeladonCity_DepartmentStore_Roof_EventScript_AskGiveFreshWaterSodaPop
+ case 4, CeladonCity_DepartmentStore_Roof_EventScript_AskGiveLemonade
+ case 5, CeladonCity_DepartmentStore_Roof_EventScript_AskGiveFreshWaterLemonade
+ case 6, CeladonCity_DepartmentStore_Roof_EventScript_AskGiveSodaPopLemonade
+ case 7, CeladonCity_DepartmentStore_Roof_EventScript_AskGiveAllDrinks
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_AskGiveFreshWater::
+ multichoice 0, 0, MULTI_THIRSTY_GIRL_FRESH_WATER, FALSE
+ switch VAR_RESULT
+ case 0, CeladonCity_DepartmentStore_Roof_EventScript_GiveFreshWater
+ case 1, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink
+ case 127, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_AskGiveSodaPop::
+ multichoice 0, 0, MULTI_THIRSTY_GIRL_SODA_POP, FALSE
+ switch VAR_RESULT
+ case 0, CeladonCity_DepartmentStore_Roof_EventScript_GiveSodaPop
+ case 1, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink
+ case 127, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_AskGiveFreshWaterSodaPop::
+ multichoice 0, 0, MULTI_THIRSTY_GIRL_FRESH_WATER_SODA_POP, FALSE
+ switch VAR_RESULT
+ case 0, CeladonCity_DepartmentStore_Roof_EventScript_GiveFreshWater
+ case 1, CeladonCity_DepartmentStore_Roof_EventScript_GiveSodaPop
+ case 2, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink
+ case 127, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_AskGiveLemonade::
+ multichoice 0, 0, MULTI_THIRSTY_GIRL_LEMONADE, FALSE
+ switch VAR_RESULT
+ case 0, CeladonCity_DepartmentStore_Roof_EventScript_GiveLemonade
+ case 1, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink
+ case 127, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_AskGiveFreshWaterLemonade::
+ multichoice 0, 0, MULTI_THIRSTY_GIRL_FRESH_WATER_LEMONADE, FALSE
+ switch VAR_RESULT
+ case 0, CeladonCity_DepartmentStore_Roof_EventScript_GiveFreshWater
+ case 1, CeladonCity_DepartmentStore_Roof_EventScript_GiveLemonade
+ case 2, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink
+ case 127, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_AskGiveSodaPopLemonade::
+ multichoice 0, 0, MULTI_THIRSTY_GIRL_SODA_POP_LEMONADE, FALSE
+ switch VAR_RESULT
+ case 0, CeladonCity_DepartmentStore_Roof_EventScript_GiveSodaPop
+ case 1, CeladonCity_DepartmentStore_Roof_EventScript_GiveLemonade
+ case 2, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink
+ case 127, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_AskGiveAllDrinks::
+ multichoice 0, 0, MULTI_THIRSTY_GIRL_FRESH_WATER_SODA_POP_LEMONADE, FALSE
+ switch VAR_RESULT
+ case 0, CeladonCity_DepartmentStore_Roof_EventScript_GiveFreshWater
+ case 1, CeladonCity_DepartmentStore_Roof_EventScript_GiveSodaPop
+ case 2, CeladonCity_DepartmentStore_Roof_EventScript_GiveLemonade
+ case 3, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink
+ case 127, CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_GiveFreshWater::
+ setvar VAR_0x8008, ITEM_FRESH_WATER
+ setvar VAR_0x8009, ITEM_TM16
+ goto_if_set FLAG_GOT_TM16_FROM_THIRSTY_GIRL, CeladonCity_DepartmentStore_Roof_EventScript_NotThirstyAfterAll
+ msgbox CeladonCity_DepartmentStore_Roof_Text_YayFreshWaterHaveThis
+ goto CeladonCity_DepartmentStore_Roof_EventScript_GiveDrink
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_GiveSodaPop::
+ setvar VAR_0x8008, ITEM_SODA_POP
+ setvar VAR_0x8009, ITEM_TM20
+ goto_if_set FLAG_GOT_TM20_FROM_THIRSTY_GIRL, CeladonCity_DepartmentStore_Roof_EventScript_NotThirstyAfterAll
+ msgbox CeladonCity_DepartmentStore_Roof_Text_YaySodaPopHaveThis
+ goto CeladonCity_DepartmentStore_Roof_EventScript_GiveDrink
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_GiveLemonade::
+ setvar VAR_0x8008, ITEM_LEMONADE
+ setvar VAR_0x8009, ITEM_TM33
+ goto_if_set FLAG_GOT_TM33_FROM_THIRSTY_GIRL, CeladonCity_DepartmentStore_Roof_EventScript_NotThirstyAfterAll
+ msgbox CeladonCity_DepartmentStore_Roof_Text_YayLemonadeHaveThis
+ goto CeladonCity_DepartmentStore_Roof_EventScript_GiveDrink
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_GiveDrink::
+ bufferitemname STR_VAR_1, VAR_0x8008
+ bufferitemname STR_VAR_2, VAR_0x8009
+ removeitem VAR_0x8008
+ checkitemspace VAR_0x8009
+ goto_if_eq VAR_RESULT, FALSE, CeladonCity_DepartmentStore_Roof_EventScript_NoRoomForReward
+ additem VAR_0x8009
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_LEVEL_UP
+ message Text_ReceivedItemFromLittleGirl
+ waitmessage
+ waitfanfare
+ putitemaway VAR_0x8009
+ call EventScript_RestorePrevTextColor
+ call_if_eq VAR_0x8008, ITEM_FRESH_WATER, CeladonCity_DepartmentStore_Roof_EventScript_ExplainTM16
+ call_if_eq VAR_0x8008, ITEM_SODA_POP, CeladonCity_DepartmentStore_Roof_EventScript_ExplainTM20
+ call_if_eq VAR_0x8008, ITEM_LEMONADE, CeladonCity_DepartmentStore_Roof_EventScript_ExplainTM33
+ release
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_ExplainTM16::
+ setflag FLAG_GOT_TM16_FROM_THIRSTY_GIRL
+ msgbox CeladonCity_DepartmentStore_Roof_Text_ExplainTM16
+ return
+
+CeladonCity_DepartmentStore_Roof_EventScript_ExplainTM20::
+ setflag FLAG_GOT_TM20_FROM_THIRSTY_GIRL
+ msgbox CeladonCity_DepartmentStore_Roof_Text_ExplainTM20
+ return
+
+CeladonCity_DepartmentStore_Roof_EventScript_ExplainTM33::
+ setflag FLAG_GOT_TM33_FROM_THIRSTY_GIRL
+ msgbox CeladonCity_DepartmentStore_Roof_Text_ExplainTM33
+ return
+
+CeladonCity_DepartmentStore_Roof_EventScript_NoRoomForReward::
+ msgbox CeladonCity_DepartmentStore_Roof_Text_DontHaveSpaceForThis
+ release
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_DontGiveDrink::
+ release
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_IWantDrink::
+ msgbox CeladonCity_DepartmentStore_Roof_Text_ImThirstyIWantDrink
+ release
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_NotThirstyAfterAll::
+ msgbox CeladonCity_DepartmentStore_Roof_Text_ImNotThirstyAfterAll
+ release
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_CooltrainerM::
+ msgbox CeladonCity_DepartmentStore_Roof_Text_MySisterIsImmature, MSGBOX_NPC
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_FloorSign::
+ msgbox CeladonCity_DepartmentStore_Roof_Text_FloorSign, MSGBOX_SIGN
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_VendingMachine::
+ lockall
+ message CeladonCity_DepartmentStore_Roof_Text_VendingMachineWhatDoesItHave
+ waitmessage
+ showmoneybox 0, 0
+ goto CeladonCity_DepartmentStore_Roof_EventScript_ChooseDrink
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_ChooseDrink::
+ multichoice 12, 0, MULTI_CELADON_VENDING_MACHINE, FALSE
+ copyvar VAR_TEMP_1, VAR_RESULT
+ switch VAR_TEMP_1
+ case 0, CeladonCity_DepartmentStore_Roof_EventScript_BuyFreshWater
+ case 1, CeladonCity_DepartmentStore_Roof_EventScript_BuySodaPop
+ case 2, CeladonCity_DepartmentStore_Roof_EventScript_BuyLemonade
+ msgbox CeladonCity_DepartmentStore_Roof_Text_NotThirsty
+ goto CeladonCity_DepartmentStore_Roof_EventScript_ExitVendingMachine
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_BuyFreshWater::
+ setvar VAR_TEMP_0, ITEM_FRESH_WATER
+ checkmoney 200
+ goto CeladonCity_DepartmentStore_Roof_EventScript_TryBuyDrink
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_BuySodaPop::
+ setvar VAR_TEMP_0, ITEM_SODA_POP
+ checkmoney 300
+ goto CeladonCity_DepartmentStore_Roof_EventScript_TryBuyDrink
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_BuyLemonade::
+ setvar VAR_TEMP_0, ITEM_LEMONADE
+ checkmoney 350
+ goto CeladonCity_DepartmentStore_Roof_EventScript_TryBuyDrink
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_RemoveMoneyFreshWater::
+ removemoney 200
+ return
+
+CeladonCity_DepartmentStore_Roof_EventScript_RemoveMoneySodaPop::
+ removemoney 300
+ return
+
+CeladonCity_DepartmentStore_Roof_EventScript_RemoveMoneyLemonade::
+ removemoney 350
+ return
+
+CeladonCity_DepartmentStore_Roof_EventScript_TryBuyDrink::
+ goto_if_eq VAR_RESULT, FALSE, CeladonCity_DepartmentStore_Roof_EventScript_NotEnoughMoney
+ checkitemspace VAR_TEMP_0
+ goto_if_eq VAR_RESULT, FALSE, CeladonCity_DepartmentStore_Roof_EventScript_NoRoomForDrink
+ call_if_eq VAR_TEMP_1, 0, CeladonCity_DepartmentStore_Roof_EventScript_RemoveMoneyFreshWater
+ call_if_eq VAR_TEMP_1, 1, CeladonCity_DepartmentStore_Roof_EventScript_RemoveMoneySodaPop
+ call_if_eq VAR_TEMP_1, 2, CeladonCity_DepartmentStore_Roof_EventScript_RemoveMoneyLemonade
+ updatemoneybox
+ bufferitemname STR_VAR_1, VAR_TEMP_0
+ playse SE_VEND
+ msgbox CeladonCity_DepartmentStore_Roof_Text_DrinkCanPoppedOut
+ additem VAR_TEMP_0
+ goto CeladonCity_DepartmentStore_Roof_EventScript_ChooseNewDrink
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_ChooseNewDrink::
+ message CeladonCity_DepartmentStore_Roof_Text_VendingMachineWhatDoesItHave
+ waitmessage
+ goto CeladonCity_DepartmentStore_Roof_EventScript_ChooseDrink
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_NotEnoughMoney::
+ msgbox CeladonCity_DepartmentStore_Roof_Text_NotEnoughMoney
+ goto CeladonCity_DepartmentStore_Roof_EventScript_ExitVendingMachine
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_NoRoomForDrink::
+ msgbox CeladonCity_DepartmentStore_Roof_Text_NoMoreRoomForStuff
+ goto CeladonCity_DepartmentStore_Roof_EventScript_ExitVendingMachine
+ end
+
+CeladonCity_DepartmentStore_Roof_EventScript_ExitVendingMachine::
+ hidemoneybox
+ releaseall
+ end
+
+CeladonCity_DepartmentStore_Roof_Text_ImThirstyGiveHerDrink::
+ .string "I'm thirsty!\n"
+ .string "I want something to drink!\p"
+ .string "{FONT_NORMAL}Give her a drink?$"
+
+CeladonCity_DepartmentStore_Roof_Text_GiveWhichDrink::
+ .string "Give her which drink?$"
+
+CeladonCity_DepartmentStore_Roof_Text_YayFreshWaterHaveThis::
+ .string "Yay!\p"
+ .string "FRESH WATER!\p"
+ .string "Thank you!\n"
+ .string "You can have this from me!$"
+
+Text_ReceivedItemFromLittleGirl::
+ .string "{PLAYER} received a {STR_VAR_2}\n"
+ .string "from the little girl.$"
+
+CeladonCity_DepartmentStore_Roof_Text_ExplainTM16::
+ .string "TM16 contains LIGHT SCREEN.\p"
+ .string "It's a move that weakens the power\n"
+ .string "of special attacks by your foe.$"
+
+CeladonCity_DepartmentStore_Roof_Text_YaySodaPopHaveThis::
+ .string "Yay!\p"
+ .string "SODA POP!\p"
+ .string "Thank you!\n"
+ .string "You can have this from me!$"
+
+CeladonCity_DepartmentStore_Roof_Text_ExplainTM20::
+ .string "TM20 contains SAFEGUARD.\p"
+ .string "It's a move that prevents status\n"
+ .string "problems among your POKéMON.$"
+
+CeladonCity_DepartmentStore_Roof_Text_YayLemonadeHaveThis::
+ .string "Yay!\p"
+ .string "LEMONADE!\p"
+ .string "Thank you!\n"
+ .string "You can have this from me!$"
+
+CeladonCity_DepartmentStore_Roof_Text_ExplainTM33::
+ .string "TM33 contains REFLECT.\p"
+ .string "It's a move that weakens the power\n"
+ .string "of physical attacks by your foe.$"
+
+CeladonCity_DepartmentStore_Roof_Text_DontHaveSpaceForThis::
+ .string "You don't have space for this!$"
+
+CeladonCity_DepartmentStore_Roof_Text_ImNotThirstyAfterAll::
+ .string "No, thank you!\n"
+ .string "I'm not thirsty after all!$"
+
+CeladonCity_DepartmentStore_Roof_Text_MySisterIsImmature::
+ .string "My sister is a TRAINER, believe it\n"
+ .string "or not.\p"
+ .string "But, she's so immature, she drives\n"
+ .string "me nuts!$"
+
+CeladonCity_DepartmentStore_Roof_Text_ImThirstyIWantDrink::
+ .string "I'm thirsty!\n"
+ .string "I want something to drink!$"
+
+CeladonCity_DepartmentStore_Roof_Text_FloorSign::
+ .string "ROOFTOP SQUARE:\n"
+ .string "VENDING MACHINES$"
+
+CeladonCity_DepartmentStore_Roof_Text_VendingMachineWhatDoesItHave::
+ .string "A vending machine!\n"
+ .string "What does it have?$"
+
+CeladonCity_DepartmentStore_Roof_Text_NotEnoughMoney::
+ .string "Oops, not enough money!$"
+
+CeladonCity_DepartmentStore_Roof_Text_DrinkCanPoppedOut::
+ .string "A can of {STR_VAR_1} popped out!$"
+
+CeladonCity_DepartmentStore_Roof_Text_NoMoreRoomForStuff::
+ .string "There's no more room for stuff!$"
+
+CeladonCity_DepartmentStore_Roof_Text_NotThirsty::
+ .string "Not thirsty!$"
+
diff --git a/data/maps/CeladonCity_Frlg/map.json b/data/maps/CeladonCity_Frlg/map.json
new file mode 100644
index 000000000000..a5d20c257542
--- /dev/null
+++ b/data/maps/CeladonCity_Frlg/map.json
@@ -0,0 +1,408 @@
+{
+ "id": "MAP_CELADON_CITY",
+ "name": "CeladonCity_Frlg",
+ "layout": "LAYOUT_CELADON_CITY",
+ "music": "MUS_RG_CELADON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE16",
+ "offset": 10,
+ "direction": "left"
+ },
+ {
+ "map": "MAP_ROUTE7",
+ "offset": 10,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 48,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 4,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_EventScript_RocketGrunt1",
+ "flag": "FLAG_HIDE_CELADON_ROCKETS"
+ },
+ {
+ "local_id": "LOCALID_CELADON_FAT_MAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FAT_MAN_FRLG",
+ "x": 38,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_EventScript_FatMan",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_CELADON_POLIWRATH",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLIWRATH",
+ "x": 36,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_EventScript_Poliwrath",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 11,
+ "y": 18,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_LEFT_UP",
+ "movement_range_x": 4,
+ "movement_range_y": 4,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_EventScript_LittleGirl",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 18,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 5,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 30,
+ "y": 24,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_EventScript_OldMan2",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_2",
+ "x": 26,
+ "y": 19,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_EventScript_SoftboiledTutor",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 38,
+ "y": 31,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 5,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_EventScript_RocketGrunt2",
+ "flag": "FLAG_HIDE_CELADON_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 9,
+ "y": 30,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_EventScript_OldMan1",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_CELADON_BORDER_TREE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 52,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_14"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 40,
+ "y": 35,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 25,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_EventScript_Boy",
+ "flag": "0"
+ },
+ {
+ "type": "clone",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": -7,
+ "y": 21,
+ "target_local_id": "LOCALID_ROUTE16_CUT_TREE",
+ "target_map": "MAP_ROUTE16"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 5,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_EventScript_ItemEther",
+ "flag": "FLAG_HIDE_CELADON_CITY_ETHER"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 47,
+ "y": 24,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_EventScript_SilphCoScientist",
+ "flag": "FLAG_HIDE_CELADON_ROCKETS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 34,
+ "y": 21,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_GAME_CORNER",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 11,
+ "y": 14,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_DEPARTMENT_STORE_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 15,
+ "y": 14,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_DEPARTMENT_STORE_1F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 30,
+ "y": 11,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 48,
+ "y": 11,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 39,
+ "y": 20,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_GAME_CORNER_PRIZE_ROOM",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 11,
+ "y": 30,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_GYM",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 37,
+ "y": 29,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_RESTAURANT",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 41,
+ "y": 29,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_HOUSE1",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 49,
+ "y": 29,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_HOTEL",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 29,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_1F",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 30,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_1F",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 31,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY_CONDOMINIUMS_1F",
+ "dest_warp_id": "5"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 45,
+ "y": 23,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_EventScript_TrainerTips2"
+ },
+ {
+ "type": "sign",
+ "x": 38,
+ "y": 23,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_EventScript_PrizeExchangeSign"
+ },
+ {
+ "type": "sign",
+ "x": 33,
+ "y": 23,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_EventScript_GameCornerSign"
+ },
+ {
+ "type": "sign",
+ "x": 22,
+ "y": 18,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_EventScript_CitySign"
+ },
+ {
+ "type": "sign",
+ "x": 26,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_EventScript_MansionSign"
+ },
+ {
+ "type": "sign",
+ "x": 33,
+ "y": 16,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_EventScript_TrainerTips1"
+ },
+ {
+ "type": "sign",
+ "x": 18,
+ "y": 14,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_EventScript_DeptStoreSign"
+ },
+ {
+ "type": "sign",
+ "x": 16,
+ "y": 31,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_EventScript_GymSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 55,
+ "y": 20,
+ "elevation": 3,
+ "item": "ITEM_PP_UP",
+ "flag": "FLAG_HIDDEN_ITEM_CELADON_CITY_PP_UP",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/CeladonCity_Frlg/scripts.inc b/data/maps/CeladonCity_Frlg/scripts.inc
new file mode 100644
index 000000000000..ecc6ee347ccd
--- /dev/null
+++ b/data/maps/CeladonCity_Frlg/scripts.inc
@@ -0,0 +1,218 @@
+CeladonCity_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, CeladonCity_OnTransition
+ .byte 0
+
+CeladonCity_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_CELADON_CITY
+ end
+
+CeladonCity_EventScript_LittleGirl::
+ msgbox CeladonCity_Text_GotMyKoffingInCinnabar, MSGBOX_NPC
+ end
+
+CeladonCity_EventScript_OldMan1::
+ lock
+ msgbox CeladonCity_Text_GymIsGreatFullOfWomen
+ release
+ end
+
+CeladonCity_EventScript_Woman::
+ msgbox CeladonCity_Text_GameCornerIsBadForCitysImage, MSGBOX_NPC
+ end
+
+CeladonCity_EventScript_OldMan2::
+ msgbox CeladonCity_Text_BlewItAllAtSlots, MSGBOX_NPC
+ end
+
+CeladonCity_EventScript_SoftboiledTutor::
+ goto EventScript_SoftboiledTutor
+ end
+
+CeladonCity_EventScript_FatMan::
+ lock
+ faceplayer
+ msgbox CeladonCity_Text_MyTrustedPalPoliwrath
+ closemessage
+ applymovement LOCALID_CELADON_FAT_MAN, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+CeladonCity_EventScript_Poliwrath::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_POLIWRATH, CRY_MODE_NORMAL
+ msgbox CeladonCity_Text_Poliwrath
+ closemessage
+ waitmoncry
+ applymovement LOCALID_CELADON_POLIWRATH, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+CeladonCity_EventScript_RocketGrunt1::
+ msgbox CeladonCity_Text_KeepOutOfTeamRocketsWay, MSGBOX_NPC
+ end
+
+CeladonCity_EventScript_RocketGrunt2::
+ msgbox CeladonCity_Text_GetLostOrIllPunchYou, MSGBOX_NPC
+ end
+
+CeladonCity_EventScript_Boy::
+ msgbox CeladonCity_Text_ScaldedTongueOnTea, MSGBOX_NPC
+ end
+
+CeladonCity_EventScript_SilphCoScientist::
+ msgbox CeladonCity_Text_SomeoneStoleSilphScope, MSGBOX_NPC
+ end
+
+CeladonCity_EventScript_TrainerTips1::
+ msgbox CeladonCity_Text_ExplainXAccuracyDireHit, MSGBOX_SIGN
+ end
+
+CeladonCity_EventScript_CitySign::
+ msgbox CeladonCity_Text_CitySign, MSGBOX_SIGN
+ end
+
+CeladonCity_EventScript_GymSign::
+ lockall
+ famechecker FAMECHECKER_ERIKA, 0
+ msgbox CeladonCity_Text_GymSign
+ releaseall
+ end
+
+CeladonCity_EventScript_MansionSign::
+ msgbox CeladonCity_Text_MansionSign, MSGBOX_SIGN
+ end
+
+CeladonCity_EventScript_DeptStoreSign::
+ msgbox CeladonCity_Text_DeptStoreSign, MSGBOX_SIGN
+ end
+
+CeladonCity_EventScript_TrainerTips2::
+ msgbox CeladonCity_Text_GuardSpecProtectsFromStatus, MSGBOX_SIGN
+ end
+
+CeladonCity_EventScript_PrizeExchangeSign::
+ msgbox CeladonCity_Text_PrizeExchangeSign, MSGBOX_SIGN
+ end
+
+CeladonCity_EventScript_GameCornerSign::
+ msgbox CeladonCity_Text_GameCornerSign, MSGBOX_SIGN
+ end
+
+CeladonCity_Text_GotMyKoffingInCinnabar::
+ .string "I got my KOFFING in CINNABAR.\p"
+ .string "It's usually nice, but it breathes\n"
+ .string "poison when it's angry.$"
+
+CeladonCity_Text_GymIsGreatFullOfWomen::
+ .string "Heheh! This GYM is great!\n"
+ .string "It's full of women!$"
+
+CeladonCity_Text_GameCornerIsBadForCitysImage::
+ .string "CELADON takes pride in its efforts\n"
+ .string "to keep the city beautiful.\p"
+ .string "That's why the new GAME CORNER is\n"
+ .string "bad for our city's image.$"
+
+CeladonCity_Text_BlewItAllAtSlots::
+ .string "Moan…\n"
+ .string "I blew it all at the slots!\p"
+ .string "I knew I should have cashed in my\n"
+ .string "COINS for prizes!$"
+
+CeladonCity_Text_MyTrustedPalPoliwrath::
+ .string "This is my trusted pal, POLIWRATH.\p"
+ .string "It evolved from a POLIWHIRL when\n"
+ .string "I used a WATER STONE.$"
+
+CeladonCity_Text_Poliwrath::
+ .string "POLIWRATH: Ribi ribit!$"
+
+CeladonCity_Text_GetLostOrIllPunchYou::
+ .string "What are you staring at?\n"
+ .string "Get lost, or I'll punch you.$"
+
+CeladonCity_Text_KeepOutOfTeamRocketsWay::
+ .string "Keep out of TEAM ROCKET's way!$"
+
+CeladonCity_Text_ExplainXAccuracyDireHit::
+ .string "TRAINER TIPS\p"
+ .string "X ACCURACY boosts the accuracy of\n"
+ .string "techniques.\p"
+ .string "DIRE HIT jacks up the likelihood\n"
+ .string "of critical hits.\p"
+ .string "Get your items at the CELADON\n"
+ .string "DEPT. STORE!$"
+
+CeladonCity_Text_CitySign::
+ .string "CELADON CITY\n"
+ .string "The City of Rainbow Dreams$"
+
+CeladonCity_Text_GymSign::
+ .string "CELADON CITY POKéMON GYM\n"
+ .string "LEADER: ERIKA\l"
+ .string "The Nature-Loving Princess!$"
+
+CeladonCity_Text_MansionSign::
+ .string "CELADON MANSION$"
+
+CeladonCity_Text_DeptStoreSign::
+ .string "Find what you need at the\n"
+ .string "CELADON DEPT. STORE!$"
+
+CeladonCity_Text_GuardSpecProtectsFromStatus::
+ .string "TRAINER TIPS\p"
+ .string "GUARD SPEC. protects POKéMON\n"
+ .string "from status-reduction moves during\l"
+ .string "battle.\p"
+ .string "Get your items at the\n"
+ .string "CELADON DEPT. STORE!$"
+
+CeladonCity_Text_PrizeExchangeSign::
+ .string "COINS exchanged for prizes!\n"
+ .string "PRIZE EXCHANGE$"
+
+CeladonCity_Text_GameCornerSign::
+ .string "ROCKET GAME CORNER\n"
+ .string "The playground for grown-ups!$"
+
+CeladonCity_Text_ScaldedTongueOnTea::
+ .string "Aaaagh, ow…\n"
+ .string "I scalded my tongue!\p"
+ .string "This nice old lady in the MANSION\n"
+ .string "gave me some TEA.\p"
+ .string "But it was boiling hot!\n"
+ .string "Gotta cool it to drink it.$"
+
+Text_SoftboiledTeach::
+ .string "Hello, there!\p"
+ .string "I've seen you about, but I never\n"
+ .string "had a chance to chat.\p"
+ .string "It must be good luck that brought\n"
+ .string "us together finally.\p"
+ .string "I'd like to celebrate by teaching\n"
+ .string "you the move SOFTBOILED.$"
+
+Text_SoftboiledDeclined::
+ .string "I'll always be keeping an eye out\n"
+ .string "for you.\p"
+ .string "I hope we can chat again.$"
+
+Text_SoftboiledWhichMon::
+ .string "So, who's the POKéMON that gets\n"
+ .string "the chance to learn SOFTBOILED?$"
+
+Text_SoftboiledTaught::
+ .string "I wish you the best of luck!$"
+
+CeladonCity_Text_SomeoneStoleSilphScope::
+ .string "Oh, what am I to do…\p"
+ .string "Someone stole our SILPH SCOPE.\p"
+ .string "The thief came running this way,\n"
+ .string "I'm sure of it.\p"
+ .string "But I lost sight of him!\n"
+ .string "Where'd he go?$"
+
diff --git a/data/maps/CeladonCity_GameCorner_Frlg/map.json b/data/maps/CeladonCity_GameCorner_Frlg/map.json
new file mode 100644
index 000000000000..0341a0141bd6
--- /dev/null
+++ b/data/maps/CeladonCity_GameCorner_Frlg/map.json
@@ -0,0 +1,520 @@
+{
+ "id": "MAP_CELADON_CITY_GAME_CORNER",
+ "name": "CeladonCity_GameCorner_Frlg",
+ "layout": "LAYOUT_CELADON_CITY_GAME_CORNER",
+ "music": "MUS_GAME_CORNER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_F",
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_GameCorner_EventScript_InfoClerk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_GameCorner_EventScript_CoinsClerk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 1,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_GameCorner_EventScript_BaldingMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 1,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_GameCorner_EventScript_Woman1",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_GameCorner_EventScript_Fisher",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GYM_GUY",
+ "x": 7,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_GameCorner_EventScript_GymGuy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_GameCorner_EventScript_Woman2",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_2",
+ "x": 10,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_GameCorner_EventScript_OldMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 13,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_GameCorner_EventScript_Scientist",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 16,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_GameCorner_EventScript_Gentleman",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_GAME_CORNER_GRUNT",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 11,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_GameCorner_EventScript_RocketGrunt",
+ "flag": "FLAG_HIDE_GAME_CORNER_ROCKET"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 9,
+ "y": 13,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 10,
+ "y": 13,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 11,
+ "y": 13,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 15,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_ROCKET_HIDEOUT_B1F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 2,
+ "y": 4,
+ "elevation": 3,
+ "item": "ITEM_NONE",
+ "flag": "FLAG_HIDDEN_ITEM_CELADON_CITY_GAME_CORNER_COINS",
+ "quantity": 10,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 3,
+ "y": 8,
+ "elevation": 3,
+ "item": "ITEM_NONE",
+ "flag": "FLAG_HIDDEN_ITEM_CELADON_CITY_GAME_CORNER_COINS_2",
+ "quantity": 10,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 2,
+ "y": 11,
+ "elevation": 3,
+ "item": "ITEM_NONE",
+ "flag": "FLAG_HIDDEN_ITEM_CELADON_CITY_GAME_CORNER_COINS_3",
+ "quantity": 20,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 6,
+ "y": 12,
+ "elevation": 3,
+ "item": "ITEM_NONE",
+ "flag": "FLAG_HIDDEN_ITEM_CELADON_CITY_GAME_CORNER_COINS_4",
+ "quantity": 10,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 9,
+ "y": 9,
+ "elevation": 3,
+ "item": "ITEM_NONE",
+ "flag": "FLAG_HIDDEN_ITEM_CELADON_CITY_GAME_CORNER_COINS_5",
+ "quantity": 10,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 8,
+ "y": 5,
+ "elevation": 3,
+ "item": "ITEM_NONE",
+ "flag": "FLAG_HIDDEN_ITEM_CELADON_CITY_GAME_CORNER_COINS_6",
+ "quantity": 20,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 10,
+ "y": 4,
+ "elevation": 3,
+ "item": "ITEM_NONE",
+ "flag": "FLAG_HIDDEN_ITEM_CELADON_CITY_GAME_CORNER_COINS_7",
+ "quantity": 10,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 13,
+ "y": 3,
+ "elevation": 3,
+ "item": "ITEM_NONE",
+ "flag": "FLAG_HIDDEN_ITEM_CELADON_CITY_GAME_CORNER_COINS_8",
+ "quantity": 10,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 15,
+ "y": 5,
+ "elevation": 3,
+ "item": "ITEM_NONE",
+ "flag": "FLAG_HIDDEN_ITEM_CELADON_CITY_GAME_CORNER_COINS_9",
+ "quantity": 10,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 17,
+ "y": 5,
+ "elevation": 3,
+ "item": "ITEM_NONE",
+ "flag": "FLAG_HIDDEN_ITEM_CELADON_CITY_GAME_CORNER_COINS_10",
+ "quantity": 40,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 15,
+ "y": 13,
+ "elevation": 3,
+ "item": "ITEM_NONE",
+ "flag": "FLAG_HIDDEN_ITEM_CELADON_CITY_GAME_CORNER_COINS_11",
+ "quantity": 100,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 12,
+ "y": 12,
+ "elevation": 3,
+ "item": "ITEM_NONE",
+ "flag": "FLAG_HIDDEN_ITEM_CELADON_CITY_GAME_CORNER_COINS_12",
+ "quantity": 10,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 0,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine0"
+ },
+ {
+ "type": "sign",
+ "x": 0,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine1"
+ },
+ {
+ "type": "sign",
+ "x": 0,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine2"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 6,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine3"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
+ "script": "CeladonCity_GameCorner_EventScript_UnusableSlotMachine1"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine5"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine6"
+ },
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 6,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine7"
+ },
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine8"
+ },
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine9"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 6,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine10"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine11"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine12"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine13"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 6,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine14"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
+ "script": "CeladonCity_GameCorner_EventScript_UnusableSlotMachine2"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine16"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine17"
+ },
+ {
+ "type": "sign",
+ "x": 17,
+ "y": 6,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
+ "script": "CeladonCity_GameCorner_EventScript_UnusableSlotMachine3"
+ },
+ {
+ "type": "sign",
+ "x": 17,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine19"
+ },
+ {
+ "type": "sign",
+ "x": 17,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine20"
+ },
+ {
+ "type": "sign",
+ "x": 17,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
+ "script": "CeladonCity_GameCorner_EventScript_SlotMachine21"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_GameCorner_EventScript_Poster"
+ },
+ {
+ "type": "sign",
+ "x": 17,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
+ "script": "CeladonCity_GameCorner_EventScript_PhotoPrinter"
+ }
+ ]
+}
diff --git a/data/maps/CeladonCity_GameCorner_Frlg/scripts.inc b/data/maps/CeladonCity_GameCorner_Frlg/scripts.inc
new file mode 100644
index 000000000000..738d037d9306
--- /dev/null
+++ b/data/maps/CeladonCity_GameCorner_Frlg/scripts.inc
@@ -0,0 +1,614 @@
+CeladonCity_GameCorner_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, CeladonCity_GameCorner_OnLoad
+ .byte 0
+
+CeladonCity_GameCorner_OnLoad::
+ call_if_unset FLAG_OPENED_ROCKET_HIDEOUT, CeladonCity_GameCorner_EventScript_HideRocketHideout
+ end
+
+CeladonCity_GameCorner_EventScript_HideRocketHideout::
+ setmetatile 15, 2, METATILE_GameCorner_Floor_ShadeFull, 0
+ setmetatile 16, 2, METATILE_GameCorner_Floor_ShadeFull, 0
+ setmetatile 17, 2, METATILE_GameCorner_Floor_ShadeFull, 0
+ setmetatile 16, 3, METATILE_GameCorner_PurpleWall_Floor, 1
+ setmetatile 17, 3, METATILE_GameCorner_PurpleWall_Floor, 1
+ return
+
+CeladonCity_GameCorner_EventScript_InfoClerk::
+ msgbox CeladonCity_GameCorner_Text_CanExchangeCoinsNextDoor, MSGBOX_NPC
+ end
+
+CeladonCity_GameCorner_EventScript_CoinsClerk::
+ lock
+ faceplayer
+ showmoneybox 0, 0
+ showcoinsbox 1, 6
+ message CeladonCity_GameCorner_Text_WelcomeBuySomeCoins
+ waitmessage
+ multichoice 13, 0, MULTI_GAME_CORNER_COIN_PURCHASE_COUNTER, FALSE
+ copyvar VAR_0x8009, VAR_RESULT
+ switch VAR_RESULT
+ case 0, CeladonCity_GameCorner_EventScript_BuyCoins
+ case 1, CeladonCity_GameCorner_EventScript_BuyCoins
+ case 2, CeladonCity_GameCorner_EventScript_ClerkDeclineBuy
+ case 127, CeladonCity_GameCorner_EventScript_ClerkDeclineBuy
+ end
+
+CeladonCity_GameCorner_EventScript_BuyCoins::
+ goto_if_unset FLAG_GOT_COIN_CASE, CeladonCity_GameCorner_EventScript_ClerkNoCoinCase
+ goto_if_eq VAR_0x8009, 0, CeladonCity_GameCorner_EventScript_Buy50Coins
+ goto_if_eq VAR_0x8009, 1, CeladonCity_GameCorner_EventScript_Buy500Coins
+ end
+
+CeladonCity_GameCorner_EventScript_Buy500Coins::
+ checkcoins VAR_TEMP_1
+ goto_if_ge VAR_TEMP_1, (MAX_COINS + 1) - 500, CeladonCity_GameCorner_EventScript_ClerkNoRoomForCoins
+ checkmoney 10000
+ goto_if_eq VAR_RESULT, FALSE, CeladonCity_GameCorner_EventScript_ClerkNotEnoughMoney
+ addcoins 500
+ removemoney 10000
+ goto CeladonCity_GameCorner_EventScript_BoughtCoins
+ end
+
+CeladonCity_GameCorner_EventScript_Buy50Coins::
+ checkcoins VAR_TEMP_1
+ goto_if_ge VAR_TEMP_1, (MAX_COINS + 1) - 50, CeladonCity_GameCorner_EventScript_ClerkNoRoomForCoins
+ checkmoney 1000
+ goto_if_eq VAR_RESULT, FALSE, CeladonCity_GameCorner_EventScript_ClerkNotEnoughMoney
+ addcoins 50
+ removemoney 1000
+ goto CeladonCity_GameCorner_EventScript_BoughtCoins
+ end
+
+CeladonCity_GameCorner_EventScript_BoughtCoins::
+ updatemoneybox
+ updatecoinsbox 0, 5
+ playse SE_SHOP
+ msgbox CeladonCity_GameCorner_Text_HereAreYourCoins
+ goto CeladonCity_GameCorner_EventScript_ClerkEnd
+ end
+
+CeladonCity_GameCorner_EventScript_ClerkEnd::
+ hidemoneybox
+ hidecoinsbox 0, 5
+ release
+ end
+
+CeladonCity_GameCorner_EventScript_ClerkDeclineBuy::
+ msgbox CeladonCity_GameCorner_Text_ComePlaySometime
+ goto CeladonCity_GameCorner_EventScript_ClerkEnd
+ end
+
+CeladonCity_GameCorner_EventScript_ClerkNoCoinCase::
+ msgbox CeladonCity_GameCorner_Text_SorryDontHaveCoinCase
+ goto CeladonCity_GameCorner_EventScript_ClerkEnd
+ end
+
+CeladonCity_GameCorner_EventScript_ClerkNoRoomForCoins::
+ msgbox CeladonCity_GameCorner_Text_CoinCaseIsFull
+ goto CeladonCity_GameCorner_EventScript_ClerkEnd
+ end
+
+CeladonCity_GameCorner_EventScript_ClerkNotEnoughMoney::
+ msgbox CeladonCity_GameCorner_Text_CantAffordCoins
+ goto CeladonCity_GameCorner_EventScript_ClerkEnd
+ end
+
+CeladonCity_GameCorner_EventScript_BaldingMan::
+ lock
+ faceplayer
+ msgbox CeladonCity_GameCorner_Text_RumoredTeamRocketRunsThisPlace
+ goto CeladonCity_GameCorner_EventScript_FaceSlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_FaceSlotMachine::
+ closemessage
+ applymovement VAR_LAST_TALKED, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+CeladonCity_GameCorner_EventScript_Woman1::
+ lock
+ faceplayer
+ msgbox CeladonCity_GameCorner_Text_ThinkMachinesHaveDifferentOdds
+ goto CeladonCity_GameCorner_EventScript_FaceSlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_Fisher::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_10_COINS_FROM_GAMBLER, CeladonCity_GameCorner_EventScript_FisherAlreadyGotCoins
+ msgbox CeladonCity_GameCorner_Text_DoYouWantToPlay
+ goto_if_unset FLAG_GOT_COIN_CASE, CeladonCity_GameCorner_EventScript_GamblerNoCoinCase
+ checkcoins VAR_TEMP_1
+ goto_if_ge VAR_TEMP_1, (MAX_COINS + 1) - 10, CeladonCity_GameCorner_EventScript_FisherNoRoomForCoins
+ addcoins 10
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox CeladonCity_GameCorner_Text_Received10CoinsFromMan
+ playse SE_SHOP
+ waitse
+ setflag FLAG_GOT_10_COINS_FROM_GAMBLER
+ goto CeladonCity_GameCorner_EventScript_FaceSlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_FisherNoRoomForCoins::
+ msgbox CeladonCity_GameCorner_Text_DontNeedMyCoins
+ goto CeladonCity_GameCorner_EventScript_FaceSlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_GamblerNoCoinCase::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox CeladonCity_GameCorner_Text_DontHaveCoinCase
+ goto CeladonCity_GameCorner_EventScript_FaceSlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_FisherAlreadyGotCoins::
+ msgbox CeladonCity_GameCorner_Text_WinsComeAndGo
+ goto CeladonCity_GameCorner_EventScript_FaceSlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_GymGuy::
+ lock
+ faceplayer
+ goto_if_set FLAG_DEFEATED_ERIKA, CeladonCity_GameCorner_EventScript_GymGuyPostVictory
+ msgbox CeladonCity_GameCorner_Text_GymGuyAdvice
+ goto CeladonCity_GameCorner_EventScript_FaceSlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_GymGuyPostVictory::
+ msgbox CeladonCity_GameCorner_Text_RareMonsForCoins
+ goto CeladonCity_GameCorner_EventScript_FaceSlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_Woman2::
+ lock
+ faceplayer
+ msgbox CeladonCity_GameCorner_Text_WinOrLoseItsOnlyLuck
+ goto CeladonCity_GameCorner_EventScript_FaceSlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_OldMan::
+ lock
+ faceplayer
+ msgbox CeladonCity_GameCorner_Text_SoEasyToGetHooked
+ goto CeladonCity_GameCorner_EventScript_FaceSlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_Scientist::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_20_COINS_FROM_GAMBLER, CeladonCity_GameCorner_EventScript_ScientistAlreadyGotCoins
+ msgbox CeladonCity_GameCorner_Text_WantSomeCoins
+ goto_if_unset FLAG_GOT_COIN_CASE, CeladonCity_GameCorner_EventScript_GamblerNoCoinCase
+ checkcoins VAR_TEMP_1
+ goto_if_ge VAR_TEMP_1, (MAX_COINS + 1) - 20, CeladonCity_GameCorner_EventScript_ScientistNoRoomForCoins
+ addcoins 20
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox CeladonCity_GameCorner_Text_Received20CoinsFromNiceGuy
+ playse SE_SHOP
+ waitse
+ setflag FLAG_GOT_20_COINS_FROM_GAMBLER
+ goto CeladonCity_GameCorner_EventScript_FaceSlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_ScientistNoRoomForCoins::
+ msgbox CeladonCity_GameCorner_Text_YouHaveLotsOfCoins
+ goto CeladonCity_GameCorner_EventScript_FaceSlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_ScientistAlreadyGotCoins::
+ msgbox CeladonCity_GameCorner_Text_NeedMoreCoinsForMonIWant
+ goto CeladonCity_GameCorner_EventScript_FaceSlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_Gentleman::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_20_COINS_FROM_GAMBLER_2, CeladonCity_GameCorner_EventScript_GentlemanAlreadyGotCoins
+ msgbox CeladonCity_GameCorner_Text_HereAreSomeCoinsShoo
+ goto_if_unset FLAG_GOT_COIN_CASE, CeladonCity_GameCorner_EventScript_GamblerNoCoinCase
+ checkcoins VAR_TEMP_1
+ goto_if_ge VAR_TEMP_1, (MAX_COINS + 1) - 20, CeladonCity_GameCorner_EventScript_GentlemanNoRoomForCoins
+ addcoins 20
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox CeladonCity_GameCorner_Text_Received20CoinsFromMan
+ playse SE_SHOP
+ waitse
+ setflag FLAG_GOT_20_COINS_FROM_GAMBLER_2
+ goto CeladonCity_GameCorner_EventScript_FaceSlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_GentlemanNoRoomForCoins::
+ msgbox CeladonCity_GameCorner_Text_YouveGotPlentyCoins
+ goto CeladonCity_GameCorner_EventScript_FaceSlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_GentlemanAlreadyGotCoins::
+ msgbox CeladonCity_GameCorner_Text_WatchReelsClosely
+ goto CeladonCity_GameCorner_EventScript_FaceSlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine0::
+ lockall
+ setvar VAR_0x8004, 0
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_DontPlaySlotMachine::
+ releaseall
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine::
+ goto_if_unset FLAG_GOT_COIN_CASE, CeladonCity_GameCorner_EventScript_SlotMachineNoCoinCase
+ msgbox CeladonCity_GameCorner_Text_SlotMachineWantToPlay, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CeladonCity_GameCorner_EventScript_DontPlaySlotMachine
+ setfieldeffectargument 0, LOCALID_PLAYER
+#ifdef BUGFIX
+ setfieldeffectargument 1, MAP_NUM(MAP_CELADON_CITY_GAME_CORNER)
+ setfieldeffectargument 2, MAP_GROUP(MAP_CELADON_CITY_GAME_CORNER)
+#else
+ @ Map num/group were provided in the wrong order
+ setfieldeffectargument 1, MAP_GROUP(MAP_CELADON_CITY_GAME_CORNER)
+ setfieldeffectargument 2, MAP_NUM(MAP_CELADON_CITY_GAME_CORNER)
+#endif
+ dofieldeffect FLDEFF_SMILEY_FACE_ICON
+ waitfieldeffect FLDEFF_SMILEY_FACE_ICON
+ specialvar VAR_RESULT, GetRandomSlotMachineId
+ playslotmachine VAR_RESULT
+ releaseall
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine1::
+ lockall
+ setvar VAR_0x8004, 1
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine2::
+ lockall
+ setvar VAR_0x8004, 2
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine3::
+ lockall
+ setvar VAR_0x8004, 3
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine4::
+ lockall
+ setvar VAR_0x8004, 4
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine5::
+ lockall
+ setvar VAR_0x8004, 5
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine6::
+ lockall
+ setvar VAR_0x8004, 6
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine7::
+ lockall
+ setvar VAR_0x8004, 7
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine8::
+ lockall
+ setvar VAR_0x8004, 8
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine9::
+ lockall
+ setvar VAR_0x8004, 9
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine10::
+ lockall
+ setvar VAR_0x8004, 10
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine11::
+ lockall
+ setvar VAR_0x8004, 11
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine12::
+ lockall
+ setvar VAR_0x8004, 12
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine13::
+ lockall
+ setvar VAR_0x8004, 13
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine14::
+ lockall
+ setvar VAR_0x8004, 14
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine15::
+ lockall
+ setvar VAR_0x8004, 15
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine16::
+ lockall
+ setvar VAR_0x8004, 16
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine17::
+ lockall
+ setvar VAR_0x8004, 17
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine18::
+ lockall
+ setvar VAR_0x8004, 18
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine19::
+ lockall
+ setvar VAR_0x8004, 19
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine20::
+ lockall
+ setvar VAR_0x8004, 20
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachine21::
+ lockall
+ setvar VAR_0x8004, 21
+ goto CeladonCity_GameCorner_EventScript_SlotMachine
+ end
+
+CeladonCity_GameCorner_EventScript_SlotMachineNoCoinCase::
+ msgbox CeladonCity_GameCorner_Text_CoinCaseIsRequired
+ releaseall
+ end
+
+CeladonCity_GameCorner_EventScript_Poster::
+ lockall
+ msgbox CeladonCity_GameCorner_Text_SwitchBehindPosterPushIt
+ call_if_unset FLAG_OPENED_ROCKET_HIDEOUT, CeladonCity_GameCorner_EventScript_OpenRocketHideout
+ releaseall
+ end
+
+CeladonCity_GameCorner_EventScript_OpenRocketHideout::
+ playse SE_UNLOCK
+ setmetatile 15, 2, METATILE_GameCorner_Floor_StairsTop, 0
+ setmetatile 16, 2, METATILE_GameCorner_StairsTop, 1
+ setmetatile 17, 2, METATILE_GameCorner_StairsBottom, 1
+ setmetatile 16, 3, METATILE_GameCorner_PurpleWall_StairsTop, 1
+ setmetatile 17, 3, METATILE_GameCorner_PurpleWall_stairsBottom, 1
+ special DrawWholeMapView
+ setflag FLAG_OPENED_ROCKET_HIDEOUT
+ return
+
+CeladonCity_GameCorner_EventScript_RocketGrunt::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_7, CeladonCity_GameCorner_Text_GruntIntro, CeladonCity_GameCorner_Text_GruntDefeat, CeladonCity_GameCorner_Text_DefeatedGrunt
+ msgbox CeladonCity_GameCorner_Text_GruntPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+CeladonCity_GameCorner_Text_DefeatedGrunt::
+ msgbox CeladonCity_GameCorner_Text_GruntPostBattle
+ closemessage
+ call_if_eq VAR_FACING, DIR_WEST, CeladonCity_GameCorner_Text_GruntExitWest
+ call_if_ne VAR_FACING, DIR_WEST, CeladonCity_GameCorner_Text_GruntExit
+ removeobject LOCALID_GAME_CORNER_GRUNT
+ release
+ end
+
+CeladonCity_GameCorner_Text_GruntExitWest::
+ applymovement LOCALID_GAME_CORNER_GRUNT, CeladonCity_GameCorner_Movement_GruntExitWest
+ waitmovement 0
+ return
+
+CeladonCity_GameCorner_Text_GruntExit::
+ applymovement LOCALID_GAME_CORNER_GRUNT, CeladonCity_GameCorner_Movement_GruntExit
+ waitmovement 0
+ return
+
+CeladonCity_GameCorner_Movement_GruntExitWest::
+ walk_down
+ walk_right
+ walk_right
+ walk_up
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ step_end
+
+CeladonCity_GameCorner_Movement_GruntExit::
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ step_end
+
+CeladonCity_GameCorner_EventScript_UnusableSlotMachine1::
+ msgbox CeladonCity_GameCorner_Text_OutOfOrder, MSGBOX_SIGN
+ end
+
+CeladonCity_GameCorner_EventScript_UnusableSlotMachine2::
+ msgbox CeladonCity_GameCorner_Text_OutToLunch, MSGBOX_SIGN
+ end
+
+CeladonCity_GameCorner_EventScript_UnusableSlotMachine3::
+ msgbox CeladonCity_GameCorner_Text_SomeonesKeys, MSGBOX_SIGN
+ end
+
+CeladonCity_GameCorner_Text_CanExchangeCoinsNextDoor::
+ .string "Welcome!\p"
+ .string "You can exchange your COINS for\n"
+ .string "fabulous prizes next door.$"
+
+CeladonCity_GameCorner_Text_WelcomeBuySomeCoins::
+ .string "Welcome to ROCKET GAME CORNER!\p"
+ .string "Do you need some game COINS?\n"
+ .string "Would you like to buy some?$"
+
+CeladonCity_GameCorner_Text_ComePlaySometime::
+ .string "No?\n"
+ .string "Please come play sometime!$"
+
+CeladonCity_GameCorner_Text_SorryDontHaveCoinCase::
+ .string "Oh, I'm sorry.\n"
+ .string "You don't have a COIN CASE.$"
+
+CeladonCity_GameCorner_Text_CoinCaseIsFull::
+ .string "Whoops!\n"
+ .string "Your COIN CASE is full.$"
+
+CeladonCity_GameCorner_Text_CantAffordCoins::
+ .string "You can't afford the COINS.$"
+
+CeladonCity_GameCorner_Text_HereAreYourCoins::
+ .string "Thank you.\n"
+ .string "Here are your COINS!$"
+
+CeladonCity_GameCorner_Text_RumoredTeamRocketRunsThisPlace::
+ .string "Keep this quiet.\p"
+ .string "It's rumored that this place is run\n"
+ .string "by TEAM ROCKET.$"
+
+CeladonCity_GameCorner_Text_ThinkMachinesHaveDifferentOdds::
+ .string "I think these machines have\n"
+ .string "different odds.$"
+
+CeladonCity_GameCorner_Text_DoYouWantToPlay::
+ .string "Kid, do you want to play?$"
+
+CeladonCity_GameCorner_Text_Received10CoinsFromMan::
+ .string "{PLAYER} received 10 COINS\n"
+ .string "from the man.$"
+
+CeladonCity_GameCorner_Text_DontNeedMyCoins::
+ .string "You don't need my COINS!$"
+
+CeladonCity_GameCorner_Text_WinsComeAndGo::
+ .string "Wins seem to come and go.\n"
+ .string "Nothing's a sure thing.$"
+
+CeladonCity_GameCorner_Text_WinOrLoseItsOnlyLuck::
+ .string "These slot games…\n"
+ .string "Win or lose, it's only by luck.$"
+
+CeladonCity_GameCorner_Text_GymGuyAdvice::
+ .string "Hey!\p"
+ .string "You have better things to do,\n"
+ .string "champ in the making!\p"
+ .string "CELADON GYM's LEADER is ERIKA.\p"
+ .string "She is a user of GRASS-type\n"
+ .string "POKéMON, and at one with nature.\p"
+ .string "She might appear docile because of\n"
+ .string "her flower arranging…\p"
+ .string "But she's not one to be taken\n"
+ .string "lightly!$"
+
+CeladonCity_GameCorner_Text_RareMonsForCoins::
+ .string "They offer rare POKéMON that can\n"
+ .string "be exchanged for your COINS.\p"
+ .string "But, I just can't seem to win!$"
+
+CeladonCity_GameCorner_Text_SoEasyToGetHooked::
+ .string "Games are scary!\n"
+ .string "It's so easy to get hooked!$"
+
+CeladonCity_GameCorner_Text_WantSomeCoins::
+ .string "What's up?\n"
+ .string "Want some COINS?$"
+
+CeladonCity_GameCorner_Text_Received20CoinsFromNiceGuy::
+ .string "{PLAYER} received 20 COINS\n"
+ .string "from the nice guy.$"
+
+CeladonCity_GameCorner_Text_YouHaveLotsOfCoins::
+ .string "You have lots of COINS!$"
+
+CeladonCity_GameCorner_Text_NeedMoreCoinsForMonIWant::
+ .string "Darn! I need more COINS for the\n"
+ .string "POKéMON I want!$"
+
+CeladonCity_GameCorner_Text_HereAreSomeCoinsShoo::
+ .string "Hey, what? You're throwing me off!\n"
+ .string "Here are some COINS, so shoo!$"
+
+CeladonCity_GameCorner_Text_Received20CoinsFromMan::
+ .string "{PLAYER} received 20 COINS\n"
+ .string "from the man.$"
+
+CeladonCity_GameCorner_Text_YouveGotPlentyCoins::
+ .string "You've got plenty of your own\n"
+ .string "COINS!$"
+
+CeladonCity_GameCorner_Text_WatchReelsClosely::
+ .string "The trick is to watch the reels\n"
+ .string "closely.$"
+
+CeladonCity_GameCorner_Text_GruntIntro::
+ .string "I'm guarding this poster!\n"
+ .string "Go away, or else!$"
+
+CeladonCity_GameCorner_Text_GruntDefeat::
+ .string "Dang!$"
+
+CeladonCity_GameCorner_Text_GruntPostBattle::
+ .string "The TEAM ROCKET HIDEOUT might\n"
+ .string "be discovered!\p"
+ .string "I better tell BOSS!$"
+
+CeladonCity_GameCorner_Text_SwitchBehindPosterPushIt::
+ .string "Hey!\p"
+ .string "A switch behind the poster!?\n"
+ .string "Let's push it!$"
+
+CeladonCity_GameCorner_Text_CoinCaseIsRequired::
+ .string "A COIN CASE is required…$"
+
+CeladonCity_GameCorner_Text_DontHaveCoinCase::
+ .string "Oops!\n"
+ .string "Don't have the COIN CASE!$"
+
+CeladonCity_GameCorner_Text_SlotMachineWantToPlay::
+ .string "A slot machine!\n"
+ .string "Want to play?$"
+
+CeladonCity_GameCorner_Text_OutOfOrder::
+ .string "OUT OF ORDER\n"
+ .string "This is broken.$"
+
+CeladonCity_GameCorner_Text_OutToLunch::
+ .string "OUT TO LUNCH\n"
+ .string "This is reserved.$"
+
+CeladonCity_GameCorner_Text_SomeonesKeys::
+ .string "Someone's keys!\n"
+ .string "They'll be back.$"
+
diff --git a/data/maps/CeladonCity_GameCorner_PrizeRoom_Frlg/map.json b/data/maps/CeladonCity_GameCorner_PrizeRoom_Frlg/map.json
new file mode 100644
index 000000000000..0b78e0916218
--- /dev/null
+++ b/data/maps/CeladonCity_GameCorner_PrizeRoom_Frlg/map.json
@@ -0,0 +1,115 @@
+{
+ "id": "MAP_CELADON_CITY_GAME_CORNER_PRIZE_ROOM",
+ "name": "CeladonCity_GameCorner_PrizeRoom_Frlg",
+ "layout": "LAYOUT_CELADON_CITY_GAME_CORNER_PRIZE_ROOM",
+ "music": "MUS_RG_CELADON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 2,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_GameCorner_PrizeRoom_EventScript_BaldingMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_2",
+ "x": 6,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_GameCorner_PrizeRoom_EventScript_OldMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_GameCorner_PrizeRoom_EventScript_PrizeClerkMons",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_GameCorner_PrizeRoom_EventScript_PrizeClerkTMs",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_GameCorner_PrizeRoom_EventScript_PrizeClerkItems",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 4,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 5,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "5"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CeladonCity_GameCorner_PrizeRoom_Frlg/scripts.inc b/data/maps/CeladonCity_GameCorner_PrizeRoom_Frlg/scripts.inc
new file mode 100644
index 000000000000..e374fc92183d
--- /dev/null
+++ b/data/maps/CeladonCity_GameCorner_PrizeRoom_Frlg/scripts.inc
@@ -0,0 +1,418 @@
+CeladonCity_GameCorner_PrizeRoom_Frlg_MapScripts::
+ .byte 0
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_BaldingMan::
+ msgbox CeladonCity_GameCorner_PrizeRoom_Text_FancyThatPorygon, MSGBOX_NPC
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_OldMan::
+ msgbox CeladonCity_GameCorner_PrizeRoom_Text_RakedItInToday, MSGBOX_NPC
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_PrizeClerkMons::
+ lock
+ faceplayer
+ goto_if_unset FLAG_GOT_COIN_CASE, CeladonCity_GameCorner_PrizeRoom_EventScript_NeedCoinCase
+ showcoinsbox 1, 1
+ msgbox CeladonCity_GameCorner_PrizeRoom_Text_WeExchangeCoinsForPrizes
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ChoosePrizeMon
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_ChoosePrizeMon::
+ message CeladonCity_GameCorner_PrizeRoom_Text_WhichPrize
+ waitmessage
+ multichoice 11, 0, MULTI_GAME_CORNER_POKEMON_PRIZES, FALSE
+ switch VAR_RESULT
+ case 0, CeladonCity_GameCorner_PrizeRoom_EventScript_Abra
+ case 1, CeladonCity_GameCorner_PrizeRoom_EventScript_Clefairy
+ case 2, CeladonCity_GameCorner_PrizeRoom_EventScript_DratiniPinsir
+ case 3, CeladonCity_GameCorner_PrizeRoom_EventScript_ScytherDratini
+ case 4, CeladonCity_GameCorner_PrizeRoom_EventScript_Porygon
+ case 5, CeladonCity_GameCorner_PrizeRoom_EventScript_EndPrizeExchange
+ case 127, CeladonCity_GameCorner_PrizeRoom_EventScript_EndPrizeExchange
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_EndPrizeExchange::
+ hidecoinsbox 0, 0
+ release
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_Abra::
+ #ifdef FIRERED
+ setvar VAR_TEMP_1, SPECIES_ABRA
+ setvar VAR_TEMP_2, 180
+ #else
+ #ifdef LEAFGREEN
+ setvar VAR_TEMP_1, SPECIES_ABRA
+ setvar VAR_TEMP_2, 120
+ #endif
+ #endif
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeMon
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_Clefairy::
+ #ifdef FIRERED
+ setvar VAR_TEMP_1, SPECIES_CLEFAIRY
+ setvar VAR_TEMP_2, 500
+ #else
+ #ifdef LEAFGREEN
+ setvar VAR_TEMP_1, SPECIES_CLEFAIRY
+ setvar VAR_TEMP_2, 750
+ #endif
+ #endif
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeMon
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_DratiniPinsir::
+ #ifdef FIRERED
+ setvar VAR_TEMP_1, SPECIES_DRATINI
+ setvar VAR_TEMP_2, 2800
+ #else
+ #ifdef LEAFGREEN
+ setvar VAR_TEMP_1, SPECIES_PINSIR
+ setvar VAR_TEMP_2, 2500
+ #endif
+ #endif
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeMon
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_ScytherDratini::
+ #ifdef FIRERED
+ setvar VAR_TEMP_1, SPECIES_SCYTHER
+ setvar VAR_TEMP_2, 5500
+ #else
+ #ifdef LEAFGREEN
+ setvar VAR_TEMP_1, SPECIES_DRATINI
+ setvar VAR_TEMP_2, 4600
+ #endif
+ #endif
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeMon
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_Porygon::
+ #ifdef FIRERED
+ setvar VAR_TEMP_1, SPECIES_PORYGON
+ setvar VAR_TEMP_2, 9999
+ #else
+ #ifdef LEAFGREEN
+ setvar VAR_TEMP_1, SPECIES_PORYGON
+ setvar VAR_TEMP_2, 6500
+ #endif
+ #endif
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeMon
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeMon::
+ bufferspeciesname STR_VAR_1, VAR_TEMP_1
+ msgbox CeladonCity_GameCorner_PrizeRoom_Text_YouWantPrize, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CeladonCity_GameCorner_PrizeRoom_EventScript_EndPrizeExchange
+ checkcoins VAR_RESULT
+ goto_if_lt VAR_RESULT, VAR_TEMP_2, CeladonCity_GameCorner_PrizeRoom_EventScript_NotEnoughCoins
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ switch VAR_TEMP_1
+ case SPECIES_ABRA, CeladonCity_GameCorner_PrizeRoom_EventScript_GiveAbra
+ case SPECIES_CLEFAIRY, CeladonCity_GameCorner_PrizeRoom_EventScript_GiveClefairy
+ case SPECIES_DRATINI, CeladonCity_GameCorner_PrizeRoom_EventScript_GiveDratini
+ case SPECIES_SCYTHER, CeladonCity_GameCorner_PrizeRoom_EventScript_GiveScyther
+ case SPECIES_PORYGON, CeladonCity_GameCorner_PrizeRoom_EventScript_GivePorygon
+ case SPECIES_PINSIR, CeladonCity_GameCorner_PrizeRoom_EventScript_GivePinsir
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_GiveAbra::
+ #ifdef FIRERED
+ givemon VAR_TEMP_1, 9
+ #else
+ #ifdef LEAFGREEN
+ givemon VAR_TEMP_1, 7
+ #endif
+ #endif
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_CheckReceivedMon
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_GiveClefairy::
+ #ifdef FIRERED
+ givemon VAR_TEMP_1, 8
+ #else
+ #ifdef LEAFGREEN
+ givemon VAR_TEMP_1, 12
+ #endif
+ #endif
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_CheckReceivedMon
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_GiveDratini::
+ #ifdef FIRERED
+ givemon VAR_TEMP_1, 18
+ #else
+ #ifdef LEAFGREEN
+ givemon VAR_TEMP_1, 24
+ #endif
+ #endif
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_CheckReceivedMon
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_GiveScyther::
+ givemon VAR_TEMP_1, 25
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_CheckReceivedMon
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_GivePorygon::
+ #ifdef FIRERED
+ givemon VAR_TEMP_1, 26
+ #else
+ #ifdef LEAFGREEN
+ givemon VAR_TEMP_1, 18
+ #endif
+ #endif
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_CheckReceivedMon
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_GivePinsir::
+ givemon VAR_TEMP_1, 18
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_CheckReceivedMon
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_CheckReceivedMon::
+ goto_if_eq VAR_RESULT, 0, CeladonCity_GameCorner_PrizeRoom_EventScript_ReceivedMonParty
+ goto_if_eq VAR_RESULT, 1, CeladonCity_GameCorner_PrizeRoom_EventScript_ReceivedMonPC
+ goto_if_eq VAR_RESULT, 2, CeladonCity_GameCorner_PrizeRoom_EventScript_PartyFull
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_PartyFull::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox gText_NoMoreRoomForPokemon
+ hidecoinsbox 0, 0
+ release
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_NicknamePartyMon::
+ getpartysize
+ subvar VAR_RESULT, 1
+ copyvar VAR_0x8004, VAR_RESULT
+ call Common_EventScript_NameReceivedPartyMon
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_EndPrizeExchange
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_NeedCoinCase::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox CeladonCity_GameCorner_PrizeRoom_Text_CoinCaseRequired
+ release
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_NotEnoughCoins::
+ msgbox CeladonCity_GameCorner_PrizeRoom_Text_NeedMoreCoins
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_EndPrizeExchange
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_ReceivedMonParty::
+ removecoins VAR_TEMP_2
+ updatecoinsbox 0, 5
+ bufferspeciesname STR_VAR_1, VAR_TEMP_1
+ playfanfare MUS_LEVEL_UP
+ message gText_PlayerObtainedTheMon
+ waitmessage
+ waitfanfare
+ msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, CeladonCity_GameCorner_PrizeRoom_EventScript_NicknamePartyMon
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_EndPrizeExchange
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_ReceivedMonPC::
+ removecoins VAR_TEMP_2
+ updatecoinsbox 0, 5
+ bufferspeciesname STR_VAR_1, VAR_TEMP_1
+ playfanfare MUS_LEVEL_UP
+ message gText_PlayerObtainedTheMon
+ waitmessage
+ waitfanfare
+ msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CeladonCity_GameCorner_PrizeRoom_EventScript_TransferredToPC
+ call Common_EventScript_NameReceivedBoxMon
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_TransferredToPC
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_TransferredToPC::
+ call Common_EventScript_TransferredToPC
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_EndPrizeExchange
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_PrizeClerkTMs::
+ lock
+ faceplayer
+ goto_if_unset FLAG_GOT_COIN_CASE, CeladonCity_GameCorner_PrizeRoom_EventScript_NeedCoinCase
+ showcoinsbox 1, 1
+ msgbox CeladonCity_GameCorner_PrizeRoom_Text_WeExchangeCoinsForPrizes
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ChoosePrizeTM
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_ChoosePrizeTM::
+ message CeladonCity_GameCorner_PrizeRoom_Text_WhichPrize
+ waitmessage
+ multichoice 11, 0, MULTI_GAME_CORNER_TMPRIZES, FALSE
+ switch VAR_RESULT
+ case 0, CeladonCity_GameCorner_PrizeRoom_EventScript_TM13
+ case 1, CeladonCity_GameCorner_PrizeRoom_EventScript_TM23
+ case 2, CeladonCity_GameCorner_PrizeRoom_EventScript_TM24
+ case 3, CeladonCity_GameCorner_PrizeRoom_EventScript_TM30
+ case 4, CeladonCity_GameCorner_PrizeRoom_EventScript_TM35
+ case 5, CeladonCity_GameCorner_PrizeRoom_EventScript_EndPrizeExchange
+ case 127, CeladonCity_GameCorner_PrizeRoom_EventScript_EndPrizeExchange
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_TM13::
+ setvar VAR_TEMP_1, ITEM_TM13
+ setvar VAR_TEMP_2, 4000
+ buffermovename STR_VAR_2, MOVE_ICE_BEAM
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeTM
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_TM23::
+ setvar VAR_TEMP_1, ITEM_TM23
+ setvar VAR_TEMP_2, 3500
+ buffermovename STR_VAR_2, MOVE_IRON_TAIL
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeTM
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_TM24::
+ setvar VAR_TEMP_1, ITEM_TM24
+ setvar VAR_TEMP_2, 4000
+ buffermovename STR_VAR_2, MOVE_THUNDERBOLT
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeTM
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_TM30::
+ setvar VAR_TEMP_1, ITEM_TM30
+ setvar VAR_TEMP_2, 4500
+ buffermovename STR_VAR_2, MOVE_SHADOW_BALL
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeTM
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_TM35::
+ setvar VAR_TEMP_1, ITEM_TM35
+ setvar VAR_TEMP_2, 4000
+ buffermovename STR_VAR_2, MOVE_FLAMETHROWER
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeTM
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeTM::
+ msgbox CeladonCity_GameCorner_PrizeRoom_Text_YouWantTM, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CeladonCity_GameCorner_PrizeRoom_EventScript_EndPrizeExchange
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_TryGivePrize
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeItem::
+ bufferitemname STR_VAR_1, VAR_TEMP_1
+ msgbox CeladonCity_GameCorner_PrizeRoom_Text_YouWantPrize, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CeladonCity_GameCorner_PrizeRoom_EventScript_EndPrizeExchange
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_TryGivePrize
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_TryGivePrize::
+ bufferitemname STR_VAR_1, VAR_TEMP_1
+ checkcoins VAR_RESULT
+ goto_if_lt VAR_RESULT, VAR_TEMP_2, CeladonCity_GameCorner_PrizeRoom_EventScript_NotEnoughCoins
+ checkitemspace VAR_TEMP_1
+ goto_if_eq VAR_RESULT, FALSE, CeladonCity_GameCorner_PrizeRoom_EventScript_BagFull
+ removecoins VAR_TEMP_2
+ updatecoinsbox 0, 5
+ giveitem VAR_TEMP_1
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_EndPrizeExchange
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_BagFull::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox gText_TooBadBagIsFull
+ hidecoinsbox 0, 0
+ release
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_PrizeClerkItems::
+ lock
+ faceplayer
+ goto_if_unset FLAG_GOT_COIN_CASE, CeladonCity_GameCorner_PrizeRoom_EventScript_NeedCoinCase
+ showcoinsbox 1, 1
+ msgbox CeladonCity_GameCorner_PrizeRoom_Text_WeExchangeCoinsForPrizes
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ChoosePrizeItem
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_ChoosePrizeItem::
+ message CeladonCity_GameCorner_PrizeRoom_Text_WhichPrize
+ waitmessage
+ multichoice 10, 0, MULTI_GAME_CORNER_BATTLE_ITEM_PRIZES, FALSE
+ switch VAR_RESULT
+ case 0, CeladonCity_GameCorner_PrizeRoom_EventScript_SmokeBall
+ case 1, CeladonCity_GameCorner_PrizeRoom_EventScript_MiracleSeed
+ case 2, CeladonCity_GameCorner_PrizeRoom_EventScript_Charcoal
+ case 3, CeladonCity_GameCorner_PrizeRoom_EventScript_MysticWater
+ case 4, CeladonCity_GameCorner_PrizeRoom_EventScript_YellowFlute
+ case 5, CeladonCity_GameCorner_PrizeRoom_EventScript_EndPrizeExchange
+ case 127, CeladonCity_GameCorner_PrizeRoom_EventScript_EndPrizeExchange
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_SmokeBall::
+ setvar VAR_TEMP_1, ITEM_SMOKE_BALL
+ setvar VAR_TEMP_2, 800
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeItem
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_MiracleSeed::
+ setvar VAR_TEMP_1, ITEM_MIRACLE_SEED
+ setvar VAR_TEMP_2, 1000
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeItem
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_Charcoal::
+ setvar VAR_TEMP_1, ITEM_CHARCOAL
+ setvar VAR_TEMP_2, 1000
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeItem
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_MysticWater::
+ setvar VAR_TEMP_1, ITEM_MYSTIC_WATER
+ setvar VAR_TEMP_2, 1000
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeItem
+ end
+
+CeladonCity_GameCorner_PrizeRoom_EventScript_YellowFlute::
+ setvar VAR_TEMP_1, ITEM_YELLOW_FLUTE
+ setvar VAR_TEMP_2, 1600
+ goto CeladonCity_GameCorner_PrizeRoom_EventScript_ConfirmPrizeItem
+ end
+
+CeladonCity_GameCorner_PrizeRoom_Text_FancyThatPorygon::
+ .string "I sure do fancy that PORYGON!\n"
+ .string "But, it's hard to win at slots!$"
+
+CeladonCity_GameCorner_PrizeRoom_Text_RakedItInToday::
+ .string "Gahaha! I raked it in today!\n"
+ .string "If only every day were like this…$"
+
+CeladonCity_GameCorner_PrizeRoom_Text_CoinCaseRequired::
+ .string "A COIN CASE is required…$"
+
+CeladonCity_GameCorner_PrizeRoom_Text_WeExchangeCoinsForPrizes::
+ .string "We exchange your COINS for prizes.$"
+
+CeladonCity_GameCorner_PrizeRoom_Text_WhichPrize::
+ .string "Which prize would you like?$"
+
+CeladonCity_GameCorner_PrizeRoom_Text_HereYouGo::
+ .string "はい どうぞ$"
+
+CeladonCity_GameCorner_PrizeRoom_Text_YouWantPrize::
+ .string "So, you want the {STR_VAR_1}?$"
+
+CeladonCity_GameCorner_PrizeRoom_Text_YouWantTM::
+ .string "Okay, a TM of {STR_VAR_2}\n"
+ .string "is what you want?$"
+
+CeladonCity_GameCorner_PrizeRoom_Text_NeedMoreCoins::
+ .string "Sorry, you'll need more COINS\n"
+ .string "than that.$"
+
+CeladonCity_GameCorner_PrizeRoom_Text_OopsNotEnoughRoom::
+ .string "おきゃくさん もう もてないよ$"
+
+CeladonCity_GameCorner_PrizeRoom_Text_OhFineThen::
+ .string "あっ そう$"
+
diff --git a/data/maps/CeladonCity_Gym_Frlg/map.json b/data/maps/CeladonCity_Gym_Frlg/map.json
new file mode 100644
index 000000000000..25236f992c3e
--- /dev/null
+++ b/data/maps/CeladonCity_Gym_Frlg/map.json
@@ -0,0 +1,216 @@
+{
+ "id": "MAP_CELADON_CITY_GYM",
+ "name": "CeladonCity_Gym_Frlg",
+ "layout": "LAYOUT_CELADON_CITY_GYM",
+ "music": "MUS_GYM",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_GYM",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 3,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "CeladonCity_Gym_EventScript_Kay",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY_FRLG",
+ "x": 9,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "CeladonCity_Gym_EventScript_Bridget",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 10,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "CeladonCity_Gym_EventScript_Tina",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY_FRLG",
+ "x": 2,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "CeladonCity_Gym_EventScript_Tamia",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY_FRLG",
+ "x": 5,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "CeladonCity_Gym_EventScript_Lori",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "CeladonCity_Gym_EventScript_Lisa",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ERIKA",
+ "x": 6,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Gym_EventScript_Erika",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 8,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "CeladonCity_Gym_EventScript_Mary",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 3,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 9,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_14"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 6,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 7,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "6"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 16,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_Gym_EventScript_GymStatue"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 16,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeladonCity_Gym_EventScript_GymStatue"
+ }
+ ]
+}
diff --git a/data/maps/CeladonCity_Gym_Frlg/scripts.inc b/data/maps/CeladonCity_Gym_Frlg/scripts.inc
new file mode 100644
index 000000000000..79e8a5d1a326
--- /dev/null
+++ b/data/maps/CeladonCity_Gym_Frlg/scripts.inc
@@ -0,0 +1,237 @@
+CeladonCity_Gym_Frlg_MapScripts::
+ .byte 0
+
+CeladonCity_Gym_EventScript_Erika::
+ famechecker FAMECHECKER_ERIKA, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
+ trainerbattle_single TRAINER_LEADER_ERIKA, CeladonCity_Gym_Text_ErikaIntro, CeladonCity_Gym_Text_ErikaDefeat, CeladonCity_Gym_EventScript_DefeatedErika, NO_MUSIC
+ goto_if_unset FLAG_GOT_TM19_FROM_ERIKA, CeladonCity_Gym_EventScript_GiveTM19
+ famechecker FAMECHECKER_ERIKA, 4
+ msgbox CeladonCity_Gym_Text_ErikaPostBattle
+ release
+ end
+
+CeladonCity_Gym_EventScript_DefeatedErika::
+ famechecker FAMECHECKER_ERIKA, 1
+ clearflag FLAG_HIDE_FAME_CHECKER_ERIKA_JOURNALS
+ setflag FLAG_DEFEATED_ERIKA
+ setflag FLAG_BADGE04_GET
+ set_gym_trainers_frlg 4
+ goto CeladonCity_Gym_EventScript_GiveTM19
+ end
+
+CeladonCity_Gym_EventScript_GiveTM19::
+ msgbox CeladonCity_Gym_Text_ExplainRainbowBadgeTakeThis
+ checkitemspace ITEM_TM19
+ goto_if_eq VAR_RESULT, FALSE, CeladonCity_Gym_EventScript_NoRoomForTM19
+ giveitem_msg CeladonCity_Gym_Text_ReceivedTM19FromErika, ITEM_TM19
+ setflag FLAG_GOT_TM19_FROM_ERIKA
+ msgbox CeladonCity_Gym_Text_ExplainTM19
+ release
+ end
+
+CeladonCity_Gym_EventScript_NoRoomForTM19::
+ msgbox CeladonCity_Gym_Text_ShouldMakeRoomForThis
+ release
+ end
+
+CeladonCity_Gym_EventScript_Kay::
+ trainerbattle_single TRAINER_LASS_KAY, CeladonCity_Gym_Text_KayIntro, CeladonCity_Gym_Text_KayDefeat
+ msgbox CeladonCity_Gym_Text_KayPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+CeladonCity_Gym_EventScript_Lisa::
+ trainerbattle_single TRAINER_LASS_LISA, CeladonCity_Gym_Text_LisaIntro, CeladonCity_Gym_Text_LisaDefeat
+ famechecker FAMECHECKER_ERIKA, 2
+ msgbox CeladonCity_Gym_Text_LisaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+CeladonCity_Gym_EventScript_Tina::
+ trainerbattle_single TRAINER_PICNICKER_TINA, CeladonCity_Gym_Text_TinaIntro, CeladonCity_Gym_Text_TinaDefeat
+ msgbox CeladonCity_Gym_Text_TinaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+CeladonCity_Gym_EventScript_Bridget::
+ trainerbattle_single TRAINER_BEAUTY_BRIDGET, CeladonCity_Gym_Text_BridgetIntro, CeladonCity_Gym_Text_BridgetDefeat
+ msgbox CeladonCity_Gym_Text_BridgetPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+CeladonCity_Gym_EventScript_Tamia::
+ trainerbattle_single TRAINER_BEAUTY_TAMIA, CeladonCity_Gym_Text_TamiaIntro, CeladonCity_Gym_Text_TamiaDefeat
+ famechecker FAMECHECKER_ERIKA, 3
+ msgbox CeladonCity_Gym_Text_TamiaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+CeladonCity_Gym_EventScript_Lori::
+ trainerbattle_single TRAINER_BEAUTY_LORI, CeladonCity_Gym_Text_LoriIntro, CeladonCity_Gym_Text_LoriDefeat
+ msgbox CeladonCity_Gym_Text_LoriPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+CeladonCity_Gym_EventScript_Mary::
+ trainerbattle_single TRAINER_COOLTRAINER_MARY, CeladonCity_Gym_Text_MaryIntro, CeladonCity_Gym_Text_MaryDefeat
+ msgbox CeladonCity_Gym_Text_MaryPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+CeladonCity_Gym_EventScript_GymStatue::
+ lockall
+ goto_if_set FLAG_BADGE04_GET, CeladonCity_Gym_EventScript_GymStatuePostVictory
+ msgbox CeladonCity_Gym_Text_GymStatue
+ releaseall
+ end
+
+CeladonCity_Gym_EventScript_GymStatuePostVictory::
+ msgbox CeladonCity_Gym_Text_GymStatuePlayerWon
+ releaseall
+ end
+
+CeladonCity_Gym_Text_ErikaIntro::
+ .string "Hello…\n"
+ .string "Lovely weather, isn't it?\l"
+ .string "It's so pleasant…\p"
+ .string "…Oh, dear…\n"
+ .string "I must have dozed off. Welcome.\p"
+ .string "My name is ERIKA.\n"
+ .string "I am the LEADER of CELADON GYM.\p"
+ .string "I am a student of the art of\n"
+ .string "flower arranging.\p"
+ .string "My POKéMON are solely of the\n"
+ .string "GRASS type.\p"
+ .string "…Oh, I'm sorry, I had no idea that\n"
+ .string "you wished to challenge me.\p"
+ .string "Very well, but I shall not lose.{PLAY_BGM MUS_RG_ENCOUNTER_GYM_LEADER}$"
+
+CeladonCity_Gym_Text_ErikaDefeat::
+ .string "Oh!\n"
+ .string "I concede defeat.\l"
+ .string "You are remarkably strong.\p"
+ .string "I must confer on you the\n"
+ .string "RAINBOWBADGE.$"
+
+CeladonCity_Gym_Text_ErikaPostBattle::
+ .string "You are cataloging POKéMON?\n"
+ .string "I must say I'm impressed.\p"
+ .string "I would never collect POKéMON if\n"
+ .string "they were unattractive.$"
+
+CeladonCity_Gym_Text_ExplainRainbowBadgeTakeThis::
+ .string "The RAINBOWBADGE will make\n"
+ .string "POKéMON up to Lv. 50 obey.\p"
+ .string "It also allows POKéMON to use\n"
+ .string "STRENGTH in and out of battle.\p"
+ .string "Please also take this with you.$"
+
+CeladonCity_Gym_Text_ReceivedTM19FromErika::
+ .string "{PLAYER} received TM19\n"
+ .string "from ERIKA.$"
+
+CeladonCity_Gym_Text_ExplainTM19::
+ .string "TM19 contains GIGA DRAIN.\p"
+ .string "Half the damage it inflicts is\n"
+ .string "drained to heal your POKéMON.\p"
+ .string "Wouldn't you agree that it's a\n"
+ .string "wonderful move?$"
+
+CeladonCity_Gym_Text_ShouldMakeRoomForThis::
+ .string "You should make room for this.$"
+
+CeladonCity_Gym_Text_KayIntro::
+ .string "I should tell you about this GYM.\p"
+ .string "Only real ladies are allowed in\n"
+ .string "here!$"
+
+CeladonCity_Gym_Text_KayDefeat::
+ .string "You're too rough!$"
+
+CeladonCity_Gym_Text_KayPostBattle::
+ .string "Bleaah!\n"
+ .string "I hope ERIKA wipes you out!$"
+
+CeladonCity_Gym_Text_BridgetIntro::
+ .string "Oh, welcome.\n"
+ .string "I was getting bored.$"
+
+CeladonCity_Gym_Text_BridgetDefeat::
+ .string "My makeup!$"
+
+CeladonCity_Gym_Text_BridgetPostBattle::
+ .string "GRASS-type POKéMON are tough\n"
+ .string "against the WATER type.\p"
+ .string "They also have an edge on ROCK-\n"
+ .string "and GROUND-type POKéMON.$"
+
+CeladonCity_Gym_Text_TinaIntro::
+ .string "…Weren't you peeking in here\n"
+ .string "earlier?$"
+
+CeladonCity_Gym_Text_TinaDefeat::
+ .string "You're an eye-opener!$"
+
+CeladonCity_Gym_Text_TinaPostBattle::
+ .string "Oh, you were looking at ERIKA…\n"
+ .string "You weren't looking at me…$"
+
+CeladonCity_Gym_Text_TamiaIntro::
+ .string "Look, look!\n"
+ .string "See my POKéMON!\p"
+ .string "I like the GRASS type.\n"
+ .string "I like how they're easy to raise.$"
+
+CeladonCity_Gym_Text_TamiaDefeat::
+ .string "No!$"
+
+CeladonCity_Gym_Text_TamiaPostBattle::
+ .string "We only use GRASS-type POKéMON at\n"
+ .string "our GYM.\p"
+ .string "Why? We also use them for making\n"
+ .string "flower arrangements!$"
+
+CeladonCity_Gym_Text_LisaIntro::
+ .string "Oh, hey!\p"
+ .string "We don't like BUG- or FIRE-type\n"
+ .string "POKéMON in here!$"
+
+CeladonCity_Gym_Text_LisaDefeat::
+ .string "Oh!\n"
+ .string "You!$"
+
+CeladonCity_Gym_Text_LisaPostBattle::
+ .string "Our LEADER ERIKA might be quiet,\n"
+ .string "but she's famous around here.$"
+
+CeladonCity_Gym_Text_LoriIntro::
+ .string "Pleased to meet you.\n"
+ .string "My hobby is POKéMON training.$"
+
+CeladonCity_Gym_Text_LoriDefeat::
+ .string "Oh!\n"
+ .string "Splendid!$"
+
+CeladonCity_Gym_Text_LoriPostBattle::
+ .string "I have a blind date coming up.\n"
+ .string "I have to learn to be polite,\l"
+ .string "especially if I have to battle.$"
+
+CeladonCity_Gym_Text_MaryIntro::
+ .string "Welcome to CELADON GYM!\p"
+ .string "You'd better not underestimate\n"
+ .string "the nice ladies here.$"
+
+CeladonCity_Gym_Text_MaryDefeat::
+ .string "Oh!\n"
+ .string "Beaten!$"
+
+CeladonCity_Gym_Text_MaryPostBattle::
+ .string "I didn't bring my best POKéMON.\n"
+ .string "Wait until next time!$"
+
+CeladonCity_Gym_Text_GymStatue::
+ .string "CELADON POKéMON GYM\n"
+ .string "LEADER: ERIKA\p"
+ .string "WINNING TRAINERS:\n"
+ .string "{RIVAL}$"
+
+CeladonCity_Gym_Text_GymStatuePlayerWon::
+ .string "CELADON POKéMON GYM\n"
+ .string "LEADER: ERIKA\p"
+ .string "WINNING TRAINERS:\n"
+ .string "{RIVAL}, {PLAYER}$"
+
diff --git a/data/maps/CeladonCity_Hotel_Frlg/map.json b/data/maps/CeladonCity_Hotel_Frlg/map.json
new file mode 100644
index 000000000000..d6a023b9a1c9
--- /dev/null
+++ b/data/maps/CeladonCity_Hotel_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_CELADON_CITY_HOTEL",
+ "name": "CeladonCity_Hotel_Frlg",
+ "layout": "LAYOUT_CELADON_CITY_HOTEL",
+ "music": "MUS_RG_CELADON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_WOMAN_FRLG",
+ "x": 5,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Hotel_EventScript_Receptionist",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY_FRLG",
+ "x": 3,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Hotel_EventScript_Beauty",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Hotel_EventScript_BeautyBoyfriend",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_BOY_FRLG",
+ "x": 2,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Hotel_EventScript_BeautyBrother",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 10,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "9"
+ },
+ {
+ "x": 4,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "9"
+ },
+ {
+ "x": 5,
+ "y": 10,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "9"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CeladonCity_Hotel_Frlg/scripts.inc b/data/maps/CeladonCity_Hotel_Frlg/scripts.inc
new file mode 100644
index 000000000000..50d777af5ee3
--- /dev/null
+++ b/data/maps/CeladonCity_Hotel_Frlg/scripts.inc
@@ -0,0 +1,37 @@
+CeladonCity_Hotel_Frlg_MapScripts::
+ .byte 0
+
+CeladonCity_Hotel_EventScript_Receptionist::
+ msgbox CeladonCity_Hotel_Text_ThisHotelIsForPeople, MSGBOX_NPC
+ end
+
+CeladonCity_Hotel_EventScript_Beauty::
+ msgbox CeladonCity_Hotel_Text_OnVacationWithBrotherAndBoyfriend, MSGBOX_NPC
+ end
+
+CeladonCity_Hotel_EventScript_BeautyBoyfriend::
+ msgbox CeladonCity_Hotel_Text_WhyDidSheBringBrother, MSGBOX_NPC
+ end
+
+CeladonCity_Hotel_EventScript_BeautyBrother::
+ msgbox CeladonCity_Hotel_Text_SisBroughtMeOnVacation, MSGBOX_NPC
+ end
+
+CeladonCity_Hotel_Text_ThisHotelIsForPeople::
+ .string "POKéMON?\n"
+ .string "No, this is a hotel for people.\p"
+ .string "We're full up, unfortunately.$"
+
+CeladonCity_Hotel_Text_OnVacationWithBrotherAndBoyfriend::
+ .string "I'm on vacation with my brother and\n"
+ .string "boyfriend.\p"
+ .string "CELADON is such a pretty city!$"
+
+CeladonCity_Hotel_Text_WhyDidSheBringBrother::
+ .string "Why?\n"
+ .string "Why did she bring her brother?$"
+
+CeladonCity_Hotel_Text_SisBroughtMeOnVacation::
+ .string "Yippee! I'm on vacation!\n"
+ .string "My sis brought me along! Awesome!$"
+
diff --git a/data/maps/CeladonCity_House1_Frlg/map.json b/data/maps/CeladonCity_House1_Frlg/map.json
new file mode 100644
index 000000000000..8a80654fb499
--- /dev/null
+++ b/data/maps/CeladonCity_House1_Frlg/map.json
@@ -0,0 +1,87 @@
+{
+ "id": "MAP_CELADON_CITY_HOUSE1",
+ "name": "CeladonCity_House1_Frlg",
+ "layout": "LAYOUT_HOUSE5_FRLG",
+ "music": "MUS_RG_CELADON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_2",
+ "x": 5,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_House1_EventScript_RocketChief",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 2,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 5,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_House1_EventScript_Rocket1",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 8,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 5,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_House1_EventScript_Rocket2",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "8"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "8"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "8"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CeladonCity_House1_Frlg/scripts.inc b/data/maps/CeladonCity_House1_Frlg/scripts.inc
new file mode 100644
index 000000000000..34f1a3637ba2
--- /dev/null
+++ b/data/maps/CeladonCity_House1_Frlg/scripts.inc
@@ -0,0 +1,31 @@
+CeladonCity_House1_Frlg_MapScripts::
+ .byte 0
+
+CeladonCity_House1_EventScript_RocketChief::
+ msgbox CeladonCity_House1_Text_SlotsReelInTheDough, MSGBOX_NPC
+ end
+
+CeladonCity_House1_EventScript_Rocket1::
+ msgbox CeladonCity_House1_Text_ShippedMonsAsSlotPrizes, MSGBOX_NPC
+ end
+
+CeladonCity_House1_EventScript_Rocket2::
+ msgbox CeladonCity_House1_Text_DontTouchGameCornerPoster, MSGBOX_NPC
+ end
+
+CeladonCity_House1_Text_SlotsReelInTheDough::
+ .string "Hehehe!\p"
+ .string "The slots just reel in the dough,\n"
+ .string "big-time!$"
+
+CeladonCity_House1_Text_ShippedMonsAsSlotPrizes::
+ .string "CHIEF!\p"
+ .string "We just shipped two thousand\n"
+ .string "more POKéMON as slot prizes\l"
+ .string "again today!$"
+
+CeladonCity_House1_Text_DontTouchGameCornerPoster::
+ .string "Don't touch the poster at the GAME\n"
+ .string "CORNER!\p"
+ .string "There's no secret switch behind it!$"
+
diff --git a/data/maps/CeladonCity_PokemonCenter_1F_Frlg/map.json b/data/maps/CeladonCity_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..087859a1e2cc
--- /dev/null
+++ b/data/maps/CeladonCity_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,109 @@
+{
+ "id": "MAP_CELADON_CITY_POKEMON_CENTER_1F",
+ "name": "CeladonCity_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_CELADON_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_PokemonCenter_1F_EventScript_Gentleman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 10,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_PokemonCenter_1F_EventScript_CooltrainerF",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 12,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_PokemonCenter_1F_EventScript_Youngster",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 8,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_CELADON_CITY_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CeladonCity_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/CeladonCity_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..90dcd16ccd29
--- /dev/null
+++ b/data/maps/CeladonCity_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,43 @@
+CeladonCity_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, CeladonCity_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ .byte 0
+
+CeladonCity_PokemonCenter_1F_OnTransition::
+ setrespawn HEAL_LOCATION_CELADON_CITY
+ end
+
+CeladonCity_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+CeladonCity_PokemonCenter_1F_EventScript_Gentleman::
+ msgbox CeladonCity_PokemonCenter_1F_Text_PokeFluteAwakensSleepingMons, MSGBOX_NPC
+ end
+
+CeladonCity_PokemonCenter_1F_EventScript_CooltrainerF::
+ msgbox CeladonCity_PokemonCenter_1F_Text_RodeHereFromFuchsia, MSGBOX_NPC
+ end
+
+CeladonCity_PokemonCenter_1F_EventScript_Youngster::
+ msgbox CeladonCity_PokemonCenter_1F_Text_GoToCyclingRoadIfIHadBike, MSGBOX_NPC
+ end
+
+CeladonCity_PokemonCenter_1F_Text_PokeFluteAwakensSleepingMons::
+ .string "A POKé FLUTE awakens sleeping\n"
+ .string "POKéMON. You know that.\p"
+ .string "It does so with a sound that only\n"
+ .string "they can hear.$"
+
+CeladonCity_PokemonCenter_1F_Text_RodeHereFromFuchsia::
+ .string "I rode here from FUCHSIA.\p"
+ .string "It's an uphill ride on CYCLING\n"
+ .string "ROAD, so I'm exhausted.$"
+
+CeladonCity_PokemonCenter_1F_Text_GoToCyclingRoadIfIHadBike::
+ .string "If I had a BIKE, I would go to\n"
+ .string "CYCLING ROAD!$"
+
diff --git a/data/maps/CeladonCity_PokemonCenter_2F_Frlg/map.json b/data/maps/CeladonCity_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..27632b222234
--- /dev/null
+++ b/data/maps/CeladonCity_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_CELADON_CITY_POKEMON_CENTER_2F",
+ "name": "CeladonCity_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_CELADON_CITY_POKEMON_CENTER_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CeladonCity_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/CeladonCity_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..e095ae4cbec8
--- /dev/null
+++ b/data/maps/CeladonCity_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+CeladonCity_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+CeladonCity_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+CeladonCity_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+CeladonCity_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/CeladonCity_Restaurant_Frlg/map.json b/data/maps/CeladonCity_Restaurant_Frlg/map.json
new file mode 100644
index 000000000000..3add733111e9
--- /dev/null
+++ b/data/maps/CeladonCity_Restaurant_Frlg/map.json
@@ -0,0 +1,115 @@
+{
+ "id": "MAP_CELADON_CITY_RESTAURANT",
+ "name": "CeladonCity_Restaurant_Frlg",
+ "layout": "LAYOUT_CELADON_CITY_RESTAURANT",
+ "music": "MUS_RG_CELADON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CELADON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHEF",
+ "x": 12,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Restaurant_EventScript_Chef",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 11,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Restaurant_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FAT_MAN_FRLG",
+ "x": 9,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Restaurant_EventScript_FatMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Restaurant_EventScript_CoinCaseMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 3,
+ "y": 7,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeladonCity_Restaurant_EventScript_WorkerM",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 6,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 7,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_CELADON_CITY",
+ "dest_warp_id": "7"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CeladonCity_Restaurant_Frlg/scripts.inc b/data/maps/CeladonCity_Restaurant_Frlg/scripts.inc
new file mode 100644
index 000000000000..976645cbc908
--- /dev/null
+++ b/data/maps/CeladonCity_Restaurant_Frlg/scripts.inc
@@ -0,0 +1,78 @@
+CeladonCity_Restaurant_Frlg_MapScripts::
+ .byte 0
+
+CeladonCity_Restaurant_EventScript_Chef::
+ msgbox CeladonCity_Restaurant_Text_TakingBreakRightNow, MSGBOX_NPC
+ end
+
+CeladonCity_Restaurant_EventScript_Woman::
+ msgbox CeladonCity_Restaurant_Text_OftenGoToDrugstore, MSGBOX_NPC
+ end
+
+CeladonCity_Restaurant_EventScript_CoinCaseMan::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_COIN_CASE, CeladonCity_Restaurant_EventScript_AlreadyGotCoinCase
+ msgbox CeladonCity_Restaurant_Text_TakeThisImBusted
+ checkitemspace ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, FALSE, CeladonCity_Restaurant_EventScript_NoRoomForCoinCase
+ giveitem_msg CeladonCity_Restaurant_Text_ReceivedCoinCaseFromMan, ITEM_COIN_CASE
+ setflag FLAG_GOT_COIN_CASE
+ release
+ end
+
+CeladonCity_Restaurant_EventScript_NoRoomForCoinCase::
+ msgbox CeladonCity_Restaurant_Text_MakeRoomForThis
+ release
+ end
+
+CeladonCity_Restaurant_EventScript_AlreadyGotCoinCase::
+ msgbox CeladonCity_Restaurant_Text_ThoughtIdWinItBack
+ release
+ end
+
+CeladonCity_Restaurant_EventScript_WorkerM::
+ msgbox CeladonCity_Restaurant_Text_PsstBasementUnderGameCorner, MSGBOX_NPC
+ end
+
+CeladonCity_Restaurant_EventScript_FatMan::
+ msgbox CeladonCity_Restaurant_Text_ManLostItAllAtSlots, MSGBOX_NPC
+ end
+
+CeladonCity_Restaurant_Text_TakingBreakRightNow::
+ .string "Hi!\p"
+ .string "Sorry, but we're taking a break\n"
+ .string "right now.$"
+
+CeladonCity_Restaurant_Text_OftenGoToDrugstore::
+ .string "My POKéMON are weak, so I often\n"
+ .string "have to go to the DRUGSTORE.$"
+
+CeladonCity_Restaurant_Text_PsstBasementUnderGameCorner::
+ .string "Psst! There's a basement under the\n"
+ .string "GAME CORNER, I hear.$"
+
+CeladonCity_Restaurant_Text_ManLostItAllAtSlots::
+ .string "Munch…\p"
+ .string "The man at that table lost it all\n"
+ .string "at the slots.$"
+
+CeladonCity_Restaurant_Text_TakeThisImBusted::
+ .string "Go ahead! Laugh!\n"
+ .string "I'm flat-out busted!\p"
+ .string "No more slots for me!\n"
+ .string "I'm going straight!\p"
+ .string "Here!\n"
+ .string "I won't be needing this anymore!$"
+
+CeladonCity_Restaurant_Text_ReceivedCoinCaseFromMan::
+ .string "{PLAYER} received a COIN CASE\n"
+ .string "from the man.$"
+
+CeladonCity_Restaurant_Text_MakeRoomForThis::
+ .string "Make room for this!$"
+
+CeladonCity_Restaurant_Text_ThoughtIdWinItBack::
+ .string "I always thought I was going to\n"
+ .string "win it back…$"
+
diff --git a/data/maps/CeruleanCave_1F_Frlg/map.json b/data/maps/CeruleanCave_1F_Frlg/map.json
new file mode 100644
index 000000000000..84e39740dc53
--- /dev/null
+++ b/data/maps/CeruleanCave_1F_Frlg/map.json
@@ -0,0 +1,219 @@
+{
+ "id": "MAP_CERULEAN_CAVE_1F",
+ "name": "CeruleanCave_1F_Frlg",
+ "layout": "LAYOUT_CERULEAN_CAVE_1F",
+ "music": "MUS_RG_ROCKET_HIDEOUT",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CERULEAN_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 7,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCave_1F_EventScript_ItemNugget",
+ "flag": "FLAG_HIDE_CERULEAN_CAVE_1F_NUGGET"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 11,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCave_1F_EventScript_ItemFullRestore",
+ "flag": "FLAG_HIDE_CERULEAN_CAVE_1F_FULL_RESTORE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 25,
+ "y": 5,
+ "elevation": 4,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCave_1F_EventScript_ItemMaxElixir",
+ "flag": "FLAG_HIDE_CERULEAN_CAVE_1F_MAX_ELIXIR"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 7,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 13,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 5,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_14"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 14,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_15"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 11,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_16"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 9,
+ "y": 18,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_17"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 33,
+ "y": 21,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 34,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CAVE_2F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 1,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CAVE_B1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CAVE_2F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 5,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CAVE_2F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 30,
+ "y": 10,
+ "elevation": 4,
+ "dest_map": "MAP_CERULEAN_CAVE_2F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 24,
+ "y": 11,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CAVE_2F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 2,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CAVE_2F",
+ "dest_warp_id": "5"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 12,
+ "y": 2,
+ "elevation": 3,
+ "item": "ITEM_ULTRA_BALL",
+ "flag": "FLAG_HIDDEN_ITEM_CERULEAN_CAVE_1F_ULTRA_BALL",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/CeruleanCave_1F_Frlg/scripts.inc b/data/maps/CeruleanCave_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..16dd879c59e1
--- /dev/null
+++ b/data/maps/CeruleanCave_1F_Frlg/scripts.inc
@@ -0,0 +1,7 @@
+CeruleanCave_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, CeruleanCave_1F_OnTransition
+ .byte 0
+
+CeruleanCave_1F_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_CERULEAN_CAVE_1F
+ end
diff --git a/data/maps/CeruleanCave_2F_Frlg/map.json b/data/maps/CeruleanCave_2F_Frlg/map.json
new file mode 100644
index 000000000000..717f2193d708
--- /dev/null
+++ b/data/maps/CeruleanCave_2F_Frlg/map.json
@@ -0,0 +1,248 @@
+{
+ "id": "MAP_CERULEAN_CAVE_2F",
+ "name": "CeruleanCave_2F_Frlg",
+ "layout": "LAYOUT_CERULEAN_CAVE_2F",
+ "music": "MUS_RG_ROCKET_HIDEOUT",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CERULEAN_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 9,
+ "y": 18,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCave_2F_EventScript_ItemPPUp",
+ "flag": "FLAG_HIDE_CERULEAN_CAVE_2F_PP_UP"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 29,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCave_2F_EventScript_ItemUltraBall",
+ "flag": "FLAG_HIDE_CERULEAN_CAVE_2F_ULTRA_BALL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 33,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCave_2F_EventScript_ItemFullRestore",
+ "flag": "FLAG_HIDE_CERULEAN_CAVE_2F_FULL_RESTORE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 33,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 33,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 25,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_14"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 28,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_15"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 30,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_16"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 9,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_17"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 23,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_18"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 13,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_19"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 4,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_1A"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 10,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_1B"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 33,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CAVE_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 13,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CAVE_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 7,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CAVE_1F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 26,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CAVE_1F",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 23,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CAVE_1F",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 5,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CAVE_1F",
+ "dest_warp_id": "7"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CeruleanCave_2F_Frlg/scripts.inc b/data/maps/CeruleanCave_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..1e4924adee88
--- /dev/null
+++ b/data/maps/CeruleanCave_2F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+CeruleanCave_2F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/CeruleanCave_B1F_Frlg/map.json b/data/maps/CeruleanCave_B1F_Frlg/map.json
new file mode 100644
index 000000000000..d204d58d42ce
--- /dev/null
+++ b/data/maps/CeruleanCave_B1F_Frlg/map.json
@@ -0,0 +1,199 @@
+{
+ "id": "MAP_CERULEAN_CAVE_B1F",
+ "name": "CeruleanCave_B1F_Frlg",
+ "layout": "LAYOUT_CERULEAN_CAVE_B1F",
+ "music": "MUS_RG_ROCKET_HIDEOUT",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CERULEAN_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 31,
+ "y": 9,
+ "elevation": 4,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCave_B1F_EventScript_ItemUltraBall",
+ "flag": "FLAG_HIDE_CERULEAN_CAVE_B1F_ULTRA_BALL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 32,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCave_B1F_EventScript_ItemMaxRevive",
+ "flag": "FLAG_HIDE_CERULEAN_CAVE_B1F_MAX_REVIVE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MEWTWO",
+ "x": 7,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCave_B1F_EventScript_Mewtwo",
+ "flag": "FLAG_HIDE_MEWTWO"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 37,
+ "y": 1,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 38,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 35,
+ "y": 1,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_14"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 37,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_15"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 35,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_16"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_17"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 4,
+ "y": 1,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_18"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 6,
+ "y": 1,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_19"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 3,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_1A"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CAVE_1F",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CeruleanCave_B1F_Frlg/scripts.inc b/data/maps/CeruleanCave_B1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..1f84bbe95fbf
--- /dev/null
+++ b/data/maps/CeruleanCave_B1F_Frlg/scripts.inc
@@ -0,0 +1,60 @@
+CeruleanCave_B1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, CeruleanCave_B1F_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, CeruleanCave_B1F_OnTransition
+ .byte 0
+
+CeruleanCave_B1F_OnResume::
+ call_if_set FLAG_SYS_CTRL_OBJ_DELETE, CeruleanCave_B1F_EventScript_TryRemoveMewtwo
+ end
+
+CeruleanCave_B1F_EventScript_TryRemoveMewtwo::
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_ne VAR_RESULT, B_OUTCOME_CAUGHT, Common_EventScript_NopReturn
+ removeobject VAR_LAST_TALKED
+ return
+
+CeruleanCave_B1F_OnTransition::
+ call_if_unset FLAG_FOUGHT_MEWTWO, CeruleanCave_B1F_EventScript_ShowMewtwo
+ end
+
+CeruleanCave_B1F_EventScript_ShowMewtwo::
+ clearflag FLAG_HIDE_MEWTWO
+ return
+
+CeruleanCave_B1F_EventScript_Mewtwo::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_MEWTWO, CRY_MODE_ENCOUNTER
+ message CeruleanCave_B1F_Text_Mew
+ waitmessage
+ waitmoncry
+ delay 20
+ playbgm MUS_RG_ENCOUNTER_GYM_LEADER, 0
+ waitbuttonpress
+ setwildbattle SPECIES_MEWTWO, 70
+ setflag FLAG_SYS_CTRL_OBJ_DELETE
+ special BattleSetup_StartLegendaryBattle
+ waitstate
+ clearflag FLAG_SYS_CTRL_OBJ_DELETE
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_eq VAR_RESULT, B_OUTCOME_WON, CeruleanCave_B1F_EventScript_DefeatedMewtwo
+ goto_if_eq VAR_RESULT, B_OUTCOME_RAN, CeruleanCave_B1F_EventScript_RanFromMewtwo
+ goto_if_eq VAR_RESULT, B_OUTCOME_PLAYER_TELEPORTED, CeruleanCave_B1F_EventScript_RanFromMewtwo
+ setflag FLAG_FOUGHT_MEWTWO
+ release
+ end
+
+CeruleanCave_B1F_EventScript_DefeatedMewtwo::
+ setflag FLAG_FOUGHT_MEWTWO
+ goto EventScript_RemoveStaticMon
+ end
+
+CeruleanCave_B1F_EventScript_RanFromMewtwo::
+ setvar VAR_0x8004, SPECIES_MEWTWO
+ goto EventScript_MonFlewAway
+ end
+
+CeruleanCave_B1F_Text_Mew::
+ .string "Mew!$"
+
diff --git a/data/maps/CeruleanCity_BikeShop_Frlg/map.json b/data/maps/CeruleanCity_BikeShop_Frlg/map.json
new file mode 100644
index 000000000000..b8c587505f07
--- /dev/null
+++ b/data/maps/CeruleanCity_BikeShop_Frlg/map.json
@@ -0,0 +1,152 @@
+{
+ "id": "MAP_CERULEAN_CITY_BIKE_SHOP",
+ "name": "CeruleanCity_BikeShop_Frlg",
+ "layout": "LAYOUT_CERULEAN_CITY_BIKE_SHOP",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CERULEAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 9,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_BikeShop_EventScript_Clerk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_BikeShop_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 5,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_BikeShop_EventScript_Woman",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 6,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "5"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 3,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_BikeShop_EventScript_Bicycle"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_BikeShop_EventScript_Bicycle"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_BikeShop_EventScript_Bicycle"
+ },
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 3,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_BikeShop_EventScript_Bicycle"
+ },
+ {
+ "type": "sign",
+ "x": 1,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_BikeShop_EventScript_Bicycle"
+ },
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_BikeShop_EventScript_Bicycle"
+ },
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_BikeShop_EventScript_Bicycle"
+ },
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_BikeShop_EventScript_Bicycle"
+ }
+ ]
+}
diff --git a/data/maps/CeruleanCity_BikeShop_Frlg/scripts.inc b/data/maps/CeruleanCity_BikeShop_Frlg/scripts.inc
new file mode 100644
index 000000000000..ea8581bcf5fa
--- /dev/null
+++ b/data/maps/CeruleanCity_BikeShop_Frlg/scripts.inc
@@ -0,0 +1,131 @@
+CeruleanCity_BikeShop_Frlg_MapScripts::
+ .byte 0
+
+CeruleanCity_BikeShop_EventScript_Clerk::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_BICYCLE, CeruleanCity_BikeShop_EventScript_AlreadyGotBicycle
+ goto_if_set FLAG_GOT_BIKE_VOUCHER, CeruleanCity_BikeShop_EventScript_ExchangeBikeVoucher
+ showmoneybox 0, 0
+ message CeruleanCity_BikeShop_Text_WelcomeToBikeShop
+ waitmessage
+ multichoice 11, 0, MULTI_BIKE_SHOP, FALSE
+ hidemoneybox
+ showmoneybox 0, 0
+ switch VAR_RESULT
+ case 0, CeruleanCity_BikeShop_EventScript_TryPurchaseBicycle
+ case 1, CeruleanCity_BikeShop_EventScript_ClerkGoodbye
+ case 127, CeruleanCity_BikeShop_EventScript_ClerkGoodbye
+ end
+
+@ The Bicycle price / players money is never actually checked
+CeruleanCity_BikeShop_EventScript_TryPurchaseBicycle::
+ msgbox CeruleanCity_BikeShop_Text_SorryYouCantAffordIt
+ goto CeruleanCity_BikeShop_EventScript_ClerkGoodbye
+ end
+
+CeruleanCity_BikeShop_EventScript_ClerkGoodbye::
+ msgbox CeruleanCity_BikeShop_Text_ThankYouComeAgain
+ hidemoneybox
+ release
+ end
+
+CeruleanCity_BikeShop_EventScript_ExchangeBikeVoucher::
+ msgbox CeruleanCity_BikeShop_Text_OhBikeVoucherHereYouGo
+ msgreceiveditem CeruleanCity_BikeShop_Text_ExchangedVoucherForBicycle, ITEM_BICYCLE, 1, MUS_RG_OBTAIN_KEY_ITEM
+ setflag FLAG_GOT_BICYCLE
+ additem ITEM_BICYCLE
+ removeitem ITEM_BIKE_VOUCHER
+ msgbox CeruleanCity_BikeShop_Text_ThankYouComeAgain
+ release
+ end
+
+CeruleanCity_BikeShop_EventScript_AlreadyGotBicycle::
+ msgbox CeruleanCity_BikeShop_Text_HowDoYouLikeNewBicycle
+ release
+ end
+
+@ Unused
+CeruleanCity_BikeShop_EventScript_NoRoomForBicycle::
+ msgbox CeruleanCity_BikeShop_Text_MakeRoomForBicycle
+ release
+ end
+
+CeruleanCity_BikeShop_EventScript_Woman::
+ msgbox CeruleanCity_BikeShop_Text_CityBikeGoodEnoughForMe, MSGBOX_NPC
+ end
+
+CeruleanCity_BikeShop_EventScript_Youngster::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_BICYCLE, CeruleanCity_BikeShop_EventScript_YoungsterHaveBike
+ msgbox CeruleanCity_BikeShop_Text_BikesCoolButExpensive
+ release
+ end
+
+CeruleanCity_BikeShop_EventScript_YoungsterHaveBike::
+ msgbox CeruleanCity_BikeShop_Text_WowYourBikeIsCool
+ release
+ end
+
+CeruleanCity_BikeShop_EventScript_Bicycle::
+ msgbox CeruleanCity_BikeShop_Text_ShinyNewBicycle, MSGBOX_SIGN
+ end
+
+CeruleanCity_BikeShop_Text_WelcomeToBikeShop::
+ .string "Hi!\n"
+ .string "Welcome to our BIKE SHOP.\p"
+ .string "Have we got just the BIKE for\n"
+ .string "you!$"
+
+CeruleanCity_BikeShop_Text_SorryYouCantAffordIt::
+ .string "Sorry!\n"
+ .string "You can't afford it!$"
+
+CeruleanCity_BikeShop_Text_OhBikeVoucherHereYouGo::
+ .string "Oh, that's…\p"
+ .string "A BIKE VOUCHER!\p"
+ .string "Okay!\n"
+ .string "Here you go!$"
+
+CeruleanCity_BikeShop_Text_ExchangedVoucherForBicycle::
+ .string "{PLAYER} exchanged the\n"
+ .string "BIKE VOUCHER for a BICYCLE.$"
+
+CeruleanCity_BikeShop_Text_ThankYouComeAgain::
+ .string "Thank you!\n"
+ .string "Come back again sometime!$"
+
+CeruleanCity_BikeShop_Text_HowDoYouLikeNewBicycle::
+ .string "How do you like your new BICYCLE?\n"
+ .string "Do you like how it rides?\p"
+ .string "You can take it out on CYCLING\n"
+ .string "ROAD and even into caves!$"
+
+CeruleanCity_BikeShop_Text_MakeRoomForBicycle::
+ .string "You better make room for your\n"
+ .string "BICYCLE!$"
+
+CeruleanCity_BikeShop_Text_CityBikeGoodEnoughForMe::
+ .string "A plain city bike is good enough\n"
+ .string "for me.\p"
+ .string "After all, you can't put a shopping\n"
+ .string "basket on a mountain bike.$"
+
+CeruleanCity_BikeShop_Text_BikesCoolButExpensive::
+ .string "These bikes are cool, but they're\n"
+ .string "way expensive!$"
+
+CeruleanCity_BikeShop_Text_WowYourBikeIsCool::
+ .string "Wow.\n"
+ .string "Your BIKE is really cool!$"
+
+@ Unused
+CeruleanCity_BikeShop_Text_GermanFoldableBicyleFinallyOnMarket::
+ .string "ついに はつばい!\p"
+ .string "ドイツ せい さいこうきゅう\n"
+ .string "おりたたみ じてんしゃ!$"
+
+CeruleanCity_BikeShop_Text_ShinyNewBicycle::
+ .string "A shiny new BICYCLE!$"
+
diff --git a/data/maps/CeruleanCity_Frlg/map.json b/data/maps/CeruleanCity_Frlg/map.json
new file mode 100644
index 000000000000..a18a7e3c4722
--- /dev/null
+++ b/data/maps/CeruleanCity_Frlg/map.json
@@ -0,0 +1,425 @@
+{
+ "id": "MAP_CERULEAN_CITY",
+ "name": "CeruleanCity_Frlg",
+ "layout": "LAYOUT_CERULEAN_CITY",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CERULEAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE24",
+ "offset": 12,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_ROUTE5",
+ "offset": 0,
+ "direction": "down"
+ },
+ {
+ "map": "MAP_ROUTE4",
+ "offset": 10,
+ "direction": "left"
+ },
+ {
+ "map": "MAP_ROUTE9",
+ "offset": 10,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "local_id": "LOCALID_CERULEAN_POLICEMAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 31,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_EventScript_Policeman",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_CERULEAN_GRUNT",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 33,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_EventScript_Grunt",
+ "flag": "FLAG_HIDE_CERULEAN_ROCKET"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_BOY_FRLG",
+ "x": 16,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 3,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_EventScript_LittleBoy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 9,
+ "y": 23,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_EventScript_BaldingMan",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_CERULEAN_SLOWBRO",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SLOWBRO",
+ "x": 32,
+ "y": 29,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_EventScript_Slowbro",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_CERULEAN_LASS",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 33,
+ "y": 29,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_EventScript_Lass",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 34,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_CERULEAN_RIVAL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLUE",
+ "x": 22,
+ "y": 0,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_CERULEAN_RIVAL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 26,
+ "y": 32,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "clone",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 50,
+ "y": 18,
+ "target_local_id": "LOCALID_ROUTE9_CUT_TREE",
+ "target_map": "MAP_ROUTE9"
+ },
+ {
+ "local_id": "LOCALID_CERULEAN_WOMAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 12,
+ "y": 30,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_CERULEAN_CAVE_GUARD",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 1,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_EventScript_CeruleanCaveGuard",
+ "flag": "FLAG_HIDE_CERULEAN_CAVE_GUARD"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 10,
+ "y": 11,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY_HOUSE1",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 30,
+ "y": 11,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY_HOUSE2",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 15,
+ "y": 17,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY_HOUSE3",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 22,
+ "y": 19,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 31,
+ "y": 21,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY_GYM",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 13,
+ "y": 28,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CITY_BIKE_SHOP",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 29,
+ "y": 28,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY_MART",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 1,
+ "y": 12,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CAVE_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 10,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CITY_HOUSE1",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 31,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CITY_HOUSE2",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 31,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CITY_HOUSE2",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 14,
+ "y": 28,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CITY_BIKE_SHOP",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 23,
+ "y": 28,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY_HOUSE4",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 17,
+ "y": 11,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY_HOUSE5",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 22,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_CERULEAN_CITY_RIVAL",
+ "var_value": "0",
+ "script": "CeruleanCity_EventScript_RivalTriggerLeft"
+ },
+ {
+ "type": "trigger",
+ "x": 23,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_CERULEAN_CITY_RIVAL",
+ "var_value": "0",
+ "script": "CeruleanCity_EventScript_RivalTriggerMid"
+ },
+ {
+ "type": "trigger",
+ "x": 24,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_CERULEAN_CITY_RIVAL",
+ "var_value": "0",
+ "script": "CeruleanCity_EventScript_RivalTriggerRight"
+ },
+ {
+ "type": "trigger",
+ "x": 33,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_CERULEAN_CITY_ROCKET",
+ "var_value": "0",
+ "script": "CeruleanCity_EventScript_GruntTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 33,
+ "y": 7,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_CERULEAN_CITY_ROCKET",
+ "var_value": "0",
+ "script": "CeruleanCity_EventScript_GruntTriggerBottom"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 20,
+ "y": 25,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_EventScript_CitySign"
+ },
+ {
+ "type": "sign",
+ "x": 27,
+ "y": 21,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_EventScript_GymSign"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 28,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_EventScript_BikeShopSign"
+ },
+ {
+ "type": "sign",
+ "x": 19,
+ "y": 32,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_EventScript_TrainerTips"
+ },
+ {
+ "type": "hidden_item",
+ "x": 18,
+ "y": 7,
+ "elevation": 3,
+ "item": "ITEM_RARE_CANDY",
+ "flag": "FLAG_HIDDEN_ITEM_CERULEAN_CITY_RARE_CANDY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 25,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_BikeShop_EventScript_Bicycle"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 27,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_BikeShop_EventScript_Bicycle"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 26,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_BikeShop_EventScript_Bicycle"
+ }
+ ]
+}
diff --git a/data/maps/CeruleanCity_Frlg/scripts.inc b/data/maps/CeruleanCity_Frlg/scripts.inc
new file mode 100644
index 000000000000..dae271fa5477
--- /dev/null
+++ b/data/maps/CeruleanCity_Frlg/scripts.inc
@@ -0,0 +1,536 @@
+CeruleanCity_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, CeruleanCity_OnTransition
+ .byte 0
+
+CeruleanCity_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_CERULEAN_CITY
+ call_if_unset FLAG_GOT_SS_TICKET, CeruleanCity_EventScript_BlockExits
+ end
+
+CeruleanCity_EventScript_BlockExits::
+ setobjectxyperm LOCALID_CERULEAN_POLICEMAN, 30, 12
+ setobjectxyperm LOCALID_CERULEAN_SLOWBRO, 26, 31
+ setobjectxyperm LOCALID_CERULEAN_LASS, 27, 31
+ return
+
+CeruleanCity_EventScript_RivalTriggerLeft::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto CeruleanCity_EventScript_Rival
+ end
+
+CeruleanCity_EventScript_RivalTriggerMid::
+ lockall
+ setvar VAR_TEMP_1, 1
+ setobjectxyperm LOCALID_CERULEAN_RIVAL, 23, 0
+ goto CeruleanCity_EventScript_Rival
+ end
+
+CeruleanCity_EventScript_RivalTriggerRight::
+ lockall
+ setvar VAR_TEMP_1, 2
+ setobjectxyperm LOCALID_CERULEAN_RIVAL, 24, 0
+ goto CeruleanCity_EventScript_Rival
+ end
+
+CeruleanCity_EventScript_Rival::
+ textcolor NPC_TEXT_COLOR_MALE
+ setvar VAR_MAP_SCENE_ROUTE22, 2
+ playbgm MUS_RG_ENCOUNTER_RIVAL, 0
+ addobject LOCALID_CERULEAN_RIVAL
+ applymovement LOCALID_CERULEAN_RIVAL, CeruleanCity_Movement_RivalEnter
+ waitmovement 0
+ msgbox CeruleanCity_Text_RivalIntro
+ setvar VAR_LAST_TALKED, LOCALID_CERULEAN_RIVAL
+ call_if_eq VAR_STARTER_MON, 2, CeruleanCity_EventScript_RivalSquirtle
+ call_if_eq VAR_STARTER_MON, 1, CeruleanCity_EventScript_RivalBulbasaur
+ call_if_eq VAR_STARTER_MON, 0, CeruleanCity_EventScript_RivalCharmander
+ famechecker FAMECHECKER_BILL, 0
+ msgbox CeruleanCity_Text_RivalPostBattle
+ closemessage
+ playbgm MUS_RG_RIVAL_EXIT, 0
+ call_if_eq VAR_TEMP_1, 0, CeruleanCity_EventScript_RivalStartExit
+ call_if_eq VAR_TEMP_1, 1, CeruleanCity_EventScript_RivalStartExit
+ call_if_eq VAR_TEMP_1, 2, CeruleanCity_EventScript_RivalStartExitRight
+ msgbox CeruleanCity_Text_OhRightLittlePresentAsFavor
+ setvar VAR_MAP_SCENE_CERULEAN_CITY_RIVAL, 1
+ setflag FLAG_GOT_FAME_CHECKER
+ giveitem ITEM_FAME_CHECKER
+ msgbox CeruleanCity_Text_ExplainFameCheckerSmellYa
+ closemessage
+ applymovement LOCALID_CERULEAN_RIVAL, CeruleanCity_Movement_RivalExit
+ waitmovement 0
+ fadedefaultbgm
+ removeobject LOCALID_CERULEAN_RIVAL
+ releaseall
+ end
+
+CeruleanCity_EventScript_RivalSquirtle::
+ trainerbattle_no_intro TRAINER_RIVAL_CERULEAN_SQUIRTLE, CeruleanCity_Text_RivalDefeat
+ return
+
+CeruleanCity_EventScript_RivalBulbasaur::
+ trainerbattle_no_intro TRAINER_RIVAL_CERULEAN_BULBASAUR, CeruleanCity_Text_RivalDefeat
+ return
+
+CeruleanCity_EventScript_RivalCharmander::
+ trainerbattle_no_intro TRAINER_RIVAL_CERULEAN_CHARMANDER, CeruleanCity_Text_RivalDefeat
+ return
+
+CeruleanCity_EventScript_RivalStartExit::
+ applymovement LOCALID_PLAYER, CeruleanCity_Movement_PlayerWatchRivalExit
+ applymovement LOCALID_CERULEAN_RIVAL, CeruleanCity_Movement_RivalStartExit
+ waitmovement 0
+ return
+
+CeruleanCity_EventScript_RivalStartExitRight::
+ applymovement LOCALID_PLAYER, CeruleanCity_Movement_PlayerWatchRivalExitRight
+ applymovement LOCALID_CERULEAN_RIVAL, CeruleanCity_Movement_RivalStartExitRight
+ waitmovement 0
+ return
+
+CeruleanCity_Movement_PlayerWatchRivalExit::
+ delay_16
+ delay_8
+ walk_in_place_faster_right
+ delay_16
+ walk_in_place_faster_down
+ step_end
+
+CeruleanCity_Movement_PlayerWatchRivalExitRight::
+ delay_16
+ delay_8
+ walk_in_place_faster_left
+ delay_16
+ walk_in_place_faster_down
+ step_end
+
+CeruleanCity_Movement_RivalEnter::
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+CeruleanCity_Movement_RivalStartExit::
+ walk_right
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ delay_16
+ delay_16
+ walk_left
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+CeruleanCity_Movement_RivalStartExitRight::
+ walk_left
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ delay_16
+ delay_16
+ walk_right
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+CeruleanCity_Movement_RivalExit::
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+CeruleanCity_EventScript_Grunt::
+ lock
+ faceplayer
+ goto_if_defeated TRAINER_TEAM_ROCKET_GRUNT_5, CeruleanCity_EventScript_GruntDefeated
+ message CeruleanCity_Text_GruntIntro
+ waitmessage
+ playbgm MUS_RG_ENCOUNTER_ROCKET, 0
+ waitbuttonpress
+ trainerbattle_no_intro TRAINER_TEAM_ROCKET_GRUNT_5, CeruleanCity_Text_GruntDefeat
+ setvar VAR_MAP_SCENE_CERULEAN_CITY_ROCKET, 1
+ goto CeruleanCity_EventScript_GruntDefeated
+ end
+
+CeruleanCity_EventScript_GruntDefeated::
+ msgbox CeruleanCity_Text_OkayIllReturnStolenTM
+ checkitemspace ITEM_TM28
+ goto_if_eq VAR_RESULT, FALSE, CeruleanCity_EventScript_NoRoomForTM28
+ giveitem_msg CeruleanCity_Text_RecoveredTM28FromGrunt, ITEM_TM28
+ msgbox CeruleanCity_Text_BetterGetMovingBye
+ closemessage
+ fadescreenswapbuffers FADE_TO_BLACK
+ removeobject LOCALID_CERULEAN_GRUNT
+ fadescreenswapbuffers FADE_FROM_BLACK
+ setflag FLAG_GOT_TM28_FROM_ROCKET
+ release
+ end
+
+CeruleanCity_EventScript_NoRoomForTM28::
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox CeruleanCity_Text_MakeRoomForThisCantRun
+ release
+ end
+
+CeruleanCity_EventScript_GruntTriggerTop::
+ lockall
+ setvar VAR_TEMP_1, 0
+ applymovement LOCALID_CERULEAN_GRUNT, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ goto CeruleanCity_EventScript_GruntTrigger
+ end
+
+CeruleanCity_EventScript_GruntTriggerBottom::
+ lockall
+ setvar VAR_TEMP_1, 1
+ applymovement LOCALID_CERULEAN_GRUNT, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ goto CeruleanCity_EventScript_GruntTrigger
+ end
+
+CeruleanCity_EventScript_GruntTrigger::
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox CeruleanCity_Text_GruntIntro
+ setvar VAR_LAST_TALKED, LOCALID_CERULEAN_GRUNT
+ trainerbattle_no_intro TRAINER_TEAM_ROCKET_GRUNT_5, CeruleanCity_Text_GruntDefeat
+ setvar VAR_MAP_SCENE_CERULEAN_CITY_ROCKET, 1
+ goto CeruleanCity_EventScript_GruntDefeated
+ end
+
+CeruleanCity_EventScript_Policeman::
+ lock
+ faceplayer
+ msgbox CeruleanCity_Text_PeopleHereWereRobbed
+ closemessage
+ applymovement LOCALID_CERULEAN_POLICEMAN, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+CeruleanCity_EventScript_LittleBoy::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_SS_TICKET, CeruleanCity_EventScript_LittleBoySlowbroMoved
+ msgbox CeruleanCity_Text_IfSlowbroWasntThereCouldCutTree
+ release
+ end
+
+CeruleanCity_EventScript_LittleBoySlowbroMoved::
+ msgbox CeruleanCity_Text_YouCanCutDownSmallTrees
+ release
+ end
+
+CeruleanCity_EventScript_BaldingMan::
+ msgbox CeruleanCity_Text_PokemonEncyclopediaAmusing, MSGBOX_NPC
+ end
+
+CeruleanCity_EventScript_Youngster::
+ msgbox CeruleanCity_Text_TrainerLifeIsToughIsntIt, MSGBOX_NPC
+ end
+
+CeruleanCity_EventScript_CeruleanCaveGuard::
+ msgbox CeruleanCity_Text_ThisIsCeruleanCave, MSGBOX_NPC
+ end
+
+CeruleanCity_EventScript_Woman::
+ lock
+ faceplayer
+ msgbox CeruleanCity_Text_WantBrightRedBicycle
+ closemessage
+ applymovement LOCALID_CERULEAN_WOMAN, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+CeruleanCity_EventScript_Lass::
+ lock
+ random 3
+ copyvar VAR_0x8008, VAR_RESULT
+ call_if_eq VAR_0x8008, 0, CeruleanCity_EventScript_SlowbroCommand1
+ call_if_eq VAR_0x8008, 1, CeruleanCity_EventScript_SlowbroCommand2
+ call_if_eq VAR_0x8008, 2, CeruleanCity_EventScript_SlowbroCommand3
+ waitmessage
+ delay 40
+ playse SE_PIN
+ applymovement LOCALID_CERULEAN_SLOWBRO, Common_Movement_QuestionMark
+ waitmovement 0
+ delay 30
+ call_if_eq VAR_0x8008, 0, CeruleanCity_EventScript_SlowbroFailed1
+ call_if_eq VAR_0x8008, 1, CeruleanCity_EventScript_SlowbroFailed2
+ call_if_eq VAR_0x8008, 2, CeruleanCity_EventScript_SlowbroFailed3
+ release
+ end
+
+CeruleanCity_EventScript_SlowbroCommand1::
+ message CeruleanCity_Text_SlowbroUseSonicboom
+ return
+
+CeruleanCity_EventScript_SlowbroCommand2::
+ message CeruleanCity_Text_SlowbroPunch
+ return
+
+CeruleanCity_EventScript_SlowbroCommand3::
+ message CeruleanCity_Text_SlowbroWithdraw
+ return
+
+CeruleanCity_EventScript_SlowbroFailed1::
+ msgbox CeruleanCity_Text_SlowbroPayAttention
+ return
+
+CeruleanCity_EventScript_SlowbroFailed2::
+ msgbox CeruleanCity_Text_NoYouBlewItAgain
+ return
+
+CeruleanCity_EventScript_SlowbroFailed3::
+ msgbox CeruleanCity_Text_HardToControlMonsObedience
+ return
+
+CeruleanCity_EventScript_Slowbro::
+ lock
+ random 4
+ copyvar VAR_0x8008, VAR_RESULT
+ call_if_eq VAR_0x8008, 0, CeruleanCity_EventScript_SlowbroText1
+ call_if_eq VAR_0x8008, 1, CeruleanCity_EventScript_SlowbroText2
+ call_if_eq VAR_0x8008, 2, CeruleanCity_EventScript_SlowbroText3
+ call_if_eq VAR_0x8008, 3, CeruleanCity_EventScript_SlowbroText4
+ release
+ end
+
+CeruleanCity_EventScript_SlowbroText1::
+ msgbox CeruleanCity_Text_SlowbroTookSnooze
+ return
+
+CeruleanCity_EventScript_SlowbroText2::
+ msgbox CeruleanCity_Text_SlowbroLoafingAround
+ return
+
+CeruleanCity_EventScript_SlowbroText3::
+ msgbox CeruleanCity_Text_SlowbroTurnedAway
+ return
+
+CeruleanCity_EventScript_SlowbroText4::
+ msgbox CeruleanCity_Text_SlowbroIgnoredOrders
+ return
+
+CeruleanCity_EventScript_CitySign::
+ msgbox CeruleanCity_Text_CitySign, MSGBOX_SIGN
+ end
+
+CeruleanCity_EventScript_TrainerTips::
+ msgbox CeruleanCity_Text_TrainerTipsHeldItems, MSGBOX_SIGN
+ end
+
+CeruleanCity_EventScript_BikeShopSign::
+ msgbox CeruleanCity_Text_BikeShopSign, MSGBOX_SIGN
+ end
+
+CeruleanCity_EventScript_GymSign::
+ lockall
+ famechecker FAMECHECKER_MISTY, 0
+ msgbox CeruleanCity_Text_GymSign
+ releaseall
+ end
+
+CeruleanCity_Text_RivalIntro::
+ .string "{RIVAL}: Yo! {PLAYER}!\p"
+ .string "You're still struggling along back\n"
+ .string "here?\p"
+ .string "I'm doing great! I caught a bunch\n"
+ .string "of strong and smart POKéMON!\p"
+ .string "Here, let me see what you caught,\n"
+ .string "{PLAYER}!$"
+
+CeruleanCity_Text_RivalDefeat::
+ .string "Hey!\n"
+ .string "Take it easy!\l"
+ .string "You won already!$"
+
+CeruleanCity_Text_RivalPostBattle::
+ .string "{RIVAL}: Hey, guess what?\p"
+ .string "I went to BILL's and got him to\n"
+ .string "show me his rare POKéMON.\p"
+ .string "That added a lot of pages to my\n"
+ .string "POKéDEX!\p"
+ .string "After all, BILL's world famous as a\n"
+ .string "POKéMANIAC.\p"
+ .string "He invented the POKéMON Storage\n"
+ .string "System on PC, too.\p"
+ .string "Since you're using his system,\n"
+ .string "you should go thank him.\p"
+ .string "Well, I better get rolling!\n"
+ .string "Smell ya later!$"
+
+CeruleanCity_Text_OhRightLittlePresentAsFavor::
+ .string "Oh, yeah, right.\p"
+ .string "I feel sorry for you. No, really.\n"
+ .string "You're always plodding behind me.\p"
+ .string "So here, I'll give you a little\n"
+ .string "present as a favor.$"
+
+CeruleanCity_Text_ExplainFameCheckerSmellYa::
+ .string "A chatty gossip like you…\n"
+ .string "That thing's perfect.\p"
+ .string "I don't need it because I don't\n"
+ .string "give a hoot about others.\p"
+ .string "All right, this time I really am\n"
+ .string "gone. Smell ya!$"
+
+CeruleanCity_Text_GruntIntro::
+ .string "Hey! Stay out!\n"
+ .string "It's not your yard!\p"
+ .string "…Huh?\n"
+ .string "Me?\p"
+ .string "I'm an innocent bystander!\n"
+ .string "Don't you believe me?{PLAY_BGM}{MUS_RG_ENCOUNTER_ROCKET}$"
+
+CeruleanCity_Text_GruntDefeat::
+ .string "GRUNT: Stop! I give up!\n"
+ .string "I'll leave quietly!$"
+
+CeruleanCity_Text_OkayIllReturnStolenTM::
+ .string "…Okay.\n"
+ .string "I'll return the TM I stole.$"
+
+CeruleanCity_Text_RecoveredTM28FromGrunt::
+ .string "{PLAYER} recovered TM28 from\n"
+ .string "the TEAM ROCKET GRUNT.$"
+
+CeruleanCity_Text_BetterGetMovingBye::
+ .string "I better get moving!\n"
+ .string "Bye!$"
+
+CeruleanCity_Text_MakeRoomForThisCantRun::
+ .string "Make room for this!\n"
+ .string "I can't run until I give it to you!$"
+
+CeruleanCity_Text_TrainerLifeIsToughIsntIt::
+ .string "You're a TRAINER, too?\p"
+ .string "Collecting, battling…\n"
+ .string "It's a tough life, isn't it?$"
+
+CeruleanCity_Text_YouCanCutDownSmallTrees::
+ .string "Did you know that you can CUT down\n"
+ .string "small trees?\p"
+ .string "Even that small tree in front of\n"
+ .string "the shop can be CUT down.\p"
+ .string "I think there's a way around it,\n"
+ .string "though.$"
+
+CeruleanCity_Text_IfSlowbroWasntThereCouldCutTree::
+ .string "If that SLOWBRO wasn't there, you\n"
+ .string "could CUT down the small tree.\p"
+ .string "That way, you could get to the\n"
+ .string "other side.\p"
+ .string "I think there's a way around it,\n"
+ .string "though.$"
+
+CeruleanCity_Text_PokemonEncyclopediaAmusing::
+ .string "You're making an encyclopedia on\n"
+ .string "POKéMON? That sounds amusing.$"
+
+CeruleanCity_Text_PeopleHereWereRobbed::
+ .string "The people here were robbed.\p"
+ .string "It's obvious that TEAM ROCKET is\n"
+ .string "behind this most heinous crime!\p"
+ .string "Even our POLICE FORCE has\n"
+ .string "trouble with the ROCKETS!$"
+
+CeruleanCity_Text_SlowbroUseSonicboom::
+ .string "Okay! SLOWBRO!\n"
+ .string "Use SONICBOOM!$"
+
+CeruleanCity_Text_SlowbroPayAttention::
+ .string "Come on, SLOWBRO, pay attention!$"
+
+CeruleanCity_Text_SlowbroPunch::
+ .string "SLOWBRO, punch!$"
+
+CeruleanCity_Text_NoYouBlewItAgain::
+ .string "No!\n"
+ .string "You blew it again!$"
+
+CeruleanCity_Text_SlowbroWithdraw::
+ .string "SLOWBRO, WITHDRAW!$"
+
+CeruleanCity_Text_HardToControlMonsObedience::
+ .string "No! That's wrong!\n"
+ .string "It's so hard to control POKéMON!\p"
+ .string "Your POKéMON's obedience depends\n"
+ .string "on your abilities as a TRAINER.$"
+
+CeruleanCity_Text_SlowbroTookSnooze::
+ .string "SLOWBRO took a snooze…$"
+
+CeruleanCity_Text_SlowbroLoafingAround::
+ .string "SLOWBRO is loafing around…$"
+
+CeruleanCity_Text_SlowbroTurnedAway::
+ .string "SLOWBRO turned away…$"
+
+CeruleanCity_Text_SlowbroIgnoredOrders::
+ .string "SLOWBRO ignored orders…$"
+
+CeruleanCity_Text_WantBrightRedBicycle::
+ .string "I want a bright red bicycle.\p"
+ .string "I'll keep it at home, so it won't\n"
+ .string "get dirty.$"
+
+CeruleanCity_Text_ThisIsCeruleanCave::
+ .string "This is CERULEAN CAVE.\p"
+ .string "Horribly strong POKéMON live inside\n"
+ .string "there.\p"
+ .string "It takes a very special TRAINER to\n"
+ .string "be allowed inside there.\p"
+ .string "You'd have to be strong enough to\n"
+ .string "become the POKéMON LEAGUE\l"
+ .string "CHAMPION for starters.\p"
+ .string "And, you would have to have\n"
+ .string "made a great achievement.$"
+
+CeruleanCity_Text_CitySign::
+ .string "CERULEAN CITY\n"
+ .string "A Mysterious, Blue Aura Surrounds\l"
+ .string "It$"
+
+CeruleanCity_Text_TrainerTipsHeldItems::
+ .string "TRAINER TIPS\p"
+ .string "A POKéMON can be made to hold\n"
+ .string "an item.\p"
+ .string "Some items can even be used by\n"
+ .string "the holding POKéMON in battle.$"
+
+CeruleanCity_Text_BikeShopSign::
+ .string "Grass and caves handled easily!\n"
+ .string "BIKE SHOP$"
+
+CeruleanCity_Text_GymSign::
+ .string "CERULEAN CITY POKéMON GYM\n"
+ .string "LEADER: MISTY\l"
+ .string "The Tomboyish Mermaid!$"
+
diff --git a/data/maps/CeruleanCity_Gym_Frlg/map.json b/data/maps/CeruleanCity_Gym_Frlg/map.json
new file mode 100644
index 000000000000..9ae1a6734372
--- /dev/null
+++ b/data/maps/CeruleanCity_Gym_Frlg/map.json
@@ -0,0 +1,118 @@
+{
+ "id": "MAP_CERULEAN_CITY_GYM",
+ "name": "CeruleanCity_Gym_Frlg",
+ "layout": "LAYOUT_CERULEAN_CITY_GYM",
+ "music": "MUS_GYM",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CERULEAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_GYM",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_WATER",
+ "x": 10,
+ "y": 12,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "CeruleanCity_Gym_EventScript_Luis",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "CeruleanCity_Gym_EventScript_Diana",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MISTY",
+ "x": 8,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_Gym_EventScript_Misty",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GYM_GUY",
+ "x": 7,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_Gym_EventScript_GymGuy",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 8,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 9,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 17,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_Gym_EventScript_GymStatue"
+ },
+ {
+ "type": "sign",
+ "x": 10,
+ "y": 17,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_Gym_EventScript_GymStatue"
+ }
+ ]
+}
diff --git a/data/maps/CeruleanCity_Gym_Frlg/scripts.inc b/data/maps/CeruleanCity_Gym_Frlg/scripts.inc
new file mode 100644
index 000000000000..ee8079f85ea8
--- /dev/null
+++ b/data/maps/CeruleanCity_Gym_Frlg/scripts.inc
@@ -0,0 +1,163 @@
+CeruleanCity_Gym_Frlg_MapScripts::
+ .byte 0
+
+CeruleanCity_Gym_EventScript_Misty::
+ famechecker FAMECHECKER_MISTY, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
+ trainerbattle_single TRAINER_LEADER_MISTY, CeruleanCity_Gym_Text_MistyIntro, CeruleanCity_Gym_Text_MistyDefeat, CeruleanCity_Gym_EventScript_MistyDefeated, NO_MUSIC
+ goto_if_unset FLAG_GOT_TM03_FROM_MISTY, CeruleanCity_Gym_EventScript_GiveTM03
+ msgbox CeruleanCity_Gym_Text_ExplainTM03
+ release
+ end
+
+CeruleanCity_Gym_EventScript_MistyDefeated::
+ famechecker FAMECHECKER_MISTY, 1
+ setflag FLAG_DEFEATED_MISTY
+ setflag FLAG_BADGE02_GET
+ setrespawn HEAL_LOCATION_CERULEAN_CITY
+ set_gym_trainers_frlg 2
+ goto CeruleanCity_Gym_EventScript_GiveTM03
+ end
+
+CeruleanCity_Gym_EventScript_GiveTM03::
+ msgbox CeruleanCity_Gym_Text_ExplainCascadeBadge
+ checkitemspace ITEM_TM03
+ goto_if_eq VAR_RESULT, FALSE, CeruleanCity_Gym_EventScript_NoRoomForTM03
+ giveitem_msg CeruleanCity_Gym_Text_ReceivedTM03FromMisty, ITEM_TM03
+ setflag FLAG_GOT_TM03_FROM_MISTY
+ msgbox CeruleanCity_Gym_Text_ExplainTM03
+ release
+ end
+
+CeruleanCity_Gym_EventScript_NoRoomForTM03::
+ msgbox CeruleanCity_Gym_Text_BetterMakeRoomForThis
+ release
+ end
+
+CeruleanCity_Gym_EventScript_Diana::
+ trainerbattle_single TRAINER_PICNICKER_DIANA, CeruleanCity_Gym_Text_DianaIntro, CeruleanCity_Gym_Text_DianaDefeat
+ msgbox CeruleanCity_Gym_Text_DianaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+CeruleanCity_Gym_EventScript_Luis::
+ trainerbattle_single TRAINER_SWIMMER_MALE_LUIS, CeruleanCity_Gym_Text_LuisIntro, CeruleanCity_Gym_Text_LuisDefeat
+ famechecker FAMECHECKER_MISTY, 2
+ msgbox CeruleanCity_Gym_Text_LuisPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+CeruleanCity_Gym_EventScript_GymGuy::
+ lock
+ faceplayer
+ goto_if_set FLAG_DEFEATED_MISTY, CeruleanCity_Gym_EventScript_GymGuyPostVictory
+ msgbox CeruleanCity_Gym_Text_GymGuyAdvice
+ release
+ end
+
+CeruleanCity_Gym_EventScript_GymGuyPostVictory::
+ msgbox CeruleanCity_Gym_Text_WeMakePrettyGoodTeam
+ release
+ end
+
+CeruleanCity_Gym_EventScript_GymStatue::
+ lockall
+ goto_if_set FLAG_BADGE02_GET, CeruleanCity_Gym_EventScript_GymStatuePostVictory
+ msgbox CeruleanCity_Gym_Text_GymStatue
+ releaseall
+ end
+
+CeruleanCity_Gym_EventScript_GymStatuePostVictory::
+ msgbox CeruleanCity_Gym_Text_GymStatuePlayerWon
+ releaseall
+ end
+
+CeruleanCity_Gym_Text_MistyIntro::
+ .string "Hi, you're a new face!\p"
+ .string "Only those TRAINERS who have a\n"
+ .string "policy about POKéMON can turn pro.\p"
+ .string "What is your approach when you\n"
+ .string "catch and train POKéMON?\p"
+ .string "My policy is an all-out offensive\n"
+ .string "with WATER-type POKéMON!{PLAY_BGM}{MUS_RG_ENCOUNTER_GYM_LEADER}$"
+
+CeruleanCity_Gym_Text_ExplainTM03::
+ .string "TM03 teaches WATER PULSE.\p"
+ .string "Use it on an aquatic POKéMON!$"
+
+CeruleanCity_Gym_Text_ExplainCascadeBadge::
+ .string "The CASCADEBADGE makes all\n"
+ .string "POKéMON up to Lv. 30 obey.\p"
+ .string "That includes even outsiders you\n"
+ .string "got in trades.\p"
+ .string "There's more. You can now use CUT\n"
+ .string "anytime, even out of battle.\p"
+ .string "You can CUT down small trees to\n"
+ .string "open new pathways.\p"
+ .string "You can also have my favorite TM.$"
+
+CeruleanCity_Gym_Text_ReceivedTM03FromMisty::
+ .string "{PLAYER} received TM03\n"
+ .string "from MISTY.$"
+
+CeruleanCity_Gym_Text_BetterMakeRoomForThis::
+ .string "You better make room for this!$"
+
+CeruleanCity_Gym_Text_MistyDefeat::
+ .string "Wow!\n"
+ .string "You're too much!\p"
+ .string "All right!\p"
+ .string "You can have the CASCADEBADGE to\n"
+ .string "show you beat me.$"
+
+CeruleanCity_Gym_Text_DianaIntro::
+ .string "What? You?\n"
+ .string "I'm more than good enough for you!\p"
+ .string "MISTY won't have to be bothered.$"
+
+CeruleanCity_Gym_Text_DianaDefeat::
+ .string "You overwhelmed me!$"
+
+CeruleanCity_Gym_Text_DianaPostBattle::
+ .string "You have to face other TRAINERS\n"
+ .string "to see how good you really are.$"
+
+CeruleanCity_Gym_Text_LuisIntro::
+ .string "Splash!\p"
+ .string "I'm first up!\n"
+ .string "Let's do it!$"
+
+CeruleanCity_Gym_Text_LuisDefeat::
+ .string "That can't be!$"
+
+CeruleanCity_Gym_Text_LuisPostBattle::
+ .string "MISTY is a TRAINER who's going to\n"
+ .string "keep improving.\p"
+ .string "She won't lose to someone like you!$"
+
+CeruleanCity_Gym_Text_GymGuyAdvice::
+ .string "Yo!\n"
+ .string "Champ in the making!\p"
+ .string "Let me give you some advice!\p"
+ .string "The LEADER, MISTY, is a pro who\n"
+ .string "uses WATER-type POKéMON.\p"
+ .string "You can drain all their water with\n"
+ .string "GRASS-type POKéMON.\p"
+ .string "Or, you might use ELECTRIC-type\n"
+ .string "POKéMON and zap them!$"
+
+CeruleanCity_Gym_Text_WeMakePrettyGoodTeam::
+ .string "You beat MISTY!\n"
+ .string "See, what'd I tell ya?\p"
+ .string "You and me, kid, we make a pretty\n"
+ .string "darn-good team!$"
+
+CeruleanCity_Gym_Text_GymStatue::
+ .string "CERULEAN POKéMON GYM\n"
+ .string "LEADER: MISTY\p"
+ .string "WINNING TRAINERS:\n"
+ .string "{RIVAL}$"
+
+CeruleanCity_Gym_Text_GymStatuePlayerWon::
+ .string "CERULEAN POKéMON GYM\n"
+ .string "LEADER: MISTY\p"
+ .string "WINNING TRAINERS:\n"
+ .string "{RIVAL}, {PLAYER}$"
+
diff --git a/data/maps/CeruleanCity_House1_Frlg/map.json b/data/maps/CeruleanCity_House1_Frlg/map.json
new file mode 100644
index 000000000000..84945472fd2c
--- /dev/null
+++ b/data/maps/CeruleanCity_House1_Frlg/map.json
@@ -0,0 +1,66 @@
+{
+ "id": "MAP_CERULEAN_CITY_HOUSE1",
+ "name": "CeruleanCity_House1_Frlg",
+ "layout": "LAYOUT_CERULEAN_CITY_HOUSE1",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CERULEAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 6,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_House1_EventScript_BadgeGuy",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 3,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 4,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 3,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "8"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CeruleanCity_House1_Frlg/scripts.inc b/data/maps/CeruleanCity_House1_Frlg/scripts.inc
new file mode 100644
index 000000000000..731750d38ee8
--- /dev/null
+++ b/data/maps/CeruleanCity_House1_Frlg/scripts.inc
@@ -0,0 +1,146 @@
+CeruleanCity_House1_Frlg_MapScripts::
+ .byte 0
+
+CeruleanCity_House1_EventScript_BadgeGuy::
+ lock
+ faceplayer
+ msgbox CeruleanCity_House1_Text_BadgesHaveAmazingSecrets
+ goto CeruleanCity_House1_EventScript_DescribeAnotherBadge
+ end
+
+CeruleanCity_House1_EventScript_DescribeAnotherBadge::
+ message CeruleanCity_House1_Text_DescribeWhichBadge
+ waitmessage
+ setvar VAR_0x8004, SCROLL_MULTI_BADGES
+ special ShowScrollableMultichoice
+ waitstate
+ switch VAR_RESULT
+ case 0, CeruleanCity_House1_EventScript_DescribeBoulderBadge
+ case 1, CeruleanCity_House1_EventScript_DescribeCascadeBadge
+ case 2, CeruleanCity_House1_EventScript_DescribeThunderBadge
+ case 3, CeruleanCity_House1_EventScript_DescribeRainbowBadge
+ case 4, CeruleanCity_House1_EventScript_DescribeSoulBadge
+ case 5, CeruleanCity_House1_EventScript_DescribeMarshBadge
+ case 6, CeruleanCity_House1_EventScript_DescribeVolcanoBadge
+ case 7, CeruleanCity_House1_EventScript_DescribeEarthBadge
+ case 8, CeruleanCity_House1_EventScript_StopDescribingBadges
+ case 127, CeruleanCity_House1_EventScript_StopDescribingBadges
+ end
+
+CeruleanCity_House1_EventScript_DescribeBoulderBadge::
+ msgbox CeruleanCity_House1_Text_AttackStatFlash
+ goto CeruleanCity_House1_EventScript_DescribeAnotherBadge
+ end
+
+CeruleanCity_House1_EventScript_DescribeCascadeBadge::
+ msgbox CeruleanCity_House1_Text_ObeyLv30Cut
+ goto CeruleanCity_House1_EventScript_DescribeAnotherBadge
+ end
+
+CeruleanCity_House1_EventScript_DescribeThunderBadge::
+ msgbox CeruleanCity_House1_Text_SpeedStatFly
+ goto CeruleanCity_House1_EventScript_DescribeAnotherBadge
+ end
+
+CeruleanCity_House1_EventScript_DescribeRainbowBadge::
+ msgbox CeruleanCity_House1_Text_ObeyLv50Strength
+ goto CeruleanCity_House1_EventScript_DescribeAnotherBadge
+ end
+
+CeruleanCity_House1_EventScript_DescribeSoulBadge::
+ msgbox CeruleanCity_House1_Text_DefenseStatSurf
+ goto CeruleanCity_House1_EventScript_DescribeAnotherBadge
+ end
+
+CeruleanCity_House1_EventScript_DescribeMarshBadge::
+ msgbox CeruleanCity_House1_Text_ObeyLv70RockSmash
+ goto CeruleanCity_House1_EventScript_DescribeAnotherBadge
+ end
+
+CeruleanCity_House1_EventScript_DescribeVolcanoBadge::
+ msgbox CeruleanCity_House1_Text_SpStatsWaterfall
+ goto CeruleanCity_House1_EventScript_DescribeAnotherBadge
+ end
+
+CeruleanCity_House1_EventScript_DescribeEarthBadge::
+ msgbox CeruleanCity_House1_Text_AllMonsWillObeyYou
+ goto CeruleanCity_House1_EventScript_DescribeAnotherBadge
+ end
+
+CeruleanCity_House1_EventScript_StopDescribingBadges::
+ msgbox CeruleanCity_House1_Text_ComeVisitAnytime
+ release
+ end
+
+CeruleanCity_House1_Text_BadgesHaveAmazingSecrets::
+ .string "Only skilled TRAINERS can collect\n"
+ .string "POKéMON BADGES.\p"
+ .string "I see you have at least one.\p"
+ .string "Those BADGES have amazing secrets,\n"
+ .string "did you know?$"
+
+CeruleanCity_House1_Text_DescribeWhichBadge::
+ .string "Now then…\p"
+ .string "Which of the eight BADGES should\n"
+ .string "I describe?$"
+
+CeruleanCity_House1_Text_ComeVisitAnytime::
+ .string "Come visit me anytime you wish.$"
+
+CeruleanCity_House1_Text_AttackStatFlash::
+ .string "The ATTACK stat of all your\n"
+ .string "POKéMON increases a little bit.\p"
+ .string "It also lets you use the move\n"
+ .string "FLASH outside of battle.$"
+
+CeruleanCity_House1_Text_ObeyLv30Cut::
+ .string "POKéMON up to Lv. 30 will obey\n"
+ .string "you.\p"
+ .string "That includes even outsiders you\n"
+ .string "obtain in trades.\p"
+ .string "POKéMON of higher levels will\n"
+ .string "be unruly in battle, however.\p"
+ .string "It also lets you use the move\n"
+ .string "CUT outside of battle.$"
+
+CeruleanCity_House1_Text_SpeedStatFly::
+ .string "The SPEED stat of all your\n"
+ .string "POKéMON increases a little bit.\p"
+ .string "It also lets you use the move\n"
+ .string "FLY outside of battle.$"
+
+CeruleanCity_House1_Text_ObeyLv50Strength::
+ .string "POKéMON up to Lv. 50 will obey\n"
+ .string "you.\p"
+ .string "That includes even outsiders you\n"
+ .string "obtain in trades.\p"
+ .string "POKéMON of higher levels will\n"
+ .string "be unruly in battle, however.\p"
+ .string "It also lets you use the move\n"
+ .string "STRENGTH outside of battle.$"
+
+CeruleanCity_House1_Text_DefenseStatSurf::
+ .string "The DEFENSE stat of all your\n"
+ .string "POKéMON increases a little bit.\p"
+ .string "It also lets you use the move\n"
+ .string "SURF outside of battle.$"
+
+CeruleanCity_House1_Text_ObeyLv70RockSmash::
+ .string "POKéMON up to Lv. 70 will obey\n"
+ .string "you.\p"
+ .string "That includes even outsiders you\n"
+ .string "obtain in trades.\p"
+ .string "POKéMON of higher levels will\n"
+ .string "be unruly in battle, however.\p"
+ .string "It also lets you use the move\n"
+ .string "ROCK SMASH outside of battle.$"
+
+CeruleanCity_House1_Text_SpStatsWaterfall::
+ .string "The SP. ATK and SP. DEF stats of\n"
+ .string "all your POKéMON rise a little bit.\p"
+ .string "It also lets you use the move\n"
+ .string "WATERFALL outside of battle.$"
+
+CeruleanCity_House1_Text_AllMonsWillObeyYou::
+ .string "All POKéMON will obey you!$"
+
diff --git a/data/maps/CeruleanCity_House2_Frlg/map.json b/data/maps/CeruleanCity_House2_Frlg/map.json
new file mode 100644
index 000000000000..a8ab7fc7171f
--- /dev/null
+++ b/data/maps/CeruleanCity_House2_Frlg/map.json
@@ -0,0 +1,89 @@
+{
+ "id": "MAP_CERULEAN_CITY_HOUSE2",
+ "name": "CeruleanCity_House2_Frlg",
+ "layout": "LAYOUT_CERULEAN_CITY_HOUSE2",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CERULEAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_House2_EventScript_Hiker",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 7,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_House2_EventScript_Lass",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 1,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "9"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_House2_EventScript_WallHole"
+ }
+ ]
+}
diff --git a/data/maps/CeruleanCity_House2_Frlg/scripts.inc b/data/maps/CeruleanCity_House2_Frlg/scripts.inc
new file mode 100644
index 000000000000..492c5e26124d
--- /dev/null
+++ b/data/maps/CeruleanCity_House2_Frlg/scripts.inc
@@ -0,0 +1,46 @@
+CeruleanCity_House2_Frlg_MapScripts::
+ .byte 0
+
+CeruleanCity_House2_EventScript_Hiker::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_TM28_FROM_ROCKET, CeruleanCity_House2_EventScript_HikerGotTM28
+ msgbox CeruleanCity_House2_Text_RocketsStoleTMForDig
+ release
+ end
+
+CeruleanCity_House2_EventScript_HikerGotTM28::
+ msgbox CeruleanCity_House2_Text_TeachDiglettDigWithoutTM
+ release
+ end
+
+CeruleanCity_House2_EventScript_Lass::
+ msgbox CeruleanCity_House2_Text_TeamRocketTryingToDigIntoNoGood, MSGBOX_NPC
+ end
+
+CeruleanCity_House2_EventScript_WallHole::
+ msgbox CeruleanCity_House2_Text_TeamRocketLeftWayOut, MSGBOX_SIGN
+ end
+
+CeruleanCity_House2_Text_RocketsStoleTMForDig::
+ .string "Those miserable ROCKETS!\p"
+ .string "Look what they've done to my\n"
+ .string "house!\p"
+ .string "They stole a TM for teaching\n"
+ .string "POKéMON how to DIG holes!\p"
+ .string "I was going to use it on a\n"
+ .string "MANKEY or a SANDSHREW…\p"
+ .string "That cost me a bundle, it did!$"
+
+CeruleanCity_House2_Text_TeachDiglettDigWithoutTM::
+ .string "I figure what's lost is lost.\p"
+ .string "I decided to teach DIGLETT how to\n"
+ .string "DIG without a TM.$"
+
+CeruleanCity_House2_Text_TeamRocketTryingToDigIntoNoGood::
+ .string "TEAM ROCKET must be trying to DIG\n"
+ .string "their way into no good!$"
+
+CeruleanCity_House2_Text_TeamRocketLeftWayOut::
+ .string "TEAM ROCKET left a way out!$"
+
diff --git a/data/maps/CeruleanCity_House3_Frlg/map.json b/data/maps/CeruleanCity_House3_Frlg/map.json
new file mode 100644
index 000000000000..590c57340b02
--- /dev/null
+++ b/data/maps/CeruleanCity_House3_Frlg/map.json
@@ -0,0 +1,73 @@
+{
+ "id": "MAP_CERULEAN_CITY_HOUSE3",
+ "name": "CeruleanCity_House3_Frlg",
+ "layout": "LAYOUT_HOUSE1_FRLG",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CERULEAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_House3_EventScript_Dontae",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_WOMAN_FRLG",
+ "x": 7,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_House3_EventScript_OldWoman",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CeruleanCity_House3_Frlg/scripts.inc b/data/maps/CeruleanCity_House3_Frlg/scripts.inc
new file mode 100644
index 000000000000..398294f47171
--- /dev/null
+++ b/data/maps/CeruleanCity_House3_Frlg/scripts.inc
@@ -0,0 +1,47 @@
+CeruleanCity_House3_Frlg_MapScripts::
+ .byte 0
+
+CeruleanCity_House3_EventScript_OldWoman::
+ msgbox CeruleanCity_House3_Text_PleaseTradeWithMyHusband, MSGBOX_NPC
+ end
+
+CeruleanCity_House3_EventScript_Dontae::
+ lock
+ faceplayer
+ setvar VAR_0x8008, INGAME_TRADE_JYNX
+ call EventScript_GetInGameTradeSpeciesInfo
+ goto_if_set FLAG_DID_ZYNX_TRADE, CeruleanCity_House3_EventScript_AlreadyTraded
+ msgbox Trade_Text_DoYouHaveMonWouldYouTradeForMon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CeruleanCity_House3_EventScript_DeclineTrade
+ call EventScript_ChooseMonForInGameTrade
+ goto_if_ge VAR_0x8004, PARTY_SIZE, CeruleanCity_House3_EventScript_DeclineTrade
+ call EventScript_GetInGameTradeSpecies
+ goto_if_ne VAR_RESULT, VAR_0x8009, CeruleanCity_House3_EventScript_NotRequestedMon
+ call EventScript_DoInGameTrade
+ msgbox Trade_Text_Thanks
+ setflag FLAG_DID_ZYNX_TRADE
+ release
+ end
+
+CeruleanCity_House3_EventScript_DeclineTrade::
+ msgbox Trade_Text_WellIfYouDontWantTo
+ release
+ end
+
+CeruleanCity_House3_EventScript_NotRequestedMon::
+ bufferspeciesname STR_VAR_1, VAR_0x8009
+ msgbox Trade_Text_ThisIsntMon
+ release
+ end
+
+CeruleanCity_House3_EventScript_AlreadyTraded::
+ msgbox Trade_Text_HasTradedMonGrownStronger
+ release
+ end
+
+CeruleanCity_House3_Text_PleaseTradeWithMyHusband::
+ .string "My husband likes trading POKéMON.\p"
+ .string "You're collecting POKéMON for your\n"
+ .string "POKéDEX, aren't you?\p"
+ .string "Would you please trade with him?$"
+
diff --git a/data/maps/CeruleanCity_House4_Frlg/map.json b/data/maps/CeruleanCity_House4_Frlg/map.json
new file mode 100644
index 000000000000..56f584dbc84f
--- /dev/null
+++ b/data/maps/CeruleanCity_House4_Frlg/map.json
@@ -0,0 +1,46 @@
+{
+ "id": "MAP_CERULEAN_CITY_HOUSE4",
+ "name": "CeruleanCity_House4_Frlg",
+ "layout": "LAYOUT_HOUSE1_FRLG",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CERULEAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_WONDER_NEWS_BERRY_MAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 5,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_House4_EventScript_WonderNewsBerryMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "12"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CeruleanCity_House4_Frlg/scripts.inc b/data/maps/CeruleanCity_House4_Frlg/scripts.inc
new file mode 100644
index 000000000000..fb522d73b194
--- /dev/null
+++ b/data/maps/CeruleanCity_House4_Frlg/scripts.inc
@@ -0,0 +1,154 @@
+.set REWARD_TYPE, VAR_0x8004
+.set REWARD_ITEM, VAR_0x8008
+
+CeruleanCity_House4_Frlg_MapScripts::
+ .byte 0
+
+CeruleanCity_House4_EventScript_WonderNewsBerryMan::
+ lock
+ specialvar REWARD_TYPE, WonderNews_GetRewardInfo
+ copyvar REWARD_ITEM, VAR_RESULT
+ goto_if_eq REWARD_TYPE, NEWS_REWARD_NONE, CeruleanCity_House4_EventScript_NoNews
+ goto_if_eq REWARD_TYPE, NEWS_REWARD_RECV_SMALL, CeruleanCity_House4_EventScript_Reward_RecvSmall
+ goto_if_eq REWARD_TYPE, NEWS_REWARD_RECV_BIG, CeruleanCity_House4_EventScript_Reward_RecvBig
+ goto_if_eq REWARD_TYPE, NEWS_REWARD_WAITING, CeruleanCity_House4_EventScript_Waiting
+ goto_if_eq REWARD_TYPE, NEWS_REWARD_SENT_SMALL, CeruleanCity_House4_EventScript_Reward_SentSmall
+ goto_if_eq REWARD_TYPE, NEWS_REWARD_SENT_BIG, CeruleanCity_House4_EventScript_Reward_SentBig
+ goto_if_eq REWARD_TYPE, NEWS_REWARD_AT_MAX, CeruleanCity_House4_EventScript_AtMax
+ end
+
+@ Mystery Gift is not enabled, or the player has no saved Wonder News
+CeruleanCity_House4_EventScript_NoNews::
+ msgbox CeruleanCity_House4_Text_NothingEntertaining
+ release
+ end
+
+@ Small reward for receiving Wonder News from friend
+CeruleanCity_House4_EventScript_Reward_RecvSmall::
+ call CeruleanCity_House4_EventScript_MovementReactionToNews
+ msgbox CeruleanCity_House4_Text_NewNewsInformativeHaveThis
+ giveitem REWARD_ITEM
+ goto_if_eq VAR_RESULT, FALSE, CeruleanCity_House4_EventScript_NoRoomForBerries
+ release
+ end
+
+@ Big reward for receiving Wonder News from non-friend source
+CeruleanCity_House4_EventScript_Reward_RecvBig::
+ call CeruleanCity_House4_EventScript_MovementReactionToNews
+ msgbox CeruleanCity_House4_Text_IncredibleNewsHaveBerries
+ giveitem REWARD_ITEM, 4
+ goto_if_eq VAR_RESULT, FALSE, CeruleanCity_House4_EventScript_NoRoomForBerries
+ release
+ end
+
+@ Player has not recently sent Wonder News
+CeruleanCity_House4_EventScript_Waiting::
+ applymovement LOCALID_WONDER_NEWS_BERRY_MAN, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox CeruleanCity_House4_Text_WishCouldShareNewsWithOthers
+ release
+ end
+
+@ Small reward for sending Wonder News every 1-3 times
+CeruleanCity_House4_EventScript_Reward_SentSmall::
+ call CeruleanCity_House4_EventScript_MovementReactionToNews
+ msgbox CeruleanCity_House4_Text_ThanksForSpreadingNewsTakeThis
+ giveitem REWARD_ITEM
+ goto_if_eq VAR_RESULT, FALSE, CeruleanCity_House4_EventScript_NoRoomForBerries
+ release
+ end
+
+@ Big reward for sending Wonder News every 4th time
+CeruleanCity_House4_EventScript_Reward_SentBig::
+ call CeruleanCity_House4_EventScript_MovementReactionToNews
+ msgbox CeruleanCity_House4_Text_MagnificentNewsSpreadHaveBerries
+ giveitem REWARD_ITEM, 4
+ goto_if_eq VAR_RESULT, FALSE, CeruleanCity_House4_EventScript_NoRoomForBerries
+ release
+ end
+
+@ Player has hit reward limit and must wait to receive new rewards
+CeruleanCity_House4_EventScript_AtMax::
+ applymovement LOCALID_WONDER_NEWS_BERRY_MAN, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox CeruleanCity_House4_Text_EnjoyingMyselfWithAllSortsOfNews
+ release
+ end
+
+CeruleanCity_House4_EventScript_MovementReactionToNews::
+ playse SE_PIN
+ applymovement LOCALID_WONDER_NEWS_BERRY_MAN, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_WONDER_NEWS_BERRY_MAN, Common_Movement_FacePlayer
+ waitmovement 0
+ applymovement LOCALID_WONDER_NEWS_BERRY_MAN, Common_Movement_Delay48
+ waitmovement 0
+ return
+
+CeruleanCity_House4_EventScript_NoRoomForBerries::
+ msgbox CeruleanCity_House4_Text_YourBerryPouchIsFull
+ release
+ end
+
+CeruleanCity_House4_Text_NothingEntertaining::
+ .string "Sigh…\n"
+ .string "Too much time, too little to do…\p"
+ .string "Is nothing entertaining happening\n"
+ .string "anywhere?$"
+
+CeruleanCity_House4_Text_NewNewsInformativeHaveThis::
+ .string "Ah!\n"
+ .string "A new news report!\p"
+ .string "Hmm…\p"
+ .string "I see!\n"
+ .string "That was quite informative!\p"
+ .string "I applaud you for taking interest\n"
+ .string "in the news at your young age.\p"
+ .string "As my thanks for sharing the news\n"
+ .string "with me, I want you to have this.$"
+
+CeruleanCity_House4_Text_IncredibleNewsHaveBerries::
+ .string "Oh, oh!\n"
+ .string "Th-this news report!\p"
+ .string "Hmm…\p"
+ .string "Amazing!\n"
+ .string "What an incredible piece of news!\p"
+ .string "I haven't seen a news story this\n"
+ .string "incredible in too long a time!\p"
+ .string "Thanks for sharing this fantastic\n"
+ .string "news. Have a bunch of BERRIES!$"
+
+CeruleanCity_House4_Text_WishCouldShareNewsWithOthers::
+ .string "It seems such a shame to not share\n"
+ .string "this news with other folks…\p"
+ .string "I wish I could tell someone…\n"
+ .string "Let others know the news…$"
+
+CeruleanCity_House4_Text_ThanksForSpreadingNewsTakeThis::
+ .string "Ah, you've spread the news for me?\p"
+ .string "Good news becomes worthwhile when\n"
+ .string "all sorts of people share it.\p"
+ .string "As my thanks for your spreading\n"
+ .string "the news, take this!$"
+
+CeruleanCity_House4_Text_MagnificentNewsSpreadHaveBerries::
+ .string "You've spread the news some more?\n"
+ .string "Magnificent!\p"
+ .string "That piece of news must be\n"
+ .string "delighted to be passed around so.\p"
+ .string "Yes, indeed!\p"
+ .string "Consider this a show of\n"
+ .string "appreciation from me and the news.\p"
+ .string "I'll give you more BERRIES than\n"
+ .string "I usually do.$"
+
+CeruleanCity_House4_Text_EnjoyingMyselfWithAllSortsOfNews::
+ .string "I'm quite enjoying myself with all\n"
+ .string "sorts of news.\p"
+ .string "Yes, I am satisfied!\n"
+ .string "I won't be bored for a while.$"
+
+CeruleanCity_House4_Text_YourBerryPouchIsFull::
+ .string "Hm? Your BERRY POUCH is full.\n"
+ .string "My gift remains ungiven, then.$"
+
diff --git a/data/maps/CeruleanCity_House5_Frlg/map.json b/data/maps/CeruleanCity_House5_Frlg/map.json
new file mode 100644
index 000000000000..f9762e3df2c1
--- /dev/null
+++ b/data/maps/CeruleanCity_House5_Frlg/map.json
@@ -0,0 +1,54 @@
+{
+ "id": "MAP_CERULEAN_CITY_HOUSE5",
+ "name": "CeruleanCity_House5_Frlg",
+ "layout": "LAYOUT_CERULEAN_CITY_HOUSE5",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CERULEAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_2",
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_House5_EventScript_BerryPowderMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "13"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CeruleanCity_House5_EventScript_BerryCrushRankings"
+ }
+ ]
+}
diff --git a/data/maps/CeruleanCity_House5_Frlg/scripts.inc b/data/maps/CeruleanCity_House5_Frlg/scripts.inc
new file mode 100644
index 000000000000..91cd34dee3b9
--- /dev/null
+++ b/data/maps/CeruleanCity_House5_Frlg/scripts.inc
@@ -0,0 +1,245 @@
+CeruleanCity_House5_Frlg_MapScripts::
+ .byte 0
+
+CeruleanCity_House5_EventScript_BerryPowderMan::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_POWDER_JAR, CeruleanCity_House5_EventScript_AskToExchangePowder
+ msgbox CeruleanCity_House1_Text_AnyInterestInBerries, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CeruleanCity_House5_EventScript_NoInterestInBerries
+ goto_if_unset FLAG_SYS_GOT_BERRY_POUCH, CeruleanCity_House5_EventScript_NoBerries
+ msgbox CeruleanCity_House1_Text_HaveJustTheThing
+ setflag FLAG_GOT_POWDER_JAR
+ giveitem ITEM_POWDER_JAR
+ goto_if_eq VAR_RESULT, FALSE, EventScript_BagIsFull
+ msgbox CeruleanCity_House1_Text_GoCrushBerriesAtDirectCorner
+ release
+ end
+
+CeruleanCity_House5_EventScript_NoBerries::
+ msgbox CeruleanCity_House1_Text_WhyMustYouLieNoBerries
+ release
+ end
+
+CeruleanCity_House5_EventScript_NoInterestInBerries::
+ msgbox CeruleanCity_House1_Text_TakeInterestInAllSortsOfThings
+ release
+ end
+
+CeruleanCity_House5_EventScript_AskToExchangePowder::
+ special DisplayBerryPowderVendorMenu
+ msgbox CeruleanCity_House1_Text_HaveYouBroughtBerryPowder
+ goto CeruleanCity_House5_EventScript_ChooseExchangeItem
+ end
+
+CeruleanCity_House5_EventScript_ChooseExchangeItem::
+ message CeruleanCity_House5_Text_ExchangeWithWhat
+ waitmessage
+ setvar VAR_0x8004, SCROLL_MULTI_BERRY_POWDER_VENDOR
+ special ShowScrollableMultichoice
+ waitstate
+ switch VAR_RESULT
+ case 0, CeruleanCity_House5_EventScript_EnergyPowder
+ case 1, CeruleanCity_House5_EventScript_EnergyRoot
+ case 2, CeruleanCity_House5_EventScript_HealPowder
+ case 3, CeruleanCity_House5_EventScript_RevivalHerb
+ case 4, CeruleanCity_House5_EventScript_Protein
+ case 5, CeruleanCity_House5_EventScript_Iron
+ case 6, CeruleanCity_House5_EventScript_Carbos
+ case 7, CeruleanCity_House5_EventScript_Calcium
+ case 8, CeruleanCity_House5_EventScript_Zinc
+ case 9, CeruleanCity_House5_EventScript_HPUp
+ case 10, CeruleanCity_House5_EventScript_PPUp
+ case 11, CeruleanCity_House5_EventScript_ExitMenu
+ case 127, CeruleanCity_House5_EventScript_ExitMenu
+ end
+
+CeruleanCity_House5_EventScript_EnergyPowder::
+ bufferitemname STR_VAR_1, ITEM_ENERGY_POWDER
+ setvar VAR_0x8008, ITEM_ENERGY_POWDER
+ setvar VAR_0x8009, 50
+ goto CeruleanCity_House5_EventScript_ExchangePowderForItem
+ end
+
+CeruleanCity_House5_EventScript_EnergyRoot::
+ bufferitemname STR_VAR_1, ITEM_ENERGY_ROOT
+ setvar VAR_0x8008, ITEM_ENERGY_ROOT
+ setvar VAR_0x8009, 80
+ goto CeruleanCity_House5_EventScript_ExchangePowderForItem
+ end
+
+CeruleanCity_House5_EventScript_HealPowder::
+ bufferitemname STR_VAR_1, ITEM_HEAL_POWDER
+ setvar VAR_0x8008, ITEM_HEAL_POWDER
+ setvar VAR_0x8009, 50
+ goto CeruleanCity_House5_EventScript_ExchangePowderForItem
+ end
+
+CeruleanCity_House5_EventScript_RevivalHerb::
+ bufferitemname STR_VAR_1, ITEM_REVIVAL_HERB
+ setvar VAR_0x8008, ITEM_REVIVAL_HERB
+ setvar VAR_0x8009, 300
+ goto CeruleanCity_House5_EventScript_ExchangePowderForItem
+ end
+
+CeruleanCity_House5_EventScript_Protein::
+ bufferitemname STR_VAR_1, ITEM_PROTEIN
+ setvar VAR_0x8008, ITEM_PROTEIN
+ setvar VAR_0x8009, 1000
+ goto CeruleanCity_House5_EventScript_ExchangePowderForItem
+ end
+
+CeruleanCity_House5_EventScript_Iron::
+ bufferitemname STR_VAR_1, ITEM_IRON
+ setvar VAR_0x8008, ITEM_IRON
+ setvar VAR_0x8009, 1000
+ goto CeruleanCity_House5_EventScript_ExchangePowderForItem
+ end
+
+CeruleanCity_House5_EventScript_Carbos::
+ bufferitemname STR_VAR_1, ITEM_CARBOS
+ setvar VAR_0x8008, ITEM_CARBOS
+ setvar VAR_0x8009, 1000
+ goto CeruleanCity_House5_EventScript_ExchangePowderForItem
+ end
+
+CeruleanCity_House5_EventScript_Calcium::
+ bufferitemname STR_VAR_1, ITEM_CALCIUM
+ setvar VAR_0x8008, ITEM_CALCIUM
+ setvar VAR_0x8009, 1000
+ goto CeruleanCity_House5_EventScript_ExchangePowderForItem
+ end
+
+CeruleanCity_House5_EventScript_Zinc::
+ bufferitemname STR_VAR_1, ITEM_ZINC
+ setvar VAR_0x8008, ITEM_ZINC
+ setvar VAR_0x8009, 1000
+ goto CeruleanCity_House5_EventScript_ExchangePowderForItem
+ end
+
+CeruleanCity_House5_EventScript_HPUp::
+ bufferitemname STR_VAR_1, ITEM_HP_UP
+ setvar VAR_0x8008, ITEM_HP_UP
+ setvar VAR_0x8009, 1000
+ goto CeruleanCity_House5_EventScript_ExchangePowderForItem
+ end
+
+CeruleanCity_House5_EventScript_PPUp::
+ bufferitemname STR_VAR_1, ITEM_PP_UP
+ setvar VAR_0x8008, ITEM_PP_UP
+ setvar VAR_0x8009, 3000
+ goto CeruleanCity_House5_EventScript_ExchangePowderForItem
+ end
+
+CeruleanCity_House5_EventScript_ExitMenu::
+ msgbox CeruleanCity_House1_Text_SeeMeIfYoudLikeToTradePowder
+ special RemoveBerryPowderVendorMenu
+ release
+ end
+
+CeruleanCity_House5_EventScript_ExchangePowderForItem::
+ msgbox CeruleanCity_House1_Text_YoullExchangeBerryPowderForItem, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CeruleanCity_House5_EventScript_ChooseExchangeItem
+ copyvar VAR_0x8004, VAR_0x8009
+ specialvar VAR_RESULT, HasEnoughBerryPowder
+ goto_if_eq VAR_RESULT, FALSE, CeruleanCity_House5_EventScript_NotEnoughBerryPowder
+ giveitem VAR_0x8008
+ goto_if_eq VAR_RESULT, FALSE, CeruleanCity_House5_EventScript_BagIsFull
+ copyvar VAR_0x8004, VAR_0x8009
+ special TakeBerryPowder
+ special PrintPlayerBerryPowderAmount
+ msgbox CeruleanCity_House1_Text_TradeMoreBerryPowder, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, CeruleanCity_House5_EventScript_ChooseExchangeItem
+ msgbox CeruleanCity_House1_Text_HopeToSeeYouAgain
+ special RemoveBerryPowderVendorMenu
+ release
+ end
+
+CeruleanCity_House5_EventScript_BagIsFull::
+ msgbox gText_TheBagIsFull
+ special RemoveBerryPowderVendorMenu
+ release
+ end
+
+CeruleanCity_House5_EventScript_NotEnoughBerryPowder::
+ msgbox CeruleanCity_House1_Text_DontHaveEnoughBerryPowder
+ goto CeruleanCity_House5_EventScript_ChooseExchangeItem
+ end
+
+CeruleanCity_House5_EventScript_BerryCrushRankings::
+ lockall
+ special ShowBerryCrushRankings
+ waitstate
+ releaseall
+ end
+
+CeruleanCity_House1_Text_AnyInterestInBerries::
+ .string "I concoct a variety of medicine\n"
+ .string "from BERRY POWDER.\p"
+ .string "Using good BERRY POWDER, I can\n"
+ .string "make any kind of medicine.\p"
+ .string "Now tell me, have you any interest\n"
+ .string "in BERRIES?$"
+
+CeruleanCity_House1_Text_HaveJustTheThing::
+ .string "Ah, good! For you, then, I have\n"
+ .string "just the thing.$"
+
+CeruleanCity_House1_Text_GoCrushBerriesAtDirectCorner::
+ .string "There's something new on the second\n"
+ .string "floor of POKéMON CENTERS, at the\l"
+ .string "DIRECT CORNER.\p"
+ .string "They installed a Wireless Adapter\n"
+ .string "machine for crushing BERRIES.\p"
+ .string "This is where you come in.\p"
+ .string "I have a favor to ask, one that\n"
+ .string "I can entrust only to you.\p"
+ .string "Could you make BERRY POWDER for\n"
+ .string "me using that machine?\p"
+ .string "Don't forget, the machine is at the\n"
+ .string "DIRECT CORNER of POKéMON CENTERS.\p"
+ .string "I'll concoct medicine for you if\n"
+ .string "you bring me some BERRY POWDER.\p"
+ .string "Don't forget, crush BERRIES into\n"
+ .string "BERRY POWDER and bring it to me.$"
+
+CeruleanCity_House1_Text_WhyMustYouLieNoBerries::
+ .string "Why must you lie to me?\p"
+ .string "How many BERRIES do you have?\n"
+ .string "Not a one!$"
+
+CeruleanCity_House1_Text_TakeInterestInAllSortsOfThings::
+ .string "You have no interest in BERRIES?\p"
+ .string "Young one, it's important to take an\n"
+ .string "interest in all sorts of things.$"
+
+CeruleanCity_House1_Text_HaveYouBroughtBerryPowder::
+ .string "Er-hem! Have you brought me some\n"
+ .string "BERRY POWDER?$"
+
+CeruleanCity_House5_Text_ExchangeWithWhat::
+ .string "With what would you like to \n"
+ .string "exchange it?$"
+
+CeruleanCity_House1_Text_YoullExchangeBerryPowderForItem::
+ .string "Fine, you'll exchange your BERRY\n"
+ .string "POWDER for one {STR_VAR_1}?$"
+
+CeruleanCity_House1_Text_DontHaveEnoughBerryPowder::
+ .string "Hm? You don't have enough\n"
+ .string "BERRY POWDER.$"
+
+CeruleanCity_House1_Text_TradeMoreBerryPowder::
+ .string "This is fine BERRY POWDER indeed.\n"
+ .string "It will make excellent medicine.\p"
+ .string "Would you like to trade more BERRY\n"
+ .string "POWDER for something else?$"
+
+CeruleanCity_House1_Text_HopeToSeeYouAgain::
+ .string "That's fine, then.\n"
+ .string "I'll hope to see you back again.$"
+
+CeruleanCity_House1_Text_SeeMeIfYoudLikeToTradePowder::
+ .string "Come see me if you'd like to trade\n"
+ .string "your BERRY POWDER.$"
+
diff --git a/data/maps/CeruleanCity_Mart_Frlg/map.json b/data/maps/CeruleanCity_Mart_Frlg/map.json
new file mode 100644
index 000000000000..6874e05d0665
--- /dev/null
+++ b/data/maps/CeruleanCity_Mart_Frlg/map.json
@@ -0,0 +1,87 @@
+{
+ "id": "MAP_CERULEAN_CITY_MART",
+ "name": "CeruleanCity_Mart_Frlg",
+ "layout": "LAYOUT_MART_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CERULEAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 2,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_Mart_EventScript_Clerk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 9,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 4,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_Mart_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 1,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_Mart_EventScript_Youngster",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "6"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CeruleanCity_Mart_Frlg/scripts.inc b/data/maps/CeruleanCity_Mart_Frlg/scripts.inc
new file mode 100644
index 000000000000..29614a192d1a
--- /dev/null
+++ b/data/maps/CeruleanCity_Mart_Frlg/scripts.inc
@@ -0,0 +1,50 @@
+CeruleanCity_Mart_Frlg_MapScripts::
+ .byte 0
+
+CeruleanCity_Mart_EventScript_Youngster::
+ msgbox CeruleanCity_Mart_Text_RepelWorksOnWeakMons, MSGBOX_NPC
+ end
+
+CeruleanCity_Mart_EventScript_Woman::
+ msgbox CeruleanCity_Mart_Text_DoYouKnowAboutRareCandy, MSGBOX_NPC
+ end
+
+CeruleanCity_Mart_EventScript_Clerk::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart CeruleanCity_Mart_Items
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+CeruleanCity_Mart_Items::
+ .2byte ITEM_POKE_BALL
+ .2byte ITEM_SUPER_POTION
+ .2byte ITEM_POTION
+ .2byte ITEM_ANTIDOTE
+ .2byte ITEM_PARALYZE_HEAL
+ .2byte ITEM_AWAKENING
+ .2byte ITEM_BURN_HEAL
+ .2byte ITEM_ESCAPE_ROPE
+ .2byte ITEM_REPEL
+ .2byte ITEM_NONE
+ release
+ end
+
+CeruleanCity_Mart_Text_RepelWorksOnWeakMons::
+ .string "REPEL not only keeps bugs away,\n"
+ .string "it also works on weak POKéMON.\p"
+ .string "Put your strongest POKéMON at the\n"
+ .string "left of the POKéMON LIST.\p"
+ .string "If your first POKéMON is strong,\n"
+ .string "REPEL's effect is boosted.$"
+
+CeruleanCity_Mart_Text_DoYouKnowAboutRareCandy::
+ .string "Do you know about RARE CANDY?\n"
+ .string "They don't sell it in shops.\p"
+ .string "I think it makes POKéMON grow\n"
+ .string "very quickly all of a sudden.$"
+
diff --git a/data/maps/CeruleanCity_PokemonCenter_1F_Frlg/map.json b/data/maps/CeruleanCity_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..387edc113bf3
--- /dev/null
+++ b/data/maps/CeruleanCity_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,151 @@
+{
+ "id": "MAP_CERULEAN_CITY_POKEMON_CENTER_1F",
+ "name": "CeruleanCity_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CERULEAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_CERULEAN_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 12,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_PokemonCenter_1F_EventScript_Gentleman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 5,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_PokemonCenter_1F_EventScript_Rocker",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 4,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_PokemonCenter_1F_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 3,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_PokemonCenter_1F_EventScript_Lass",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_PokemonCenter_1F_EventScript_PokemonJournalMisty",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 3,
+ "y": 1,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CeruleanCity_PokemonCenter_1F_EventScript_PokemonJournalMisty",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 8,
+ "y": 8,
+ "elevation": 0,
+ "dest_map": "MAP_CERULEAN_CITY",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_CERULEAN_CITY_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CeruleanCity_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/CeruleanCity_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..bc861277984e
--- /dev/null
+++ b/data/maps/CeruleanCity_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,63 @@
+CeruleanCity_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, CeruleanCity_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ .byte 0
+
+CeruleanCity_PokemonCenter_1F_OnTransition::
+ setrespawn HEAL_LOCATION_CERULEAN_CITY
+ end
+
+CeruleanCity_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+CeruleanCity_PokemonCenter_1F_EventScript_Gentleman::
+ msgbox CeruleanCity_PokemonCenter_1F_Text_EveryoneCallsBillPokemaniac, MSGBOX_NPC
+ end
+
+CeruleanCity_PokemonCenter_1F_EventScript_Rocker::
+ msgbox CeruleanCity_PokemonCenter_1F_Text_BillDoesWhateverForRareMons, MSGBOX_NPC
+ end
+
+CeruleanCity_PokemonCenter_1F_EventScript_Youngster::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_BILL, 1
+ msgbox CeruleanCity_PokemonCenter_1F_Text_BillCollectsRareMons
+ release
+ end
+
+CeruleanCity_PokemonCenter_1F_EventScript_Lass::
+ msgbox CeruleanCity_PokemonCenter_1F_Text_TryTradingUpstairs, MSGBOX_NPC
+ end
+
+CeruleanCity_PokemonCenter_1F_Text_BillDoesWhateverForRareMons::
+ .string "That BILL!\p"
+ .string "I heard that he'll do whatever it\n"
+ .string "takes to get rare POKéMON.\p"
+ .string "He's not above doing all sorts\n"
+ .string "of things, I've heard.$"
+
+CeruleanCity_PokemonCenter_1F_Text_EveryoneCallsBillPokemaniac::
+ .string "Have you heard about BILL?\p"
+ .string "Everyone calls him a POKéMANIAC!\p"
+ .string "I think people are just jealous of\n"
+ .string "BILL, though.\p"
+ .string "Who wouldn't want to boast about\n"
+ .string "their POKéMON?$"
+
+CeruleanCity_PokemonCenter_1F_Text_BillCollectsRareMons::
+ .string "BILL has lots of POKéMON!\n"
+ .string "He collects rare ones, too!$"
+
+CeruleanCity_PokemonCenter_1F_Text_TryTradingUpstairs::
+ .string "Why don't you go upstairs and try\n"
+ .string "trading POKéMON with your friends?\p"
+ .string "You could get a lot more variety\n"
+ .string "by trading.\p"
+ .string "The POKéMON you get in trades grow\n"
+ .string "quickly, too.$"
+
diff --git a/data/maps/CeruleanCity_PokemonCenter_2F_Frlg/map.json b/data/maps/CeruleanCity_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..0e57a5f10bd5
--- /dev/null
+++ b/data/maps/CeruleanCity_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_CERULEAN_CITY_POKEMON_CENTER_2F",
+ "name": "CeruleanCity_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CERULEAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_CERULEAN_CITY_POKEMON_CENTER_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CeruleanCity_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/CeruleanCity_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..6ead52645adc
--- /dev/null
+++ b/data/maps/CeruleanCity_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+CeruleanCity_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+CeruleanCity_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+CeruleanCity_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+CeruleanCity_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/CinnabarIsland_Frlg/map.json b/data/maps/CinnabarIsland_Frlg/map.json
new file mode 100644
index 000000000000..a58426de7f96
--- /dev/null
+++ b/data/maps/CinnabarIsland_Frlg/map.json
@@ -0,0 +1,171 @@
+{
+ "id": "MAP_CINNABAR_ISLAND",
+ "name": "CinnabarIsland_Frlg",
+ "layout": "LAYOUT_CINNABAR_ISLAND",
+ "music": "MUS_RG_CINNABAR",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CINNABAR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE21_SOUTH",
+ "offset": 0,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_ROUTE20",
+ "offset": 0,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 14,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 11,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_EventScript_OldMan",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_CINNABAR_BILL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BILL",
+ "x": 20,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_CINNABAR_BILL"
+ },
+ {
+ "local_id": "LOCALID_CINNABAR_SEAGALLOP",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SEAGALLOP",
+ "x": 23,
+ "y": 7,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_CINNABAR_SEAGALLOP"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 3,
+ "elevation": 0,
+ "dest_map": "MAP_POKEMON_MANSION_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 20,
+ "y": 4,
+ "elevation": 0,
+ "dest_map": "MAP_CINNABAR_ISLAND_GYM",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 8,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_CINNABAR_ISLAND_POKEMON_LAB_ENTRANCE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 14,
+ "y": 11,
+ "elevation": 0,
+ "dest_map": "MAP_CINNABAR_ISLAND_POKEMON_CENTER_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 19,
+ "y": 11,
+ "elevation": 0,
+ "dest_map": "MAP_CINNABAR_ISLAND_MART",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 20,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "CinnabarIsland_EventScript_GymDoorLocked"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 3,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CinnabarIsland_EventScript_IslandSign"
+ },
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CinnabarIsland_EventScript_PokemonLabSign"
+ },
+ {
+ "type": "sign",
+ "x": 22,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CinnabarIsland_EventScript_GymSign"
+ },
+ {
+ "type": "sign",
+ "x": 10,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CinnabarIsland_EventScript_PokemonLabSign"
+ }
+ ]
+}
diff --git a/data/maps/CinnabarIsland_Frlg/scripts.inc b/data/maps/CinnabarIsland_Frlg/scripts.inc
new file mode 100644
index 000000000000..7bc675050785
--- /dev/null
+++ b/data/maps/CinnabarIsland_Frlg/scripts.inc
@@ -0,0 +1,428 @@
+CinnabarIsland_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, CinnabarIsland_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CinnabarIsland_OnFrame
+ .byte 0
+
+CinnabarIsland_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_CINNABAR_ISLAND
+ call CinnabarIsland_EventScript_CheckUnlockGym
+ call_if_eq VAR_MAP_SCENE_CINNABAR_ISLAND, 1, CinnabarIsland_EventScript_ReadyObjectsSailToOneIsland
+ call_if_eq VAR_MAP_SCENE_CINNABAR_ISLAND, 3, CinnabarIsland_EventScript_ReadyObjectsReturnFromSeviiIslands
+ call_if_eq VAR_MAP_SCENE_CINNABAR_ISLAND_2, 1, CinnabarIsland_EventScript_ReadyObjectsSailToOneIslandFromPokeCenter
+ end
+
+CinnabarIsland_EventScript_ReadyObjectsSailToOneIslandFromPokeCenter::
+ savebgm MUS_FOLLOW_ME
+ setflag FLAG_TEMP_2
+ setobjectxyperm LOCALID_CINNABAR_BILL, 15, 12
+ setobjectmovementtype LOCALID_CINNABAR_BILL, MOVEMENT_TYPE_FACE_LEFT
+ setobjectxyperm LOCALID_CINNABAR_SEAGALLOP, 30, 12
+ return
+
+CinnabarIsland_EventScript_ReadyObjectsSailToOneIsland::
+ getplayerxy VAR_0x8004, VAR_0x8005
+ goto_if_ge VAR_0x8004, 18, CinnabarIsland_EventScript_MoveSeagallopDown
+ setflag FLAG_TEMP_2
+ setobjectxyperm LOCALID_CINNABAR_BILL, 18, 12
+ setobjectmovementtype LOCALID_CINNABAR_BILL, MOVEMENT_TYPE_FACE_UP
+ setobjectxyperm LOCALID_CINNABAR_SEAGALLOP, 30, 12
+ return
+
+CinnabarIsland_EventScript_MoveSeagallopDown::
+ setobjectxyperm LOCALID_CINNABAR_SEAGALLOP, 30, 8
+ return
+
+CinnabarIsland_EventScript_ReadyObjectsReturnFromSeviiIslands::
+ setobjectxyperm LOCALID_CINNABAR_BILL, 21, 8
+ setobjectmovementtype LOCALID_CINNABAR_BILL, MOVEMENT_TYPE_FACE_UP
+ return
+
+CinnabarIsland_EventScript_CheckUnlockGym::
+ goto_if_set FLAG_HIDE_POKEMON_MANSION_B1F_SECRET_KEY, CinnabarIsland_EventScript_UnlockGym
+ return
+
+CinnabarIsland_EventScript_UnlockGym::
+ setvar VAR_TEMP_1, 1
+ return
+
+CinnabarIsland_OnFrame::
+ map_script_2 VAR_MAP_SCENE_CINNABAR_ISLAND_2, 1, CinnabarIsland_EventScript_ExitPokeCenterForOneIsland
+ map_script_2 VAR_MAP_SCENE_CINNABAR_ISLAND, 1, CinnabarIsland_EventScript_BillScene
+ map_script_2 VAR_MAP_SCENE_CINNABAR_ISLAND, 3, CinnabarIsland_EventScript_ReturnFromSeviiIslands
+ .2byte 0
+
+CinnabarIsland_EventScript_ExitPokeCenterForOneIsland::
+ lockall
+ clearflag FLAG_DONT_TRANSITION_MUSIC
+ savebgm MUS_DUMMY
+ textcolor NPC_TEXT_COLOR_MALE
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND_2, 2
+ delay 20
+ call CinnabarIsland_EventScript_SailToOneIsland
+ releaseall
+ end
+
+CinnabarIsland_EventScript_ReturnFromSeviiIslands::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox CinnabarIsland_Text_IfYouHaveTriPassYouCanGoAgain
+ closemessage
+ applymovement LOCALID_CINNABAR_BILL, CinnabarIsland_Movement_BillExit
+ waitmovement 0
+ removeobject LOCALID_CINNABAR_BILL
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND, 4
+ setflag FLAG_HIDE_TWO_ISLAND_GAME_CORNER_LOSTELLE
+ clearflag FLAG_HIDE_LOSTELLE_IN_HER_HOME
+ releaseall
+ end
+
+CinnabarIsland_Movement_BillExit::
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+CinnabarIsland_EventScript_BillScene::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ call_if_unset FLAG_TEMP_2, CinnabarIsland_EventScript_BillFacePlayer1
+ call_if_set FLAG_TEMP_2, CinnabarIsland_EventScript_BillFacePlayer2
+ playse SE_PIN
+ applymovement LOCALID_CINNABAR_BILL, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_CINNABAR_BILL, Common_Movement_Delay48
+ waitmovement 0
+ call_if_unset FLAG_TEMP_2, CinnabarIsland_EventScript_BillApproachPlayer1
+ call_if_set FLAG_TEMP_2, CinnabarIsland_EventScript_BillApproachPlayer2
+ msgbox CinnabarIsland_Text_HeyIfItIsntPlayer
+ msgbox CinnabarIsland_Text_ComeWithMeToOneIsland, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, CinnabarIsland_EventScript_AgreeSailToOneIsland
+ goto_if_eq VAR_RESULT, NO, CinnabarIsland_EventScript_DeclineSailToOneIsland
+ end
+
+CinnabarIsland_EventScript_BillFacePlayer1::
+ applymovement LOCALID_CINNABAR_BILL, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ return
+
+CinnabarIsland_EventScript_BillFacePlayer2::
+ applymovement LOCALID_CINNABAR_BILL, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ return
+
+CinnabarIsland_EventScript_BillApproachPlayer1::
+ applymovement LOCALID_CINNABAR_BILL, CinnabarIsland_Movement_BillApproachPlayer1
+ waitmovement 0
+ return
+
+CinnabarIsland_EventScript_BillApproachPlayer2::
+ applymovement LOCALID_CINNABAR_BILL, CinnabarIsland_Movement_BillApproachPlayer2
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ return
+
+CinnabarIsland_EventScript_AgreeSailToOneIsland::
+ msgbox CinnabarIsland_Text_AllRightLetsGo
+ closemessage
+ call CinnabarIsland_EventScript_SailToOneIsland
+ releaseall
+ end
+
+CinnabarIsland_EventScript_DeclineSailToOneIsland::
+ msgbox CinnabarIsland_Text_IllBeWaitingInPokeCenter
+ closemessage
+ call_if_unset FLAG_TEMP_2, CinnabarIsland_EventScript_BillExitToPokeCenter
+ call_if_set FLAG_TEMP_2, CinnabarIsland_EventScript_BillReturnToPokeCenter
+ removeobject LOCALID_CINNABAR_BILL
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND, 2
+ clearflag FLAG_HIDE_CINNABAR_POKECENTER_BILL
+ releaseall
+ end
+
+CinnabarIsland_EventScript_BillExitToPokeCenter::
+ applymovement LOCALID_CINNABAR_BILL, CinnabarIsland_Movement_BillExitToPokeCenter
+ waitmovement 0
+ return
+
+CinnabarIsland_Movement_BillExitToPokeCenter::
+ walk_right
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+CinnabarIsland_EventScript_BillReturnToPokeCenter::
+ applymovement LOCALID_PLAYER, CinnabarIsland_Movement_PlayerWatchBillExit
+ applymovement LOCALID_CINNABAR_BILL, CinnabarIsland_Movement_BillApproachDoor
+ waitmovement 0
+ opendoor 14, 11
+ waitdooranim
+ applymovement LOCALID_CINNABAR_BILL, CinnabarIsland_Movement_BillReEnterPokeCenter
+ waitmovement 0
+ closedoor 14, 11
+ waitdooranim
+ return
+
+CinnabarIsland_Movement_PlayerWatchBillExit::
+ walk_left
+ walk_in_place_faster_right
+ step_end
+
+CinnabarIsland_Movement_BillApproachDoor::
+ delay_16
+ walk_left
+ walk_in_place_faster_up
+ step_end
+
+CinnabarIsland_Movement_BillReEnterPokeCenter::
+ walk_up
+ delay_4
+ set_invisible
+ step_end
+
+@ Can be triggered outside, or after talking to Bill in the poke center
+CinnabarIsland_EventScript_SailToOneIsland::
+ call_if_set FLAG_TEMP_2, CinnabarIsland_EventScript_ApproachShore
+ addobject LOCALID_CINNABAR_SEAGALLOP
+ call_if_unset FLAG_TEMP_2, CinnabarIsland_EventScript_BoatArrive
+ call_if_set FLAG_TEMP_2, CinnabarIsland_EventScript_BoatArriveExitedPokeCenter
+ msgbox CinnabarIsland_Text_MyPalsBoatArrived
+ closemessage
+ call_if_unset FLAG_TEMP_2, CinnabarIsland_EventScript_BoardBoat
+ call_if_set FLAG_TEMP_2, CinnabarIsland_EventScript_BoardBoatExitedPokeCenter
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND, 2
+ removeobject LOCALID_CINNABAR_BILL
+ delay 40
+ setflag FLAG_HIDE_CINNABAR_SEAGALLOP
+ setvar VAR_MAP_SCENE_ONE_ISLAND_HARBOR, 1
+ setvar VAR_0x8004, SEAGALLOP_CINNABAR_ISLAND
+ setvar VAR_0x8006, SEAGALLOP_ONE_ISLAND
+ goto EventScript_SetSail
+ end
+
+CinnabarIsland_EventScript_ApproachShore::
+ applymovement LOCALID_CINNABAR_BILL, CinnabarIsland_Movement_ApproachShore
+ applymovement LOCALID_PLAYER, CinnabarIsland_Movement_ApproachShore
+ waitmovement 0
+ return
+
+CinnabarIsland_EventScript_BoatArrive::
+ applymovement LOCALID_CINNABAR_BILL, CinnabarIsland_Movement_BillFaceBoat
+ applymovement LOCALID_CINNABAR_SEAGALLOP, CinnabarIsland_Movement_BoatArrive
+ waitmovement 0
+ return
+
+CinnabarIsland_EventScript_BoatArriveExitedPokeCenter::
+ applymovement LOCALID_CINNABAR_SEAGALLOP, CinnabarIsland_Movement_BoatArrive
+ waitmovement 0
+ return
+
+CinnabarIsland_EventScript_BoardBoat::
+ applymovement LOCALID_CINNABAR_BILL, CinnabarIsland_Movement_BillBoardBoat
+ applymovement LOCALID_PLAYER, CinnabarIsland_Movement_PlayerBoardBoat
+ waitmovement 0
+ return
+
+CinnabarIsland_EventScript_BoardBoatExitedPokeCenter::
+ applymovement LOCALID_CINNABAR_BILL, CinnabarIsland_Movement_BillBoardBoatFromShore
+ applymovement LOCALID_PLAYER, CinnabarIsland_Movement_PlayerBoardBoatFromShore
+ waitmovement 0
+ return
+
+CinnabarIsland_Movement_BoatArrive::
+ delay_16
+ delay_16
+ walk_fast_left
+ walk_fast_left
+ walk_left
+ walk_slow_left
+ walk_slow_left
+ step_end
+
+CinnabarIsland_Movement_BillBoardBoat::
+ walk_right
+ walk_down
+ walk_down
+ walk_right
+ delay_4
+ set_invisible
+ step_end
+
+CinnabarIsland_Movement_BillApproachPlayer1::
+ walk_up
+ step_end
+
+CinnabarIsland_Movement_BillApproachPlayer2::
+ walk_left
+ walk_left
+ walk_left
+ step_end
+
+CinnabarIsland_Movement_BillFaceBoat::
+ delay_16
+ delay_16
+ delay_8
+ walk_in_place_faster_right
+ step_end
+
+CinnabarIsland_Movement_ApproachShore::
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ step_end
+
+CinnabarIsland_Movement_BillBoardBoatFromShore::
+ walk_right
+ delay_4
+ set_invisible
+ step_end
+
+CinnabarIsland_Movement_PlayerBoardBoat::
+ walk_down
+ walk_right
+ walk_down
+ walk_down
+ walk_in_place_faster_right
+ delay_4
+ walk_right
+ delay_4
+ set_invisible
+ step_end
+
+CinnabarIsland_Movement_PlayerBoardBoatFromShore::
+ walk_right
+ delay_4
+ walk_right
+ delay_4
+ set_invisible
+ step_end
+
+@ Triggered when VAR_TEMP_1 is 0
+CinnabarIsland_EventScript_GymDoorLocked::
+ lockall
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ delay 20
+ msgbox CinnabarIsland_Text_DoorIsLocked
+ closemessage
+ applymovement LOCALID_PLAYER, CinnabarIsland_Movement_ForcePlayerFromDoor
+ waitmovement 0
+ releaseall
+ end
+
+CinnabarIsland_Movement_ForcePlayerFromDoor::
+ walk_down
+ step_end
+
+CinnabarIsland_EventScript_Woman::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_BLAINE, 3
+ msgbox CinnabarIsland_Text_BlaineLivedHereSinceBeforeLab
+ release
+ end
+
+CinnabarIsland_EventScript_OldMan::
+ msgbox CinnabarIsland_Text_ScientistsExperimentInMansion, MSGBOX_NPC
+ end
+
+CinnabarIsland_EventScript_IslandSign::
+ msgbox CinnabarIsland_Text_IslandSign, MSGBOX_SIGN
+ end
+
+CinnabarIsland_EventScript_PokemonLabSign::
+ msgbox CinnabarIsland_Text_PokemonLab, MSGBOX_SIGN
+ end
+
+CinnabarIsland_EventScript_GymSign::
+ lockall
+ famechecker FAMECHECKER_BLAINE, 0
+ msgbox CinnabarIsland_Text_GymSign
+ releaseall
+ end
+
+CinnabarIsland_Text_DoorIsLocked::
+ .string "The door is locked…$"
+
+CinnabarIsland_Text_BlaineLivedHereSinceBeforeLab::
+ .string "CINNABAR GYM's BLAINE is quite the\n"
+ .string "odd fellow.\p"
+ .string "He's lived on the island since way\n"
+ .string "before the LAB was built.$"
+
+CinnabarIsland_Text_ScientistsExperimentInMansion::
+ .string "Scientists conduct experiments \n"
+ .string "in the burned-out building.\p"
+ .string "You know, the one they call the\n"
+ .string "POKéMON MANSION.$"
+
+CinnabarIsland_Text_IslandSign::
+ .string "CINNABAR ISLAND\n"
+ .string "The Fiery Town of Burning Desire$"
+
+CinnabarIsland_Text_PokemonLab::
+ .string "POKéMON LAB$"
+
+CinnabarIsland_Text_GymSign::
+ .string "CINNABAR ISLAND POKéMON GYM\n"
+ .string "LEADER: BLAINE\l"
+ .string "The Hotheaded Quiz Master!$"
+
+CinnabarIsland_Text_HeyIfItIsntPlayer::
+ .string "Huh?\n"
+ .string "Hey, if it isn't {PLAYER}!$"
+
+CinnabarIsland_Text_ComeWithMeToOneIsland::
+ .string "Look, it's me, BILL.\n"
+ .string "Long time no see!\p"
+ .string "I hope you're still using my\n"
+ .string "PC system.\p"
+ .string "Well, listen, since we met up here,\n"
+ .string "how about spending time with me?\p"
+ .string "There's this little island in the far\n"
+ .string "south called ONE ISLAND.\p"
+ .string "A friend invited me, so I'm on my\n"
+ .string "way out there.\p"
+ .string "How about it?\n"
+ .string "Do you feel like coming with me?$"
+
+CinnabarIsland_Text_AllRightLetsGo::
+ .string "All right, then.\n"
+ .string "Let's go!$"
+
+CinnabarIsland_Text_IllBeWaitingInPokeCenter::
+ .string "What, are you too busy?\p"
+ .string "Well, all right.\n"
+ .string "The boat hasn't arrived yet anyway.\p"
+ .string "I'll be waiting at the POKéMON\n"
+ .string "CENTER over there.\p"
+ .string "Come see me when you're done with\n"
+ .string "your business here.$"
+
+CinnabarIsland_Text_MyPalsBoatArrived::
+ .string "Looks like my pal's boat arrived,\n"
+ .string "too.\p"
+ .string "He sent it specially here to\n"
+ .string "CINNABAR to pick me up.$"
+
+CinnabarIsland_Text_IfYouHaveTriPassYouCanGoAgain::
+ .string "Hey, wasn't that a long cruise?\p"
+ .string "My buddy CELIO seemed to enjoy\n"
+ .string "your company.\p"
+ .string "I'm sure he'd welcome you if you\n"
+ .string "were to visit him again.\p"
+ .string "If you have a TRI-PASS, you can\n"
+ .string "always take a ferry there from\l"
+ .string "VERMILION PORT.\p"
+ .string "All right, thanks for your company!$"
+
diff --git a/data/maps/CinnabarIsland_Gym_Frlg/map.json b/data/maps/CinnabarIsland_Gym_Frlg/map.json
new file mode 100644
index 000000000000..3406df404529
--- /dev/null
+++ b/data/maps/CinnabarIsland_Gym_Frlg/map.json
@@ -0,0 +1,298 @@
+{
+ "id": "MAP_CINNABAR_ISLAND_GYM",
+ "name": "CinnabarIsland_Gym_Frlg",
+ "layout": "LAYOUT_CINNABAR_ISLAND_GYM",
+ "music": "MUS_GYM",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CINNABAR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_GYM",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_QUINN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SUPER_NERD",
+ "x": 25,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_Gym_EventScript_Quinn",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 25,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_Gym_EventScript_Erik",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_AVERY",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 17,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_Gym_EventScript_Avery",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_RAMON",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SUPER_NERD",
+ "x": 16,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_Gym_EventScript_Ramon",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_DEREK",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 16,
+ "y": 18,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_Gym_EventScript_Derek",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_DUSTY",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SUPER_NERD",
+ "x": 4,
+ "y": 19,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_Gym_EventScript_Dusty",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_ZAC",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 4,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_Gym_EventScript_Zac",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLAINE",
+ "x": 5,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_Gym_EventScript_Blaine",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GYM_GUY",
+ "x": 24,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_Gym_EventScript_GymGuy",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 24,
+ "y": 23,
+ "elevation": 3,
+ "dest_map": "MAP_CINNABAR_ISLAND",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 25,
+ "y": 23,
+ "elevation": 3,
+ "dest_map": "MAP_CINNABAR_ISLAND",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 26,
+ "y": 23,
+ "elevation": 3,
+ "dest_map": "MAP_CINNABAR_ISLAND",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 23,
+ "y": 20,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CinnabarIsland_Gym_EventScript_GymStatue"
+ },
+ {
+ "type": "sign",
+ "x": 27,
+ "y": 20,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CinnabarIsland_Gym_EventScript_GymStatue"
+ },
+ {
+ "type": "sign",
+ "x": 22,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CinnabarIsland_Gym_EventScript_Quz1Left"
+ },
+ {
+ "type": "sign",
+ "x": 23,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CinnabarIsland_Gym_EventScript_Quz1Right"
+ },
+ {
+ "type": "sign",
+ "x": 15,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CinnabarIsland_Gym_EventScript_Quiz2Left"
+ },
+ {
+ "type": "sign",
+ "x": 16,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CinnabarIsland_Gym_EventScript_Quiz2Right"
+ },
+ {
+ "type": "sign",
+ "x": 13,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CinnabarIsland_Gym_EventScript_Quiz3Left"
+ },
+ {
+ "type": "sign",
+ "x": 14,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CinnabarIsland_Gym_EventScript_Quiz3Right"
+ },
+ {
+ "type": "sign",
+ "x": 13,
+ "y": 17,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CinnabarIsland_Gym_EventScript_Quiz4Left"
+ },
+ {
+ "type": "sign",
+ "x": 14,
+ "y": 17,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CinnabarIsland_Gym_EventScript_Quiz4Right"
+ },
+ {
+ "type": "sign",
+ "x": 1,
+ "y": 18,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CinnabarIsland_Gym_EventScript_Quiz5Left"
+ },
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 18,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CinnabarIsland_Gym_EventScript_Quiz5Right"
+ },
+ {
+ "type": "sign",
+ "x": 1,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CinnabarIsland_Gym_EventScript_Quiz6Left"
+ },
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CinnabarIsland_Gym_EventScript_Quiz6Right"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "CinnabarIsland_Gym_EventScript_BlaineFujiPhoto"
+ }
+ ]
+}
diff --git a/data/maps/CinnabarIsland_Gym_Frlg/scripts.inc b/data/maps/CinnabarIsland_Gym_Frlg/scripts.inc
new file mode 100644
index 000000000000..e92c2abca827
--- /dev/null
+++ b/data/maps/CinnabarIsland_Gym_Frlg/scripts.inc
@@ -0,0 +1,901 @@
+CinnabarIsland_Gym_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, CinnabarIsland_Gym_OnLoad
+ .byte 0
+
+CinnabarIsland_Gym_OnLoad::
+ goto_if_set FLAG_DEFEATED_BLAINE, CinnabarIsland_Gym_OnLoadOpenAllDoors
+ call_if_set FLAG_CINNABAR_GYM_QUIZ_1, CinnabarIsland_Gym_OnLoadOpenDoor1
+ call_if_set FLAG_CINNABAR_GYM_QUIZ_2, CinnabarIsland_Gym_OnLoadOpenDoor2
+ call_if_set FLAG_CINNABAR_GYM_QUIZ_3, CinnabarIsland_Gym_OnLoadOpenDoor3
+ call_if_set FLAG_CINNABAR_GYM_QUIZ_4, CinnabarIsland_Gym_OnLoadOpenDoor4
+ call_if_set FLAG_CINNABAR_GYM_QUIZ_5, CinnabarIsland_Gym_OnLoadOpenDoor5
+ call_if_set FLAG_CINNABAR_GYM_QUIZ_6, CinnabarIsland_Gym_OnLoadOpenDoor6
+ end
+
+CinnabarIsland_Gym_OnLoadOpenAllDoors::
+ call CinnabarIsland_Gym_EventScript_OpenDoor1
+ call CinnabarIsland_Gym_EventScript_OpenDoor2
+ call CinnabarIsland_Gym_EventScript_OpenDoor3
+ call CinnabarIsland_Gym_EventScript_OpenDoor4
+ call CinnabarIsland_Gym_EventScript_OpenDoor5
+ call CinnabarIsland_Gym_EventScript_OpenDoor6
+ end
+
+CinnabarIsland_Gym_OnLoadOpenDoor1::
+ call CinnabarIsland_Gym_EventScript_OpenDoor1
+ return
+
+CinnabarIsland_Gym_OnLoadOpenDoor2::
+ call CinnabarIsland_Gym_EventScript_OpenDoor2
+ return
+
+CinnabarIsland_Gym_OnLoadOpenDoor3::
+ call CinnabarIsland_Gym_EventScript_OpenDoor3
+ return
+
+CinnabarIsland_Gym_OnLoadOpenDoor4::
+ call CinnabarIsland_Gym_EventScript_OpenDoor4
+ return
+
+CinnabarIsland_Gym_OnLoadOpenDoor5::
+ call CinnabarIsland_Gym_EventScript_OpenDoor5
+ return
+
+CinnabarIsland_Gym_OnLoadOpenDoor6::
+ call CinnabarIsland_Gym_EventScript_OpenDoor6
+ return
+
+CinnabarIsland_Gym_EventScript_Blaine::
+ famechecker FAMECHECKER_BLAINE, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
+ trainerbattle_single TRAINER_LEADER_BLAINE, CinnabarIsland_Gym_Text_BlaineIntro, CinnabarIsland_Gym_Text_BlaineDefeat, CinnabarIsland_Gym_EventScript_DefeatedBlaine, NO_MUSIC
+ goto_if_unset FLAG_GOT_TM38_FROM_BLAINE, CinnabarIsland_Gym_EventScript_GiveTM38
+ msgbox CinnabarIsland_Gym_Text_BlainePostBattle
+ release
+ end
+
+CinnabarIsland_Gym_EventScript_DefeatedBlaine::
+ famechecker FAMECHECKER_BLAINE, 1
+ setflag FLAG_DEFEATED_BLAINE
+ setflag FLAG_BADGE07_GET
+ setrespawn HEAL_LOCATION_CINNABAR_ISLAND
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND, 1
+ clearflag FLAG_HIDE_CINNABAR_BILL
+ set_gym_trainers_frlg 7
+ goto CinnabarIsland_Gym_EventScript_GiveTM38
+ end
+
+CinnabarIsland_Gym_EventScript_GiveTM38::
+ msgbox CinnabarIsland_Gym_Text_ExplainVolcanoBadge
+ checkitemspace ITEM_TM38
+ goto_if_eq VAR_RESULT, FALSE, CinnabarIsland_Gym_EventScript_NoRoomForTM38
+ giveitem_msg CinnabarIsland_Gym_Text_ReceivedTM38FromBlaine, ITEM_TM38
+ setflag FLAG_GOT_TM38_FROM_BLAINE
+ msgbox CinnabarIsland_Gym_Text_FireBlastIsUltimateFireMove
+ release
+ end
+
+CinnabarIsland_Gym_EventScript_NoRoomForTM38::
+ msgbox CinnabarIsland_Gym_Text_MakeSpaceForThis
+ release
+ end
+
+CinnabarIsland_Gym_EventScript_Erik::
+ trainerbattle_single TRAINER_SUPER_NERD_ERIK, CinnabarIsland_Gym_Text_ErikIntro, CinnabarIsland_Gym_Text_ErikDefeat
+ msgbox CinnabarIsland_Gym_Text_ErikPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+CinnabarIsland_Gym_EventScript_Avery::
+ trainerbattle_single TRAINER_SUPER_NERD_AVERY, CinnabarIsland_Gym_Text_AveryIntro, CinnabarIsland_Gym_Text_AveryDefeat, CinnabarIsland_Gym_EventScript_DefeatedAvery
+ msgbox CinnabarIsland_Gym_Text_AveryPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+CinnabarIsland_Gym_EventScript_DefeatedAvery::
+ call_if_unset FLAG_CINNABAR_GYM_QUIZ_2, CinnabarIsland_Gym_EventScript_Quiz2CompleteTrainer
+ release
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz2CompleteTrainer::
+ call CinnabarIsland_Gym_EventScript_Quiz2Complete
+ return
+
+CinnabarIsland_Gym_EventScript_Derek::
+ trainerbattle_single TRAINER_SUPER_NERD_DEREK, CinnabarIsland_Gym_Text_DerekIntro, CinnabarIsland_Gym_Text_DerekDefeat, CinnabarIsland_Gym_EventScript_DefeatedDerek
+ famechecker FAMECHECKER_BLAINE, 2
+ msgbox CinnabarIsland_Gym_Text_DerekPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+CinnabarIsland_Gym_EventScript_DefeatedDerek::
+ call_if_unset FLAG_CINNABAR_GYM_QUIZ_4, CinnabarIsland_Gym_EventScript_Quiz4CompleteTrainer
+ release
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz4CompleteTrainer::
+ call CinnabarIsland_Gym_EventScript_Quiz4Complete
+ return
+
+CinnabarIsland_Gym_EventScript_Zac::
+ trainerbattle_single TRAINER_SUPER_NERD_ZAC, CinnabarIsland_Gym_Text_ZacIntro, CinnabarIsland_Gym_Text_ZacDefeat, CinnabarIsland_Gym_EventScript_DefeatedZac
+ msgbox CinnabarIsland_Gym_Text_ZacPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+CinnabarIsland_Gym_EventScript_DefeatedZac::
+ call_if_unset FLAG_CINNABAR_GYM_QUIZ_6, CinnabarIsland_Gym_EventScript_Quiz6CompleteTrainer
+ release
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz6CompleteTrainer::
+ call CinnabarIsland_Gym_EventScript_Quiz6Complete
+ return
+
+CinnabarIsland_Gym_EventScript_Quinn::
+ trainerbattle_single TRAINER_BURGLAR_QUINN, CinnabarIsland_Gym_Text_QuinnIntro, CinnabarIsland_Gym_Text_QuinnDefeat, CinnabarIsland_Gym_EventScript_DefeatedQuinn
+ msgbox CinnabarIsland_Gym_Text_QuinnPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+CinnabarIsland_Gym_EventScript_DefeatedQuinn::
+ call_if_unset FLAG_CINNABAR_GYM_QUIZ_1, CinnabarIsland_Gym_EventScript_Quiz1CompleteTrainer
+ release
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz1CompleteTrainer::
+ call CinnabarIsland_Gym_EventScript_Quiz1Complete
+ return
+
+CinnabarIsland_Gym_EventScript_Ramon::
+ trainerbattle_single TRAINER_BURGLAR_RAMON, CinnabarIsland_Gym_Text_RamonIntro, CinnabarIsland_Gym_Text_RamonDefeat, CinnabarIsland_Gym_EventScript_DefeatedRamon
+ msgbox CinnabarIsland_Gym_Text_RamonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+CinnabarIsland_Gym_EventScript_DefeatedRamon::
+ call_if_unset FLAG_CINNABAR_GYM_QUIZ_3, CinnabarIsland_Gym_EventScript_Quiz3CompleteTrainer
+ release
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz3CompleteTrainer::
+ call CinnabarIsland_Gym_EventScript_Quiz3Complete
+ return
+
+CinnabarIsland_Gym_EventScript_Dusty::
+ trainerbattle_single TRAINER_BURGLAR_DUSTY, CinnabarIsland_Gym_Text_DustyIntro, CinnabarIsland_Gym_Text_DustyDefeat, CinnabarIsland_Gym_EventScript_DefeatedDusty
+ msgbox CinnabarIsland_Gym_Text_DustyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+CinnabarIsland_Gym_EventScript_DefeatedDusty::
+ call_if_unset FLAG_CINNABAR_GYM_QUIZ_5, CinnabarIsland_Gym_EventScript_Quiz5CompleteTrainer
+ release
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz5CompleteTrainer::
+ call CinnabarIsland_Gym_EventScript_Quiz5Complete
+ return
+
+CinnabarIsland_Gym_EventScript_GymGuy::
+ lock
+ faceplayer
+ goto_if_set FLAG_DEFEATED_BLAINE, CinnabarIsland_Gym_EventScript_GymGuyPostVictory
+ msgbox CinnabarIsland_Gym_Text_GymGuyAdvice
+ release
+ end
+
+CinnabarIsland_Gym_EventScript_GymGuyPostVictory::
+ msgbox CinnabarIsland_Gym_Text_GymGuyPostVictory
+ release
+ end
+
+CinnabarIsland_Gym_EventScript_GymStatue::
+ lockall
+ goto_if_set FLAG_BADGE07_GET, CinnabarIsland_Gym_EventScript_GymStatuePostVictory
+ msgbox CinnabarIsland_Gym_Text_GymStatue
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_GymStatuePostVictory::
+ msgbox CinnabarIsland_Gym_Text_GymStatuePlayerWon
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_Quz1Left::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto CinnabarIsland_Gym_EventScript_Quiz1
+ end
+
+CinnabarIsland_Gym_EventScript_Quz1Right::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto CinnabarIsland_Gym_EventScript_Quiz1
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz1::
+ msgbox CinnabarIsland_Gym_Text_PokemonQuizRules
+ msgbox CinnabarIsland_Gym_Text_QuizQuestion1, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, CinnabarIsland_Gym_EventScript_Quiz1Correct
+ goto_if_eq VAR_RESULT, NO, CinnabarIsland_Gym_EventScript_Quiz1Incorrect
+ end
+
+CinnabarIsland_Gym_EventScript_CorrectAnswer::
+ playfanfare MUS_LEVEL_UP
+ waitfanfare
+ msgbox CinnabarIsland_Gym_Text_CorrectGoOnThrough
+ return
+
+CinnabarIsland_Gym_EventScript_IncorrectAnswer::
+ waitse
+ playse SE_BOO
+ waitse
+ msgbox CinnabarIsland_Gym_Text_SorryBadCall
+ closemessage
+ return
+
+CinnabarIsland_Gym_EventScript_Quiz1Correct::
+ call CinnabarIsland_Gym_EventScript_CorrectAnswer
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_1, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz1Complete
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz1Complete::
+ playse SE_UNLOCK
+ waitse
+ call CinnabarIsland_Gym_EventScript_OpenDoor1
+ special DrawWholeMapView
+ setflag FLAG_CINNABAR_GYM_QUIZ_1
+ return
+
+CinnabarIsland_Gym_EventScript_DoorAlreadyOpen::
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz1Incorrect::
+ call CinnabarIsland_Gym_EventScript_IncorrectAnswer
+ goto_if_not_defeated TRAINER_BURGLAR_QUINN, CinnabarIsland_Gym_EventScript_BattleQuinn
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_BattleQuinn::
+ call_if_eq VAR_TEMP_1, 0, CinnabarIsland_Gym_EventScript_QuinnApproachLeft
+ call_if_eq VAR_TEMP_1, 1, CinnabarIsland_Gym_EventScript_QuinnApproachRight
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox CinnabarIsland_Gym_Text_QuinnIntro
+ trainerbattle_no_intro TRAINER_BURGLAR_QUINN, CinnabarIsland_Gym_Text_QuinnDefeat
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_1, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz1Complete
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_QuinnApproachLeft::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_QUINN, CinnabarIsland_Gym_Movement_QuinnApproachLeft
+ waitmovement 0
+ return
+
+CinnabarIsland_Gym_EventScript_QuinnApproachRight::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_QUINN, CinnabarIsland_Gym_Movement_QuinnApproachRight
+ waitmovement 0
+ return
+
+CinnabarIsland_Gym_Movement_QuinnApproachLeft::
+ walk_left
+ walk_left
+ step_end
+
+CinnabarIsland_Gym_Movement_QuinnApproachRight::
+ walk_left
+ step_end
+
+CinnabarIsland_Gym_EventScript_Quiz2Left::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto CinnabarIsland_Gym_EventScript_Quiz2
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz2Right::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto CinnabarIsland_Gym_EventScript_Quiz2
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz2::
+ msgbox CinnabarIsland_Gym_Text_PokemonQuizRules
+ msgbox CinnabarIsland_Gym_Text_QuizQuestion2, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, CinnabarIsland_Gym_EventScript_Quiz2Incorrect
+ goto_if_eq VAR_RESULT, NO, CinnabarIsland_Gym_EventScript_Quiz2Correct
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz2Correct::
+ call CinnabarIsland_Gym_EventScript_CorrectAnswer
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_2, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz2Complete
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz2Complete::
+ playse SE_UNLOCK
+ waitse
+ call CinnabarIsland_Gym_EventScript_OpenDoor2
+ special DrawWholeMapView
+ setflag FLAG_CINNABAR_GYM_QUIZ_2
+ return
+
+CinnabarIsland_Gym_EventScript_Quiz2Incorrect::
+ call CinnabarIsland_Gym_EventScript_IncorrectAnswer
+ goto_if_not_defeated TRAINER_SUPER_NERD_AVERY, CinnabarIsland_Gym_EventScript_BattleAvery
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_BattleAvery::
+ call_if_eq VAR_TEMP_1, 0, CinnabarIsland_Gym_EventScript_AveryApproachLeft
+ call_if_eq VAR_TEMP_1, 1, CinnabarIsland_Gym_EventScript_AveryApproachRight
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox CinnabarIsland_Gym_Text_AveryIntro
+ trainerbattle_no_intro TRAINER_SUPER_NERD_AVERY, CinnabarIsland_Gym_Text_AveryDefeat
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_2, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz2Complete
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_AveryApproachLeft::
+ applymovement LOCALID_PLAYER, CinnabarIsland_Gym_Movement_PlayerFaceAvery
+ applymovement LOCALID_AVERY, CinnabarIsland_Gym_Movement_AveryApproachLeft
+ waitmovement 0
+ return
+
+CinnabarIsland_Gym_EventScript_AveryApproachRight::
+ applymovement LOCALID_PLAYER, CinnabarIsland_Gym_Movement_PlayerFaceAvery
+ applymovement LOCALID_AVERY, CinnabarIsland_Gym_Movement_AveryApproachRight
+ waitmovement 0
+ return
+
+CinnabarIsland_Gym_Movement_AveryApproachLeft::
+ walk_up
+ walk_up
+ walk_left
+ step_end
+
+CinnabarIsland_Gym_Movement_AveryApproachRight::
+ walk_up
+ walk_up
+ walk_in_place_faster_left
+ step_end
+
+CinnabarIsland_Gym_Movement_PlayerFaceAvery::
+ delay_16
+ delay_16
+ walk_in_place_faster_right
+ step_end
+
+CinnabarIsland_Gym_EventScript_Quiz3Left::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto CinnabarIsland_Gym_EventScript_Quiz3
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz3Right::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto CinnabarIsland_Gym_EventScript_Quiz3
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz3::
+ msgbox CinnabarIsland_Gym_Text_PokemonQuizRules
+ msgbox CinnabarIsland_Gym_Text_QuizQuestion3, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, CinnabarIsland_Gym_EventScript_Quiz3Incorrect
+ goto_if_eq VAR_RESULT, NO, CinnabarIsland_Gym_EventScript_Quiz3Correct
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz3Correct::
+ call CinnabarIsland_Gym_EventScript_CorrectAnswer
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_3, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz3Complete
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz3Complete::
+ playse SE_UNLOCK
+ waitse
+ call CinnabarIsland_Gym_EventScript_OpenDoor3
+ special DrawWholeMapView
+ setflag FLAG_CINNABAR_GYM_QUIZ_3
+ return
+
+CinnabarIsland_Gym_EventScript_Quiz3Incorrect::
+ call CinnabarIsland_Gym_EventScript_IncorrectAnswer
+ goto_if_not_defeated TRAINER_BURGLAR_RAMON, CinnabarIsland_Gym_EventScript_BattleRamon
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_BattleRamon::
+ call_if_eq VAR_TEMP_1, 0, CinnabarIsland_Gym_EventScript_RamonApproachLeft
+ call_if_eq VAR_TEMP_1, 1, CinnabarIsland_Gym_EventScript_RamonApproachRight
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox CinnabarIsland_Gym_Text_RamonIntro
+ trainerbattle_no_intro TRAINER_BURGLAR_RAMON, CinnabarIsland_Gym_Text_RamonDefeat
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_3, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz3Complete
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_RamonApproachLeft::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_RAMON, CinnabarIsland_Gym_Movement_RamonApproachLeft
+ waitmovement 0
+ return
+
+CinnabarIsland_Gym_EventScript_RamonApproachRight::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_RAMON, CinnabarIsland_Gym_Movement_RamonApproachRight
+ waitmovement 0
+ return
+
+CinnabarIsland_Gym_Movement_RamonApproachLeft::
+ walk_left
+ walk_left
+ step_end
+
+CinnabarIsland_Gym_Movement_RamonApproachRight::
+ walk_left
+ step_end
+
+CinnabarIsland_Gym_EventScript_Quiz4Left::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto CinnabarIsland_Gym_EventScript_Quiz4
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz4Right::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto CinnabarIsland_Gym_EventScript_Quiz4
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz4::
+ msgbox CinnabarIsland_Gym_Text_PokemonQuizRules
+ msgbox CinnabarIsland_Gym_Text_QuizQuestion4, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, CinnabarIsland_Gym_EventScript_Quiz4Incorrect
+ goto_if_eq VAR_RESULT, NO, CinnabarIsland_Gym_EventScript_Quiz4Correct
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz4Correct::
+ call CinnabarIsland_Gym_EventScript_CorrectAnswer
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_4, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz4Complete
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz4Complete::
+ playse SE_UNLOCK
+ waitse
+ call CinnabarIsland_Gym_EventScript_OpenDoor4
+ special DrawWholeMapView
+ setflag FLAG_CINNABAR_GYM_QUIZ_4
+ return
+
+CinnabarIsland_Gym_EventScript_Quiz4Incorrect::
+ call CinnabarIsland_Gym_EventScript_IncorrectAnswer
+ goto_if_not_defeated TRAINER_SUPER_NERD_DEREK, CinnabarIsland_Gym_EventScript_BattleDerek
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_BattleDerek::
+ call_if_eq VAR_TEMP_1, 0, CinnabarIsland_Gym_EventScript_DerekApproachLeft
+ call_if_eq VAR_TEMP_1, 1, CinnabarIsland_Gym_EventScript_DerekApproachRight
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox CinnabarIsland_Gym_Text_DerekIntro
+ trainerbattle_no_intro TRAINER_SUPER_NERD_DEREK, CinnabarIsland_Gym_Text_DerekDefeat
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_4, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz4Complete
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_DerekApproachLeft::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_DEREK, CinnabarIsland_Gym_Movement_DerekApproachLeft
+ waitmovement 0
+ return
+
+CinnabarIsland_Gym_EventScript_DerekApproachRight::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_DEREK, CinnabarIsland_Gym_Movement_DerekApproachRight
+ waitmovement 0
+ return
+
+CinnabarIsland_Gym_Movement_DerekApproachLeft::
+ walk_left
+ walk_left
+ step_end
+
+CinnabarIsland_Gym_Movement_DerekApproachRight::
+ walk_left
+ step_end
+
+CinnabarIsland_Gym_EventScript_Quiz5Left::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto CinnabarIsland_Gym_EventScript_Quiz5
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz5Right::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto CinnabarIsland_Gym_EventScript_Quiz5
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz5::
+ msgbox CinnabarIsland_Gym_Text_PokemonQuizRules
+ msgbox CinnabarIsland_Gym_Text_QuizQuestion5, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, CinnabarIsland_Gym_EventScript_Quiz5Correct
+ goto_if_eq VAR_RESULT, NO, CinnabarIsland_Gym_EventScript_Quiz5Incorrect
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz5Correct::
+ call CinnabarIsland_Gym_EventScript_CorrectAnswer
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_5, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz5Complete
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz5Complete::
+ playse SE_UNLOCK
+ waitse
+ call CinnabarIsland_Gym_EventScript_OpenDoor5
+ special DrawWholeMapView
+ setflag FLAG_CINNABAR_GYM_QUIZ_5
+ return
+
+CinnabarIsland_Gym_EventScript_Quiz5Incorrect::
+ call CinnabarIsland_Gym_EventScript_IncorrectAnswer
+ goto_if_not_defeated TRAINER_BURGLAR_DUSTY, CinnabarIsland_Gym_EventScript_BattleDusty
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_BattleDusty::
+ call_if_eq VAR_TEMP_1, 0, CinnabarIsland_Gym_EventScript_DustyApproachLeft
+ call_if_eq VAR_TEMP_1, 1, CinnabarIsland_Gym_EventScript_DustyApproachRight
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox CinnabarIsland_Gym_Text_DustyIntro
+ trainerbattle_no_intro TRAINER_BURGLAR_DUSTY, CinnabarIsland_Gym_Text_DustyDefeat
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_5, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz5Complete
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_DustyApproachLeft::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_DUSTY, CinnabarIsland_Gym_Movement_DustyApproachLeft
+ waitmovement 0
+ return
+
+CinnabarIsland_Gym_EventScript_DustyApproachRight::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_DUSTY, CinnabarIsland_Gym_Movement_DustyApproachRight
+ waitmovement 0
+ return
+
+CinnabarIsland_Gym_Movement_DustyApproachLeft::
+ walk_left
+ walk_left
+ step_end
+
+CinnabarIsland_Gym_Movement_DustyApproachRight::
+ walk_left
+ step_end
+
+CinnabarIsland_Gym_EventScript_Quiz6Left::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto CinnabarIsland_Gym_EventScript_Quiz6
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz6Right::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto CinnabarIsland_Gym_EventScript_Quiz6
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz6::
+ msgbox CinnabarIsland_Gym_Text_PokemonQuizRules
+ msgbox CinnabarIsland_Gym_Text_QuizQuestion6, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, CinnabarIsland_Gym_EventScript_Quiz6Incorrect
+ goto_if_eq VAR_RESULT, NO, CinnabarIsland_Gym_EventScript_Quiz6Correct
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz6Correct::
+ call CinnabarIsland_Gym_EventScript_CorrectAnswer
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_6, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz6Complete
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_Quiz6Complete::
+ playse SE_UNLOCK
+ waitse
+ call CinnabarIsland_Gym_EventScript_OpenDoor6
+ special DrawWholeMapView
+ setflag FLAG_CINNABAR_GYM_QUIZ_6
+ return
+
+CinnabarIsland_Gym_EventScript_Quiz6Incorrect::
+ call CinnabarIsland_Gym_EventScript_IncorrectAnswer
+ goto_if_not_defeated TRAINER_SUPER_NERD_ZAC, CinnabarIsland_Gym_EventScript_BattleZac
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_BattleZac::
+ call_if_eq VAR_TEMP_1, 0, CinnabarIsland_Gym_EventScript_ZacApproachLeft
+ call_if_eq VAR_TEMP_1, 1, CinnabarIsland_Gym_EventScript_ZacApproachRight
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox CinnabarIsland_Gym_Text_ZacIntro
+ trainerbattle_no_intro TRAINER_SUPER_NERD_ZAC, CinnabarIsland_Gym_Text_ZacDefeat
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_6, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz6Complete
+ releaseall
+ end
+
+CinnabarIsland_Gym_EventScript_ZacApproachLeft::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_ZAC, CinnabarIsland_Gym_Movement_ZacApproachLeft
+ waitmovement 0
+ return
+
+CinnabarIsland_Gym_EventScript_ZacApproachRight::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_ZAC, CinnabarIsland_Gym_Movement_ZacApproachRight
+ waitmovement 0
+ return
+
+CinnabarIsland_Gym_Movement_ZacApproachLeft::
+ walk_left
+ walk_left
+ step_end
+
+CinnabarIsland_Gym_Movement_ZacApproachRight::
+ walk_left
+ step_end
+
+CinnabarIsland_Gym_EventScript_OpenDoor1::
+ setmetatile 26, 8, METATILE_CinnabarGym_Floor_WallLeftCorner, 0
+ setmetatile 27, 8, METATILE_CinnabarGym_Floor_WallRightCorner, 0
+ setmetatile 26, 9, METATILE_CinnabarGym_Floor_WallLeftEdge, 0
+ setmetatile 27, 9, METATILE_CinnabarGym_Floor_WallRightEdge, 0
+ setmetatile 26, 10, METATILE_CinnabarGym_Floor_ShadeFull, 0
+ setmetatile 27, 10, METATILE_CinnabarGym_Floor, 0
+ setmetatile 28, 10, METATILE_CinnabarGym_Floor_ShadeDiagonal, 0
+ return
+
+CinnabarIsland_Gym_EventScript_OpenDoor2::
+ setmetatile 17, 8, METATILE_CinnabarGym_Floor_WallLeftCorner, 0
+ setmetatile 18, 8, METATILE_CinnabarGym_Floor_WallRightCorner, 0
+ setmetatile 17, 9, METATILE_CinnabarGym_Floor_WallLeftEdge, 0
+ setmetatile 18, 9, METATILE_CinnabarGym_Floor_WallRightEdge, 0
+ setmetatile 17, 10, METATILE_CinnabarGym_Floor_ShadeFull, 0
+ setmetatile 18, 10, METATILE_CinnabarGym_Floor, 0
+ setmetatile 19, 10, METATILE_CinnabarGym_Floor_ShadeDiagonal, 0
+ return
+
+CinnabarIsland_Gym_EventScript_OpenDoor3::
+ setmetatile 17, 15, METATILE_CinnabarGym_Floor_WallLeftCorner, 0
+ setmetatile 18, 15, METATILE_CinnabarGym_Floor_WallRightCorner, 0
+ setmetatile 17, 16, METATILE_CinnabarGym_Floor_WallLeftEdge, 0
+ setmetatile 18, 16, METATILE_CinnabarGym_Floor_WallRightEdge, 0
+ setmetatile 17, 17, METATILE_CinnabarGym_Floor_ShadeFull, 0
+ setmetatile 18, 17, METATILE_CinnabarGym_Floor, 0
+ setmetatile 19, 17, METATILE_CinnabarGym_Floor_ShadeDiagonal, 0
+ return
+
+CinnabarIsland_Gym_EventScript_OpenDoor4::
+ setmetatile 11, 21, METATILE_CinnabarGym_Wall_RetractedBarrier, 1
+ setmetatile 11, 22, METATILE_CinnabarGym_Floor_ShadeFull, 0
+ setmetatile 11, 23, METATILE_CinnabarGym_Floor, 0
+ return
+
+CinnabarIsland_Gym_EventScript_OpenDoor5::
+ setmetatile 5, 16, METATILE_CinnabarGym_Floor_WallLeftCorner, 0
+ setmetatile 6, 16, METATILE_CinnabarGym_Floor_WallRightCorner, 0
+ setmetatile 5, 17, METATILE_CinnabarGym_Floor_WallLeftEdge, 0
+ setmetatile 6, 17, METATILE_CinnabarGym_Floor_WallRightEdge, 0
+ setmetatile 5, 18, METATILE_CinnabarGym_Floor_ShadeFull, 0
+ setmetatile 6, 18, METATILE_CinnabarGym_Floor, 0
+ setmetatile 7, 18, METATILE_CinnabarGym_Floor_ShadeDiagonal, 0
+ return
+
+CinnabarIsland_Gym_EventScript_OpenDoor6::
+ setmetatile 5, 8, METATILE_CinnabarGym_Floor_WallLeftCorner, 0
+ setmetatile 6, 8, METATILE_CinnabarGym_Floor_WallRightCorner, 0
+ setmetatile 5, 9, METATILE_CinnabarGym_Floor_WallLeftEdge, 0
+ setmetatile 6, 9, METATILE_CinnabarGym_Floor_WallRightEdge, 0
+ setmetatile 5, 10, METATILE_CinnabarGym_Floor_ShadeFull, 0
+ setmetatile 6, 10, METATILE_CinnabarGym_Floor, 0
+ setmetatile 7, 10, METATILE_CinnabarGym_Floor_ShadeDiagonal, 0
+ return
+
+CinnabarIsland_Gym_Text_BlaineIntro::
+ .string "Hah!\p"
+ .string "I am BLAINE, the red-hot LEADER\n"
+ .string "of CINNABAR GYM!\p"
+ .string "My fiery POKéMON are all rough\n"
+ .string "and ready with intense heat!\p"
+ .string "They incinerate all challengers!\p"
+ .string "Hah!\n"
+ .string "You better have BURN HEAL!{PLAY_BGM}{MUS_RG_ENCOUNTER_GYM_LEADER}$"
+
+CinnabarIsland_Gym_Text_BlaineDefeat::
+ .string "I have burned down to nothing!\n"
+ .string "Not even ashes remain!\p"
+ .string "You have earned the VOLCANOBADGE.$"
+
+CinnabarIsland_Gym_Text_FireBlastIsUltimateFireMove::
+ .string "FIRE BLAST is the ultimate fire\n"
+ .string "technique.\p"
+ .string "Don't waste it on WATER POKéMON.$"
+
+CinnabarIsland_Gym_Text_ExplainVolcanoBadge::
+ .string "Hah!\p"
+ .string "The VOLCANOBADGE heightens the\n"
+ .string "SPECIAL stats of your POKéMON.\p"
+ .string "Here, you can have this, too!$"
+
+CinnabarIsland_Gym_Text_ReceivedTM38FromBlaine::
+ .string "{PLAYER} received TM38\n"
+ .string "from BLAINE.$"
+
+CinnabarIsland_Gym_Text_BlainePostBattle::
+ .string "TM38 contains FIRE BLAST.\n"
+ .string "Teach it to FIRE-type POKéMON.\p"
+ .string "VULPIX or CHARMELEON would be\n"
+ .string "ideal for that move.$"
+
+CinnabarIsland_Gym_Text_MakeSpaceForThis::
+ .string "Make space for this, child!$"
+
+CinnabarIsland_Gym_Text_ErikIntro::
+ .string "Do you know how hot POKéMON fire\n"
+ .string "breath can get?$"
+
+CinnabarIsland_Gym_Text_ErikDefeat::
+ .string "Yow!\n"
+ .string "Hot, hot, hot!$"
+
+CinnabarIsland_Gym_Text_ErikPostBattle::
+ .string "Fire, or to be more precise,\n"
+ .string "combustion…\p"
+ .string "…Oxygen in the air…\n"
+ .string "Blah, blah, blah, blah…$"
+
+CinnabarIsland_Gym_Text_QuinnIntro::
+ .string "I was a thief, but I went straight\n"
+ .string "as a TRAINER.$"
+
+CinnabarIsland_Gym_Text_QuinnDefeat::
+ .string "I surrender!$"
+
+CinnabarIsland_Gym_Text_QuinnPostBattle::
+ .string "I get this uncontrollable urge to\n"
+ .string "steal other people's POKéMON.$"
+
+CinnabarIsland_Gym_Text_AveryIntro::
+ .string "I've studied POKéMON thoroughly.\n"
+ .string "You can't win!$"
+
+CinnabarIsland_Gym_Text_AveryDefeat::
+ .string "Waah!\n"
+ .string "My studies were insufficient!$"
+
+CinnabarIsland_Gym_Text_AveryPostBattle::
+ .string "My theories are too complicated\n"
+ .string "for you to understand.$"
+
+CinnabarIsland_Gym_Text_RamonIntro::
+ .string "I like using FIRE-type POKéMON.\n"
+ .string "I just do.$"
+
+CinnabarIsland_Gym_Text_RamonDefeat::
+ .string "Too hot to handle!$"
+
+CinnabarIsland_Gym_Text_RamonPostBattle::
+ .string "I wish there were a thief POKéMON.\n"
+ .string "I'd use that!$"
+
+CinnabarIsland_Gym_Text_DerekIntro::
+ .string "I know why BLAINE became a\n"
+ .string "TRAINER.$"
+
+CinnabarIsland_Gym_Text_DerekDefeat::
+ .string "Ow!$"
+
+CinnabarIsland_Gym_Text_DerekPostBattle::
+ .string "Our LEADER, BLAINE, became lost\n"
+ .string "in the mountains but good.\p"
+ .string "Night fell when a fiery bird\n"
+ .string "POKéMON appeared.\p"
+ .string "Its light allowed BLAINE to find\n"
+ .string "his way down safely.$"
+
+CinnabarIsland_Gym_Text_DustyIntro::
+ .string "I've been to many GYMS, but this\n"
+ .string "one best suits my style.$"
+
+CinnabarIsland_Gym_Text_DustyDefeat::
+ .string "Yowza!\n"
+ .string "Too hot!$"
+
+CinnabarIsland_Gym_Text_DustyPostBattle::
+ .string "PONYTA, NINETALES…\n"
+ .string "Those are popular FIRE POKéMON.$"
+
+CinnabarIsland_Gym_Text_ZacIntro::
+ .string "Fire is weak against H2O.$"
+
+CinnabarIsland_Gym_Text_ZacDefeat::
+ .string "Oh!\n"
+ .string "Snuffed out!$"
+
+CinnabarIsland_Gym_Text_ZacPostBattle::
+ .string "Water beats fire, of course.\p"
+ .string "But fire melts ice, so the FIRE\n"
+ .string "type beats ICE-type POKéMON.$"
+
+CinnabarIsland_Gym_Text_GymGuyAdvice::
+ .string "Yo!\n"
+ .string "Champ in the making!\p"
+ .string "The hotheaded BLAINE is a FIRE\n"
+ .string "POKéMON pro.\p"
+ .string "Douse his spirits with water!\p"
+ .string "You'd better take some\n"
+ .string "BURN HEALS, too.$"
+
+CinnabarIsland_Gym_Text_GymGuyPostVictory::
+ .string "{PLAYER}!\n"
+ .string "You beat that firebrand!$"
+
+CinnabarIsland_Gym_Text_GymStatue::
+ .string "CINNABAR POKéMON GYM\n"
+ .string "LEADER: BLAINE\p"
+ .string "WINNING TRAINERS:\n"
+ .string "{RIVAL}$"
+
+CinnabarIsland_Gym_Text_GymStatuePlayerWon::
+ .string "CINNABAR POKéMON GYM\n"
+ .string "LEADER: BLAINE\p"
+ .string "WINNING TRAINERS:\n"
+ .string "{RIVAL}, {PLAYER}$"
+
+CinnabarIsland_Gym_Text_PokemonQuizRules::
+ .string "POKéMON Quiz!\p"
+ .string "Get it right, and the door opens to\n"
+ .string "the next room.\p"
+ .string "Get it wrong, and face a TRAINER!\p"
+ .string "If you want to conserve your\n"
+ .string "POKéMON for the GYM LEADER…\p"
+ .string "Then get it right!\n"
+ .string "Here we go!$"
+
+CinnabarIsland_Gym_Text_QuizQuestion1::
+ .string "CATERPIE evolves into METAPOD?$"
+
+CinnabarIsland_Gym_Text_QuizQuestion2::
+ .string "There are nine certified POKéMON\n"
+ .string "LEAGUE BADGES?$"
+
+CinnabarIsland_Gym_Text_QuizQuestion3::
+ .string "POLIWAG evolves three times?$"
+
+CinnabarIsland_Gym_Text_QuizQuestion4::
+ .string "Are electric moves effective\n"
+ .string "against GROUND-type POKéMON?$"
+
+CinnabarIsland_Gym_Text_QuizQuestion5::
+ .string "POKéMON of the same kind and level\n"
+ .string "are not identical?$"
+
+CinnabarIsland_Gym_Text_QuizQuestion6::
+ .string "TM28 contains TOMBSTONY?$"
+
+CinnabarIsland_Gym_Text_CorrectGoOnThrough::
+ .string "You're absolutely correct!\p"
+ .string "Go on through!$"
+
+CinnabarIsland_Gym_Text_SorryBadCall::
+ .string "Sorry!\n"
+ .string "Bad call!$"
+
diff --git a/data/maps/CinnabarIsland_Mart_Frlg/map.json b/data/maps/CinnabarIsland_Mart_Frlg/map.json
new file mode 100644
index 000000000000..2ba5f766b0b4
--- /dev/null
+++ b/data/maps/CinnabarIsland_Mart_Frlg/map.json
@@ -0,0 +1,87 @@
+{
+ "id": "MAP_CINNABAR_ISLAND_MART",
+ "name": "CinnabarIsland_Mart_Frlg",
+ "layout": "LAYOUT_MART_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CINNABAR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 2,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_Mart_EventScript_Clerk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_Mart_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 8,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_Mart_EventScript_Scientist",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_CINNABAR_ISLAND",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_CINNABAR_ISLAND",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_CINNABAR_ISLAND",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CinnabarIsland_Mart_Frlg/scripts.inc b/data/maps/CinnabarIsland_Mart_Frlg/scripts.inc
new file mode 100644
index 000000000000..6fb05d1c4064
--- /dev/null
+++ b/data/maps/CinnabarIsland_Mart_Frlg/scripts.inc
@@ -0,0 +1,43 @@
+CinnabarIsland_Mart_Frlg_MapScripts::
+ .byte 0
+
+CinnabarIsland_Mart_EventScript_Woman::
+ msgbox CinnabarIsland_Mart_Text_DontTheyHaveXAttack, MSGBOX_NPC
+ end
+
+CinnabarIsland_Mart_EventScript_Scientist::
+ msgbox CinnabarIsland_Mart_Text_ExtraItemsNeverHurt, MSGBOX_NPC
+ end
+
+CinnabarIsland_Mart_EventScript_Clerk::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart CinnabarIsland_Mart_Items
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+CinnabarIsland_Mart_Items::
+ .2byte ITEM_ULTRA_BALL
+ .2byte ITEM_GREAT_BALL
+ .2byte ITEM_HYPER_POTION
+ .2byte ITEM_REVIVE
+ .2byte ITEM_FULL_HEAL
+ .2byte ITEM_ESCAPE_ROPE
+ .2byte ITEM_MAX_REPEL
+ .2byte ITEM_NONE
+ release
+ end
+
+CinnabarIsland_Mart_Text_DontTheyHaveXAttack::
+ .string "Don't they have X ATTACK?\p"
+ .string "I like it because it raises the\n"
+ .string "ATTACK stat in battle.$"
+
+CinnabarIsland_Mart_Text_ExtraItemsNeverHurt::
+ .string "It never hurts to have extra items.\n"
+ .string "You never know what might happen.$"
+
diff --git a/data/maps/CinnabarIsland_PokemonCenter_1F_Frlg/map.json b/data/maps/CinnabarIsland_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..95b2d4075b0d
--- /dev/null
+++ b/data/maps/CinnabarIsland_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,152 @@
+{
+ "id": "MAP_CINNABAR_ISLAND_POKEMON_CENTER_1F",
+ "name": "CinnabarIsland_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CINNABAR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_CINNABAR_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 2,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_PokemonCenter_1F_EventScript_CooltrainerF",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_PokemonCenter_1F_EventScript_Gentleman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 14,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_PokemonCenter_1F_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_PokemonCenter_1F_EventScript_PokemonJournalMrFuji",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 3,
+ "y": 1,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_PokemonCenter_1F_EventScript_PokemonJournalMrFuji",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ },
+ {
+ "local_id": "LOCALID_CINNABAR_POKEMON_CENTER_BILL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BILL",
+ "x": 11,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_PokemonCenter_1F_EventScript_Bill",
+ "flag": "FLAG_HIDE_CINNABAR_POKECENTER_BILL"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 0,
+ "dest_map": "MAP_CINNABAR_ISLAND",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_CINNABAR_ISLAND",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 8,
+ "y": 8,
+ "elevation": 0,
+ "dest_map": "MAP_CINNABAR_ISLAND",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_CINNABAR_ISLAND_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CinnabarIsland_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/CinnabarIsland_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..b8072ebc250c
--- /dev/null
+++ b/data/maps/CinnabarIsland_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,179 @@
+CinnabarIsland_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, CinnabarIsland_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ .byte 0
+
+CinnabarIsland_PokemonCenter_1F_OnTransition::
+ setrespawn HEAL_LOCATION_CINNABAR_ISLAND
+ end
+
+CinnabarIsland_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+CinnabarIsland_PokemonCenter_1F_EventScript_Gentleman::
+ msgbox CinnabarIsland_PokemonCenter_1F_Text_VisitUnionRoom, MSGBOX_NPC
+ end
+
+CinnabarIsland_PokemonCenter_1F_EventScript_CooltrainerF::
+ msgbox CinnabarIsland_PokemonCenter_1F_Text_CinnabarGymLocked, MSGBOX_NPC
+ end
+
+CinnabarIsland_PokemonCenter_1F_EventScript_Youngster::
+ msgbox CinnabarIsland_PokemonCenter_1F_Text_EvolutionCanWaitForNewMoves, MSGBOX_NPC
+ end
+
+CinnabarIsland_PokemonCenter_1F_EventScript_Bill::
+ lock
+ faceplayer
+ msgbox CinnabarIsland_PokemonCenter_1F_Text_ReadyToSailToOneIsland, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CinnabarIsland_PokemonCenter_1F_EventScript_NotReadyToSail
+ msgbox CinnabarIsland_PokemonCenter_1F_Text_LetsGo
+ closemessage
+ playbgm MUS_FOLLOW_ME, 1
+ savebgm MUS_FOLLOW_ME
+ setflag FLAG_DONT_TRANSITION_MUSIC
+ setflag FLAG_HIDE_CINNABAR_POKECENTER_BILL
+ delay 20
+ call_if_eq VAR_FACING, DIR_SOUTH, CinnabarIsland_PokemonCenter_1F_EventScript_ExitWithBillSouth
+ call_if_eq VAR_FACING, DIR_EAST, CinnabarIsland_PokemonCenter_1F_EventScript_ExitWithBillEast
+ call_if_eq VAR_FACING, DIR_WEST, CinnabarIsland_PokemonCenter_1F_EventScript_ExitWithBillWest
+ removeobject LOCALID_CINNABAR_POKEMON_CENTER_BILL
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND_2, 1
+ clearflag FLAG_HIDE_CINNABAR_BILL
+ warp MAP_CINNABAR_ISLAND, 14, 11
+ waitstate
+ release
+ end
+
+CinnabarIsland_PokemonCenter_1F_EventScript_ExitWithBillSouth::
+ applymovement LOCALID_CINNABAR_POKEMON_CENTER_BILL, CinnabarIsland_PokemonCenter_1F_Movement_BillExit
+ applymovement LOCALID_PLAYER, CinnabarIsland_PokemonCenter_1F_Movement_PlayerExitSouth
+ waitmovement 0
+ return
+
+CinnabarIsland_PokemonCenter_1F_EventScript_ExitWithBillEast::
+ applymovement LOCALID_CINNABAR_POKEMON_CENTER_BILL, CinnabarIsland_PokemonCenter_1F_Movement_BillExitEast
+ applymovement LOCALID_PLAYER, CinnabarIsland_PokemonCenter_1F_Movement_PlayerExitEast
+ waitmovement 0
+ return
+
+CinnabarIsland_PokemonCenter_1F_EventScript_ExitWithBillWest::
+ applymovement LOCALID_CINNABAR_POKEMON_CENTER_BILL, CinnabarIsland_PokemonCenter_1F_Movement_BillExit
+ applymovement LOCALID_PLAYER, CinnabarIsland_PokemonCenter_1F_Movement_PlayerExitWest
+ waitmovement 0
+ return
+
+CinnabarIsland_PokemonCenter_1F_EventScript_NotReadyToSail::
+ msgbox CinnabarIsland_PokemonCenter_1F_Text_OhNotDoneYet
+ release
+ end
+
+CinnabarIsland_PokemonCenter_1F_Movement_BillExit::
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ walk_down
+ delay_8
+ set_invisible
+ step_end
+
+CinnabarIsland_PokemonCenter_1F_Movement_PlayerExitSouth::
+ walk_down
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ delay_16
+ walk_down
+ step_end
+
+CinnabarIsland_PokemonCenter_1F_Movement_BillExitEast::
+ walk_up
+ walk_left
+ walk_left
+ walk_down
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ walk_down
+ delay_8
+ set_invisible
+ step_end
+
+CinnabarIsland_PokemonCenter_1F_Movement_PlayerExitEast::
+ delay_16
+ delay_16
+ delay_16
+ face_left
+ delay_16
+ walk_left
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ delay_8
+ walk_down
+ delay_8
+ set_invisible
+ step_end
+
+CinnabarIsland_PokemonCenter_1F_Movement_PlayerExitWest::
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ delay_16
+ walk_down
+ step_end
+
+CinnabarIsland_PokemonCenter_1F_Text_CinnabarGymLocked::
+ .string "I came to visit the CINNABAR GYM,\n"
+ .string "but the door is locked tight.\p"
+ .string "There should be a key for it\n"
+ .string "somewhere.\p"
+ .string "Could it be in that burned-out\n"
+ .string "mansion?\p"
+ .string "The GYM LEADER's friend used to\n"
+ .string "live there, they say.$"
+
+CinnabarIsland_PokemonCenter_1F_Text_VisitUnionRoom::
+ .string "Do you have lots of friends?\p"
+ .string "Linking up with the usual friends\n"
+ .string "is fun, of course.\p"
+ .string "But how about visiting the\n"
+ .string "UNION ROOM every so often?\p"
+ .string "Who knows, you may end up making\n"
+ .string "new friends.\p"
+ .string "I think it would be worth your time\n"
+ .string "to check the UNION ROOM.$"
+
+CinnabarIsland_PokemonCenter_1F_Text_EvolutionCanWaitForNewMoves::
+ .string "POKéMON can still learn techniques\n"
+ .string "after canceling evolution.\p"
+ .string "Evolution can wait until new moves\n"
+ .string "have been learned.$"
+
+CinnabarIsland_PokemonCenter_1F_Text_ReadyToSailToOneIsland::
+ .string "BILL: Hey, you kept me waiting!\n"
+ .string "Ready to set sail to ONE ISLAND?$"
+
+CinnabarIsland_PokemonCenter_1F_Text_OhNotDoneYet::
+ .string "Oh, you're still not done yet?$"
+
+CinnabarIsland_PokemonCenter_1F_Text_LetsGo::
+ .string "Well, that's it.\n"
+ .string "Let's go!$"
+
diff --git a/data/maps/CinnabarIsland_PokemonCenter_2F_Frlg/map.json b/data/maps/CinnabarIsland_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..bde5ff132a8e
--- /dev/null
+++ b/data/maps/CinnabarIsland_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_CINNABAR_ISLAND_POKEMON_CENTER_2F",
+ "name": "CinnabarIsland_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CINNABAR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_CINNABAR_ISLAND_POKEMON_CENTER_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CinnabarIsland_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/CinnabarIsland_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..8327ce7affc7
--- /dev/null
+++ b/data/maps/CinnabarIsland_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+CinnabarIsland_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+CinnabarIsland_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+CinnabarIsland_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+CinnabarIsland_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/CinnabarIsland_PokemonLab_Entrance_Frlg/map.json b/data/maps/CinnabarIsland_PokemonLab_Entrance_Frlg/map.json
new file mode 100644
index 000000000000..36d5cf55b683
--- /dev/null
+++ b/data/maps/CinnabarIsland_PokemonLab_Entrance_Frlg/map.json
@@ -0,0 +1,113 @@
+{
+ "id": "MAP_CINNABAR_ISLAND_POKEMON_LAB_ENTRANCE",
+ "name": "CinnabarIsland_PokemonLab_Entrance_Frlg",
+ "layout": "LAYOUT_CINNABAR_ISLAND_POKEMON_LAB_ENTRANCE",
+ "music": "MUS_RG_CINNABAR",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CINNABAR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 2,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_PokemonLab_Entrance_EventScript_Scientist",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_CINNABAR_ISLAND",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 4,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_CINNABAR_ISLAND",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 5,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_CINNABAR_ISLAND",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 13,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_CINNABAR_ISLAND_POKEMON_LAB_LOUNGE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 19,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_CINNABAR_ISLAND_POKEMON_LAB_RESEARCH_ROOM",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 25,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CinnabarIsland_PokemonLab_Entrance_EventScript_DrFujiPhoto"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CinnabarIsland_PokemonLab_Entrance_EventScript_MeetingRoomSign"
+ },
+ {
+ "type": "sign",
+ "x": 18,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CinnabarIsland_PokemonLab_Entrance_EventScript_RAndDRoomSign"
+ },
+ {
+ "type": "sign",
+ "x": 24,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CinnabarIsland_PokemonLab_Entrance_EventScript_TestingRoomSign"
+ }
+ ]
+}
diff --git a/data/maps/CinnabarIsland_PokemonLab_Entrance_Frlg/scripts.inc b/data/maps/CinnabarIsland_PokemonLab_Entrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..2899c4900ece
--- /dev/null
+++ b/data/maps/CinnabarIsland_PokemonLab_Entrance_Frlg/scripts.inc
@@ -0,0 +1,60 @@
+CinnabarIsland_PokemonLab_Entrance_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, CinnabarIsland_PokemonLab_Entrance_OnTransition
+ .byte 0
+
+CinnabarIsland_PokemonLab_Entrance_OnTransition::
+ call_if_eq VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 1, CinnabarIsland_PokemonLab_Entrance_EventScript_ReadyFossil
+ end
+
+CinnabarIsland_PokemonLab_Entrance_EventScript_ReadyFossil::
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 2
+ return
+
+CinnabarIsland_PokemonLab_Entrance_EventScript_Scientist::
+ msgbox CinnabarIsland_PokemonLab_Entrance_Text_StudyMonsExtensively, MSGBOX_NPC
+ end
+
+CinnabarIsland_PokemonLab_Entrance_EventScript_DrFujiPhoto::
+ msgbox CinnabarIsland_PokemonLab_Entrance_Text_PhotoOfLabFounderDrFuji, MSGBOX_SIGN
+ end
+
+CinnabarIsland_PokemonLab_Entrance_EventScript_MeetingRoomSign::
+ msgbox CinnabarIsland_PokemonLab_Entrance_Text_MeetingRoomSign, MSGBOX_SIGN
+ end
+
+CinnabarIsland_PokemonLab_Entrance_EventScript_RAndDRoomSign::
+ msgbox CinnabarIsland_PokemonLab_Entrance_Text_RAndDRoomSign, MSGBOX_SIGN
+ end
+
+CinnabarIsland_PokemonLab_Entrance_EventScript_TestingRoomSign::
+ msgbox CinnabarIsland_PokemonLab_Entrance_Text_TestingRoomSign, MSGBOX_SIGN
+ end
+
+CinnabarIsland_Gym_Text_PhotoOfBlaineAndFuji::
+ .string "It's a photo of BLAINE and\n"
+ .string "MR. FUJI.\p"
+ .string "They're standing shoulder to\n"
+ .string "shoulder with big grins.$"
+
+CinnabarIsland_PokemonLab_Entrance_Text_StudyMonsExtensively::
+ .string "We study POKéMON extensively\n"
+ .string "every day.\p"
+ .string "People often bring us rare POKéMON\n"
+ .string "for examination.$"
+
+CinnabarIsland_PokemonLab_Entrance_Text_PhotoOfLabFounderDrFuji::
+ .string "A photo of the LAB's founder…\n"
+ .string "DR. FUJI?!$"
+
+CinnabarIsland_PokemonLab_Entrance_Text_MeetingRoomSign::
+ .string "POKéMON LAB\n"
+ .string "Meeting Room$"
+
+CinnabarIsland_PokemonLab_Entrance_Text_RAndDRoomSign::
+ .string "POKéMON LAB\n"
+ .string "R & D Room$"
+
+CinnabarIsland_PokemonLab_Entrance_Text_TestingRoomSign::
+ .string "POKéMON LAB\n"
+ .string "Testing Room$"
+
diff --git a/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom_Frlg/map.json b/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom_Frlg/map.json
new file mode 100644
index 000000000000..b0d216f6509d
--- /dev/null
+++ b/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM",
+ "name": "CinnabarIsland_PokemonLab_ExperimentRoom_Frlg",
+ "layout": "LAYOUT_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM",
+ "music": "MUS_RG_CINNABAR",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CINNABAR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 11,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_Garett",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 12,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_FossilScientist",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_CINNABAR_ISLAND_POKEMON_LAB_ENTRANCE",
+ "dest_warp_id": "5"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom_Frlg/scripts.inc b/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom_Frlg/scripts.inc
new file mode 100644
index 000000000000..24a0e8531cac
--- /dev/null
+++ b/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom_Frlg/scripts.inc
@@ -0,0 +1,363 @@
+.equ HELIX_FOSSIL, 1
+.equ DOME_FOSSIL, 2
+.equ OLD_AMBER, 3
+
+CinnabarIsland_PokemonLab_ExperimentRoom_Frlg_MapScripts::
+ .byte 0
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_Garett::
+ lock
+ faceplayer
+ setvar VAR_0x8008, INGAME_TRADE_SEEL
+ call EventScript_GetInGameTradeSpeciesInfo
+ goto_if_set FLAG_DID_SEELOR_TRADE, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_AlreadyTraded
+ msgbox Trade_Text_LookingForMonWannaTradeForMon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DeclineTrade
+ call EventScript_ChooseMonForInGameTrade
+ goto_if_ge VAR_0x8004, PARTY_SIZE, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DeclineTrade
+ call EventScript_GetInGameTradeSpecies
+ goto_if_ne VAR_RESULT, VAR_0x8009, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NotRequestedMon
+ call EventScript_DoInGameTrade
+ msgbox Trade_Text_HeyThanks
+ setflag FLAG_DID_SEELOR_TRADE
+ release
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DeclineTrade::
+ msgbox Trade_Text_AwwOhWell
+ release
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NotRequestedMon::
+ bufferspeciesname STR_VAR_1, VAR_0x8009
+ msgbox Trade_Text_WhatThatsNoMon
+ release
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_AlreadyTraded::
+ msgbox Trade_Text_IsntMyOldMonGreat
+ release
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_FossilScientist::
+ lock
+ faceplayer
+ setvar VAR_RESULT, FALSE
+ call_if_set FLAG_REVIVED_AMBER, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckRevivedMtMoonFossil
+ goto_if_eq VAR_RESULT, TRUE, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_RevivedAllFossils
+ goto_if_eq VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 2, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_GiveRevivedMon
+ goto_if_eq VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_FossilStillReviving
+ call CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddHelixFossilToList
+ goto_if_eq VAR_RESULT, TRUE, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilHelix
+ call CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddDomeFossilToList
+ goto_if_eq VAR_RESULT, TRUE, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilDome
+ call CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddOldAmberToList
+ goto_if_eq VAR_RESULT, TRUE, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilAmber
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_HaveYouAFossilForMe
+ goto CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddHelixFossilToList::
+ goto_if_unset FLAG_GOT_HELIX_FOSSIL, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
+ goto_if_set FLAG_REVIVED_HELIX, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
+ setvar VAR_RESULT, TRUE
+ return
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddDomeFossilToList::
+ goto_if_unset FLAG_GOT_DOME_FOSSIL, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
+ goto_if_set FLAG_REVIVED_DOME, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
+ setvar VAR_RESULT, TRUE
+ return
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddOldAmberToList::
+ goto_if_unset FLAG_GOT_OLD_AMBER, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
+ goto_if_set FLAG_REVIVED_AMBER, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
+ setvar VAR_RESULT, TRUE
+ return
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse::
+ setvar VAR_RESULT, FALSE
+ return
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil::
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_NoIsTooBad
+ release
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilHelix::
+ message CinnabarIsland_PokemonLab_ExperimentRoom_Text_HaveYouAFossilForMe
+ waitmessage
+ call CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddOldAmberToList
+ goto_if_eq VAR_RESULT, TRUE, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilHelixAmber
+ multichoice 0, 0, MULTI_HELIX, FALSE
+ switch VAR_RESULT
+ case 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowHelixFossil
+ case 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
+ case 127, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilDome::
+ message CinnabarIsland_PokemonLab_ExperimentRoom_Text_HaveYouAFossilForMe
+ waitmessage
+ call CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddOldAmberToList
+ goto_if_eq VAR_RESULT, TRUE, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilDomeAmber
+ multichoice 0, 0, MULTI_DOME, FALSE
+ switch VAR_RESULT
+ case 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowDomeFossil
+ case 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
+ case 127, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilAmber::
+ message CinnabarIsland_PokemonLab_ExperimentRoom_Text_HaveYouAFossilForMe
+ waitmessage
+ multichoice 0, 0, MULTI_AMBER, FALSE
+ switch VAR_RESULT
+ case 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowOldAmber
+ case 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
+ case 127, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilHelixAmber::
+ multichoice 0, 0, MULTI_HELIX_AMBER, FALSE
+ switch VAR_RESULT
+ case 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowHelixFossil
+ case 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowOldAmber
+ case 2, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
+ case 127, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilDomeAmber::
+ multichoice 0, 0, MULTI_DOME_AMBER, FALSE
+ switch VAR_RESULT
+ case 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowDomeFossil
+ case 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowOldAmber
+ case 2, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
+ case 127, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowHelixFossil::
+ bufferspeciesname STR_VAR_1, SPECIES_OMANYTE
+ bufferitemname STR_VAR_2, ITEM_HELIX_FOSSIL
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_ThatFossilIsOfMonMakeItLiveAgain, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DeclineReviveFossil
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_HandedFossilToWeirdDoctor
+ textcolor NPC_TEXT_COLOR_MALE
+ removeitem ITEM_HELIX_FOSSIL
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_TakesTimeGoForWalk
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 1
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, HELIX_FOSSIL
+ release
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowDomeFossil::
+ bufferspeciesname STR_VAR_1, SPECIES_KABUTO
+ bufferitemname STR_VAR_2, ITEM_DOME_FOSSIL
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_ThatFossilIsOfMonMakeItLiveAgain, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DeclineReviveFossil
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_HandedFossilToWeirdDoctor
+ textcolor NPC_TEXT_COLOR_MALE
+ removeitem ITEM_DOME_FOSSIL
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_TakesTimeGoForWalk
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 1
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, DOME_FOSSIL
+ release
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowOldAmber::
+ bufferspeciesname STR_VAR_1, SPECIES_AERODACTYL
+ bufferitemname STR_VAR_2, ITEM_OLD_AMBER
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_ThatFossilIsOfMonMakeItLiveAgain, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DeclineReviveFossil
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_HandedFossilToWeirdDoctor
+ textcolor NPC_TEXT_COLOR_MALE
+ removeitem ITEM_OLD_AMBER
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_TakesTimeGoForWalk
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 1
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, OLD_AMBER
+ release
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DeclineReviveFossil::
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_YouComeAgain
+ release
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_FossilStillReviving::
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_TakesTimeGoForWalk
+ release
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_GiveRevivedMon::
+ goto_if_eq VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, HELIX_FOSSIL, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_GiveOmanyte
+ goto_if_eq VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, DOME_FOSSIL, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_GiveKabuto
+ goto_if_eq VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, OLD_AMBER, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_GiveAerodactyl
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_GiveOmanyte::
+ setvar VAR_TEMP_1, SPECIES_OMANYTE
+ bufferspeciesname STR_VAR_1, SPECIES_OMANYTE
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_FossilMonBackToLife
+ givemon SPECIES_OMANYTE, 5
+ goto_if_eq VAR_RESULT, 2, Common_EventScript_NoMoreRoomForPokemon
+ setflag FLAG_REVIVED_HELIX
+ goto_if_eq VAR_RESULT, 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NicknameMonParty
+ goto_if_eq VAR_RESULT, 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NicknameMonPC
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_GiveKabuto::
+ setvar VAR_TEMP_1, SPECIES_KABUTO
+ bufferspeciesname STR_VAR_1, SPECIES_KABUTO
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_FossilMonBackToLife
+ givemon SPECIES_KABUTO, 5
+ goto_if_eq VAR_RESULT, 2, Common_EventScript_NoMoreRoomForPokemon
+ setflag FLAG_REVIVED_DOME
+ goto_if_eq VAR_RESULT, 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NicknameMonParty
+ goto_if_eq VAR_RESULT, 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NicknameMonPC
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_GiveAerodactyl::
+ setvar VAR_TEMP_1, SPECIES_AERODACTYL
+ bufferspeciesname STR_VAR_1, SPECIES_AERODACTYL
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_FossilMonBackToLife
+ givemon SPECIES_AERODACTYL, 5
+ goto_if_eq VAR_RESULT, 2, Common_EventScript_NoMoreRoomForPokemon
+ setflag FLAG_REVIVED_AMBER
+ goto_if_eq VAR_RESULT, 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NicknameMonParty
+ goto_if_eq VAR_RESULT, 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NicknameMonPC
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NicknameMonParty::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_LEVEL_UP
+ message CinnabarIsland_PokemonLab_ExperimentRoom_Text_ReceivedMonFromDoctor
+ waitmessage
+ waitfanfare
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 0
+ msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_EndGiveMon
+ call Common_EventScript_GetGiftMonPartySlot
+ call Common_EventScript_NameReceivedPartyMon
+ goto CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_EndGiveMon
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NicknameMonPC::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_LEVEL_UP
+ message CinnabarIsland_PokemonLab_ExperimentRoom_Text_ReceivedMonFromDoctor
+ waitmessage
+ waitfanfare
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 0
+ msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_MonSentToPC
+ call Common_EventScript_NameReceivedBoxMon
+ goto CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_MonSentToPC
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_MonSentToPC::
+ call Common_EventScript_TransferredToPC
+ goto CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_EndGiveMon
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_EndGiveMon::
+ release
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_RevivedAllFossils::
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_YouComeAgain
+ release
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckRevivedMtMoonFossil::
+ goto_if_set FLAG_GOT_HELIX_FOSSIL, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckRevivedHelix
+ goto_if_set FLAG_GOT_DOME_FOSSIL, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckRevivedDome
+ goto CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
+ end
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckRevivedHelix::
+ goto_if_unset FLAG_REVIVED_HELIX, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
+ setvar VAR_RESULT, TRUE
+ return
+
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckRevivedDome::
+ goto_if_unset FLAG_REVIVED_DOME, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
+ setvar VAR_RESULT, TRUE
+ return
+
+Text_MetronomeTeach::
+ .string "Tch-tch-tch!\n"
+ .string "I'll teach you a nifty move.\p"
+ .string "Teach it to a POKéMON, and watch\n"
+ .string "the fun unfold!\p"
+ .string "It's a move called METRONOME.\n"
+ .string "Does it strike your fancy?$"
+
+Text_MetronomeDeclined::
+ .string "I tell you, it's a lot of fun!$"
+
+Text_MetronomeWhichMon::
+ .string "Okay!\n"
+ .string "Which POKéMON should I teach?$"
+
+Text_MetronomeTaught::
+ .string "Tch-tch-tch!\n"
+ .string "That's the sound of a METRONOME.\p"
+ .string "It tweaks your POKéMON's brain into\n"
+ .string "using moves it doesn't even know.$"
+
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_HaveYouAFossilForMe::
+ .string "Hiya!\p"
+ .string "I am important doctor.\n"
+ .string "Yes, very much so, indeed.\p"
+ .string "Here, I study rare POKéMON fossils.\n"
+ .string "All the time, I study.\p"
+ .string "You!\n"
+ .string "Have you a fossil for me?$"
+
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_NoIsTooBad::
+ .string "No!\n"
+ .string "Is too bad!$"
+
+@ Unused
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_TakesTimeGoForWalkJP::
+ .string "ちょっと じかん かかるよ!\p"
+ .string "そこらへんを すこし\n"
+ .string "ブラブラ してくると よろしー!$"
+
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_FossilMonBackToLife::
+ .string "You late.\n"
+ .string "Where were you?\p"
+ .string "Your fossil is back to life!\n"
+ .string "It was {STR_VAR_1} like I think!$"
+
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_ReceivedMonFromDoctor::
+ .string "{PLAYER} received the {STR_VAR_1}\n"
+ .string "from the doctor.$"
+
+@ Unused
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_NoRoomForPokemon::
+ .string "ポケモン いっぱいで もてないね!$"
+
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_ThatFossilIsOfMonMakeItLiveAgain::
+ .string "Oh!\n"
+ .string "That is {STR_VAR_2}, it is!\p"
+ .string "It is fossil of {STR_VAR_1},\n"
+ .string "a POKéMON that is already extinct!\p"
+ .string "My Resurrection Machine will make\n"
+ .string "that POKéMON live again!$"
+
+@ TODO: Resolve text dump error below?
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_HandedFossilToWeirdDoctor::
+ .string "So!\n"
+ .string "You hurry and give me that!\p"
+ .string "{FONT_NORMAL}{PLAYER} handed over the\n"
+ .string "{STR_VAR_2} to the weird doctor.$"
+
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_TakesTimeGoForWalk::
+ .string "I take a little time!\n"
+ .string "You go for walk a little while!$"
+
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_YouComeAgain::
+ .string "Aiyah!\n"
+ .string "You come again!$"
+
diff --git a/data/maps/CinnabarIsland_PokemonLab_Lounge_Frlg/map.json b/data/maps/CinnabarIsland_PokemonLab_Lounge_Frlg/map.json
new file mode 100644
index 000000000000..31d7a1e6e2f2
--- /dev/null
+++ b/data/maps/CinnabarIsland_PokemonLab_Lounge_Frlg/map.json
@@ -0,0 +1,73 @@
+{
+ "id": "MAP_CINNABAR_ISLAND_POKEMON_LAB_LOUNGE",
+ "name": "CinnabarIsland_PokemonLab_Lounge_Frlg",
+ "layout": "LAYOUT_CINNABAR_ISLAND_POKEMON_LAB_LOUNGE",
+ "music": "MUS_RG_CINNABAR",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CINNABAR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 5,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_PokemonLab_Lounge_EventScript_Scientist",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_2",
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_PokemonLab_Lounge_EventScript_Clifton",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 10,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_PokemonLab_Lounge_EventScript_Norma",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_CINNABAR_ISLAND_POKEMON_LAB_ENTRANCE",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/CinnabarIsland_PokemonLab_Lounge_Frlg/scripts.inc b/data/maps/CinnabarIsland_PokemonLab_Lounge_Frlg/scripts.inc
new file mode 100644
index 000000000000..d5c2ef2b9706
--- /dev/null
+++ b/data/maps/CinnabarIsland_PokemonLab_Lounge_Frlg/scripts.inc
@@ -0,0 +1,91 @@
+CinnabarIsland_PokemonLab_Lounge_Frlg_MapScripts::
+ .byte 0
+
+CinnabarIsland_PokemonLab_Lounge_EventScript_Scientist::
+ msgbox CinnabarIsland_PokemonLab_Lounge_Text_FoundFossilInMtMoon, MSGBOX_NPC
+ end
+
+CinnabarIsland_PokemonLab_Lounge_EventScript_Clifton::
+ lock
+ faceplayer
+ setvar VAR_0x8008, INGAME_TRADE_ELECTRODE
+ call EventScript_GetInGameTradeSpeciesInfo
+ goto_if_set FLAG_DID_ESPHERE_TRADE, CinnabarIsland_PokemonLab_Lounge_EventScript_CliftonAlreadyTraded
+ msgbox Trade_Text_DoYouHaveMonWouldYouTradeForMon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CinnabarIsland_PokemonLab_Lounge_EventScript_CliftonDeclineTrade
+ call EventScript_ChooseMonForInGameTrade
+ goto_if_ge VAR_0x8004, PARTY_SIZE, CinnabarIsland_PokemonLab_Lounge_EventScript_CliftonDeclineTrade
+ call EventScript_GetInGameTradeSpecies
+ goto_if_ne VAR_RESULT, VAR_0x8009, CinnabarIsland_PokemonLab_Lounge_EventScript_CliftonNotRequestedMon
+ call EventScript_DoInGameTrade
+ msgbox Trade_Text_Thanks
+ setflag FLAG_DID_ESPHERE_TRADE
+ release
+ end
+
+CinnabarIsland_PokemonLab_Lounge_EventScript_CliftonDeclineTrade::
+ msgbox Trade_Text_WellIfYouDontWantTo
+ release
+ end
+
+CinnabarIsland_PokemonLab_Lounge_EventScript_CliftonNotRequestedMon::
+ bufferspeciesname STR_VAR_1, VAR_0x8009
+ msgbox Trade_Text_ThisIsntMon
+ release
+ end
+
+CinnabarIsland_PokemonLab_Lounge_EventScript_CliftonAlreadyTraded::
+ msgbox Trade_Text_HasTradedMonGrownStronger
+ release
+ end
+
+CinnabarIsland_PokemonLab_Lounge_EventScript_Norma::
+ lock
+ faceplayer
+ setvar VAR_0x8008, INGAME_TRADE_TANGELA
+ copyvar VAR_0x8004, VAR_0x8008
+ specialvar VAR_RESULT, GetInGameTradeSpeciesInfo
+ copyvar VAR_0x8009, VAR_RESULT
+ goto_if_set FLAG_DID_TANGENY_TRADE, CinnabarIsland_PokemonLab_Lounge_EventScript_NormaAlreadyTraded
+ msgbox Trade_Text_DoYouHaveMonWantToTradeForMon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CinnabarIsland_PokemonLab_Lounge_EventScript_NormaDeclineTrade
+ special ChoosePartyMon
+ waitstate
+ copyvar VAR_0x800A, VAR_0x8004
+ goto_if_ge VAR_0x8004, PARTY_SIZE, CinnabarIsland_PokemonLab_Lounge_EventScript_NormaDeclineTrade
+ copyvar VAR_0x8005, VAR_0x800A
+ specialvar VAR_RESULT, GetTradeSpecies
+ copyvar VAR_0x800B, VAR_RESULT
+ goto_if_ne VAR_RESULT, VAR_0x8009, CinnabarIsland_PokemonLab_Lounge_EventScript_NormaNotRequestedMon
+ copyvar VAR_0x8004, VAR_0x8008
+ copyvar VAR_0x8005, VAR_0x800A
+ special CreateInGameTradePokemon
+ special DoInGameTradeScene
+ waitstate
+ msgbox Trade_Text_ThanksYoureAPal
+ setflag FLAG_DID_TANGENY_TRADE
+ release
+ end
+
+CinnabarIsland_PokemonLab_Lounge_EventScript_NormaDeclineTrade::
+ msgbox Trade_Text_ThatsTooBad
+ release
+ end
+
+CinnabarIsland_PokemonLab_Lounge_EventScript_NormaNotRequestedMon::
+ bufferspeciesname STR_VAR_1, VAR_0x8009
+ msgbox Trade_Text_ThisIsNoMon
+ release
+ end
+
+CinnabarIsland_PokemonLab_Lounge_EventScript_NormaAlreadyTraded::
+ msgbox Trade_Text_HowIsMyOldMon
+ release
+ end
+
+CinnabarIsland_PokemonLab_Lounge_Text_FoundFossilInMtMoon::
+ .string "I found this most remarkable fossil\n"
+ .string "inside MT. MOON.\p"
+ .string "I think it's of a rare, prehistoric\n"
+ .string "POKéMON.$"
+
diff --git a/data/maps/CinnabarIsland_PokemonLab_ResearchRoom_Frlg/map.json b/data/maps/CinnabarIsland_PokemonLab_ResearchRoom_Frlg/map.json
new file mode 100644
index 000000000000..35fe24d8b7b1
--- /dev/null
+++ b/data/maps/CinnabarIsland_PokemonLab_ResearchRoom_Frlg/map.json
@@ -0,0 +1,76 @@
+{
+ "id": "MAP_CINNABAR_ISLAND_POKEMON_LAB_RESEARCH_ROOM",
+ "name": "CinnabarIsland_PokemonLab_ResearchRoom_Frlg",
+ "layout": "LAYOUT_CINNABAR_ISLAND_POKEMON_LAB_RESEARCH_ROOM",
+ "music": "MUS_RG_CINNABAR",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CINNABAR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SUPER_NERD",
+ "x": 5,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_PokemonLab_ResearchRoom_EventScript_MetronomeTutor",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 10,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CinnabarIsland_PokemonLab_ResearchRoom_EventScript_Scientist",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_CINNABAR_ISLAND_POKEMON_LAB_ENTRANCE",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CinnabarIsland_PokemonLab_ResearchRoom_EventScript_AmberPipe"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "CinnabarIsland_PokemonLab_ResearchRoom_EventScript_Computer"
+ }
+ ]
+}
diff --git a/data/maps/CinnabarIsland_PokemonLab_ResearchRoom_Frlg/scripts.inc b/data/maps/CinnabarIsland_PokemonLab_ResearchRoom_Frlg/scripts.inc
new file mode 100644
index 000000000000..f16d5427bd3b
--- /dev/null
+++ b/data/maps/CinnabarIsland_PokemonLab_ResearchRoom_Frlg/scripts.inc
@@ -0,0 +1,38 @@
+CinnabarIsland_PokemonLab_ResearchRoom_Frlg_MapScripts::
+ .byte 0
+
+CinnabarIsland_PokemonLab_ResearchRoom_EventScript_MetronomeTutor::
+ goto EventScript_MetronomeTutor
+ end
+
+CinnabarIsland_PokemonLab_ResearchRoom_EventScript_Scientist::
+ msgbox CinnabarIsland_PokemonLab_ResearchRoom_Text_EeveeCanEvolveIntroThreeMons, MSGBOX_NPC
+ end
+
+CinnabarIsland_PokemonLab_ResearchRoom_EventScript_Computer::
+ msgbox CinnabarIsland_PokemonLab_ResearchRoom_Text_LegendaryBirdEmail, MSGBOX_SIGN
+ end
+
+CinnabarIsland_PokemonLab_ResearchRoom_EventScript_AmberPipe::
+ msgbox CinnabarIsland_PokemonLab_ResearchRoom_Text_AnAmberPipe, MSGBOX_SIGN
+ end
+
+CinnabarIsland_PokemonLab_ResearchRoom_Text_EeveeCanEvolveIntroThreeMons::
+ .string "EEVEE can evolve into one of three\n"
+ .string "kinds of POKéMON.$"
+
+CinnabarIsland_PokemonLab_ResearchRoom_Text_LegendaryBirdEmail::
+ .string "There's an e-mail message.\p"
+ .string "… … …\p"
+ .string "There are three legendary bird\n"
+ .string "POKéMON.\p"
+ .string "They are ARTICUNO, ZAPDOS, and\n"
+ .string "MOLTRES.\p"
+ .string "Their whereabouts are unknown.\p"
+ .string "We plan to explore the cavern\n"
+ .string "close to CERULEAN.\p"
+ .string "From: POKéMON RESEARCH TEAM…$"
+
+CinnabarIsland_PokemonLab_ResearchRoom_Text_AnAmberPipe::
+ .string "An amber pipe!$"
+
diff --git a/data/maps/DiglettsCave_B1F_Frlg/map.json b/data/maps/DiglettsCave_B1F_Frlg/map.json
new file mode 100644
index 000000000000..ea1de92be145
--- /dev/null
+++ b/data/maps/DiglettsCave_B1F_Frlg/map.json
@@ -0,0 +1,37 @@
+{
+ "id": "MAP_DIGLETTS_CAVE_B1F",
+ "name": "DiglettsCave_B1F_Frlg",
+ "layout": "LAYOUT_DIGLETTS_CAVE_B1F",
+ "music": "MUS_RG_VIRIDIAN_FOREST",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_DIGLETTS_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 3,
+ "elevation": 3,
+ "dest_map": "MAP_DIGLETTS_CAVE_NORTH_ENTRANCE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 82,
+ "y": 71,
+ "elevation": 3,
+ "dest_map": "MAP_DIGLETTS_CAVE_SOUTH_ENTRANCE",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/DiglettsCave_B1F_Frlg/scripts.inc b/data/maps/DiglettsCave_B1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..bca05e45ba85
--- /dev/null
+++ b/data/maps/DiglettsCave_B1F_Frlg/scripts.inc
@@ -0,0 +1,7 @@
+DiglettsCave_B1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, DiglettsCave_B1F_OnTransition
+ .byte 0
+
+DiglettsCave_B1F_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_DIGLETTS_CAVE_B1F
+ end
diff --git a/data/maps/DiglettsCave_NorthEntrance_Frlg/map.json b/data/maps/DiglettsCave_NorthEntrance_Frlg/map.json
new file mode 100644
index 000000000000..a318358cece3
--- /dev/null
+++ b/data/maps/DiglettsCave_NorthEntrance_Frlg/map.json
@@ -0,0 +1,52 @@
+{
+ "id": "MAP_DIGLETTS_CAVE_NORTH_ENTRANCE",
+ "name": "DiglettsCave_NorthEntrance_Frlg",
+ "layout": "LAYOUT_DIGLETTS_CAVE_NORTH_ENTRANCE",
+ "music": "MUS_RG_VIRIDIAN_FOREST",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_DIGLETTS_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "DiglettsCave_NorthEntrance_EventScript_Hiker",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_DIGLETTS_CAVE_B1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/DiglettsCave_NorthEntrance_Frlg/scripts.inc b/data/maps/DiglettsCave_NorthEntrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..a696d21ae7dc
--- /dev/null
+++ b/data/maps/DiglettsCave_NorthEntrance_Frlg/scripts.inc
@@ -0,0 +1,13 @@
+DiglettsCave_NorthEntrance_Frlg_MapScripts::
+ .byte 0
+
+DiglettsCave_NorthEntrance_EventScript_Hiker::
+ msgbox DiglettsCave_NorthEntrance_RockTunnelPitchBlack, MSGBOX_NPC
+ end
+
+DiglettsCave_NorthEntrance_RockTunnelPitchBlack::
+ .string "I went inside ROCK TUNNEL, but it's\n"
+ .string "pitch-black and scary in there.\p"
+ .string "If I could get a POKéMON to use\n"
+ .string "FLASH and light it up…$"
+
diff --git a/data/maps/DiglettsCave_SouthEntrance_Frlg/map.json b/data/maps/DiglettsCave_SouthEntrance_Frlg/map.json
new file mode 100644
index 000000000000..c78167affe08
--- /dev/null
+++ b/data/maps/DiglettsCave_SouthEntrance_Frlg/map.json
@@ -0,0 +1,52 @@
+{
+ "id": "MAP_DIGLETTS_CAVE_SOUTH_ENTRANCE",
+ "name": "DiglettsCave_SouthEntrance_Frlg",
+ "layout": "LAYOUT_DIGLETTS_CAVE_SOUTH_ENTRANCE",
+ "music": "MUS_RG_VIRIDIAN_FOREST",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_DIGLETTS_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "DiglettsCave_SouthEntrance_EventScript_OldMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE11",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 6,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_DIGLETTS_CAVE_B1F",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/DiglettsCave_SouthEntrance_Frlg/scripts.inc b/data/maps/DiglettsCave_SouthEntrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..c7d7545da07a
--- /dev/null
+++ b/data/maps/DiglettsCave_SouthEntrance_Frlg/scripts.inc
@@ -0,0 +1,13 @@
+DiglettsCave_SouthEntrance_Frlg_MapScripts::
+ .byte 0
+
+DiglettsCave_SouthEntrance_EventScript_OldMan::
+ msgbox DiglettsCave_SouthEntrance_Text_DiglettDugThisTunnel, MSGBOX_NPC
+ end
+
+DiglettsCave_SouthEntrance_Text_DiglettDugThisTunnel::
+ .string "Well, isn't this a surprise!\n"
+ .string "DIGLETT dug this long tunnel!\p"
+ .string "It goes right to VIRIDIAN CITY,\n"
+ .string "they tell me.$"
+
diff --git a/data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc b/data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc
index ea58d275dfe4..9fcded5790ff 100644
--- a/data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc
+++ b/data/maps/FallarborTown_MoveRelearnersHouse/scripts.inc
@@ -23,12 +23,13 @@ FallarborTown_MoveRelearnersHouse_EventScript_AskTeachMove::
FallarborTown_MoveRelearnersHouse_EventScript_ChooseMon::
msgbox FallarborTown_MoveRelearnersHouse_Text_TutorWhichMon, MSGBOX_DEFAULT
setmoverelearnerstate MOVE_RELEARNER_LEVEL_UP_MOVES @ Specifically supposed to teach level up moves
- special ChooseMonForMoveRelearner
+ chooseboxmon SELECT_PC_MON_MOVE_RELEARNER
waitstate
goto_if_eq VAR_0x8004, PARTY_NOTHING_CHOSEN, FallarborTown_MoveRelearnersHouse_EventScript_ComeBackWithHeartScale
special IsSelectedMonEgg
goto_if_eq VAR_RESULT, TRUE, FallarborTown_MoveRelearnersHouse_EventScript_CantTeachEgg
- goto_if_eq VAR_0x8005, 0, FallarborTown_MoveRelearnersHouse_EventScript_NoMoveToTeachMon
+ special HasMovesToRelearn
+ goto_if_eq VAR_RESULT, FALSE, FallarborTown_MoveRelearnersHouse_EventScript_NoMoveToTeachMon
goto FallarborTown_MoveRelearnersHouse_EventScript_ChooseMove
end
diff --git a/data/maps/FiveIsland_Frlg/map.json b/data/maps/FiveIsland_Frlg/map.json
new file mode 100644
index 000000000000..50848e1ef5d8
--- /dev/null
+++ b/data/maps/FiveIsland_Frlg/map.json
@@ -0,0 +1,110 @@
+{
+ "id": "MAP_FIVE_ISLAND",
+ "name": "FiveIsland_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND",
+ "music": "MUS_RG_SEVII_45",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FIVE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_FIVE_ISLAND_WATER_LABYRINTH",
+ "offset": -48,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_FIVE_ISLAND_MEADOW",
+ "offset": 0,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 8,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_EventScript_Fisher",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 16,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_EventScript_BugCatcher",
+ "flag": "0"
+ },
+ {
+ "type": "clone",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 32,
+ "y": 9,
+ "target_local_id": "LOCALID_FIVE_ISLAND_MEADOW_BORDER_TREE",
+ "target_map": "MAP_FIVE_ISLAND_MEADOW"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 12,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_HARBOR",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 18,
+ "y": 6,
+ "elevation": 0,
+ "dest_map": "MAP_FIVE_ISLAND_POKEMON_CENTER_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 12,
+ "y": 6,
+ "elevation": 0,
+ "dest_map": "MAP_FIVE_ISLAND_HOUSE1",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 22,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_FIVE_ISLAND_HOUSE2",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 20,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_EventScript_IslandSign"
+ }
+ ]
+}
diff --git a/data/maps/FiveIsland_Frlg/scripts.inc b/data/maps/FiveIsland_Frlg/scripts.inc
new file mode 100644
index 000000000000..9e1145da8d1f
--- /dev/null
+++ b/data/maps/FiveIsland_Frlg/scripts.inc
@@ -0,0 +1,36 @@
+FiveIsland_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, FiveIsland_OnTransition
+ .byte 0
+
+FiveIsland_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_FIVE_ISLAND
+ end
+
+FiveIsland_EventScript_IslandSign::
+ msgbox FiveIsland_Text_IslandSign, MSGBOX_SIGN
+ end
+
+FiveIsland_EventScript_BugCatcher::
+ msgbox FiveIsland_Text_WeirdBuildingInMeadow, MSGBOX_NPC
+ end
+
+FiveIsland_EventScript_Fisher::
+ msgbox FiveIsland_Text_BeenGettingBusierAroundHere, MSGBOX_NPC
+ end
+
+FiveIsland_Text_IslandSign::
+ .string "FIVE ISLAND\n"
+ .string "Chrono Island: Where Time Goes$"
+
+FiveIsland_Text_WeirdBuildingInMeadow::
+ .string "Oh, this stinks. I wanted to play in\n"
+ .string "the MEADOW.\p"
+ .string "But they put up a weird building\n"
+ .string "on it, so I can't play there.$"
+
+FiveIsland_Text_BeenGettingBusierAroundHere::
+ .string "It's been getting busier around\n"
+ .string "these parts lately.\p"
+ .string "I haven't been catching many good\n"
+ .string "fish lately, either.$"
+
diff --git a/data/maps/FiveIsland_Harbor_Frlg/map.json b/data/maps/FiveIsland_Harbor_Frlg/map.json
new file mode 100644
index 000000000000..cb08dbf56d9b
--- /dev/null
+++ b/data/maps/FiveIsland_Harbor_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_FIVE_ISLAND_HARBOR",
+ "name": "FiveIsland_Harbor_Frlg",
+ "layout": "LAYOUT_ISLAND_HARBOR_FRLG",
+ "music": "MUS_RG_SEVII_45",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FIVE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SEAGALLOP",
+ "x": 8,
+ "y": 9,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 8,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_Harbor_EventScript_Sailor",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_Harbor_Frlg/scripts.inc b/data/maps/FiveIsland_Harbor_Frlg/scripts.inc
new file mode 100644
index 000000000000..e34eaa036a3e
--- /dev/null
+++ b/data/maps/FiveIsland_Harbor_Frlg/scripts.inc
@@ -0,0 +1,11 @@
+FiveIsland_Harbor_Frlg_MapScripts::
+ .byte 0
+
+FiveIsland_Harbor_EventScript_Sailor::
+ lock
+ faceplayer
+ message Text_WhereDoYouWantToSail
+ waitmessage
+ setvar VAR_0x8004, SEAGALLOP_FIVE_ISLAND
+ goto EventScript_ChooseDestFromIsland
+ end
diff --git a/data/maps/FiveIsland_House1_Frlg/map.json b/data/maps/FiveIsland_House1_Frlg/map.json
new file mode 100644
index 000000000000..97585ace22cf
--- /dev/null
+++ b/data/maps/FiveIsland_House1_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_FIVE_ISLAND_HOUSE1",
+ "name": "FiveIsland_House1_Frlg",
+ "layout": "LAYOUT_HOUSE3_FRLG",
+ "music": "MUS_RG_SEVII_45",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FIVE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_3_FRLG",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_House1_EventScript_Woman",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_House1_Frlg/scripts.inc b/data/maps/FiveIsland_House1_Frlg/scripts.inc
new file mode 100644
index 000000000000..71bcd9a4062a
--- /dev/null
+++ b/data/maps/FiveIsland_House1_Frlg/scripts.inc
@@ -0,0 +1,15 @@
+FiveIsland_House1_Frlg_MapScripts::
+ .byte 0
+
+FiveIsland_House1_EventScript_Woman::
+ msgbox FiveIsland_House1_Text_HusbandWentOffFishing, MSGBOX_NPC
+ end
+
+FiveIsland_House1_Text_HusbandWentOffFishing::
+ .string "Don't worry about buying anything\n"
+ .string "for dinner tonight!\p"
+ .string "…That's what my husband said when\n"
+ .string "he went off fishing today.\p"
+ .string "I'm not sure if I can count on him\n"
+ .string "to live up to that promise.$"
+
diff --git a/data/maps/FiveIsland_House2_Frlg/map.json b/data/maps/FiveIsland_House2_Frlg/map.json
new file mode 100644
index 000000000000..1090e93da7f7
--- /dev/null
+++ b/data/maps/FiveIsland_House2_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_FIVE_ISLAND_HOUSE2",
+ "name": "FiveIsland_House2_Frlg",
+ "layout": "LAYOUT_HOUSE3_FRLG",
+ "music": "MUS_RG_SEVII_45",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FIVE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 2,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_House2_EventScript_OldMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_House2_Frlg/scripts.inc b/data/maps/FiveIsland_House2_Frlg/scripts.inc
new file mode 100644
index 000000000000..58173b1be8d1
--- /dev/null
+++ b/data/maps/FiveIsland_House2_Frlg/scripts.inc
@@ -0,0 +1,15 @@
+FiveIsland_House2_Frlg_MapScripts::
+ .byte 0
+
+FiveIsland_House2_EventScript_OldMan::
+ msgbox FiveIsland_House2_Text_MeadowBelongedToFamily, MSGBOX_NPC
+ end
+
+FiveIsland_House2_Text_MeadowBelongedToFamily::
+ .string "That MEADOW has belonged to our\n"
+ .string "family for generations.\p"
+ .string "I should have had a giant mansion\n"
+ .string "built on it.\p"
+ .string "It would be preferable to having\n"
+ .string "those thugs run wild on it!$"
+
diff --git a/data/maps/FiveIsland_LostCave_Entrance_Frlg/map.json b/data/maps/FiveIsland_LostCave_Entrance_Frlg/map.json
new file mode 100644
index 000000000000..e36e186ee5d8
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Entrance_Frlg/map.json
@@ -0,0 +1,37 @@
+{
+ "id": "MAP_FIVE_ISLAND_LOST_CAVE_ENTRANCE",
+ "name": "FiveIsland_LostCave_Entrance_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ENTRANCE",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LOST_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_RESORT_GORGEOUS",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 5,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_LostCave_Entrance_Frlg/scripts.inc b/data/maps/FiveIsland_LostCave_Entrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..87547d1930f1
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Entrance_Frlg/scripts.inc
@@ -0,0 +1,7 @@
+FiveIsland_LostCave_Entrance_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, FiveIsland_LostCave_Entrance_OnTransition
+ .byte 0
+
+FiveIsland_LostCave_Entrance_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_FIVE_ISLAND_LOST_CAVE_ENTRANCE
+ end
diff --git a/data/maps/FiveIsland_LostCave_Room10_Frlg/map.json b/data/maps/FiveIsland_LostCave_Room10_Frlg/map.json
new file mode 100644
index 000000000000..aec5fc8ab38d
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room10_Frlg/map.json
@@ -0,0 +1,60 @@
+{
+ "id": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM10",
+ "name": "FiveIsland_LostCave_Room10_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM10",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LOST_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_LOST_CAVE_SELPHY",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 5,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_LOST_CAVE_SELPHY"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 5,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_LostCave_Room10_EventScript_ItemSilkScarf",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_LOST_CAVE_ROOM10_SILK_SCARF"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_LostCave_Room10_Frlg/scripts.inc b/data/maps/FiveIsland_LostCave_Room10_Frlg/scripts.inc
new file mode 100644
index 000000000000..0372e4bb8e35
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room10_Frlg/scripts.inc
@@ -0,0 +1,79 @@
+FiveIsland_LostCave_Room10_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, FiveIsland_LostCave_Room10_OnResume
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, FiveIsland_LostCave_Room10_OnFrame
+ .byte 0
+
+FiveIsland_LostCave_Room10_OnResume::
+ call_if_defeated TRAINER_LADY_SELPHY, FiveIsland_LostCave_Room10_EventScript_StopSelphySceneTrigger
+ end
+
+FiveIsland_LostCave_Room10_EventScript_StopSelphySceneTrigger::
+ setvar VAR_MAP_SCENE_FIVE_ISLAND_LOST_CAVE_ROOM10, 1
+ return
+
+FiveIsland_LostCave_Room10_OnFrame::
+ map_script_2 VAR_MAP_SCENE_FIVE_ISLAND_LOST_CAVE_ROOM10, 0, FiveIsland_LostCave_Room10_EventScript_FindSelphyScene
+ .2byte 0
+
+FiveIsland_LostCave_Room10_EventScript_FindSelphyScene::
+ lockall
+ textcolor NPC_TEXT_COLOR_FEMALE
+ applymovement LOCALID_LOST_CAVE_SELPHY, FiveIsland_LostCave_Room10_Movement_SelphyWander
+ waitmovement 0
+ delay 100
+ applymovement LOCALID_LOST_CAVE_SELPHY, FiveIsland_LostCave_Room10_Movement_SelphyApproach
+ waitmovement 0
+ msgbox FiveIsland_LostCave_Room10_Text_SelphyIntro
+ trainerbattle_no_intro TRAINER_LADY_SELPHY, FiveIsland_LostCave_Room10_Text_SelphyDefeat
+ msgbox FiveIsland_LostCave_Room10_Text_MayIAskYouToTakeMeHome
+ closemessage
+ call FiveIsland_LostCave_Room10_EventScript_SetSelphyFound
+ warp MAP_FIVE_ISLAND_RESORT_GORGEOUS, 39, 10
+ waitstate
+ releaseall
+ end
+
+FiveIsland_LostCave_Room10_EventScript_SetSelphyFound::
+ setflag FLAG_HIDE_LOST_CAVE_SELPHY
+ clearflag FLAG_HIDE_RESORT_GORGEOUS_SELPHY
+ setvar VAR_MAP_SCENE_FIVE_ISLAND_LOST_CAVE_ROOM10, 1
+ setvar VAR_MAP_SCENE_FIVE_ISLAND_RESORT_GORGEOUS, 1
+ return
+
+FiveIsland_LostCave_Room10_EventScript_SelphyQuestLog::
+ settrainerflag TRAINER_LADY_SELPHY
+ call FiveIsland_LostCave_Room10_EventScript_SetSelphyFound
+ releaseall
+ end
+
+FiveIsland_LostCave_Room10_Movement_SelphyWander::
+ walk_left
+ delay_16
+ walk_right
+ delay_16
+ walk_in_place_faster_up
+ delay_16
+ walk_in_place_faster_down
+ step_end
+
+FiveIsland_LostCave_Room10_Movement_SelphyApproach::
+ walk_down
+ walk_down
+ step_end
+
+FiveIsland_LostCave_Room10_Text_SelphyIntro::
+ .string "W-what do you intend to do with\n"
+ .string "me?$"
+
+FiveIsland_LostCave_Room10_Text_SelphyDefeat::
+ .string "Oh… I was afraid that you meant to\n"
+ .string "harm me.$"
+
+FiveIsland_LostCave_Room10_Text_MayIAskYouToTakeMeHome::
+ .string "I am so glad that you happened\n"
+ .string "here.\p"
+ .string "I grew rather bored of walking,\n"
+ .string "and I am feeling fatigued.\p"
+ .string "May I ask you to take me home\n"
+ .string "from here?$"
+
diff --git a/data/maps/FiveIsland_LostCave_Room11_Frlg/map.json b/data/maps/FiveIsland_LostCave_Room11_Frlg/map.json
new file mode 100644
index 000000000000..c72524a18a7d
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room11_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM11",
+ "name": "FiveIsland_LostCave_Room11_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM11",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LOST_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 5,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_LostCave_Room11_EventScript_ItemLaxIncense",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_LOST_CAVE_ROOM11_LAX_INCENSE"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_LostCave_Room11_Frlg/scripts.inc b/data/maps/FiveIsland_LostCave_Room11_Frlg/scripts.inc
new file mode 100644
index 000000000000..dfa1dbfae85a
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room11_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+FiveIsland_LostCave_Room11_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/FiveIsland_LostCave_Room12_Frlg/map.json b/data/maps/FiveIsland_LostCave_Room12_Frlg/map.json
new file mode 100644
index 000000000000..51cfc9558f4a
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room12_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM12",
+ "name": "FiveIsland_LostCave_Room12_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM12",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LOST_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 5,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_LostCave_Room12_EventScript_ItemSeaIncense",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_LOST_CAVE_ROOM12_SEA_INCENSE"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_LostCave_Room12_Frlg/scripts.inc b/data/maps/FiveIsland_LostCave_Room12_Frlg/scripts.inc
new file mode 100644
index 000000000000..a4f76d812567
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room12_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+FiveIsland_LostCave_Room12_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/FiveIsland_LostCave_Room13_Frlg/map.json b/data/maps/FiveIsland_LostCave_Room13_Frlg/map.json
new file mode 100644
index 000000000000..355c3d300fea
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room13_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM13",
+ "name": "FiveIsland_LostCave_Room13_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM13",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LOST_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 5,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_LostCave_Room13_EventScript_ItemMaxRevive",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_LOST_CAVE_ROOM13_MAX_REVIVE"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_LostCave_Room13_Frlg/scripts.inc b/data/maps/FiveIsland_LostCave_Room13_Frlg/scripts.inc
new file mode 100644
index 000000000000..ebf918fac0e0
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room13_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+FiveIsland_LostCave_Room13_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/FiveIsland_LostCave_Room14_Frlg/map.json b/data/maps/FiveIsland_LostCave_Room14_Frlg/map.json
new file mode 100644
index 000000000000..cddbd47ae27e
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room14_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM14",
+ "name": "FiveIsland_LostCave_Room14_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM14",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LOST_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 5,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_LostCave_Room14_EventScript_ItemRareCandy",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_LOST_CAVE_ROOM14_RARE_CANDY"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_LostCave_Room14_Frlg/scripts.inc b/data/maps/FiveIsland_LostCave_Room14_Frlg/scripts.inc
new file mode 100644
index 000000000000..fb2c44e10cfd
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room14_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+FiveIsland_LostCave_Room14_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/FiveIsland_LostCave_Room1_Frlg/map.json b/data/maps/FiveIsland_LostCave_Room1_Frlg/map.json
new file mode 100644
index 000000000000..fdc41934aafc
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room1_Frlg/map.json
@@ -0,0 +1,73 @@
+{
+ "id": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "name": "FiveIsland_LostCave_Room1_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LOST_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 5,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "FiveIsland_LostCave_Room1_EventScript_Lawson",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ENTRANCE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 8,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM2",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_LostCave_Room1_Frlg/scripts.inc b/data/maps/FiveIsland_LostCave_Room1_Frlg/scripts.inc
new file mode 100644
index 000000000000..1d27e26516a9
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room1_Frlg/scripts.inc
@@ -0,0 +1,23 @@
+FiveIsland_LostCave_Room1_Frlg_MapScripts::
+ .byte 0
+
+FiveIsland_LostCave_Room1_EventScript_Lawson::
+ trainerbattle_single TRAINER_RUIN_MANIAC_LAWSON, FiveIsland_LostCave_Room1_Text_LawsonIntro, FiveIsland_LostCave_Room1_Text_LawsonDefeat
+ msgbox FiveIsland_LostCave_Room1_Text_LawsonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_LostCave_Room1_Text_LawsonIntro::
+ .string "Aiyeeeeeh!\p"
+ .string "I thought this was an ancient ruin.\n"
+ .string "But it's teeming with ghosts!$"
+
+FiveIsland_LostCave_Room1_Text_LawsonDefeat::
+ .string "Aiyeeeeeh!\n"
+ .string "Mercy!$"
+
+FiveIsland_LostCave_Room1_Text_LawsonPostBattle::
+ .string "I'm trying to get out of here, but\n"
+ .string "I always end up at the same spot.\p"
+ .string "Maybe the number of boulders is\n"
+ .string "a hint…$"
+
diff --git a/data/maps/FiveIsland_LostCave_Room2_Frlg/map.json b/data/maps/FiveIsland_LostCave_Room2_Frlg/map.json
new file mode 100644
index 000000000000..d7deba157a5a
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room2_Frlg/map.json
@@ -0,0 +1,51 @@
+{
+ "id": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM2",
+ "name": "FiveIsland_LostCave_Room2_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM2",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LOST_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM3",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 8,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM11",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_LostCave_Room2_Frlg/scripts.inc b/data/maps/FiveIsland_LostCave_Room2_Frlg/scripts.inc
new file mode 100644
index 000000000000..2588f24a87a5
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room2_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+FiveIsland_LostCave_Room2_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/FiveIsland_LostCave_Room3_Frlg/map.json b/data/maps/FiveIsland_LostCave_Room3_Frlg/map.json
new file mode 100644
index 000000000000..06fcda49dedb
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room3_Frlg/map.json
@@ -0,0 +1,51 @@
+{
+ "id": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM3",
+ "name": "FiveIsland_LostCave_Room3_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM3",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LOST_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 8,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM4",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_LostCave_Room3_Frlg/scripts.inc b/data/maps/FiveIsland_LostCave_Room3_Frlg/scripts.inc
new file mode 100644
index 000000000000..a715193dd5a3
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room3_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+FiveIsland_LostCave_Room3_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/FiveIsland_LostCave_Room4_Frlg/map.json b/data/maps/FiveIsland_LostCave_Room4_Frlg/map.json
new file mode 100644
index 000000000000..0049915a8a7a
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room4_Frlg/map.json
@@ -0,0 +1,66 @@
+{
+ "id": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM4",
+ "name": "FiveIsland_LostCave_Room4_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM4",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LOST_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 6,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "FiveIsland_LostCave_Room4_EventScript_Laura",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM12",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 8,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM5",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_LostCave_Room4_Frlg/scripts.inc b/data/maps/FiveIsland_LostCave_Room4_Frlg/scripts.inc
new file mode 100644
index 000000000000..21491be4a3c0
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room4_Frlg/scripts.inc
@@ -0,0 +1,20 @@
+FiveIsland_LostCave_Room4_Frlg_MapScripts::
+ .byte 0
+
+FiveIsland_LostCave_Room4_EventScript_Laura::
+ trainerbattle_single TRAINER_PSYCHIC_LAURA, FiveIsland_LostCave_Room4_Text_LauraIntro, FiveIsland_LostCave_Room4_Text_LauraDefeat
+ msgbox FiveIsland_LostCave_Room4_Text_LauraPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_LostCave_Room4_Text_LauraIntro::
+ .string "I think there is a mysterious power\n"
+ .string "at work in this cave.$"
+
+FiveIsland_LostCave_Room4_Text_LauraDefeat::
+ .string "If you don't go into the right\n"
+ .string "tunnel, you won't get ahead.$"
+
+FiveIsland_LostCave_Room4_Text_LauraPostBattle::
+ .string "Earlier, a lady went into the caves\n"
+ .string "ahead.$"
+
diff --git a/data/maps/FiveIsland_LostCave_Room5_Frlg/map.json b/data/maps/FiveIsland_LostCave_Room5_Frlg/map.json
new file mode 100644
index 000000000000..ae30cb97e9b8
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room5_Frlg/map.json
@@ -0,0 +1,57 @@
+{
+ "id": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM5",
+ "name": "FiveIsland_LostCave_Room5_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM5",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LOST_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 8,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM6",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/FiveIsland_LostCave_Room5_Frlg/scripts.inc b/data/maps/FiveIsland_LostCave_Room5_Frlg/scripts.inc
new file mode 100644
index 000000000000..68ff52347a57
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room5_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+FiveIsland_LostCave_Room5_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/FiveIsland_LostCave_Room6_Frlg/map.json b/data/maps/FiveIsland_LostCave_Room6_Frlg/map.json
new file mode 100644
index 000000000000..e2d72098d1c6
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room6_Frlg/map.json
@@ -0,0 +1,51 @@
+{
+ "id": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM6",
+ "name": "FiveIsland_LostCave_Room6_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM6",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LOST_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 8,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM13",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM7",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_LostCave_Room6_Frlg/scripts.inc b/data/maps/FiveIsland_LostCave_Room6_Frlg/scripts.inc
new file mode 100644
index 000000000000..9988c1729206
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room6_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+FiveIsland_LostCave_Room6_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/FiveIsland_LostCave_Room7_Frlg/map.json b/data/maps/FiveIsland_LostCave_Room7_Frlg/map.json
new file mode 100644
index 000000000000..8f8db12878b3
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room7_Frlg/map.json
@@ -0,0 +1,51 @@
+{
+ "id": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM7",
+ "name": "FiveIsland_LostCave_Room7_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM7",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LOST_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 8,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM8",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_LostCave_Room7_Frlg/scripts.inc b/data/maps/FiveIsland_LostCave_Room7_Frlg/scripts.inc
new file mode 100644
index 000000000000..cbc53e9d439c
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room7_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+FiveIsland_LostCave_Room7_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/FiveIsland_LostCave_Room8_Frlg/map.json b/data/maps/FiveIsland_LostCave_Room8_Frlg/map.json
new file mode 100644
index 000000000000..aab2f7db1c06
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room8_Frlg/map.json
@@ -0,0 +1,51 @@
+{
+ "id": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM8",
+ "name": "FiveIsland_LostCave_Room8_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM8",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LOST_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 8,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM9",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM14",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_LostCave_Room8_Frlg/scripts.inc b/data/maps/FiveIsland_LostCave_Room8_Frlg/scripts.inc
new file mode 100644
index 000000000000..4876ae90159b
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room8_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+FiveIsland_LostCave_Room8_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/FiveIsland_LostCave_Room9_Frlg/map.json b/data/maps/FiveIsland_LostCave_Room9_Frlg/map.json
new file mode 100644
index 000000000000..0d492794efd9
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room9_Frlg/map.json
@@ -0,0 +1,51 @@
+{
+ "id": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM9",
+ "name": "FiveIsland_LostCave_Room9_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_LOST_CAVE_ROOM9",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LOST_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM10",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 8,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ROOM1",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_LostCave_Room9_Frlg/scripts.inc b/data/maps/FiveIsland_LostCave_Room9_Frlg/scripts.inc
new file mode 100644
index 000000000000..f9281c28378c
--- /dev/null
+++ b/data/maps/FiveIsland_LostCave_Room9_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+FiveIsland_LostCave_Room9_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/FiveIsland_Meadow_Frlg/map.json b/data/maps/FiveIsland_Meadow_Frlg/map.json
new file mode 100644
index 000000000000..3284af48683f
--- /dev/null
+++ b/data/maps/FiveIsland_Meadow_Frlg/map.json
@@ -0,0 +1,152 @@
+{
+ "id": "MAP_FIVE_ISLAND_MEADOW",
+ "name": "FiveIsland_Meadow_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_MEADOW",
+ "music": "MUS_RG_SEVII_ROUTE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FIVE_ISLE_MEADOW",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_FIVE_ISLAND",
+ "offset": 0,
+ "direction": "left"
+ },
+ {
+ "map": "MAP_FIVE_ISLAND_MEMORIAL_PILLAR",
+ "offset": 20,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_F",
+ "x": 18,
+ "y": 18,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "FiveIsland_Meadow_EventScript_Rocket3",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 17,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "FiveIsland_Meadow_EventScript_Rocket1",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 11,
+ "y": 27,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "FiveIsland_Meadow_EventScript_Rocket2",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_ROCKETS"
+ },
+ {
+ "local_id": "LOCALID_FIVE_ISLAND_MEADOW_BORDER_TREE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 8,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 19,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 12,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_Meadow_EventScript_ItemMaxPotion",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_MEADOW_MAX_POTION"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 3,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_Meadow_EventScript_ItemPPUp",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_MEADOW_PP_UP"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 12,
+ "y": 21,
+ "elevation": 0,
+ "dest_map": "MAP_FIVE_ISLAND_ROCKET_WAREHOUSE",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 21,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_Meadow_EventScript_WarehouseDoor"
+ }
+ ]
+}
diff --git a/data/maps/FiveIsland_Meadow_Frlg/scripts.inc b/data/maps/FiveIsland_Meadow_Frlg/scripts.inc
new file mode 100644
index 000000000000..407a925af1d3
--- /dev/null
+++ b/data/maps/FiveIsland_Meadow_Frlg/scripts.inc
@@ -0,0 +1,111 @@
+FiveIsland_Meadow_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, FiveIsland_Meadow_OnLoad
+ .byte 0
+
+FiveIsland_Meadow_OnLoad::
+ call_if_set FLAG_UNLOCKED_ROCKET_WAREHOUSE, FiveIsland_Meadow_EventScript_SetWarehouseDoorUnlocked
+ end
+
+FiveIsland_Meadow_EventScript_WarehouseDoor::
+ lockall
+ goto_if_set FLAG_UNLOCKED_ROCKET_WAREHOUSE, FiveIsland_Meadow_EventScript_WarehouseDoorAlreadyOpen
+ goto_if_set FLAG_LEARNED_YES_NAH_CHANSEY, FiveIsland_Meadow_EventScript_OpenWarehouseDoor
+ msgbox FiveIsland_Meadow_Text_EnteredPasswordAnotherNeeded
+ releaseall
+ end
+
+FiveIsland_Meadow_EventScript_OpenWarehouseDoor::
+ setflag FLAG_UNLOCKED_ROCKET_WAREHOUSE
+ message FiveIsland_Meadow_Text_EnteredPasswordDoorOpened
+ waitmessage
+ delay 60
+ call FiveIsland_Meadow_EventScript_SetWarehouseDoorUnlocked
+ special DrawWholeMapView
+ playse SE_PIN
+ waitse
+ releaseall
+ end
+
+FiveIsland_Meadow_EventScript_WarehouseDoorAlreadyOpen::
+ msgbox FiveIsland_Meadow_Text_WarehouseDoorAlreadyOpen
+ releaseall
+ end
+
+FiveIsland_Meadow_EventScript_SetWarehouseDoorUnlocked::
+ setmetatile 12, 21, METATILE_SeviiIslands45_RocketWarehouseDoor_Unlocked, 1
+ return
+
+FiveIsland_Meadow_EventScript_Rocket1::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_49, FiveIsland_Meadow_Text_Rocket1Intro, FiveIsland_Meadow_Text_Rocket1Defeat
+ msgbox FiveIsland_Meadow_Text_Rocket1PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_Meadow_EventScript_Rocket2::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_50, FiveIsland_Meadow_Text_Rocket2Intro, FiveIsland_Meadow_Text_Rocket2Defeat
+ msgbox FiveIsland_Meadow_Text_Rocket2PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_Meadow_EventScript_Rocket3::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_51, FiveIsland_Meadow_Text_Rocket3Intro, FiveIsland_Meadow_Text_Rocket3Defeat
+ msgbox FiveIsland_Meadow_Text_Rocket3PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+@ Unused
+FiveIsland_Meadow_Text_DoorNeedsTwoPasswords::
+ .string "とびらを あけるには\n"
+ .string "パスワードが 2つ いるようだ$"
+
+FiveIsland_Meadow_Text_EnteredPasswordAnotherNeeded::
+ .string "{PLAYER} entered a password.\p"
+ .string "“GOLDEEN need log.”\p"
+ .string "… … … … … …\p"
+ .string "Another password is needed to\n"
+ .string "open the door…$"
+
+FiveIsland_Meadow_Text_EnteredPasswordDoorOpened::
+ .string "{PLAYER} entered two passwords.\p"
+ .string "“GOLDEEN need log.”\n"
+ .string "“Yes, nah, CHANSEY.”\p"
+ .string "… … … … … …\p"
+ .string "The WAREHOUSE's door opened!$"
+
+FiveIsland_Meadow_Text_WarehouseDoorAlreadyOpen::
+ .string "The WAREHOUSE's door is already\n"
+ .string "open.$"
+
+FiveIsland_Meadow_Text_Rocket1Intro::
+ .string "This area's strictly off-limits!\n"
+ .string "Out, out!$"
+
+FiveIsland_Meadow_Text_Rocket1Defeat::
+ .string "Is this for real?$"
+
+FiveIsland_Meadow_Text_Rocket1PostBattle::
+ .string "You don't have any business here!\n"
+ .string "Go home!$"
+
+FiveIsland_Meadow_Text_Rocket2Intro::
+ .string "There's nothing past here except\n"
+ .string "our WAREHOUSE.\p"
+ .string "So what brings you here?$"
+
+FiveIsland_Meadow_Text_Rocket2Defeat::
+ .string "That wasn't supposed to happen…$"
+
+FiveIsland_Meadow_Text_Rocket2PostBattle::
+ .string "You're wanting to know what's inside\n"
+ .string "this WAREHOUSE?\p"
+ .string "It's better you didn't know.\n"
+ .string "For your own sake, I mean.$"
+
+FiveIsland_Meadow_Text_Rocket3Intro::
+ .string "You'd be wasting time even if you\n"
+ .string "were to get by me.$"
+
+FiveIsland_Meadow_Text_Rocket3Defeat::
+ .string "Oh, that makes me furious!$"
+
+FiveIsland_Meadow_Text_Rocket3PostBattle::
+ .string "You won't be able to get in without\n"
+ .string "the passwords anyway.$"
+
diff --git a/data/maps/FiveIsland_MemorialPillar_Frlg/map.json b/data/maps/FiveIsland_MemorialPillar_Frlg/map.json
new file mode 100644
index 000000000000..095bd6b68054
--- /dev/null
+++ b/data/maps/FiveIsland_MemorialPillar_Frlg/map.json
@@ -0,0 +1,153 @@
+{
+ "id": "MAP_FIVE_ISLAND_MEMORIAL_PILLAR",
+ "name": "FiveIsland_MemorialPillar_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_MEMORIAL_PILLAR",
+ "music": "MUS_RG_SEVII_ROUTE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MEMORIAL_PILLAR",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_FIVE_ISLAND_MEADOW",
+ "offset": -20,
+ "direction": "left"
+ }
+ ],
+ "object_events": [
+ {
+ "local_id": "LOCALID_MEMORIAL_MAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 8,
+ "y": 44,
+ "elevation": 4,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_MemorialPillar_EventScript_MemorialMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 12,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "FiveIsland_MemorialPillar_EventScript_Milo",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 14,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_UP_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "FiveIsland_MemorialPillar_EventScript_Chaz",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 17,
+ "y": 31,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "FiveIsland_MemorialPillar_EventScript_Harold",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 4,
+ "y": 47,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_MemorialPillar_EventScript_ItemMetalCoat",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_MEMORIAL_PILLAR_METAL_COAT"
+ }
+ ],
+ "warp_events": [
+
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 43,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "FiveIsland_MemorialPillar_EventScript_Memorial"
+ },
+ {
+ "type": "hidden_item",
+ "x": 8,
+ "y": 52,
+ "elevation": 3,
+ "item": "ITEM_BIG_PEARL",
+ "flag": "FLAG_HIDDEN_ITEM_FIVE_ISLAND_MEMORIAL_PILLAR_BIG_PEARL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 15,
+ "y": 7,
+ "elevation": 3,
+ "item": "ITEM_RAZZ_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_FIVE_ISLAND_MEMORIAL_PILLAR_RAZZ_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 17,
+ "y": 22,
+ "elevation": 3,
+ "item": "ITEM_SITRUS_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_FIVE_ISLAND_MEMORIAL_PILLAR_SITRUS_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 14,
+ "y": 25,
+ "elevation": 3,
+ "item": "ITEM_BLUK_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_FIVE_ISLAND_MEMORIAL_PILLAR_BLUK_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/FiveIsland_MemorialPillar_Frlg/scripts.inc b/data/maps/FiveIsland_MemorialPillar_Frlg/scripts.inc
new file mode 100644
index 000000000000..1bbf96cb5a24
--- /dev/null
+++ b/data/maps/FiveIsland_MemorialPillar_Frlg/scripts.inc
@@ -0,0 +1,182 @@
+FiveIsland_MemorialPillar_Frlg_MapScripts::
+ .byte 0
+
+FiveIsland_MemorialPillar_EventScript_MemorialMan::
+ lock
+ goto_if_set FLAG_GOT_TM42_AT_MEMORIAL_PILLAR, FiveIsland_MemorialPillar_EventScript_AlreadyGotTM42
+ goto_if_set FLAG_NO_ROOM_FOR_TM42_AT_MEMORIAL_PILLAR, FiveIsland_MemorialPillar_EventScript_ReturnedForTM42
+ msgbox FiveIsland_MemorialPillar_Text_ScrubScrub
+ closemessage
+ applymovement LOCALID_MEMORIAL_MAN, Common_Movement_FacePlayer
+ waitmovement 0
+ delay 45
+ msgbox FiveIsland_MemorialPillar_Text_YourMonsLookHealthy
+ applymovement LOCALID_MEMORIAL_MAN, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ msgbox FiveIsland_MemorialPillar_Text_ThisIsWhereIBuriedMyOnix
+ release
+ end
+
+FiveIsland_MemorialPillar_EventScript_AlreadyGotTM42::
+ msgbox FiveIsland_MemorialPillar_Text_ScrubScrubTectonix
+ release
+ end
+
+FiveIsland_MemorialPillar_EventScript_ReturnedForTM42::
+ msgbox FiveIsland_MemorialPillar_Text_StillHaveThingAsMyThanks
+ giveitem ITEM_TM42
+ goto_if_eq VAR_RESULT, FALSE, FiveIsland_MemorialPillar_EventScript_NoRoomForTM42
+ call FiveIsland_MemorialPillar_EventScript_ReceivedTM42
+ release
+ end
+
+FiveIsland_MemorialPillar_EventScript_Memorial::
+ lockall
+ goto_if_set FLAG_GOT_TM42_AT_MEMORIAL_PILLAR, FiveIsland_MemorialPillar_EventScript_MemorialLemonadeAlreadyPlaced
+ goto_if_set FLAG_NO_ROOM_FOR_TM42_AT_MEMORIAL_PILLAR, FiveIsland_MemorialPillar_EventScript_MemorialLemonadeAlreadyPlaced
+ msgbox FiveIsland_MemorialPillar_Text_HereLiesTectonixLemonadeOffering
+ checkitem ITEM_LEMONADE
+ goto_if_eq VAR_RESULT, TRUE, FiveIsland_MemorialPillar_EventScript_AskPlaceLemonade
+ releaseall
+ end
+
+FiveIsland_MemorialPillar_EventScript_AskPlaceLemonade::
+ msgbox FiveIsland_MemorialPillar_Text_LeaveAnotherLemonadeOffering, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, FiveIsland_MemorialPillar_EventScript_PlaceLemonade
+ releaseall
+ end
+
+FiveIsland_MemorialPillar_EventScript_PlaceLemonade::
+ removeitem ITEM_LEMONADE
+ msgbox FiveIsland_MemorialPillar_Text_PlacedCanOfLemonade
+ closemessage
+ applymovement LOCALID_MEMORIAL_MAN, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ delay 45
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox FiveIsland_MemorialPillar_Text_ThankYouPleaseTakeThis
+ giveitem ITEM_TM42
+ goto_if_eq VAR_RESULT, FALSE, FiveIsland_MemorialPillar_EventScript_NoRoomForTM42
+ call FiveIsland_MemorialPillar_EventScript_ReceivedTM42
+ releaseall
+ end
+
+FiveIsland_MemorialPillar_EventScript_ReceivedTM42::
+ msgbox FiveIsland_MemorialPillar_Text_BeGoodToYourMonsToo
+ applymovement LOCALID_MEMORIAL_MAN, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ setflag FLAG_GOT_TM42_AT_MEMORIAL_PILLAR
+ return
+
+FiveIsland_MemorialPillar_EventScript_NoRoomForTM42::
+ setflag FLAG_NO_ROOM_FOR_TM42_AT_MEMORIAL_PILLAR
+ msgbox FiveIsland_MemorialPillar_Text_DontHaveRoomForIt
+ releaseall
+ end
+
+FiveIsland_MemorialPillar_EventScript_MemorialLemonadeAlreadyPlaced::
+ msgbox FiveIsland_MemorialPillar_Text_HereLiesTectonix
+ releaseall
+ end
+
+FiveIsland_MemorialPillar_Text_MiloIntro::
+ .string "I'm the eldest of the BIRD\n"
+ .string "BROTHERS.\p"
+ .string "The best thing about birds…\n"
+ .string "It has to be the beak.$"
+
+FiveIsland_MemorialPillar_Text_MiloDefeat::
+ .string "Oh, so sharp!$"
+
+FiveIsland_MemorialPillar_Text_MiloPostBattle::
+ .string "You can fly to FOUR ISLAND from\n"
+ .string "here.$"
+
+FiveIsland_MemorialPillar_Text_ChazIntro::
+ .string "I'm the middle kid of the BIRD\n"
+ .string "BROTHERS.\p"
+ .string "The best thing about birds…\n"
+ .string "It has to be the wings.$"
+
+FiveIsland_MemorialPillar_Text_ChazDefeat::
+ .string "Flap, flap!$"
+
+FiveIsland_MemorialPillar_Text_ChazPostBattle::
+ .string "There was a really somber guy\n"
+ .string "over that way.$"
+
+FiveIsland_MemorialPillar_Text_HaroldIntro::
+ .string "I'm the youngest of the BIRD\n"
+ .string "BROTHERS.\p"
+ .string "The best thing about birds…\n"
+ .string "It has to be the down.$"
+
+FiveIsland_MemorialPillar_Text_HaroldDefeat::
+ .string "Down is so comfy…\n"
+ .string "It makes me drowsy…$"
+
+FiveIsland_MemorialPillar_Text_HaroldPostBattle::
+ .string "It fills me with happiness when\n"
+ .string "bird POKéMON beg playfully…$"
+
+FiveIsland_MemorialPillar_Text_ScrubScrub::
+ .string "Scrub, scrub…$"
+
+FiveIsland_MemorialPillar_Text_YourMonsLookHealthy::
+ .string "Hello…\n"
+ .string "Your POKéMON look healthy…$"
+
+FiveIsland_MemorialPillar_Text_ThisIsWhereIBuriedMyOnix::
+ .string "This is where I buried my ONIX…\n"
+ .string "It was named TECTONIX…$"
+
+FiveIsland_MemorialPillar_Text_HereLiesTectonixLemonadeOffering::
+ .string "“Here lies TECTONIX” is engraved\n"
+ .string "on a boulder.\p"
+ .string "There is a LEMONADE placed as an\n"
+ .string "offering in front of the grave.$"
+
+FiveIsland_MemorialPillar_Text_LeaveAnotherLemonadeOffering::
+ .string "Would you like to leave another\n"
+ .string "LEMONADE as an offering?$"
+
+FiveIsland_MemorialPillar_Text_PlacedCanOfLemonade::
+ .string "{PLAYER} placed a can of LEMONADE\n"
+ .string "in front of the grave.$"
+
+FiveIsland_MemorialPillar_Text_ThankYouPleaseTakeThis::
+ .string "Th-thank you…\p"
+ .string "That was my TECTONIX's favorite\n"
+ .string "drink…\p"
+ .string "I don't even know you, but your\n"
+ .string "act of kindness…\p"
+ .string "It's uplifted me a little.\p"
+ .string "Can you please take this as my\n"
+ .string "thanks?$"
+
+FiveIsland_MemorialPillar_Text_BeGoodToYourMonsToo::
+ .string "Please be good to your POKéMON,\n"
+ .string "too.$"
+
+FiveIsland_MemorialPillar_Text_DontHaveRoomForIt::
+ .string "If you don't have room for it,\n"
+ .string "I'll hold it for you till next time.$"
+
+FiveIsland_MemorialPillar_Text_StillHaveThingAsMyThanks::
+ .string "Oh, it's you from that time…\p"
+ .string "I still have that thing I wanted\n"
+ .string "you to have as my thanks.$"
+
+FiveIsland_MemorialPillar_Text_ScrubScrubTectonix::
+ .string "Scrub, scrub…\p"
+ .string "… … …\n"
+ .string "TECTONIX…$"
+
+FiveIsland_MemorialPillar_Text_HereLiesTectonix::
+ .string "Boulders and rocks are neatly piled\n"
+ .string "up as a cairn.\p"
+ .string "“Here lies TECTONIX” is engraved\n"
+ .string "on a boulder.$"
+
diff --git a/data/maps/FiveIsland_PokemonCenter_1F_Frlg/map.json b/data/maps/FiveIsland_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..eb37b08ae49e
--- /dev/null
+++ b/data/maps/FiveIsland_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,109 @@
+{
+ "id": "MAP_FIVE_ISLAND_POKEMON_CENTER_1F",
+ "name": "FiveIsland_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FIVE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_FIVE_ISLAND_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 9,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_PokemonCenter_1F_EventScript_CooltrainerF",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHEF",
+ "x": 4,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_PokemonCenter_1F_EventScript_Chef",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_PokemonCenter_1F_EventScript_PokemonJournal",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 3,
+ "y": 1,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_PokemonCenter_1F_EventScript_PokemonJournal",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_FIVE_ISLAND_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/FiveIsland_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..59e1aa1437b3
--- /dev/null
+++ b/data/maps/FiveIsland_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,34 @@
+FiveIsland_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, FiveIsland_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ .byte 0
+
+FiveIsland_PokemonCenter_1F_OnTransition::
+ setrespawn HEAL_LOCATION_FIVE_ISLAND
+ end
+
+FiveIsland_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+FiveIsland_PokemonCenter_1F_EventScript_Chef::
+ msgbox FiveIsland_PokemonCenter_1F_Text_OnMyWayToPrepareMeal, MSGBOX_NPC
+ end
+
+FiveIsland_PokemonCenter_1F_EventScript_CooltrainerF::
+ msgbox FiveIsland_PokemonCenter_1F_Text_YoureOnQuestToCatchEveryMon, MSGBOX_NPC
+ end
+
+FiveIsland_PokemonCenter_1F_Text_OnMyWayToPrepareMeal::
+ .string "I'm on my way to prepare a meal\n"
+ .string "for a certain high-society person.$"
+
+FiveIsland_PokemonCenter_1F_Text_YoureOnQuestToCatchEveryMon::
+ .string "You're on a quest to catch every\n"
+ .string "single kind of POKéMON?\p"
+ .string "…How incredible. Please tell me if\n"
+ .string "you catch a strong one!$"
+
diff --git a/data/maps/FiveIsland_PokemonCenter_2F_Frlg/map.json b/data/maps/FiveIsland_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..7a36ade18cd9
--- /dev/null
+++ b/data/maps/FiveIsland_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_FIVE_ISLAND_POKEMON_CENTER_2F",
+ "name": "FiveIsland_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FIVE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_FIVE_ISLAND_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FiveIsland_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/FiveIsland_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..37e2a389b94c
--- /dev/null
+++ b/data/maps/FiveIsland_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+FiveIsland_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+FiveIsland_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+FiveIsland_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+FiveIsland_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/FiveIsland_ResortGorgeous_Frlg/map.json b/data/maps/FiveIsland_ResortGorgeous_Frlg/map.json
new file mode 100644
index 000000000000..833b5cb4feff
--- /dev/null
+++ b/data/maps/FiveIsland_ResortGorgeous_Frlg/map.json
@@ -0,0 +1,208 @@
+{
+ "id": "MAP_FIVE_ISLAND_RESORT_GORGEOUS",
+ "name": "FiveIsland_ResortGorgeous_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_RESORT_GORGEOUS",
+ "music": "MUS_RG_SEVII_ROUTE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_RESORT_GORGEOUS",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_FIVE_ISLAND_WATER_LABYRINTH",
+ "offset": -48,
+ "direction": "down"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 44,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "FiveIsland_ResortGorgeous_EventScript_Daisy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 33,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "FiveIsland_ResortGorgeous_EventScript_Celina",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 12,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "FiveIsland_ResortGorgeous_EventScript_Rayna",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 23,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "FiveIsland_ResortGorgeous_EventScript_Jacki",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 33,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "FiveIsland_ResortGorgeous_EventScript_Gillian",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 33,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_UP_LEFT",
+ "movement_range_x": 10,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "FiveIsland_ResortGorgeous_EventScript_Destin",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_WATER",
+ "x": 56,
+ "y": 7,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "FiveIsland_ResortGorgeous_EventScript_Toby",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_RESORT_GORGEOUS_SELPHY",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 39,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_RESORT_GORGEOUS_SELPHY"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 64,
+ "y": 13,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_LOST_CAVE_ENTRANCE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 39,
+ "y": 8,
+ "elevation": 0,
+ "dest_map": "MAP_FIVE_ISLAND_RESORT_GORGEOUS_HOUSE",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 10,
+ "y": 7,
+ "elevation": 3,
+ "item": "ITEM_NEST_BALL",
+ "flag": "FLAG_HIDDEN_ITEM_FIVE_ISLAND_RESORT_GORGEOUS_NEST_BALL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 27,
+ "y": 11,
+ "elevation": 3,
+ "item": "ITEM_STARDUST",
+ "flag": "FLAG_HIDDEN_ITEM_FIVE_ISLAND_RESORT_GORGEOUS_STARDUST",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 40,
+ "y": 12,
+ "elevation": 3,
+ "item": "ITEM_STAR_PIECE",
+ "flag": "FLAG_HIDDEN_ITEM_FIVE_ISLAND_RESORT_GORGEOUS_STAR_PIECE",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 27,
+ "y": 5,
+ "elevation": 3,
+ "item": "ITEM_STARDUST",
+ "flag": "FLAG_HIDDEN_ITEM_FIVE_ISLAND_RESORT_GORGEOUS_STARDUST_2",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 42,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_ResortGorgeous_EventScript_SelphysHouseSign"
+ }
+ ]
+}
diff --git a/data/maps/FiveIsland_ResortGorgeous_Frlg/scripts.inc b/data/maps/FiveIsland_ResortGorgeous_Frlg/scripts.inc
new file mode 100644
index 000000000000..e59845a11e0f
--- /dev/null
+++ b/data/maps/FiveIsland_ResortGorgeous_Frlg/scripts.inc
@@ -0,0 +1,138 @@
+FiveIsland_ResortGorgeous_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, FiveIsland_ResortGorgeous_OnWarp
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, FiveIsland_ResortGorgeous_OnFrame
+ .byte 0
+
+FiveIsland_ResortGorgeous_OnWarp::
+ map_script_2 VAR_MAP_SCENE_FIVE_ISLAND_RESORT_GORGEOUS, 1, FiveIsland_ResortGorgeous_EventScript_TurnPlayerNorth
+ .2byte 0
+
+FiveIsland_ResortGorgeous_EventScript_TurnPlayerNorth::
+ turnobject LOCALID_PLAYER, DIR_NORTH
+ end
+
+FiveIsland_ResortGorgeous_OnFrame::
+ map_script_2 VAR_MAP_SCENE_FIVE_ISLAND_RESORT_GORGEOUS, 1, FiveIsland_ResortGorgeous_EventScript_SelphyReturnHomeScene
+ .2byte 0
+
+FiveIsland_ResortGorgeous_EventScript_SelphyReturnHomeScene::
+ lockall
+ textcolor NPC_TEXT_COLOR_FEMALE
+ msgbox FiveIsland_ResortGorgeous_Text_SelphyThanksYouMayGoNow
+ closemessage
+ applymovement LOCALID_RESORT_GORGEOUS_SELPHY, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ opendoor 39, 8
+ waitdooranim
+ applymovement LOCALID_RESORT_GORGEOUS_SELPHY, FiveIsland_ResortGorgeous_Movement_SelphyEnterHome
+ waitmovement 0
+ closedoor 39, 8
+ waitdooranim
+ removeobject LOCALID_RESORT_GORGEOUS_SELPHY
+ clearflag FLAG_HIDE_RESORT_GORGEOUS_INSIDE_SELPHY
+ setvar VAR_MAP_SCENE_FIVE_ISLAND_RESORT_GORGEOUS, 2
+ releaseall
+ end
+
+FiveIsland_ResortGorgeous_Movement_SelphyEnterHome::
+ walk_up
+ set_invisible
+ step_end
+
+FiveIsland_ResortGorgeous_EventScript_SelphysHouseSign::
+ msgbox FiveIsland_ResortGorgeous_Text_SelphysHouse, MSGBOX_SIGN
+ end
+
+FiveIsland_ResortGorgeous_Text_DaisyIntro::
+ .string "With these hands, I will create\n"
+ .string "my victory!$"
+
+FiveIsland_ResortGorgeous_Text_DaisyDefeat::
+ .string "The shame of this…\n"
+ .string "I'm red-faced…$"
+
+FiveIsland_ResortGorgeous_Text_DaisyPostBattle::
+ .string "Uh-oh, my paint tubes have\n"
+ .string "scattered everywhere!$"
+
+FiveIsland_ResortGorgeous_Text_CelinaIntro::
+ .string "Excuse me!\n"
+ .string "I'm trying to paint.\l"
+ .string "Please keep out of my sight!$"
+
+FiveIsland_ResortGorgeous_Text_CelinaDefeat::
+ .string "This loss…\n"
+ .string "I feel like I'm whiting out…$"
+
+FiveIsland_ResortGorgeous_Text_CelinaPostBattle::
+ .string "GILLIAN?\n"
+ .string "Please tilt your head slightly…\l"
+ .string "There! That's the look I want!$"
+
+FiveIsland_ResortGorgeous_Text_RaynaIntro::
+ .string "Hmm…\n"
+ .string "The angle, it is not quite there…$"
+
+FiveIsland_ResortGorgeous_Text_RaynaDefeat::
+ .string "Oh…\n"
+ .string "My feelings, they are blue…$"
+
+FiveIsland_ResortGorgeous_Text_RaynaPostBattle::
+ .string "The sky and the sea…\n"
+ .string "They are so fickle.\p"
+ .string "Their changing expressions make\n"
+ .string "them difficult to capture.$"
+
+FiveIsland_ResortGorgeous_Text_JackiIntro::
+ .string "I am visiting my friend's retreat,\n"
+ .string "if you must know.$"
+
+FiveIsland_ResortGorgeous_Text_JackiDefeat::
+ .string "Oh, my, so strong.$"
+
+FiveIsland_ResortGorgeous_Text_JackiPostBattle::
+ .string "I find it pleasurable to leisurely\n"
+ .string "battle in the gentle sea breeze.$"
+
+FiveIsland_ResortGorgeous_Text_GillianIntro::
+ .string "I'm thinking of having a pool\n"
+ .string "made specially for POKéMON.$"
+
+FiveIsland_ResortGorgeous_Text_GillianDefeat::
+ .string "Oh, my goodness gracious!$"
+
+FiveIsland_ResortGorgeous_Text_GillianPostBattle::
+ .string "A pool would be nice, but I must\n"
+ .string "say, a sun-room may be sublime.$"
+
+FiveIsland_ResortGorgeous_Text_DestinIntro::
+ .string "I'm a good runner.\n"
+ .string "I'm really fast!$"
+
+FiveIsland_ResortGorgeous_Text_DestinDefeat::
+ .string "Oops!\n"
+ .string "I rushed things!$"
+
+FiveIsland_ResortGorgeous_Text_DestinPostBattle::
+ .string "When I run with the wind, it feels\n"
+ .string "like I could fly!$"
+
+FiveIsland_ResortGorgeous_Text_TobyIntro::
+ .string "I say, this marine life here at\n"
+ .string "this resort agrees with me.$"
+
+FiveIsland_ResortGorgeous_Text_TobyDefeat::
+ .string "That's a shocker!\n"
+ .string "You must be joking.$"
+
+FiveIsland_ResortGorgeous_Text_TobyPostBattle::
+ .string "Getting so serious over this…\n"
+ .string "How nonsensical.$"
+
+FiveIsland_ResortGorgeous_Text_SelphyThanksYouMayGoNow::
+ .string "SELPHY: Thank you.\p"
+ .string "You may go now.$"
+
+FiveIsland_ResortGorgeous_Text_SelphysHouse::
+ .string "SELPHY'S HOUSE$"
+
diff --git a/data/maps/FiveIsland_ResortGorgeous_House_Frlg/map.json b/data/maps/FiveIsland_ResortGorgeous_House_Frlg/map.json
new file mode 100644
index 000000000000..b0293bc1462b
--- /dev/null
+++ b/data/maps/FiveIsland_ResortGorgeous_House_Frlg/map.json
@@ -0,0 +1,78 @@
+{
+ "id": "MAP_FIVE_ISLAND_RESORT_GORGEOUS_HOUSE",
+ "name": "FiveIsland_ResortGorgeous_House_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_RESORT_GORGEOUS_HOUSE",
+ "music": "MUS_RG_SEVII_45",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_RESORT_GORGEOUS",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_RESORT_GORGEOUS_HOUSE_SELPHY",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_ResortGorgeous_House_EventScript_Selphy",
+ "flag": "FLAG_HIDE_RESORT_GORGEOUS_INSIDE_SELPHY"
+ },
+ {
+ "local_id": "LOCALID_RESORT_GORGEOUS_HOUSE_BUTLER",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_ResortGorgeous_House_EventScript_Butler",
+ "flag": "FLAG_HIDE_SELPHYS_BUTLER"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_RESORT_GORGEOUS",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "FiveIsland_ResortGorgeous_House_EventScript_PokemonJournal"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "FiveIsland_ResortGorgeous_House_EventScript_PokemonJournal"
+ }
+ ]
+}
diff --git a/data/maps/FiveIsland_ResortGorgeous_House_Frlg/scripts.inc b/data/maps/FiveIsland_ResortGorgeous_House_Frlg/scripts.inc
new file mode 100644
index 000000000000..92d060ddc5bd
--- /dev/null
+++ b/data/maps/FiveIsland_ResortGorgeous_House_Frlg/scripts.inc
@@ -0,0 +1,210 @@
+.equ SHOWN_REQUESTED_MON, FLAG_TEMP_2
+
+FiveIsland_ResortGorgeous_House_Frlg_MapScripts::
+ .byte 0
+
+FiveIsland_ResortGorgeous_House_EventScript_Selphy::
+ lock
+ faceplayer
+ goto_if_set SHOWN_REQUESTED_MON, FiveIsland_ResortGorgeous_House_EventScript_JustFulfilledRequest
+ goto_if_eq VAR_RESORT_GORGEOUS_REQUESTED_MON, 0xFFFF, FiveIsland_ResortGorgeous_House_EventScript_RequestTookTooLong
+ goto_if_ne VAR_RESORT_GORGEOUS_REQUESTED_MON, SPECIES_NONE, FiveIsland_ResortGorgeous_House_EventScript_CheckForRequestedMon
+ msgbox FiveIsland_ResortGorgeous_House_Text_PleaseHearMyWish
+ goto FiveIsland_ResortGorgeous_House_EventScript_RequestMon
+ end
+
+FiveIsland_ResortGorgeous_House_EventScript_RequestMon::
+ special SampleResortGorgeousMonAndReward
+ msgbox FiveIsland_ResortGorgeous_House_Text_WishToSeeMonPlease
+ release
+ end
+
+FiveIsland_ResortGorgeous_House_EventScript_RequestTookTooLong::
+ msgbox FiveIsland_ResortGorgeous_House_Text_OhImTiredOfWaiting
+ goto FiveIsland_ResortGorgeous_House_EventScript_RequestMon
+ end
+
+FiveIsland_ResortGorgeous_House_EventScript_CheckForRequestedMon::
+ copyvar VAR_0x8004, VAR_RESORT_GORGEOUS_REQUESTED_MON
+ specialvar VAR_RESULT, DoesPlayerPartyContainSpecies
+ goto_if_eq VAR_RESULT, TRUE, FiveIsland_ResortGorgeous_House_EventScript_ShowRequestedMon
+ goto FiveIsland_ResortGorgeous_House_EventScript_RequestMon
+ end
+
+FiveIsland_ResortGorgeous_House_EventScript_ShowRequestedMon::
+ special SampleResortGorgeousMonAndReward
+ msgbox FiveIsland_ResortGorgeous_House_Text_MonYouCaughtForMeThankYou
+ addobject LOCALID_RESORT_GORGEOUS_HOUSE_BUTLER
+ applymovement LOCALID_RESORT_GORGEOUS_HOUSE_BUTLER, FiveIsland_ResortGorgeous_House_Movement_ButlerEnter
+ waitmovement 0
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox FiveIsland_ResortGorgeous_House_Text_ButlerYesMyLady
+ applymovement LOCALID_RESORT_GORGEOUS_HOUSE_SELPHY, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ textcolor NPC_TEXT_COLOR_FEMALE
+ msgbox FiveIsland_ResortGorgeous_House_Text_SelphyGiveTokenOfAppreciation
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox FiveIsland_ResortGorgeous_House_Text_ButlerIShallDoAsYouBid
+ closemessage
+ call_if_eq VAR_FACING, DIR_NORTH, FiveIsland_ResortGorgeous_House_EventScript_ButlerApproachPlayerNorth
+ call_if_eq VAR_FACING, DIR_SOUTH, FiveIsland_ResortGorgeous_House_EventScript_ButlerApproachPlayerSouth
+ call_if_eq VAR_FACING, DIR_EAST, FiveIsland_ResortGorgeous_House_EventScript_ButlerApproachPlayerEast
+ call_if_eq VAR_FACING, DIR_WEST, FiveIsland_ResortGorgeous_House_EventScript_ButlerApproachPlayerWest
+ copyobjectxytoperm LOCALID_RESORT_GORGEOUS_HOUSE_BUTLER
+ msgbox FiveIsland_ResortGorgeous_House_Text_ButlerPleaseAcceptThisAsHerThanks
+ giveitem VAR_RESORT_GORGEOUS_REWARD
+ goto_if_eq VAR_RESULT, FALSE, FiveIsland_ResortGorgeous_House_EventScript_NoRoomForReward
+ setflag SHOWN_REQUESTED_MON
+ setvar VAR_RESORT_GORGEOUS_REQUESTED_MON, SPECIES_NONE
+ release
+ end
+
+FiveIsland_ResortGorgeous_House_EventScript_ButlerApproachPlayerNorth::
+ applymovement LOCALID_RESORT_GORGEOUS_HOUSE_SELPHY, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_RESORT_GORGEOUS_HOUSE_BUTLER, FiveIsland_ResortGorgeous_House_Movement_ButlerApproachPlayerNorth
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ return
+
+FiveIsland_ResortGorgeous_House_EventScript_ButlerApproachPlayerSouth::
+ applymovement LOCALID_RESORT_GORGEOUS_HOUSE_BUTLER, FiveIsland_ResortGorgeous_House_Movement_ButlerApproachPlayerSouth
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ return
+
+FiveIsland_ResortGorgeous_House_EventScript_ButlerApproachPlayerEast::
+ applymovement LOCALID_RESORT_GORGEOUS_HOUSE_SELPHY, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_RESORT_GORGEOUS_HOUSE_BUTLER, FiveIsland_ResortGorgeous_House_Movement_ButlerApproachPlayerEast
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ return
+
+FiveIsland_ResortGorgeous_House_EventScript_ButlerApproachPlayerWest::
+ applymovement LOCALID_RESORT_GORGEOUS_HOUSE_BUTLER, FiveIsland_ResortGorgeous_House_Movement_ButlerApproachPlayerWest
+ waitmovement 0
+ return
+
+FiveIsland_ResortGorgeous_House_EventScript_NoRoomForReward::
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox FiveIsland_ResortGorgeous_House_Text_ButlerBagAppearsToBeFull
+ textcolor NPC_TEXT_COLOR_FEMALE
+ msgbox FiveIsland_ResortGorgeous_House_Text_OhHowDisappointing
+ setflag SHOWN_REQUESTED_MON
+ setvar VAR_RESORT_GORGEOUS_REQUESTED_MON, SPECIES_NONE
+ release
+ end
+
+FiveIsland_ResortGorgeous_House_EventScript_JustFulfilledRequest::
+ msgbox FiveIsland_ResortGorgeous_House_Text_SelphyWishYouBestOfLuck
+ release
+ end
+
+FiveIsland_ResortGorgeous_House_Movement_ButlerApproachPlayerNorth::
+ walk_left
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ walk_down
+ walk_in_place_faster_right
+ step_end
+
+FiveIsland_ResortGorgeous_House_Movement_ButlerApproachPlayerSouth::
+ walk_left
+ walk_left
+ walk_in_place_faster_down
+ step_end
+
+FiveIsland_ResortGorgeous_House_Movement_ButlerApproachPlayerEast::
+ walk_left
+ walk_left
+ walk_left
+ walk_down
+ step_end
+
+@ Very odd. If the player is talking to Selphy facing West, then the player has clipped through the table
+@ In this case rather than approach the player the Butler walks up, which clips the Butler into a wall
+FiveIsland_ResortGorgeous_House_Movement_ButlerApproachPlayerWest::
+ walk_up
+ step_end
+
+FiveIsland_ResortGorgeous_House_Movement_ButlerEnter::
+ walk_in_place_down
+ step_end
+
+@ Addressed as "Sebastian" but speaks only as "Butler"
+FiveIsland_ResortGorgeous_House_EventScript_Butler::
+ msgbox FiveIsland_ResortGorgeous_House_Text_LadySelphySmileHasBrillianceOfSun, MSGBOX_NPC
+ end
+
+FiveIsland_ResortGorgeous_House_Text_PleaseHearMyWish::
+ .string "SELPHY: Oh?\n"
+ .string "Do I know you from somewhere?\p"
+ .string "Oh, but that doesn't matter.\p"
+ .string "I am exquisitely bored.\n"
+ .string "Please, hear my wish.$"
+
+FiveIsland_ResortGorgeous_House_Text_WishToSeeMonPlease::
+ .string "I wish to see a POKéMON.\n"
+ .string "A darling {STR_VAR_1}.\p"
+ .string "I want to see one right away.\n"
+ .string "Please, make my wish come true.$"
+
+FiveIsland_ResortGorgeous_House_Text_OhImTiredOfWaiting::
+ .string "SELPHY: Oh, I'm tired of this.\n"
+ .string "I'm tired of waiting for you.\p"
+ .string "I'll forgive you this time, but\n"
+ .string "please don't fail me next time.$"
+
+FiveIsland_ResortGorgeous_House_Text_MonYouCaughtForMeThankYou::
+ .string "SELPHY: Oh, hello, there.\p"
+ .string "Oh, my gracious. That must be the\n"
+ .string "{STR_VAR_1} you caught for me.\p"
+ .string "Giggle…\n"
+ .string "I see a resemblance to you.\p"
+ .string "Thank you so kindly.\p"
+ .string "… … … … … …\n"
+ .string "Is something the matter?\p"
+ .string "You may leave.\p"
+ .string "… … … … … …\n"
+ .string "Oh, fine. I understand now.\p"
+ .string "SEBASTIAN!\n"
+ .string "I need you here this instant!$"
+
+FiveIsland_ResortGorgeous_House_Text_ButlerYesMyLady::
+ .string "Butler: Yes, my lady.$"
+
+FiveIsland_ResortGorgeous_House_Text_SelphyGiveTokenOfAppreciation::
+ .string "SELPHY: See to it that this person\n"
+ .string "is given a token of appreciation.$"
+
+FiveIsland_ResortGorgeous_House_Text_ButlerIShallDoAsYouBid::
+ .string "Butler: I shall do as you bid,\n"
+ .string "my lady.$"
+
+FiveIsland_ResortGorgeous_House_Text_ButlerPleaseAcceptThisAsHerThanks::
+ .string "Butler: I sincerely thank you for\n"
+ .string "pleasing Lady SELPHY.\p"
+ .string "Please accept this as her thanks…$"
+
+FiveIsland_ResortGorgeous_House_Text_ButlerBagAppearsToBeFull::
+ .string "Butler: Your BAG appears to be\n"
+ .string "unfortunately full.$"
+
+FiveIsland_ResortGorgeous_House_Text_OhHowDisappointing::
+ .string "Oh…\n"
+ .string "How disappointing.$"
+
+FiveIsland_ResortGorgeous_House_Text_SelphyWishYouBestOfLuck::
+ .string "SELPHY: I wish you the best of\n"
+ .string "luck.$"
+
+FiveIsland_ResortGorgeous_House_Text_LadySelphySmileHasBrillianceOfSun::
+ .string "Butler: The smile of Lady SELPHY\n"
+ .string "has the brilliance of the sun.\p"
+ .string "Please, I beg you to bring joy\n"
+ .string "to Lady SELPHY.$"
+
diff --git a/data/maps/FiveIsland_RocketWarehouse_Frlg/map.json b/data/maps/FiveIsland_RocketWarehouse_Frlg/map.json
new file mode 100644
index 000000000000..03b7bcac012d
--- /dev/null
+++ b/data/maps/FiveIsland_RocketWarehouse_Frlg/map.json
@@ -0,0 +1,408 @@
+{
+ "id": "MAP_FIVE_ISLAND_ROCKET_WAREHOUSE",
+ "name": "FiveIsland_RocketWarehouse_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_ROCKET_WAREHOUSE",
+ "music": "MUS_RG_ROCKET_HIDEOUT",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROCKET_WAREHOUSE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": false,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_2",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_WAREHOUSE_GRUNT2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 15,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Grunt2",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_ROCKETS"
+ },
+ {
+ "local_id": "LOCALID_WAREHOUSE_GRUNT3",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 17,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Grunt3",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_ROCKETS"
+ },
+ {
+ "local_id": "LOCALID_WAREHOUSE_ADMIN1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_F",
+ "x": 27,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Admin1",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_ROCKETS"
+ },
+ {
+ "local_id": "LOCALID_WAREHOUSE_ADMIN2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 25,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Admin2",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_F",
+ "x": 6,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Grunt1",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 27,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Gideon",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 8,
+ "y": 25,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_RocketWarehouse_EventScript_ItemBigPearl",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_ROCKET_WAREHOUSE_BIG_PEARL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 17,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_RocketWarehouse_EventScript_ItemTM36",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_ROCKET_WAREHOUSE_TM36"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 1,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_RocketWarehouse_EventScript_ItemPearl",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_ROCKET_WAREHOUSE_PEARL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 4,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_RocketWarehouse_EventScript_ItemUpGrade",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_ROCKET_WAREHOUSE_UP_GRADE"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 24,
+ "y": 25,
+ "elevation": 3,
+ "dest_map": "MAP_FIVE_ISLAND_MEADOW",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 22,
+ "y": 11,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROCKET_WAREHOUSE",
+ "var_value": "0",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Admin2Trigger"
+ },
+ {
+ "type": "trigger",
+ "x": 23,
+ "y": 11,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROCKET_WAREHOUSE",
+ "var_value": "0",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Admin2Trigger"
+ },
+ {
+ "type": "trigger",
+ "x": 24,
+ "y": 11,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROCKET_WAREHOUSE",
+ "var_value": "0",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Admin2Trigger"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 26,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Computer"
+ },
+ {
+ "type": "hidden_item",
+ "x": 27,
+ "y": 2,
+ "elevation": 0,
+ "item": "ITEM_NEST_BALL",
+ "flag": "FLAG_HIDDEN_ITEM_FIVE_ISLAND_ROCKET_WAREHOUSE_NEST_BALL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 7,
+ "y": 16,
+ "elevation": 0,
+ "item": "ITEM_NET_BALL",
+ "flag": "FLAG_HIDDEN_ITEM_FIVE_ISLAND_ROCKET_WAREHOUSE_NET_BALL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 10,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 10,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 10,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 3,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 3,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FiveIsland_RocketWarehouse_EventScript_Cage"
+ }
+ ]
+}
diff --git a/data/maps/FiveIsland_RocketWarehouse_Frlg/scripts.inc b/data/maps/FiveIsland_RocketWarehouse_Frlg/scripts.inc
new file mode 100644
index 000000000000..25c9af9b4c08
--- /dev/null
+++ b/data/maps/FiveIsland_RocketWarehouse_Frlg/scripts.inc
@@ -0,0 +1,311 @@
+.equ PLAYER_X_POS, VAR_0x8004
+.equ PLAYER_Y_POS, VAR_0x8005
+
+FiveIsland_RocketWarehouse_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, FiveIsland_RocketWarehouse_OnLoad
+ map_script MAP_SCRIPT_ON_TRANSITION, FiveIsland_RocketWarehouse_OnTransition
+ .byte 0
+
+FiveIsland_RocketWarehouse_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_FIVE_ISLAND_ROCKET_WAREHOUSE
+ end
+
+FiveIsland_RocketWarehouse_OnLoad::
+ call_if_defeated TRAINER_TEAM_ROCKET_ADMIN, FiveIsland_RocketWarehouse_EventScript_SetArrowsForReEntry
+ end
+
+FiveIsland_RocketWarehouse_EventScript_SetArrowsForReEntry::
+ setmetatile 26, 20, METATILE_SilphCo_Arrow_Up, 0
+ setmetatile 27, 20, METATILE_SilphCo_Arrow_Up, 0
+ return
+
+FiveIsland_RocketWarehouse_EventScript_Cage::
+ lockall
+ goto_if_set FLAG_DEFEATED_ROCKETS_IN_WAREHOUSE, FiveIsland_RocketWarehouse_EventScript_CageUnlocked
+ msgbox FiveIsland_RocketWarehouse_Text_ManyMonsLockedInPen
+ releaseall
+ end
+
+FiveIsland_RocketWarehouse_EventScript_CageUnlocked::
+ msgbox FiveIsland_RocketWarehouse_Text_PenUnlockedMonsFled
+ releaseall
+ end
+
+FiveIsland_RocketWarehouse_EventScript_Computer::
+ msgbox FiveIsland_RocketWarehouse_Text_ReportWithGraphsAndText, MSGBOX_SIGN
+ end
+
+FiveIsland_RocketWarehouse_EventScript_Admin2Trigger::
+ lockall
+ applymovement LOCALID_WAREHOUSE_ADMIN2, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ setvar VAR_MAP_SCENE_ROCKET_WAREHOUSE, 1
+ releaseall
+ end
+
+FiveIsland_RocketWarehouse_EventScript_Gideon::
+ trainerbattle_single TRAINER_SCIENTIST_GIDEON, FiveIsland_RocketWarehouse_Text_GideonIntro, FiveIsland_RocketWarehouse_Text_GideonDefeat, FiveIsland_RocketWarehouse_EventScript_DefeatedGideon
+ goto_if_set FLAG_IS_CHAMPION, FiveIsland_RocketWarehouse_EventScript_MentionGiovannisKid
+ msgbox FiveIsland_RocketWarehouse_Text_GetLostLeaveMeBe, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_RocketWarehouse_EventScript_MentionGiovannisKid::
+ famechecker FAMECHECKER_GIOVANNI, 5
+ msgbox FiveIsland_RocketWarehouse_Text_GiovannisKidHasRedHair, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_RocketWarehouse_EventScript_DefeatedGideon::
+ msgbox FiveIsland_RocketWarehouse_Text_GideonPostBattle
+ setflag FLAG_RECOVERED_SAPPHIRE
+ giveitem ITEM_SAPPHIRE
+ release
+ end
+
+FiveIsland_RocketWarehouse_EventScript_Grunt2::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_47, FiveIsland_RocketWarehouse_Text_Grunt2Intro, FiveIsland_RocketWarehouse_Text_Grunt2Defeat
+ msgbox FiveIsland_RocketWarehouse_Text_Grunt2PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_RocketWarehouse_EventScript_Grunt3::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_48, FiveIsland_RocketWarehouse_Text_Grunt3Intro, FiveIsland_RocketWarehouse_Text_Grunt3Defeat
+ msgbox FiveIsland_RocketWarehouse_Text_Grunt3PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_RocketWarehouse_EventScript_Admin2::
+ trainerbattle_single TRAINER_TEAM_ROCKET_ADMIN_2, FiveIsland_RocketWarehouse_Text_Admin2Intro, FiveIsland_RocketWarehouse_Text_Admin2Defeat, FiveIsland_RocketWarehouse_EventScript_DefeatedAdmin2
+ msgbox FiveIsland_RocketWarehouse_Text_Admin2PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_RocketWarehouse_EventScript_DefeatedAdmin2::
+ getplayerxy PLAYER_X_POS, PLAYER_Y_POS
+ call_if_le PLAYER_X_POS, 24, FiveIsland_RocketWarehouse_EventScript_PlayerFaceAdmin2
+ msgbox FiveIsland_RocketWarehouse_Text_Admin2PostBattle
+ closemessage
+ fadescreen FADE_TO_BLACK
+ removeobject LOCALID_WAREHOUSE_GRUNT2
+ removeobject LOCALID_WAREHOUSE_GRUNT3
+ removeobject LOCALID_WAREHOUSE_ADMIN2
+ removeobject LOCALID_WAREHOUSE_ADMIN1
+ setflag FLAG_HIDE_FIVE_ISLAND_ROCKETS
+ fadescreen FADE_FROM_BLACK
+ setvar VAR_MAP_SCENE_ROCKET_WAREHOUSE, 1
+ setflag FLAG_DEFEATED_ROCKETS_IN_WAREHOUSE
+ release
+ end
+
+FiveIsland_RocketWarehouse_EventScript_PlayerFaceAdmin2::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ return
+
+FiveIsland_RocketWarehouse_EventScript_Grunt1::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_42, FiveIsland_RocketWarehouse_Text_Grunt1Intro, FiveIsland_RocketWarehouse_Text_Grunt1Defeat
+ msgbox FiveIsland_RocketWarehouse_Text_Grunt1PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_RocketWarehouse_EventScript_Admin1::
+ trainerbattle_single TRAINER_TEAM_ROCKET_ADMIN, FiveIsland_RocketWarehouse_Text_Admin1Intro, FiveIsland_RocketWarehouse_Text_Admin1Defeat, FiveIsland_RocketWarehouse_EventScript_DefeatedAdmin1
+ msgbox FiveIsland_RocketWarehouse_Text_MadeItSoYouCanComeBackThrough, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_RocketWarehouse_EventScript_DefeatedAdmin1::
+ getplayerxy PLAYER_X_POS, PLAYER_Y_POS
+ specialvar VAR_RESULT, GetPlayerFacingDirection
+ call_if_eq VAR_RESULT, DIR_NORTH, FiveIsland_RocketWarehouse_EventScript_PlayerFaceAdmin1
+ msgbox FiveIsland_RocketWarehouse_Text_Admin1PostBattle
+ closemessage
+ call_if_le PLAYER_X_POS, 24, FiveIsland_RocketWarehouse_EventScript_AdminWalkToSwitchFar
+ call_if_eq PLAYER_X_POS, 25, FiveIsland_RocketWarehouse_EventScript_AdminWalkToSwitch
+ call_if_eq PLAYER_X_POS, 26, FiveIsland_RocketWarehouse_EventScript_AdminFaceSwitch
+ call_if_eq PLAYER_X_POS, 27, FiveIsland_RocketWarehouse_EventScript_AdminFaceSwitch
+ playse SE_PIN
+ call FiveIsland_RocketWarehouse_EventScript_SetArrowsForReEntry
+ special DrawWholeMapView
+ waitse
+ call_if_le PLAYER_X_POS, 24, FiveIsland_RocketWarehouse_EventScript_AdminFacePlayerLeft
+ call_if_eq PLAYER_X_POS, 25, FiveIsland_RocketWarehouse_EventScript_AdminFacePlayerLeft
+ call_if_eq PLAYER_X_POS, 26, FiveIsland_RocketWarehouse_EventScript_AdminFacePlayerLeft
+ call_if_eq PLAYER_X_POS, 27, FiveIsland_RocketWarehouse_EventScript_AdminFacePlayerDown
+ msgbox FiveIsland_RocketWarehouse_Text_MadeItSoYouCanComeBackThrough
+ release
+ end
+
+FiveIsland_RocketWarehouse_EventScript_PlayerFaceAdmin1::
+ goto_if_eq PLAYER_X_POS, 27, Common_EventScript_NopReturn
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ return
+
+FiveIsland_RocketWarehouse_EventScript_AdminWalkToSwitchFar::
+ applymovement LOCALID_WAREHOUSE_ADMIN1, FiveIsland_RocketWarehouse_Movement_AdminWalkToSwitchFar
+ waitmovement 0
+ return
+
+FiveIsland_RocketWarehouse_EventScript_AdminWalkToSwitch::
+ applymovement LOCALID_WAREHOUSE_ADMIN1, FiveIsland_RocketWarehouse_Movement_AdminWalkToSwitch
+ waitmovement 0
+ return
+
+FiveIsland_RocketWarehouse_EventScript_AdminFaceSwitch::
+ applymovement LOCALID_WAREHOUSE_ADMIN1, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ return
+
+FiveIsland_RocketWarehouse_EventScript_AdminFacePlayerLeft::
+ applymovement LOCALID_WAREHOUSE_ADMIN1, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ return
+
+FiveIsland_RocketWarehouse_EventScript_AdminFacePlayerDown::
+ applymovement LOCALID_WAREHOUSE_ADMIN1, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ return
+
+FiveIsland_RocketWarehouse_Movement_AdminWalkToSwitchFar::
+ walk_right
+ walk_right
+ walk_in_place_faster_up
+ step_end
+
+FiveIsland_RocketWarehouse_Movement_AdminWalkToSwitch::
+ walk_right
+ walk_in_place_faster_up
+ step_end
+
+FiveIsland_RocketWarehouse_Text_ManyMonsLockedInPen::
+ .string "There are many POKéMON locked\n"
+ .string "away in the pen…$"
+
+FiveIsland_RocketWarehouse_Text_PenUnlockedMonsFled::
+ .string "The pen door is unlocked.\n"
+ .string "The POKéMON appear to have fled.$"
+
+FiveIsland_RocketWarehouse_Text_Grunt2Intro::
+ .string "Did you come here knowing it's\n"
+ .string "TEAM ROCKET's WAREHOUSE?$"
+
+FiveIsland_RocketWarehouse_Text_Grunt2Defeat::
+ .string "What do you think you're doing?!$"
+
+FiveIsland_RocketWarehouse_Text_Grunt2PostBattle::
+ .string "TEAM ROCKET broke up?\n"
+ .string "What planet are you from?$"
+
+FiveIsland_RocketWarehouse_Text_Grunt1Intro::
+ .string "Oh, now your POKéMON look strong.\n"
+ .string "You're willing to sell them?\p"
+ .string "Oh?\n"
+ .string "You wanted to battle?$"
+
+FiveIsland_RocketWarehouse_Text_Grunt1Defeat::
+ .string "Oh, but…\n"
+ .string "Too much!$"
+
+FiveIsland_RocketWarehouse_Text_Grunt1PostBattle::
+ .string "We can give you a great price.\n"
+ .string "Sell us your POKéMON!$"
+
+FiveIsland_RocketWarehouse_Text_Grunt3Intro::
+ .string "I got word about you from the\n"
+ .string "others.\p"
+ .string "But there's no way a kid like you'd\n"
+ .string "know our BOSS GIOVANNI!$"
+
+FiveIsland_RocketWarehouse_Text_Grunt3Defeat::
+ .string "Don't…you…dare…laugh…$"
+
+FiveIsland_RocketWarehouse_Text_Grunt3PostBattle::
+ .string "Don't mess in the doings of adults,\n"
+ .string "you jumped-up pip-squeak!$"
+
+FiveIsland_RocketWarehouse_Text_Admin1Intro::
+ .string "I don't know or care if what I'm\n"
+ .string "doing is right or wrong…\p"
+ .string "I just put my faith in GIOVANNI\n"
+ .string "and do as I am told.$"
+
+FiveIsland_RocketWarehouse_Text_Admin1Defeat::
+ .string "I…\n"
+ .string "I'm shattered…$"
+
+FiveIsland_RocketWarehouse_Text_Admin1PostBattle::
+ .string "You're doing things according to\n"
+ .string "your beliefs and morals.\p"
+ .string "I understand now…$"
+
+FiveIsland_RocketWarehouse_Text_MadeItSoYouCanComeBackThrough::
+ .string "I've made it so you can come back\n"
+ .string "in through there.\p"
+ .string "Why don't you go get rested and\n"
+ .string "refreshed for what lies ahead?\p"
+ .string "The ADMIN after me outranks me\n"
+ .string "thoroughly as a TRAINER.\p"
+ .string "You'd better steel yourself for one\n"
+ .string "harsh challenge.$"
+
+FiveIsland_RocketWarehouse_Text_Admin2Intro::
+ .string "That's quite enough of you \n"
+ .string "playing the hero, kid.\p"
+ .string "Spreading lies about how TEAM\n"
+ .string "ROCKET has disbanded…\p"
+ .string "It's such an obvious attempt to\n"
+ .string "cause confusion in our ranks.\p"
+ .string "Fortunately, we're not so ignorant\n"
+ .string "to fall for the lies of a child!\p"
+ .string "And now, I'll show you how scary\n"
+ .string "an angry adult can be!$"
+
+FiveIsland_RocketWarehouse_Text_Admin2Defeat::
+ .string "Urgh…\n"
+ .string "You were too strong…\p"
+ .string "…\n"
+ .string "Th-that's GIOVANNI's BADGE!\p"
+ .string "So it's true?\n"
+ .string "TEAM ROCKET really has disbanded?$"
+
+FiveIsland_RocketWarehouse_Text_Admin2PostBattle::
+ .string "We will abandon this WAREHOUSE…\p"
+ .string "But don't think this is over.\n"
+ .string "I won't let this be the end.\p"
+ .string "I will find GIOVANNI.\n"
+ .string "And I will resurrect TEAM ROCKET!\l"
+ .string "I will…\p"
+ .string "Until then, farewell!$"
+
+FiveIsland_RocketWarehouse_Text_ReportWithGraphsAndText::
+ .string "A report with graphs and text is on\n"
+ .string "the PC monitor.\p"
+ .string "“The Influence of Magnetic Waves\n"
+ .string "on POKéMON Evolution”…\p"
+ .string "… … … … … …\p"
+ .string "It's too difficult to understand…$"
+
+FiveIsland_RocketWarehouse_Text_GideonIntro::
+ .string "I almost managed to sell the\n"
+ .string "SAPPHIRE for huge money…\p"
+ .string "Then, you just had to come along\n"
+ .string "and blow the whole deal apart!\p"
+ .string "Fufu… Fufufufu…\n"
+ .string "There's no forgiveness for you!$"
+
+FiveIsland_RocketWarehouse_Text_GideonDefeat::
+ .string "Gah! Darn!\n"
+ .string "Darn! Darn!$"
+
+FiveIsland_RocketWarehouse_Text_GideonPostBattle::
+ .string "If I can't sell it, it's worthless!\n"
+ .string "Go ahead, take it!$"
+
+FiveIsland_RocketWarehouse_Text_GetLostLeaveMeBe::
+ .string "What do you want now?\n"
+ .string "Go on, get lost, leave me be.$"
+
+FiveIsland_RocketWarehouse_Text_GiovannisKidHasRedHair::
+ .string "What, you again?\p"
+ .string "You… You're not GIOVANNI's kid,\n"
+ .string "are you?\p"
+ .string "No, that can't be right!\n"
+ .string "GIOVANNI's kid has red hair.\p"
+ .string "You don't have any reasons for\n"
+ .string "bugging me. Leave me alone!$"
+
diff --git a/data/maps/FiveIsland_WaterLabyrinth_Frlg/map.json b/data/maps/FiveIsland_WaterLabyrinth_Frlg/map.json
new file mode 100644
index 000000000000..6e0060b1b4e0
--- /dev/null
+++ b/data/maps/FiveIsland_WaterLabyrinth_Frlg/map.json
@@ -0,0 +1,68 @@
+{
+ "id": "MAP_FIVE_ISLAND_WATER_LABYRINTH",
+ "name": "FiveIsland_WaterLabyrinth_Frlg",
+ "layout": "LAYOUT_FIVE_ISLAND_WATER_LABYRINTH",
+ "music": "MUS_RG_SEVII_ROUTE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_WATER_LABYRINTH",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_FIVE_ISLAND_RESORT_GORGEOUS",
+ "offset": 48,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_FIVE_ISLAND",
+ "offset": 48,
+ "direction": "down"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 14,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FiveIsland_WaterLabyrinth_EventScript_EggGentleman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "FiveIsland_WaterLabyrinth_EventScript_Alize",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/FiveIsland_WaterLabyrinth_Frlg/scripts.inc b/data/maps/FiveIsland_WaterLabyrinth_Frlg/scripts.inc
new file mode 100644
index 000000000000..2d5baa8115cb
--- /dev/null
+++ b/data/maps/FiveIsland_WaterLabyrinth_Frlg/scripts.inc
@@ -0,0 +1,126 @@
+FiveIsland_WaterLabyrinth_Frlg_MapScripts::
+ .byte 0
+
+FiveIsland_WaterLabyrinth_EventScript_EggGentleman::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_TOGEPI_EGG, FiveIsland_WaterLabyrinth_EventScript_PostEggComment
+ goto_if_set FLAG_NO_ROOM_FOR_TOGEPI_EGG, FiveIsland_WaterLabyrinth_EventScript_ReturnForEgg
+ msgbox FiveIsland_WaterLabyrinth_Text_LetMeTakeLookAtMons
+ specialvar VAR_RESULT, GetLeadMonFriendship
+ goto_if_eq VAR_RESULT, 6, FiveIsland_WaterLabyrinth_EventScript_LeadMonMaxFriendship
+ msgbox FiveIsland_WaterLabyrinth_Text_HmmISeeIsee
+ release
+ end
+
+FiveIsland_WaterLabyrinth_EventScript_MonDaisyComment::
+ famechecker FAMECHECKER_DAISY, 2
+ msgbox FiveIsland_WaterLabyrinth_Text_CuteMonRemindsMeOfDaisy
+ release
+ end
+
+FiveIsland_WaterLabyrinth_EventScript_LeadMonMaxFriendship::
+ msgbox FiveIsland_WaterLabyrinth_Text_TreatMonRightHaveThis
+ goto FiveIsland_WaterLabyrinth_EventScript_TryGiveEgg
+ end
+
+FiveIsland_WaterLabyrinth_EventScript_TryGiveEgg::
+ getpartysize
+ goto_if_eq VAR_RESULT, PARTY_SIZE, FiveIsland_WaterLabyrinth_EventScript_NoRoomForEgg
+ setflag FLAG_GOT_TOGEPI_EGG
+ giveegg SPECIES_TOGEPI
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_LEVEL_UP
+ message FiveIsland_WaterLabyrinth_Text_ReceivedEggFromMan
+ waitfanfare
+ waitmessage
+ call EventScript_RestorePrevTextColor
+ goto FiveIsland_WaterLabyrinth_EventScript_PostEggComment
+ end
+
+@ If the player has a Togepi/Togetic from this game (assumed to be the one the man gave you) then comment on it
+@ Otherwise make normal comment
+FiveIsland_WaterLabyrinth_EventScript_PostEggComment::
+ bufferspeciesname STR_VAR_2, SPECIES_TOGEPI
+ setvar VAR_0x8004, SPECIES_TOGEPI
+ specialvar VAR_RESULT, PlayerPartyContainsSpeciesWithPlayerID
+ goto_if_eq VAR_RESULT, TRUE, FiveIsland_WaterLabyrinth_EventScript_MonDaisyComment
+ bufferspeciesname STR_VAR_2, SPECIES_TOGETIC
+ setvar VAR_0x8004, SPECIES_TOGETIC
+ specialvar VAR_RESULT, PlayerPartyContainsSpeciesWithPlayerID
+ goto_if_eq VAR_RESULT, TRUE, FiveIsland_WaterLabyrinth_EventScript_MonDaisyComment
+ msgbox FiveIsland_WaterLabyrinth_Text_GladIMetSomeoneLikeYou
+ release
+ end
+
+FiveIsland_WaterLabyrinth_EventScript_NoRoomForEgg::
+ setflag FLAG_NO_ROOM_FOR_TOGEPI_EGG
+ msgbox FiveIsland_WaterLabyrinth_Text_DontHaveSpaceInYourParty
+ release
+ end
+
+FiveIsland_WaterLabyrinth_EventScript_ReturnForEgg::
+ goto FiveIsland_WaterLabyrinth_EventScript_TryGiveEgg
+ end
+
+FiveIsland_WaterLabyrinth_Text_LetMeTakeLookAtMons::
+ .string "You travel all over the place,\n"
+ .string "don't you?\p"
+ .string "You're not driving your POKéMON\n"
+ .string "too harshly, are you?\p"
+ .string "Let me take a look.\n"
+ .string "… … … … … …$"
+
+FiveIsland_WaterLabyrinth_Text_HmmISeeIsee::
+ .string "Ah, hmm…\n"
+ .string "I see, I see…$"
+
+FiveIsland_WaterLabyrinth_Text_TreatMonRightHaveThis::
+ .string "Oh, impressive.\n"
+ .string "You treat your POKéMON right.\p"
+ .string "I think you can be entrusted with\n"
+ .string "this.\p"
+ .string "Please, I'd like you to have this.$"
+
+FiveIsland_WaterLabyrinth_Text_ReceivedEggFromMan::
+ .string "{PLAYER} received an EGG\n"
+ .string "from the man!$"
+
+FiveIsland_WaterLabyrinth_Text_DontHaveSpaceInYourParty::
+ .string "…Unfortunately, you don't have\n"
+ .string "space for this in your party.\p"
+ .string "You'd better come back for it\n"
+ .string "another time.$"
+
+@ Unused
+FiveIsland_WaterLabyrinth_Text_YouveComeBackForTheEgg::
+ .string "やあ\n"
+ .string "タマゴを もらいに\l"
+ .string "きて くれたんだね$"
+
+FiveIsland_WaterLabyrinth_Text_GladIMetSomeoneLikeYou::
+ .string "I received that EGG while I was\n"
+ .string "traveling.\p"
+ .string "I'm glad I met someone like you.$"
+
+FiveIsland_WaterLabyrinth_Text_CuteMonRemindsMeOfDaisy::
+ .string "Oh, hello.\n"
+ .string "That's a cute {STR_VAR_2}.\p"
+ .string "Seeing it reminds me of a sweet \n"
+ .string "little girl I met while traveling.\p"
+ .string "She was gently grooming POKéMON…\n"
+ .string "She was a little angel.\p"
+ .string "That little girl's name…\n"
+ .string "I think it was DAISY.$"
+
+FiveIsland_WaterLabyrinth_Text_AlizeIntro::
+ .string "This is an excellent environment\n"
+ .string "for raising POKéMON.$"
+
+FiveIsland_WaterLabyrinth_Text_AlizeDefeat::
+ .string "Your POKéMON are growing up\n"
+ .string "admirably well!$"
+
+FiveIsland_WaterLabyrinth_Text_AlizePostBattle::
+ .string "You know, I think you have the\n"
+ .string "talent to be a good BREEDER.$"
diff --git a/data/maps/FortreeCity_House1/scripts.inc b/data/maps/FortreeCity_House1/scripts.inc
index a072f561065c..66d8b39f7e8a 100644
--- a/data/maps/FortreeCity_House1/scripts.inc
+++ b/data/maps/FortreeCity_House1/scripts.inc
@@ -5,27 +5,7 @@ FortreeCity_House1_EventScript_Trader::
lock
faceplayer
goto_if_set FLAG_FORTREE_NPC_TRADE_COMPLETED, FortreeCity_House1_EventScript_TradeCompleted
- setvar VAR_0x8008, INGAME_TRADE_PLUSLE
- copyvar VAR_0x8004, VAR_0x8008
- specialvar VAR_RESULT, GetInGameTradeSpeciesInfo
- copyvar VAR_0x8009, VAR_RESULT
- msgbox FortreeCity_House1_Text_YouWillTradeWontYou, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, FortreeCity_House1_EventScript_DeclineTrade
- special ChoosePartyMon
- waitstate
- copyvar VAR_0x800A, VAR_0x8004
- goto_if_eq VAR_0x8004, PARTY_NOTHING_CHOSEN, FortreeCity_House1_EventScript_DeclineTrade
- copyvar VAR_0x8005, VAR_0x800A
- specialvar VAR_RESULT, GetTradeSpecies
- copyvar VAR_0x800B, VAR_RESULT
- goto_if_ne VAR_RESULT, VAR_0x8009, FortreeCity_House1_EventScript_NotRequestedMon
- copyvar VAR_0x8004, VAR_0x8008
- copyvar VAR_0x8005, VAR_0x800A
- special CreateInGameTradePokemon
- special DoInGameTradeScene
- waitstate
- bufferspeciesname STR_VAR_1, VAR_0x8009
- msgbox FortreeCity_House1_Text_MonYouTakeCare, MSGBOX_DEFAULT
+ ingame_trade INGAME_TRADE_PLUSLE, FortreeCity_House1_Text_YouWillTradeWontYou, FortreeCity_House1_EventScript_DeclineTrade, FortreeCity_House1_EventScript_NotRequestedMon, FortreeCity_House1_Text_MonYouTakeCare
setflag FLAG_FORTREE_NPC_TRADE_COMPLETED
release
end
diff --git a/data/maps/FourIsland_Frlg/map.json b/data/maps/FourIsland_Frlg/map.json
new file mode 100644
index 000000000000..db6cd6788aac
--- /dev/null
+++ b/data/maps/FourIsland_Frlg/map.json
@@ -0,0 +1,289 @@
+{
+ "id": "MAP_FOUR_ISLAND",
+ "name": "FourIsland_Frlg",
+ "layout": "LAYOUT_FOUR_ISLAND",
+ "music": "MUS_RG_SEVII_45",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FOUR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "local_id": "LOCALID_FOUR_ISLAND_DAYCARE_MAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 16,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_EventScript_DaycareMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_DODUO",
+ "x": 12,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NIDORAN_F",
+ "x": 13,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NIDORAN_M",
+ "x": 14,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PSYDUCK",
+ "x": 17,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_WOMAN_FRLG",
+ "x": 26,
+ "y": 19,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_EventScript_OldWoman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 5,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 5,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_EventScript_ItemStarPiece",
+ "flag": "FLAG_HIDE_FOUR_ISLAND_STAR_PIECE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 32,
+ "y": 19,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_EventScript_ItemStardust",
+ "flag": "FLAG_HIDE_FOUR_ISLAND_STARDUST"
+ },
+ {
+ "local_id": "LOCALID_FOUR_ISLAND_RIVAL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLUE",
+ "x": 8,
+ "y": 25,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_FOUR_ISLAND_RIVAL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FAT_MAN_FRLG",
+ "x": 36,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_EventScript_FatMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 31,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_EventScript_LittleGirl",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 18,
+ "y": 20,
+ "elevation": 0,
+ "dest_map": "MAP_FOUR_ISLAND_POKEMON_CENTER_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 12,
+ "y": 13,
+ "elevation": 0,
+ "dest_map": "MAP_FOUR_ISLAND_POKEMON_DAY_CARE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 25,
+ "y": 14,
+ "elevation": 0,
+ "dest_map": "MAP_FOUR_ISLAND_HOUSE1",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 38,
+ "y": 12,
+ "elevation": 0,
+ "dest_map": "MAP_FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 33,
+ "y": 23,
+ "elevation": 0,
+ "dest_map": "MAP_FOUR_ISLAND_LORELEIS_HOUSE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 25,
+ "y": 26,
+ "elevation": 0,
+ "dest_map": "MAP_FOUR_ISLAND_HOUSE2",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 10,
+ "y": 28,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND_HARBOR",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 22,
+ "y": 26,
+ "elevation": 0,
+ "dest_map": "MAP_FOUR_ISLAND_MART",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 13,
+ "y": 19,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FourIsland_EventScript_IslandSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 22,
+ "y": 34,
+ "elevation": 3,
+ "item": "ITEM_PEARL",
+ "flag": "FLAG_HIDDEN_ITEM_FOUR_ISLAND_PEARL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 6,
+ "y": 21,
+ "elevation": 3,
+ "item": "ITEM_ULTRA_BALL",
+ "flag": "FLAG_HIDDEN_ITEM_FOUR_ISLAND_ULTRA_BALL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 31,
+ "y": 23,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FourIsland_EventScript_LoreleisHouseSign"
+ }
+ ]
+}
diff --git a/data/maps/FourIsland_Frlg/scripts.inc b/data/maps/FourIsland_Frlg/scripts.inc
new file mode 100644
index 000000000000..e9a716442d14
--- /dev/null
+++ b/data/maps/FourIsland_Frlg/scripts.inc
@@ -0,0 +1,218 @@
+FourIsland_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, FourIsland_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, FourIsland_OnFrame
+ .byte 0
+
+FourIsland_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_FOUR_ISLAND
+ call_if_eq VAR_MAP_SCENE_FOUR_ISLAND, 0, FourIsland_EventScript_ShowRival
+ call FourIsland_EventScript_TrySetDayCareManPos
+ end
+
+FourIsland_EventScript_ShowRival::
+ clearflag FLAG_HIDE_FOUR_ISLAND_RIVAL
+ return
+
+FourIsland_EventScript_TrySetDayCareManPos::
+ goto_if_unset FLAG_PENDING_DAYCARE_EGG, FourIsland_EventScript_EndSetDayCareManPos
+ setobjectxyperm LOCALID_FOUR_ISLAND_DAYCARE_MAN, 16, 14
+FourIsland_EventScript_EndSetDayCareManPos::
+ return
+
+FourIsland_OnFrame::
+ map_script_2 VAR_MAP_SCENE_FOUR_ISLAND, 0, FourIsland_EventScript_RivalScene
+ .2byte 0
+
+FourIsland_EventScript_RivalScene::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_FOUR_ISLAND_RIVAL, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ playbgm MUS_RG_ENCOUNTER_RIVAL, 0
+ applymovement LOCALID_FOUR_ISLAND_RIVAL, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_FOUR_ISLAND_RIVAL, Common_Movement_Delay48
+ waitmovement 0
+ delay 25
+ applymovement LOCALID_FOUR_ISLAND_RIVAL, FourIsland_Movement_RivalApproach
+ waitmovement 0
+ msgbox FourIsland_Text_RivalAlreadyGotEggBeSmellingYa
+ closemessage
+ applymovement LOCALID_PLAYER, FourIsland_Movement_PlayerWatchRivalExit
+ applymovement LOCALID_FOUR_ISLAND_RIVAL, FourIsland_Movement_RivalExit
+ waitmovement 0
+ fadedefaultbgm
+ playse SE_EXIT
+ delay 35
+ removeobject LOCALID_FOUR_ISLAND_RIVAL
+ setvar VAR_MAP_SCENE_FOUR_ISLAND, 1
+ releaseall
+ end
+
+FourIsland_Movement_RivalApproach::
+ walk_right
+ walk_right
+ walk_down
+ walk_down
+ step_end
+
+FourIsland_Movement_RivalExit::
+ delay_16
+ delay_4
+ walk_down
+ step_end
+
+FourIsland_Movement_PlayerWatchRivalExit::
+ walk_left
+ walk_in_place_faster_right
+ step_end
+
+FourIsland_EventScript_DaycareMan::
+ lock
+ faceplayer
+ special GetDaycareMonNicknames
+ specialvar VAR_RESULT, GetDaycareState
+ goto_if_eq VAR_RESULT, DAYCARE_EGG_WAITING, FourIsland_EventScript_DaycareEggWaiting
+ goto_if_eq VAR_RESULT, DAYCARE_ONE_MON, FourIsland_EventScript_CheckOnOneMon
+ goto_if_eq VAR_RESULT, DAYCARE_TWO_MONS, FourIsland_EventScript_CheckOnTwoMons
+ msgbox DayCare_Text_ImDaycareManSpeakToMyWife
+ release
+ end
+
+FourIsland_EventScript_DaycareEggWaiting::
+ msgbox DayCare_Text_DoYouWantEgg, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, FourIsland_EventScript_DaycareAcceptEgg
+ msgbox DayCare_Text_IWillKeepDoYouWantIt, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, FourIsland_EventScript_DaycareAcceptEgg
+ msgbox DayCare_Text_IllKeepIt
+ clearflag FLAG_PENDING_DAYCARE_EGG
+ special RejectEggFromDayCare
+ release
+ end
+
+FourIsland_EventScript_DaycareAcceptEgg::
+ specialvar VAR_RESULT, CalculatePlayerPartyCount
+ goto_if_ne VAR_RESULT, PARTY_SIZE, FourIsland_EventScript_DaycareReceivedEgg
+ msgbox DayCare_Text_YouHaveNoRoomForIt
+ release
+ end
+
+FourIsland_EventScript_DaycareReceivedEgg::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ message DayCare_Text_ReceivedEgg
+ call EventScript_RestorePrevTextColor
+ playfanfare MUS_LEVEL_UP
+ waitfanfare
+ waitbuttonpress
+ msgbox DayCare_Text_TakeGoodCareOfIt
+ special GiveEggFromDaycare
+ clearflag FLAG_PENDING_DAYCARE_EGG
+ release
+ end
+
+FourIsland_EventScript_CheckOnOneMon::
+ special GetDaycareMonNicknames
+ msgbox DayCare_Text_YourMonIsDoingFine
+ release
+ end
+
+FourIsland_EventScript_CheckOnTwoMons::
+ special GetDaycareMonNicknames
+ msgbox DayCare_Text_YourMonsAreDoingFine
+ special SetDaycareCompatibilityString
+ special ShowFieldMessageStringVar4
+ waitmessage
+ waitbuttonpress
+ release
+ end
+
+FourIsland_EventScript_OldWoman::
+ lock
+ faceplayer
+ goto_if_set FLAG_IS_CHAMPION, FourIsland_EventScript_OldWomanLoreleiLeft
+ msgbox FourIsland_Text_LoreleiHasReturned
+ release
+ end
+
+FourIsland_EventScript_OldWomanLoreleiLeft::
+ famechecker FAMECHECKER_LORELEI, 5
+ msgbox FourIsland_Text_LoreleiMetLaprasAsChild
+ release
+ end
+
+FourIsland_EventScript_LittleGirl::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_LORELEI, 4
+ msgbox FourIsland_Text_LoreleiHasLotsOfStuffedDolls
+ release
+ end
+
+FourIsland_EventScript_FatMan::
+ msgbox FourIsland_Text_MadeSlushieUsingIcefallCaveIce, MSGBOX_NPC
+ end
+
+FourIsland_EventScript_IslandSign::
+ msgbox FourIsland_Text_IslandSign, MSGBOX_SIGN
+ end
+
+FourIsland_EventScript_LoreleisHouseSign::
+ msgbox FourIsland_Text_LoreleisHouse, MSGBOX_SIGN
+ end
+
+FourIsland_Text_IslandSign::
+ .string "FOUR ISLAND\n"
+ .string "The Warm, Blue, Floe Island$"
+
+FourIsland_Text_LoreleiHasReturned::
+ .string "LORELEI has returned.\p"
+ .string "Did she find the city life too\n"
+ .string "stressful, I wonder?$"
+
+FourIsland_Text_LoreleiMetLaprasAsChild::
+ .string "LORELEI has gone back.\p"
+ .string "The LAPRAS she has, I imagine it\n"
+ .string "to be the one she met as a child.\p"
+ .string "I believe it was in ICEFALL CAVE\n"
+ .string "that she caught it.\p"
+ .string "Perhaps that POKéMON has been with\n"
+ .string "her ever since.$"
+
+FourIsland_Text_RivalAlreadyGotEggBeSmellingYa::
+ .string "{RIVAL}: Hey!\n"
+ .string "{PLAYER}!\p"
+ .string "What are you doing here in the\n"
+ .string "SEVII ISLANDS?\p"
+ .string "You should quit copying me,\n"
+ .string "you know?\p"
+ .string "Anyways, I already got my POKéMON\n"
+ .string "EGG, so I'm done with this island.\p"
+ .string "Heh, I bet you don't even know\n"
+ .string "about POKéMON EGGS.\p"
+ .string "You'll never fill your NATIONAL\n"
+ .string "POKéDEX that way.\p"
+ .string "By the way, I saw someone we both\n"
+ .string "know on this island.\p"
+ .string "Why don't you go look around if\n"
+ .string "it makes you curious?\p"
+ .string "Me, I don't have the time to\n"
+ .string "waste.\p"
+ .string "Be smelling ya!$"
+
+FourIsland_Text_LoreleiHasLotsOfStuffedDolls::
+ .string "Oh, you found me!\n"
+ .string "Please don't tell LORELEI.\p"
+ .string "Did you know that LORELEI has lots\n"
+ .string "and lots of stuffed dolls?\p"
+ .string "Every time she comes back to\n"
+ .string "FOUR ISLAND, her collection grows!$"
+
+FourIsland_Text_MadeSlushieUsingIcefallCaveIce::
+ .string "Ooh, chilly!\p"
+ .string "I made a slushie using ice I\n"
+ .string "shaved inside ICEFALL CAVE.\p"
+ .string "It's chilly and tasty!$"
+
+FourIsland_Text_LoreleisHouse::
+ .string "LORELEI'S HOUSE$"
+
diff --git a/data/maps/FourIsland_Harbor_Frlg/map.json b/data/maps/FourIsland_Harbor_Frlg/map.json
new file mode 100644
index 000000000000..57c8de5de627
--- /dev/null
+++ b/data/maps/FourIsland_Harbor_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_FOUR_ISLAND_HARBOR",
+ "name": "FourIsland_Harbor_Frlg",
+ "layout": "LAYOUT_ISLAND_HARBOR_FRLG",
+ "music": "MUS_RG_SEVII_45",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FOUR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SEAGALLOP",
+ "x": 8,
+ "y": 9,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 8,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_Harbor_EventScript_Sailor",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND",
+ "dest_warp_id": "6"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FourIsland_Harbor_Frlg/scripts.inc b/data/maps/FourIsland_Harbor_Frlg/scripts.inc
new file mode 100644
index 000000000000..9d4b30c3780b
--- /dev/null
+++ b/data/maps/FourIsland_Harbor_Frlg/scripts.inc
@@ -0,0 +1,11 @@
+FourIsland_Harbor_Frlg_MapScripts::
+ .byte 0
+
+FourIsland_Harbor_EventScript_Sailor::
+ lock
+ faceplayer
+ message Text_WhereDoYouWantToSail
+ waitmessage
+ setvar VAR_0x8004, SEAGALLOP_FOUR_ISLAND
+ goto EventScript_ChooseDestFromIsland
+ end
diff --git a/data/maps/FourIsland_House1_Frlg/map.json b/data/maps/FourIsland_House1_Frlg/map.json
new file mode 100644
index 000000000000..178a27cfad0f
--- /dev/null
+++ b/data/maps/FourIsland_House1_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_FOUR_ISLAND_HOUSE1",
+ "name": "FourIsland_House1_Frlg",
+ "layout": "LAYOUT_HOUSE3_FRLG",
+ "music": "MUS_RG_SEVII_45",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FOUR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FAT_MAN_FRLG",
+ "x": 8,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_House1_EventScript_BodySlamTutor",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FAT_MAN_FRLG",
+ "x": 9,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_House1_EventScript_FatMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FourIsland_House1_Frlg/scripts.inc b/data/maps/FourIsland_House1_Frlg/scripts.inc
new file mode 100644
index 000000000000..ed0c38490bdf
--- /dev/null
+++ b/data/maps/FourIsland_House1_Frlg/scripts.inc
@@ -0,0 +1,11 @@
+FourIsland_House1_Frlg_MapScripts::
+ .byte 0
+
+FourIsland_House1_EventScript_FatMan::
+ msgbox FourIsland_House1_Text_YoureAwfullyHeavy, MSGBOX_NPC
+ end
+
+FourIsland_House1_Text_YoureAwfullyHeavy::
+ .string "There! Boing!\n"
+ .string "You're awfully heavy!$"
+
diff --git a/data/maps/FourIsland_House2_Frlg/map.json b/data/maps/FourIsland_House2_Frlg/map.json
new file mode 100644
index 000000000000..e9f130646b47
--- /dev/null
+++ b/data/maps/FourIsland_House2_Frlg/map.json
@@ -0,0 +1,46 @@
+{
+ "id": "MAP_FOUR_ISLAND_HOUSE2",
+ "name": "FourIsland_House2_Frlg",
+ "layout": "LAYOUT_HOUSE3_FRLG",
+ "music": "MUS_RG_SEVII_45",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FOUR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_STICKER_MAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_House2_EventScript_StickerMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND",
+ "dest_warp_id": "5"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FourIsland_House2_Frlg/scripts.inc b/data/maps/FourIsland_House2_Frlg/scripts.inc
new file mode 100644
index 000000000000..3364f314c99c
--- /dev/null
+++ b/data/maps/FourIsland_House2_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+FourIsland_House2_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/FourIsland_IcefallCave_1F_Frlg/map.json b/data/maps/FourIsland_IcefallCave_1F_Frlg/map.json
new file mode 100644
index 000000000000..3f9d23388537
--- /dev/null
+++ b/data/maps/FourIsland_IcefallCave_1F_Frlg/map.json
@@ -0,0 +1,94 @@
+{
+ "id": "MAP_FOUR_ISLAND_ICEFALL_CAVE_1F",
+ "name": "FourIsland_IcefallCave_1F_Frlg",
+ "layout": "LAYOUT_FOUR_ISLAND_ICEFALL_CAVE_1F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ICEFALL_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 11,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_IcefallCave_1F_EventScript_ItemUltraBall",
+ "flag": "FLAG_HIDE_FOUR_ISLAND_ICEFALL_CAVE_1F_ULTRA_BALL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 12,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_IcefallCave_1F_EventScript_ItemHM07",
+ "flag": "FLAG_HIDE_FOUR_ISLAND_ICEFALL_CAVE_1F_HM07"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 17,
+ "elevation": 0,
+ "dest_map": "MAP_FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 12,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND_ICEFALL_CAVE_B1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 12,
+ "y": 3,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND_ICEFALL_CAVE_B1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 15,
+ "y": 16,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND_ICEFALL_CAVE_B1F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 3,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND_ICEFALL_CAVE_BACK",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FourIsland_IcefallCave_1F_Frlg/scripts.inc b/data/maps/FourIsland_IcefallCave_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..624b94126d60
--- /dev/null
+++ b/data/maps/FourIsland_IcefallCave_1F_Frlg/scripts.inc
@@ -0,0 +1,33 @@
+FourIsland_IcefallCave_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, FourIsland_IcefallCave_1F_OnResume
+ map_script MAP_SCRIPT_ON_LOAD, FourIsland_IcefallCave_1F_OnLoad
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, FourIsland_IcefallCave_1F_OnFrame
+ .byte 0
+
+FourIsland_IcefallCave_1F_OnResume::
+ setstepcallback STEP_CB_ICEFALL_CAVE
+ end
+
+FourIsland_IcefallCave_1F_OnLoad::
+ special SetIcefallCaveCrackedIceMetatiles
+ end
+
+FourIsland_IcefallCave_1F_OnFrame::
+ map_script_2 VAR_TEMP_1, 1, FourIsland_IcefallCave_1F_EventScript_FallDownHole
+ .2byte 0
+
+FourIsland_IcefallCave_1F_EventScript_FallDownHole::
+ lockall
+ delay 20
+ applymovement LOCALID_PLAYER, FourIsland_IcefallCave_1F_Movement_SetInvisible
+ waitmovement 0
+ playse SE_FALL
+ delay 60
+ warphole MAP_FOUR_ISLAND_ICEFALL_CAVE_B1F
+ waitstate
+ releaseall
+ end
+
+FourIsland_IcefallCave_1F_Movement_SetInvisible::
+ set_invisible
+ step_end
diff --git a/data/maps/FourIsland_IcefallCave_B1F_Frlg/map.json b/data/maps/FourIsland_IcefallCave_B1F_Frlg/map.json
new file mode 100644
index 000000000000..3be1ddb08487
--- /dev/null
+++ b/data/maps/FourIsland_IcefallCave_B1F_Frlg/map.json
@@ -0,0 +1,73 @@
+{
+ "id": "MAP_FOUR_ISLAND_ICEFALL_CAVE_B1F",
+ "name": "FourIsland_IcefallCave_B1F_Frlg",
+ "layout": "LAYOUT_FOUR_ISLAND_ICEFALL_CAVE_B1F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ICEFALL_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 10,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_IcefallCave_B1F_EventScript_ItemFullRestore",
+ "flag": "FLAG_HIDE_FOUR_ISLAND_ICEFALL_CAVE_B1F_FULL_RESTORE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 21,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_IcefallCave_B1F_EventScript_ItemNeverMeltIce",
+ "flag": "FLAG_HIDE_FOUR_ISLAND_ICEFALL_CAVE_B1F_NEVER_MELT_ICE"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 12,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND_ICEFALL_CAVE_1F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 12,
+ "y": 3,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND_ICEFALL_CAVE_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 15,
+ "y": 16,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND_ICEFALL_CAVE_1F",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FourIsland_IcefallCave_B1F_Frlg/scripts.inc b/data/maps/FourIsland_IcefallCave_B1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..f06bc42f4708
--- /dev/null
+++ b/data/maps/FourIsland_IcefallCave_B1F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+FourIsland_IcefallCave_B1F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/FourIsland_IcefallCave_Back_Frlg/map.json b/data/maps/FourIsland_IcefallCave_Back_Frlg/map.json
new file mode 100644
index 000000000000..6f99c78a10be
--- /dev/null
+++ b/data/maps/FourIsland_IcefallCave_Back_Frlg/map.json
@@ -0,0 +1,119 @@
+{
+ "id": "MAP_FOUR_ISLAND_ICEFALL_CAVE_BACK",
+ "name": "FourIsland_IcefallCave_Back_Frlg",
+ "layout": "LAYOUT_FOUR_ISLAND_ICEFALL_CAVE_BACK",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ICEFALL_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_ICEFALL_ROCKET1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 11,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_ICEFALL_CAVE_ROCKETS"
+ },
+ {
+ "local_id": "LOCALID_ICEFALL_ROCKET2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 13,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_ICEFALL_CAVE_ROCKETS"
+ },
+ {
+ "local_id": "LOCALID_ICEFALL_LORELEI",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LORELEI",
+ "x": 12,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_IcefallCave_Back_EventScript_Lorelei",
+ "flag": "FLAG_HIDE_ICEFALL_CAVE_LORELEI"
+ },
+ {
+ "local_id": "LOCALID_ICEFALL_ROCKET3",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 10,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_ICEFALL_CAVE_ROCKETS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 12,
+ "y": 23,
+ "elevation": 0,
+ "dest_map": "MAP_FOUR_ISLAND_ICEFALL_CAVE_1F",
+ "dest_warp_id": "5"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 11,
+ "y": 18,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ICEFALL_CAVE_BACK",
+ "var_value": "0",
+ "script": "FourIsland_IcefallCave_Back_EventScript_LoreleiRocketsScene"
+ },
+ {
+ "type": "trigger",
+ "x": 12,
+ "y": 18,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ICEFALL_CAVE_BACK",
+ "var_value": "0",
+ "script": "FourIsland_IcefallCave_Back_EventScript_LoreleiRocketsScene"
+ },
+ {
+ "type": "trigger",
+ "x": 13,
+ "y": 18,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ICEFALL_CAVE_BACK",
+ "var_value": "0",
+ "script": "FourIsland_IcefallCave_Back_EventScript_LoreleiRocketsScene"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/FourIsland_IcefallCave_Back_Frlg/scripts.inc b/data/maps/FourIsland_IcefallCave_Back_Frlg/scripts.inc
new file mode 100644
index 000000000000..d904ee25fcc7
--- /dev/null
+++ b/data/maps/FourIsland_IcefallCave_Back_Frlg/scripts.inc
@@ -0,0 +1,265 @@
+FourIsland_IcefallCave_Back_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, FourIsland_IcefallCave_Back_OnTransition
+ .byte 0
+
+FourIsland_IcefallCave_Back_OnTransition::
+ call_if_eq VAR_MAP_SCENE_ICEFALL_CAVE_BACK, 1, FourIsland_IcefallCave_Back_EventScript_HideLorelei
+ end
+
+FourIsland_IcefallCave_Back_EventScript_HideLorelei::
+ setflag FLAG_HIDE_ICEFALL_CAVE_LORELEI
+ return
+
+FourIsland_IcefallCave_Back_EventScript_LoreleiRocketsScene::
+ lockall
+ textcolor NPC_TEXT_COLOR_FEMALE
+ msgbox FourIsland_IcefallCave_Back_Text_LoreleiKeepHandsOffMons
+ applymovement LOCALID_ICEFALL_ROCKET1, FourIsland_IcefallCave_Back_Movement_WalkInPlaceDown
+ waitmovement 0
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox FourIsland_IcefallCave_Back_Text_ShutItLadyLeaveUsBe
+ closemessage
+ playse SE_PIN
+ applymovement LOCALID_ICEFALL_LORELEI, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_ICEFALL_LORELEI, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ applymovement LOCALID_ICEFALL_LORELEI, Common_Movement_Delay48
+ waitmovement 0
+ textcolor NPC_TEXT_COLOR_FEMALE
+ msgbox FourIsland_IcefallCave_Back_Text_LoreleiPlayerHelpMeKickPoachersOut
+ closemessage
+ applymovement LOCALID_ICEFALL_LORELEI, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ delay 18
+ applymovement LOCALID_ICEFALL_LORELEI, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ delay 35
+ applymovement LOCALID_ICEFALL_ROCKET3, FourIsland_IcefallCave_Back_Movement_Rocket3FaceLorelei
+ applymovement LOCALID_ICEFALL_LORELEI, FourIsland_IcefallCave_Back_Movement_LoreleiToRockets
+ applymovement LOCALID_PLAYER, FourIsland_IcefallCave_Back_Movement_PlayerToRockets
+ waitmovement 0
+ applymovement LOCALID_ICEFALL_ROCKET2, FourIsland_IcefallCave_Back_Movement_WalkInPlaceDown
+ waitmovement 0
+ playbgm MUS_RG_ENCOUNTER_ROCKET, 0
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox FourIsland_IcefallCave_Back_Text_GruntIntro
+ setvar VAR_LAST_TALKED, LOCALID_ICEFALL_ROCKET3
+ trainerbattle_no_intro TRAINER_TEAM_ROCKET_GRUNT_45, FourIsland_IcefallCave_Back_Text_GruntDefeat
+ applymovement LOCALID_ICEFALL_LORELEI, FourIsland_IcefallCave_Back_Movement_WalkInPlaceUp
+ waitmovement 0
+ textcolor NPC_TEXT_COLOR_FEMALE
+ msgbox FourIsland_IcefallCave_Back_Text_LoreleiWhereHaveYouTakenMons
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox FourIsland_IcefallCave_Back_Text_NotTellingYouThat
+ textcolor NPC_TEXT_COLOR_FEMALE
+ message FourIsland_IcefallCave_Back_Text_LoreleiWellDeepFreezeYou
+ waitmessage
+ waitse
+ playmoncry SPECIES_LAPRAS, CRY_MODE_ENCOUNTER
+ waitbuttonpress
+ waitmoncry
+ applymovement LOCALID_ICEFALL_ROCKET1, FourIsland_IcefallCave_Back_Movement_Rocket1ReactToThreat
+ waitmovement 0
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox FourIsland_IcefallCave_Back_Text_OkayRocketWareHouseFiveIsland
+ closemessage
+ applymovement LOCALID_ICEFALL_LORELEI, FourIsland_IcefallCave_Back_Movement_LoreleiWatchRocketsExit
+ applymovement LOCALID_PLAYER, FourIsland_IcefallCave_Back_Movement_PlayerWatchRocketsExit
+ applymovement LOCALID_ICEFALL_ROCKET1, FourIsland_IcefallCave_Back_Movement_Rocket1Exit
+ applymovement LOCALID_ICEFALL_ROCKET2, FourIsland_IcefallCave_Back_Movement_Rocket2Exit
+ applymovement LOCALID_ICEFALL_ROCKET3, FourIsland_IcefallCave_Back_Movement_Rocket3Exit
+ waitmovement 0
+ removeobject LOCALID_ICEFALL_ROCKET1
+ removeobject LOCALID_ICEFALL_ROCKET2
+ removeobject LOCALID_ICEFALL_ROCKET3
+ delay 50
+ applymovement LOCALID_ICEFALL_LORELEI, FourIsland_IcefallCave_Back_Movement_LoreleiWalkToPlayer
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ textcolor NPC_TEXT_COLOR_FEMALE
+ msgbox FourIsland_IcefallCave_Back_Text_ThankYouThisIsAwful
+ setflag FLAG_HIDE_RUIN_VALLEY_SCIENTIST
+ clearflag FLAG_HIDE_LORELEI_IN_HER_HOUSE
+ setvar VAR_MAP_SCENE_ICEFALL_CAVE_BACK, 1
+ releaseall
+ end
+
+FourIsland_IcefallCave_Back_Movement_PlayerToRockets::
+ walk_up
+ walk_up
+ walk_right
+ walk_up
+ step_end
+
+FourIsland_IcefallCave_Back_Movement_PlayerWatchRocketsExit::
+ delay_16
+ walk_in_place_faster_left
+ delay_16
+ delay_16
+ walk_in_place_faster_down
+ step_end
+
+FourIsland_IcefallCave_Back_Movement_WalkInPlaceDown::
+ walk_in_place_down
+ step_end
+
+FourIsland_IcefallCave_Back_Movement_UnusedPushRight::
+ lock_facing_direction
+ walk_right
+ unlock_facing_direction
+ step_end
+
+FourIsland_IcefallCave_Back_Movement_Rocket1ReactToThreat::
+ walk_in_place_fast_down
+ step_end
+
+FourIsland_IcefallCave_Back_Movement_Rocket1Exit::
+ walk_right
+ walk_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ step_end
+
+FourIsland_IcefallCave_Back_Movement_Rocket2Exit::
+ delay_16
+ walk_left
+ walk_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ step_end
+
+FourIsland_IcefallCave_Back_Movement_Rocket3Exit::
+ delay_16
+ walk_down
+ delay_16
+ walk_down
+ walk_fast_right
+ walk_fast_right
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ step_end
+
+FourIsland_IcefallCave_Back_Movement_Rocket3FaceLorelei::
+ delay_16
+ delay_8
+ walk_in_place_faster_right
+ step_end
+
+FourIsland_IcefallCave_Back_Movement_UnusedWalkLeft::
+ walk_left
+ walk_left
+ step_end
+
+FourIsland_IcefallCave_Back_Movement_LoreleiToRockets::
+ walk_left
+ walk_up
+ step_end
+
+FourIsland_IcefallCave_Back_Movement_WalkInPlaceUp::
+ walk_in_place_up
+ step_end
+
+FourIsland_IcefallCave_Back_Movement_LoreleiWatchRocketsExit::
+ delay_8
+ walk_in_place_faster_right
+ delay_16
+ delay_16
+ walk_in_place_faster_down
+ step_end
+
+FourIsland_IcefallCave_Back_Movement_LoreleiWalkToPlayer::
+ walk_right
+ step_end
+
+FourIsland_IcefallCave_Back_EventScript_Lorelei::
+ msgbox FourIsland_IcefallCave_Back_Text_ThankYouThisIsAwful, MSGBOX_NPC
+ end
+
+FourIsland_IcefallCave_Back_Text_LoreleiKeepHandsOffMons::
+ .string "LORELEI: Keep your filthy hands\n"
+ .string "off the POKéMON in the cave!\p"
+ .string "Do as I say, or you'll have me to\n"
+ .string "answer to!$"
+
+FourIsland_IcefallCave_Back_Text_ShutItLadyLeaveUsBe::
+ .string "Aww, shut it, lady, and leave\n"
+ .string "us be.\p"
+ .string "Don't let your glasses get all\n"
+ .string "steamed up!$"
+
+FourIsland_IcefallCave_Back_Text_LoreleiPlayerHelpMeKickPoachersOut::
+ .string "LORELEI: {PLAYER}?!\n"
+ .string "What are you doing here?\p"
+ .string "No, we can catch up later.\n"
+ .string "Right now, I need your help.\p"
+ .string "Help me kick these poachers out\n"
+ .string "before they do anything else.\p"
+ .string "They've been catching POKéMON\n"
+ .string "here, then selling them off!\p"
+ .string "Are you ready?\n"
+ .string "You take that one, please!$"
+
+FourIsland_IcefallCave_Back_Text_GruntIntro::
+ .string "W-what?!\p"
+ .string "Who says we can't do what we want\n"
+ .string "with the POKéMON we catch?$"
+
+FourIsland_IcefallCave_Back_Text_GruntDefeat::
+ .string "We didn't plan on this!$"
+
+FourIsland_IcefallCave_Back_Text_LoreleiWhereHaveYouTakenMons::
+ .string "LORELEI: Humph.\n"
+ .string "So despicably weak.\p"
+ .string "You!\n"
+ .string "Tell me!\p"
+ .string "Where have you taken the captured\n"
+ .string "POKéMON?\p"
+ .string "I'm smashing your ring once and\n"
+ .string "for all!$"
+
+FourIsland_IcefallCave_Back_Text_NotTellingYouThat::
+ .string "N-no way!\n"
+ .string "I'm not telling you that!$"
+
+FourIsland_IcefallCave_Back_Text_LoreleiWellDeepFreezeYou::
+ .string "LORELEI: If you won't confess,\n"
+ .string "we'll deep-freeze you.\p"
+ .string "My LAPRAS is furious for what\n"
+ .string "you've done to its friends.\p"
+ .string "Go, LAPRAS!\n"
+ .string "ICE BEAM…$"
+
+FourIsland_IcefallCave_Back_Text_OkayRocketWareHouseFiveIsland::
+ .string "Wawaah! Okay!\n"
+ .string "I'll talk!\p"
+ .string "The POKéMON are in the ROCKET\n"
+ .string "WAREHOUSE on FIVE ISLAND.\p"
+ .string "There! I said it!\n"
+ .string "We'll be going now!\p"
+ .string "…But I doubt you'll ever make it\n"
+ .string "into the ROCKET WAREHOUSE!\p"
+ .string "Heheheheh!$"
+
+FourIsland_IcefallCave_Back_Text_ThankYouThisIsAwful::
+ .string "{PLAYER}, thank you.\n"
+ .string "But this is awful…\p"
+ .string "I was born and raised here on\n"
+ .string "these islands.\p"
+ .string "I had no idea that those horrible\n"
+ .string "criminals were loose here…$"
+
diff --git a/data/maps/FourIsland_IcefallCave_Entrance_Frlg/map.json b/data/maps/FourIsland_IcefallCave_Entrance_Frlg/map.json
new file mode 100644
index 000000000000..cfddf874f5ed
--- /dev/null
+++ b/data/maps/FourIsland_IcefallCave_Entrance_Frlg/map.json
@@ -0,0 +1,50 @@
+{
+ "id": "MAP_FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE",
+ "name": "FourIsland_IcefallCave_Entrance_Frlg",
+ "layout": "LAYOUT_FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ICEFALL_CAVE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 17,
+ "y": 30,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 10,
+ "y": 21,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND_ICEFALL_CAVE_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND_ICEFALL_CAVE_1F",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/FourIsland_IcefallCave_Entrance_Frlg/scripts.inc b/data/maps/FourIsland_IcefallCave_Entrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..279896663d37
--- /dev/null
+++ b/data/maps/FourIsland_IcefallCave_Entrance_Frlg/scripts.inc
@@ -0,0 +1,7 @@
+FourIsland_IcefallCave_Entrance_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, FourIsland_IcefallCave_Entrance_OnTransition
+ .byte 0
+
+FourIsland_IcefallCave_Entrance_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE
+ end
diff --git a/data/maps/FourIsland_LoreleisHouse_Frlg/map.json b/data/maps/FourIsland_LoreleisHouse_Frlg/map.json
new file mode 100644
index 000000000000..d0592f0884b7
--- /dev/null
+++ b/data/maps/FourIsland_LoreleisHouse_Frlg/map.json
@@ -0,0 +1,241 @@
+{
+ "id": "MAP_FOUR_ISLAND_LORELEIS_HOUSE",
+ "name": "FourIsland_LoreleisHouse_Frlg",
+ "layout": "LAYOUT_FOUR_ISLAND_LORELEIS_HOUSE",
+ "music": "MUS_RG_SEVII_45",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FOUR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LORELEI",
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_LoreleisHouse_EventScript_Lorelei",
+ "flag": "FLAG_HIDE_LORELEI_IN_HER_HOUSE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WIGGLYTUFF",
+ "x": 0,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_LoreleisHouse_EventScript_Doll",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SEEL",
+ "x": 10,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_LoreleisHouse_EventScript_Doll",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PIKACHU_FRLG",
+ "x": 9,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_LoreleisHouse_EventScript_Doll",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SLOWPOKE",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_LoreleisHouse_EventScript_Doll",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SLOWBRO",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_LoreleisHouse_EventScript_Doll",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PSYDUCK",
+ "x": 6,
+ "y": 4,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_LoreleisHouse_EventScript_Doll",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MEOWTH",
+ "x": 9,
+ "y": 4,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_LoreleisHouse_EventScript_Doll",
+ "flag": "FLAG_HIDE_LORELEI_HOUSE_MEOWTH_DOLL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANSEY",
+ "x": 10,
+ "y": 4,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_LoreleisHouse_EventScript_Doll",
+ "flag": "FLAG_HIDE_LORELEI_HOUSE_CHANSEY_DOLL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_JIGGLYPUFF",
+ "x": 0,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_LoreleisHouse_EventScript_Doll",
+ "flag": "FLAG_HIDE_LORELEI_HOUSE_JIGGLYPUFF_DOLL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NIDORAN_F",
+ "x": 0,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_LoreleisHouse_EventScript_Doll",
+ "flag": "FLAG_HIDE_LORELEIS_HOUSE_NIDORAN_F_DOLL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NIDORAN_M",
+ "x": 1,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_LoreleisHouse_EventScript_Doll",
+ "flag": "FLAG_HIDE_LORELEIS_HOUSE_NIDORAN_M_DOLL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PIDGEOT",
+ "x": 9,
+ "y": 0,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_LoreleisHouse_EventScript_Doll",
+ "flag": "FLAG_HIDE_LORELEIS_HOUSE_PIDGEOT_DOLL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FEAROW",
+ "x": 10,
+ "y": 0,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_LoreleisHouse_EventScript_Doll",
+ "flag": "FLAG_HIDE_LORELEIS_HOUSE_FEAROW_DOLL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LAPRAS_DOLL",
+ "x": 9,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_LoreleisHouse_EventScript_Doll",
+ "flag": "FLAG_HIDE_LORELEIS_HOUSE_LAPRAS_DOLL"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FourIsland_LoreleisHouse_Frlg/scripts.inc b/data/maps/FourIsland_LoreleisHouse_Frlg/scripts.inc
new file mode 100644
index 000000000000..b1d3a9b009bd
--- /dev/null
+++ b/data/maps/FourIsland_LoreleisHouse_Frlg/scripts.inc
@@ -0,0 +1,63 @@
+FourIsland_LoreleisHouse_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, FourIsland_LoreleisHouse_OnTransition
+ .byte 0
+
+FourIsland_LoreleisHouse_OnTransition::
+ special UpdateLoreleiDollCollection
+ end
+
+FourIsland_LoreleisHouse_EventScript_Lorelei::
+ lock
+ faceplayer
+ goto_if_set FLAG_TALKED_TO_LORELEI_AFTER_WAREHOUSE, FourIsland_LoreleisHouse_EventScript_Lorelei3
+ goto_if_set FLAG_DEFEATED_ROCKETS_IN_WAREHOUSE, FourIsland_LoreleisHouse_EventScript_Lorelei2
+ msgbox FourIsland_LoreleisHouse_Text_IfAnythingWereToHappenToIsland
+ release
+ end
+
+FourIsland_LoreleisHouse_EventScript_Lorelei2::
+ setflag FLAG_TALKED_TO_LORELEI_AFTER_WAREHOUSE
+ msgbox FourIsland_LoreleisHouse_Text_IllReturnToLeagueInShortWhile
+ release
+ end
+
+FourIsland_LoreleisHouse_EventScript_Lorelei3::
+ msgbox FourIsland_LoreleisHouse_Text_WillDoWhatICanHereAndNow
+ release
+ end
+
+FourIsland_LoreleisHouse_EventScript_Doll::
+ lock
+ msgbox FourIsland_LoreleisHouse_Text_StuffedMonDollsGalore
+ release
+ end
+
+FourIsland_LoreleisHouse_Text_IfAnythingWereToHappenToIsland::
+ .string "LORELEI: There's something weighing\n"
+ .string "heavily on my mind.\p"
+ .string "If anything were to happen on\n"
+ .string "the island where I was born…\p"
+ .string "I wouldn't know about it if I were\n"
+ .string "in the POKéMON LEAGUE.\p"
+ .string "I wonder if that would make me\n"
+ .string "irresponsible to my home…$"
+
+FourIsland_LoreleisHouse_Text_IllReturnToLeagueInShortWhile::
+ .string "LORELEI: So, you managed to solve\n"
+ .string "all the problems here?\p"
+ .string "That's wonderful.\p"
+ .string "That means there isn't any reason\n"
+ .string "for me to be here all the time.\p"
+ .string "Thank you…\p"
+ .string "I'll return to the POKéMON LEAGUE\n"
+ .string "in a short while.$"
+
+FourIsland_LoreleisHouse_Text_WillDoWhatICanHereAndNow::
+ .string "I don't know what will happen in\n"
+ .string "the future, but…\p"
+ .string "I will do what I can here and now.\n"
+ .string "That's all I can do.$"
+
+FourIsland_LoreleisHouse_Text_StuffedMonDollsGalore::
+ .string "Stuffed POKéMON dolls galore!$"
+
diff --git a/data/maps/FourIsland_Mart_Frlg/map.json b/data/maps/FourIsland_Mart_Frlg/map.json
new file mode 100644
index 000000000000..834a4b479e2e
--- /dev/null
+++ b/data/maps/FourIsland_Mart_Frlg/map.json
@@ -0,0 +1,73 @@
+{
+ "id": "MAP_FOUR_ISLAND_MART",
+ "name": "FourIsland_Mart_Frlg",
+ "layout": "LAYOUT_MART_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FOUR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 2,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_Mart_EventScript_Clerk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 6,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_Mart_EventScript_OldMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CAMPER_FRLG",
+ "x": 8,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_Mart_EventScript_Camper",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND",
+ "dest_warp_id": "7"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FourIsland_Mart_Frlg/scripts.inc b/data/maps/FourIsland_Mart_Frlg/scripts.inc
new file mode 100644
index 000000000000..3e6262ff6a08
--- /dev/null
+++ b/data/maps/FourIsland_Mart_Frlg/scripts.inc
@@ -0,0 +1,47 @@
+FourIsland_Mart_Frlg_MapScripts::
+ .byte 0
+
+FourIsland_Mart_EventScript_Clerk::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart FourIsland_Mart_Items
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+FourIsland_Mart_Items::
+ .2byte ITEM_ULTRA_BALL
+ .2byte ITEM_FULL_RESTORE
+ .2byte ITEM_MAX_POTION
+ .2byte ITEM_REVIVE
+ .2byte ITEM_ICE_HEAL
+ .2byte ITEM_FULL_HEAL
+ .2byte ITEM_ESCAPE_ROPE
+ .2byte ITEM_MAX_REPEL
+ .2byte ITEM_NONE
+ release
+ end
+
+FourIsland_Mart_EventScript_Camper::
+ msgbox FourIsland_Mart_Text_IcefallCaveIsFrigid, MSGBOX_NPC
+ end
+
+FourIsland_Mart_Text_LoreleiGrewUpOnThisIsland::
+ .string "We've had a great and powerful\n"
+ .string "TRAINER grow up on this island.\p"
+ .string "I bet even you'd know her.\n"
+ .string "It's LORELEI of the ELITE FOUR!\p"
+ .string "When LORELEI was just a tyke,\n"
+ .string "I taught her about POKéMON.$"
+
+FourIsland_Mart_Text_IcefallCaveIsFrigid::
+ .string "The SEVII ISLANDS are in a warm\n"
+ .string "region overall.\p"
+ .string "But there is one exception you\n"
+ .string "need to know about.\p"
+ .string "The ICEFALL CAVE is frigid because\n"
+ .string "of the POKéMON that live in it.$"
+
diff --git a/data/maps/FourIsland_PokemonCenter_1F_Frlg/map.json b/data/maps/FourIsland_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..c919e69a1d31
--- /dev/null
+++ b/data/maps/FourIsland_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,112 @@
+{
+ "id": "MAP_FOUR_ISLAND_POKEMON_CENTER_1F",
+ "name": "FourIsland_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FOUR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_FOUR_ISLAND_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 10,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_PokemonCenter_1F_EventScript_Man",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_3_FRLG",
+ "x": 5,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_PokemonCenter_1F_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_PokemonCenter_1F_EventScript_Gentleman",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_FOUR_ISLAND_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "FourIsland_PokemonCenter_1F_EventScript_PokemonJournal"
+ },
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "FourIsland_PokemonCenter_1F_EventScript_PokemonJournal"
+ }
+ ]
+}
diff --git a/data/maps/FourIsland_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/FourIsland_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..495662810f4f
--- /dev/null
+++ b/data/maps/FourIsland_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,73 @@
+FourIsland_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, FourIsland_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ .byte 0
+
+FourIsland_PokemonCenter_1F_OnTransition::
+ setrespawn HEAL_LOCATION_FOUR_ISLAND
+ end
+
+FourIsland_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+FourIsland_PokemonCenter_1F_EventScript_Man::
+ msgbox FourIsland_PokemonCenter_1F_Text_RareIceMonsInCave, MSGBOX_NPC
+ end
+
+FourIsland_PokemonCenter_1F_EventScript_Woman::
+ msgbox FourIsland_PokemonCenter_1F_Text_DayCarePeopleFoundEggBefore, MSGBOX_NPC
+ end
+
+FourIsland_PokemonCenter_1F_EventScript_Gentleman::
+ msgbox FourIsland_PokemonCenter_1F_Text_NewPokemonJournalHasntArrived, MSGBOX_NPC
+ end
+
+@ The 5 texts below are supposed to be in FourIsland_House1
+Text_BodySlamTeach::
+ .string "Ready?\n"
+ .string "Boing!\p"
+ .string "We're having a BODY SLAM match\n"
+ .string "to see who wimps out first.\p"
+ .string "If you were to join us, you'd be\n"
+ .string "squashed like a bug, though…\p"
+ .string "How about I teach BODY SLAM to\n"
+ .string "a POKéMON of yours instead?$"
+
+Text_BodySlamDeclined::
+ .string "Come again!\n"
+ .string "Boing!$"
+
+Text_BodySlamWhichMon::
+ .string "Which POKéMON wants to learn how\n"
+ .string "to BODY SLAM?$"
+
+Text_BodySlamTaught::
+ .string "Boioing!$"
+
+FourIsland_House1_Text_FatMan::
+ .string "それ ぼよーん!\n"
+ .string "おまえ おもいなあー!$"
+
+FourIsland_PokemonCenter_1F_Text_RareIceMonsInCave::
+ .string "There's a rare kind of ICE POKéMON\n"
+ .string "that lives in the cave.\p"
+ .string "We get a lot of visitors hoping to\n"
+ .string "see that POKéMON.$"
+
+FourIsland_PokemonCenter_1F_Text_DayCarePeopleFoundEggBefore::
+ .string "Oh? A POKéMON EGG?\n"
+ .string "…I have no idea.\p"
+ .string "…Oh, wait. The DAY-CARE people\n"
+ .string "in town were saying something.\p"
+ .string "They said that they'd found EGGS\n"
+ .string "before on their property.$"
+
+FourIsland_PokemonCenter_1F_Text_NewPokemonJournalHasntArrived::
+ .string "What's this?\p"
+ .string "The new POKéMON JOURNAL hasn't\n"
+ .string "arrived on this island?$"
+
diff --git a/data/maps/FourIsland_PokemonCenter_2F_Frlg/map.json b/data/maps/FourIsland_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..81c8f95326ef
--- /dev/null
+++ b/data/maps/FourIsland_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_FOUR_ISLAND_POKEMON_CENTER_2F",
+ "name": "FourIsland_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FOUR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_FOUR_ISLAND_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FourIsland_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/FourIsland_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..fbefe1449bff
--- /dev/null
+++ b/data/maps/FourIsland_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+FourIsland_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+FourIsland_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+FourIsland_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+FourIsland_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/FourIsland_PokemonDayCare_Frlg/map.json b/data/maps/FourIsland_PokemonDayCare_Frlg/map.json
new file mode 100644
index 000000000000..90eae3b06d85
--- /dev/null
+++ b/data/maps/FourIsland_PokemonDayCare_Frlg/map.json
@@ -0,0 +1,46 @@
+{
+ "id": "MAP_FOUR_ISLAND_POKEMON_DAY_CARE",
+ "name": "FourIsland_PokemonDayCare_Frlg",
+ "layout": "LAYOUT_FOUR_ISLAND_POKEMON_DAY_CARE",
+ "music": "MUS_RG_SEVII_45",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FOUR_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_FOUR_ISLAND_DAYCARE_WOMAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_WOMAN_FRLG",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FourIsland_PokemonDayCare_EventScript_DaycareWoman",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FOUR_ISLAND",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FourIsland_PokemonDayCare_Frlg/scripts.inc b/data/maps/FourIsland_PokemonDayCare_Frlg/scripts.inc
new file mode 100644
index 000000000000..82adf7e4356f
--- /dev/null
+++ b/data/maps/FourIsland_PokemonDayCare_Frlg/scripts.inc
@@ -0,0 +1,190 @@
+FourIsland_PokemonDayCare_Frlg_MapScripts::
+ .byte 0
+
+FourIsland_PokemonDayCare_EventScript_DaycareWoman::
+ lock
+ faceplayer
+ specialvar VAR_RESULT, GetDaycareState
+ goto_if_eq VAR_RESULT, DAYCARE_EGG_WAITING, FourIsland_PokemonDayCare_EggWaiting
+ goto_if_eq VAR_RESULT, DAYCARE_ONE_MON, FourIsland_PokemonDayCare_OneMonInDaycare
+ goto_if_eq VAR_RESULT, DAYCARE_TWO_MONS, FourIsland_PokemonDayCare_TwoMonsInDaycare
+ msgbox DayCare_Text_WouldYouLikeUsToRaiseMon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, FourIsland_PokemonDayCare_GiveMonToRaise
+ msgbox DayCare_Text_FineThenComeAgain
+ release
+ end
+
+FourIsland_PokemonDayCare_GiveMonToRaise::
+ specialvar VAR_RESULT, CountPartyNonEggMons
+ goto_if_eq VAR_RESULT, 1, FourIsland_PokemonDayCare_OnlyOneMonInParty
+ msgbox DayCare_Text_WhichMonShouldWeRaise
+ fadescreen FADE_TO_BLACK
+ special ChooseSendDaycareMon
+ waitstate
+ goto_if_ge VAR_0x8004, PARTY_SIZE, FourIsland_PokemonDayCare_ComeAgain
+ specialvar VAR_RESULT, CountPartyAliveNonEggMons_IgnoreVar0x8004Slot
+ goto_if_eq VAR_RESULT, 0, FourIsland_PokemonDayCare_OnlyOneAliveMonInParty
+ specialvar VAR_0x8005, GetSelectedMonNicknameAndSpecies
+ waitse
+ playmoncry VAR_0x8005, CRY_MODE_NORMAL
+ msgbox DayCare_Text_WellRaiseYourMon
+ waitmoncry
+ special StoreSelectedPokemonInDaycare
+ callnative UpdateFollowingPokemon
+ incrementgamestat GAME_STAT_USED_DAYCARE
+ specialvar VAR_RESULT, GetDaycareState
+ goto_if_eq VAR_RESULT, DAYCARE_ONE_MON, FourIsland_PokemonDayCare_CanRaiseOneMore
+ release
+ end
+
+FourIsland_PokemonDayCare_ComeAgain::
+ msgbox DayCare_Text_ComeAgain
+ release
+ end
+
+FourIsland_PokemonDayCare_CanRaiseOneMore::
+ msgbox DayCare_Text_WeCanRaiseOneMore, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, FourIsland_PokemonDayCare_GiveMonToRaise
+ goto FourIsland_PokemonDayCare_ComeAgain
+ end
+
+FourIsland_PokemonDayCare_OnlyOneMonInParty::
+ msgbox DayCare_Text_YouHaveJustOneMon
+ release
+ end
+
+FourIsland_PokemonDayCare_OnlyOneAliveMonInParty::
+ msgbox DayCare_Text_WhatWillYouBattleWith
+ release
+ end
+
+FourIsland_PokemonDayCare_EggWaiting::
+ msgbox DayCare_Text_HusbandWasLookingForYou
+ release
+ end
+
+FourIsland_PokemonDayCare_MonHasGrownXLevels::
+ msgbox DayCare_Text_YourMonHasGrownXLevels
+ return
+
+FourIsland_PokemonDayCare_DisplayLevelsGained::
+ specialvar VAR_RESULT, GetNumLevelsGainedFromDaycare
+ call_if_ne VAR_RESULT, 0, FourIsland_PokemonDayCare_MonHasGrownXLevels
+ return
+
+FourIsland_PokemonDayCare_OneMonInDaycare::
+ msgbox DayCare_Text_GoodToSeeYou
+ setvar VAR_0x8004, 0
+ call FourIsland_PokemonDayCare_DisplayLevelsGained
+ msgbox DayCare_Text_WeCanRaiseOneMore, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, FourIsland_PokemonDayCare_GiveMonToRaise
+ msgbox DayCare_Text_TakeYourMonBack, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, FourIsland_PokemonDayCare_TryRetrieveMon
+ goto FourIsland_PokemonDayCare_ComeAgain
+ end
+
+FourIsland_PokemonDayCare_TryRetrieveMon::
+ specialvar VAR_RESULT, CalculatePlayerPartyCount
+ goto_if_eq VAR_RESULT, PARTY_SIZE, FourIsland_PokemonDayCare_NoRoomInParty
+ specialvar VAR_RESULT, GetDaycareState
+ setvar VAR_0x8004, 0
+ goto_if_eq VAR_RESULT, DAYCARE_ONE_MON, FourIsland_PokemonDayCare_CostPrompt
+ special ShowDaycareLevelMenu
+ waitstate
+ copyvar VAR_0x8004, VAR_RESULT
+ goto_if_eq VAR_RESULT, DAYCARE_EXITED_LEVEL_MENU, FourIsland_PokemonDayCare_ComeAgain
+ goto FourIsland_PokemonDayCare_CostPrompt
+ end
+
+FourIsland_PokemonDayCare_CostPrompt::
+ special GetDaycareCost
+ msgbox DayCare_Text_ItWillCostX, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, FourIsland_PokemonDayCare_CheckEnoughMoney
+ goto FourIsland_PokemonDayCare_ComeAgain
+ end
+
+FourIsland_PokemonDayCare_CheckEnoughMoney::
+ specialvar VAR_RESULT, IsEnoughForCostInVar0x8005
+ goto_if_eq VAR_RESULT, TRUE, FourIsland_PokemonDayCare_RetrieveMon
+ msgbox DayCare_Text_NotEnoughMoney
+ release
+ end
+
+FourIsland_PokemonDayCare_RetrieveMon::
+ applymovement LOCALID_FOUR_ISLAND_DAYCARE_WOMAN, FourIsland_PokemonDayCare_Movement_RetrieveMon
+ waitmovement 0
+ specialvar VAR_RESULT, TakePokemonFromDaycare
+ special SubtractMoneyFromVar0x8005
+ playse SE_SHOP
+ msgbox DayCare_Text_HeresYourMon
+ waitse
+ playmoncry VAR_RESULT, CRY_MODE_NORMAL
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox DayCare_Text_TookBackMon
+ call EventScript_RestorePrevTextColor
+ waitmoncry
+ specialvar VAR_RESULT, GetDaycareState
+ goto_if_eq VAR_RESULT, DAYCARE_ONE_MON, FourIsland_PokemonDayCare_AskRetrieveOtherMon
+ goto FourIsland_PokemonDayCare_ComeAgain
+ end
+
+FourIsland_PokemonDayCare_AskRetrieveOtherMon::
+ msgbox DayCare_Text_TakeOtherOneBackToo, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, FourIsland_PokemonDayCare_TryRetrieveMon
+ goto FourIsland_PokemonDayCare_ComeAgain
+ end
+
+FourIsland_PokemonDayCare_NoRoomInParty::
+ msgbox DayCare_Text_YourPartyIsFull
+ release
+ end
+
+FourIsland_PokemonDayCare_Movement_RetrieveMon::
+ delay_16
+ delay_16
+ face_right
+ delay_16
+ delay_16
+ face_left
+ delay_16
+ delay_16
+ face_up
+ walk_slow_up
+ set_invisible
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ face_down
+ set_visible
+ walk_slow_down
+ step_end
+
+@ Unused. Possibly a commented script, or a typo end added to the above Movement script
+FourIsland_PokemonDayCare_EventScript_UnusedEnd::
+ end
+
+FourIsland_PokemonDayCare_TwoMonsInDaycare::
+ msgbox DayCare_Text_GoodToSeeYou
+ setvar VAR_0x8004, 0
+ call FourIsland_PokemonDayCare_DisplayLevelsGained
+ setvar VAR_0x8004, 1
+ call FourIsland_PokemonDayCare_DisplayLevelsGained
+ msgbox DayCare_Text_TakeYourMonBack, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, FourIsland_PokemonDayCare_TryRetrieveMon
+ msgbox DayCare_Text_ComeAgain
+ release
+ end
+
+@ Unused
+FourIsland_PokemonDayCare_EventScript_UnusedRetrieveMon::
+ special ShowDaycareLevelMenu
+ waitstate
+ goto_if_eq VAR_RESULT, 2, FourIsland_PokemonDayCare_ComeAgain
+ copyvar VAR_0x8004, VAR_RESULT
+ specialvar VAR_RESULT, TakePokemonFromDaycare
+ msgbox DayCare_Text_HeresYourMon
+ msgbox DayCare_Text_ComeAgain
+ release
+ end
diff --git a/data/maps/FuchsiaCity_Frlg/map.json b/data/maps/FuchsiaCity_Frlg/map.json
new file mode 100644
index 000000000000..c03ba854628e
--- /dev/null
+++ b/data/maps/FuchsiaCity_Frlg/map.json
@@ -0,0 +1,440 @@
+{
+ "id": "MAP_FUCHSIA_CITY",
+ "name": "FuchsiaCity_Frlg",
+ "layout": "LAYOUT_FUCHSIA_CITY",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FUCHSIA_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE19",
+ "offset": 12,
+ "direction": "down"
+ },
+ {
+ "map": "MAP_ROUTE18",
+ "offset": 10,
+ "direction": "left"
+ },
+ {
+ "map": "MAP_ROUTE15",
+ "offset": 10,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FAT_MAN_FRLG",
+ "x": 37,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_EventScript_Erik",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SLOWPOKE",
+ "x": 36,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND_SLOWER",
+ "movement_range_x": 4,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VOLTORB",
+ "x": 33,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 33,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANSEY",
+ "x": 39,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 3,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_BOY_FRLG",
+ "x": 14,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 3,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_EventScript_LittleBoy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LAPRAS",
+ "x": 12,
+ "y": 20,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 36,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 4,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_EventScript_OldMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_0",
+ "x": 8,
+ "y": 8,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_KANGASKHAN",
+ "x": 16,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 4,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 30,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 21,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 32,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_14"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 24,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_15"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 15,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_EventScript_SubstituteTutor",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 40,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_EventScript_Lass",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 24,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 33,
+ "y": 31,
+ "elevation": 0,
+ "dest_map": "MAP_FUCHSIA_CITY_WARDENS_HOUSE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 11,
+ "y": 15,
+ "elevation": 0,
+ "dest_map": "MAP_FUCHSIA_CITY_MART",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 28,
+ "y": 16,
+ "elevation": 0,
+ "dest_map": "MAP_FUCHSIA_CITY_SAFARI_ZONE_OFFICE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 9,
+ "y": 32,
+ "elevation": 0,
+ "dest_map": "MAP_FUCHSIA_CITY_GYM",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 14,
+ "y": 31,
+ "elevation": 0,
+ "dest_map": "MAP_FUCHSIA_CITY_HOUSE1",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 25,
+ "y": 31,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 38,
+ "y": 31,
+ "elevation": 0,
+ "dest_map": "MAP_FUCHSIA_CITY_HOUSE2",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 39,
+ "y": 28,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY_HOUSE2",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 39,
+ "y": 29,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY_HOUSE2",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 19,
+ "y": 31,
+ "elevation": 0,
+ "dest_map": "MAP_FUCHSIA_CITY_HOUSE3",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 31,
+ "y": 18,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FuchsiaCity_EventScript_CitySign"
+ },
+ {
+ "type": "sign",
+ "x": 26,
+ "y": 18,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FuchsiaCity_EventScript_SafariZoneSign"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 32,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FuchsiaCity_EventScript_GymSign"
+ },
+ {
+ "type": "sign",
+ "x": 31,
+ "y": 31,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FuchsiaCity_EventScript_WardensHomeSign"
+ },
+ {
+ "type": "sign",
+ "x": 35,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FuchsiaCity_EventScript_VoltorbSign"
+ },
+ {
+ "type": "sign",
+ "x": 38,
+ "y": 16,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FuchsiaCity_EventScript_SlowpokeSign"
+ },
+ {
+ "type": "sign",
+ "x": 41,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FuchsiaCity_EventScript_ChanseySign"
+ },
+ {
+ "type": "sign",
+ "x": 17,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FuchsiaCity_EventScript_KangaskhanSign"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FuchsiaCity_EventScript_FossilMonSign"
+ },
+ {
+ "type": "sign",
+ "x": 17,
+ "y": 18,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FuchsiaCity_EventScript_LaprasSign"
+ },
+ {
+ "type": "sign",
+ "x": 22,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FuchsiaCity_EventScript_SafariGameSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 33,
+ "y": 26,
+ "elevation": 3,
+ "item": "ITEM_MAX_REVIVE",
+ "flag": "FLAG_HIDDEN_ITEM_FUCHSIA_CITY_MAX_REVIVE",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/FuchsiaCity_Frlg/scripts.inc b/data/maps/FuchsiaCity_Frlg/scripts.inc
new file mode 100644
index 000000000000..a8db39060f51
--- /dev/null
+++ b/data/maps/FuchsiaCity_Frlg/scripts.inc
@@ -0,0 +1,252 @@
+FuchsiaCity_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, FuchsiaCity_OnTransition
+ .byte 0
+
+FuchsiaCity_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_FUCHSIA_CITY
+ call_if_set FLAG_GOT_DOME_FOSSIL, FuchsiaCity_EventScript_SetOmanyteGfx
+ call_if_unset FLAG_GOT_DOME_FOSSIL, FuchsiaCity_EventScript_SetKabutoGfx
+ end
+
+FuchsiaCity_EventScript_SetOmanyteGfx::
+ setvar VAR_OBJ_GFX_ID_0, OBJ_EVENT_GFX_OMANYTE
+ return
+
+FuchsiaCity_EventScript_SetKabutoGfx::
+ setvar VAR_OBJ_GFX_ID_0, OBJ_EVENT_GFX_KABUTO
+ return
+
+FuchsiaCity_EventScript_LittleBoy::
+ msgbox FuchsiaCity_Text_DidYouTrySafariGame, MSGBOX_NPC
+ end
+
+FuchsiaCity_EventScript_OldMan::
+ msgbox FuchsiaCity_Text_SafariZoneZooInFront, MSGBOX_NPC
+ end
+
+FuchsiaCity_EventScript_Erik::
+ msgbox FuchsiaCity_Text_WheresSara, MSGBOX_NPC
+ end
+
+FuchsiaCity_EventScript_Youngster::
+ msgbox FuchsiaCity_Text_ItemBallInThere, MSGBOX_NPC
+ end
+
+FuchsiaCity_EventScript_Lass::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_KOGA, 3
+ msgbox FuchsiaCity_Text_MyFatherIsGymLeader
+ release
+ end
+
+FuchsiaCity_EventScript_CitySign::
+ msgbox FuchsiaCity_Text_CitySign, MSGBOX_SIGN
+ end
+
+FuchsiaCity_EventScript_SafariZoneSign::
+ msgbox FuchsiaCity_Text_SafariZoneSign, MSGBOX_SIGN
+ end
+
+FuchsiaCity_EventScript_SafariGameSign::
+ msgbox FuchsiaCity_Text_SafariGameSign, MSGBOX_SIGN
+ end
+
+FuchsiaCity_EventScript_WardensHomeSign::
+ msgbox FuchsiaCity_Text_WardensHomeSign, MSGBOX_SIGN
+ end
+
+@ Unused
+FuchsiaCity_EventScript_SafariZoneOfficeSign::
+ msgbox FuchsiaCity_Text_SafariZoneOfficeSign, MSGBOX_SIGN
+ end
+
+FuchsiaCity_EventScript_GymSign::
+ lockall
+ famechecker FAMECHECKER_KOGA, 0
+ msgbox FuchsiaCity_Text_GymSign
+ releaseall
+ end
+
+FuchsiaCity_EventScript_ChanseySign::
+ lockall
+ setvar VAR_0x8004, SPECIES_CHANSEY
+ special SetSeenMon
+ showmonpic SPECIES_CHANSEY, 10, 3
+ msgbox FuchsiaCity_Text_ChanseySign
+ hidemonpic
+ releaseall
+ end
+
+FuchsiaCity_EventScript_VoltorbSign::
+ lockall
+ setvar VAR_0x8004, SPECIES_VOLTORB
+ special SetSeenMon
+ showmonpic SPECIES_VOLTORB, 10, 3
+ msgbox FuchsiaCity_Text_VoltorbSign
+ hidemonpic
+ releaseall
+ end
+
+FuchsiaCity_EventScript_KangaskhanSign::
+ lockall
+ setvar VAR_0x8004, SPECIES_KANGASKHAN
+ special SetSeenMon
+ showmonpic SPECIES_KANGASKHAN, 10, 3
+ msgbox FuchsiaCity_Text_KangaskhanSign
+ hidemonpic
+ releaseall
+ end
+
+FuchsiaCity_EventScript_SlowpokeSign::
+ lockall
+ setvar VAR_0x8004, SPECIES_SLOWPOKE
+ special SetSeenMon
+ showmonpic SPECIES_SLOWPOKE, 10, 3
+ msgbox FuchsiaCity_Text_SlowpokeSign
+ hidemonpic
+ releaseall
+ end
+
+FuchsiaCity_EventScript_LaprasSign::
+ lockall
+ setvar VAR_0x8004, SPECIES_LAPRAS
+ special SetSeenMon
+ showmonpic SPECIES_LAPRAS, 10, 3
+ msgbox FuchsiaCity_Text_LaprasSign
+ hidemonpic
+ releaseall
+ end
+
+FuchsiaCity_EventScript_FossilMonSign::
+ lockall
+ goto_if_set FLAG_GOT_DOME_FOSSIL, FuchsiaCity_EventScript_OmanyteSign
+ setvar VAR_0x8004, SPECIES_KABUTO
+ special SetSeenMon
+ showmonpic SPECIES_KABUTO, 10, 3
+ msgbox FuchsiaCity_Text_KabutoSign
+ hidemonpic
+ releaseall
+ end
+
+FuchsiaCity_EventScript_OmanyteSign::
+ setvar VAR_0x8004, SPECIES_OMANYTE
+ special SetSeenMon
+ showmonpic SPECIES_OMANYTE, 10, 3
+ msgbox FuchsiaCity_Text_OmanyteSign
+ hidemonpic
+ releaseall
+ end
+
+FuchsiaCity_Text_DidYouTrySafariGame::
+ .string "Did you try the SAFARI GAME?\p"
+ .string "There are some rare POKéMON that\n"
+ .string "can only be caught there.$"
+
+FuchsiaCity_Text_SafariZoneZooInFront::
+ .string "The SAFARI ZONE has a zoo in front\n"
+ .string "of the entrance.\p"
+ .string "Out back is the SAFARI GAME for\n"
+ .string "catching POKéMON.$"
+
+FuchsiaCity_Text_WheresSara::
+ .string "ERIK: Where's SARA?\n"
+ .string "I said I'd meet her here.$"
+
+FuchsiaCity_Text_ItemBallInThere::
+ .string "That item ball in there…\n"
+ .string "Were you wanting that?\p"
+ .string "Me, too!\n"
+ .string "…Huh? That's a POKéMON?$"
+
+FuchsiaCity_Text_CitySign::
+ .string "FUCHSIA CITY\n"
+ .string "Behold! It's Passion Pink!$"
+
+FuchsiaCity_Text_SafariZoneSign::
+ .string "POKéMON PARADISE\n"
+ .string "SAFARI ZONE$"
+
+FuchsiaCity_Text_SafariGameSign::
+ .string "SAFARI GAME\n"
+ .string "POKéMON-U-CATCH!$"
+
+FuchsiaCity_Text_WardensHomeSign::
+ .string "SAFARI ZONE\n"
+ .string "WARDEN'S HOME$"
+
+FuchsiaCity_Text_SafariZoneOfficeSign::
+ .string "POKéMON PARADISE!\n"
+ .string "Welcome to the SAFARI ZONE!\l"
+ .string "SAFARI ZONE OFFICE$"
+
+FuchsiaCity_Text_GymSign::
+ .string "FUCHSIA CITY POKéMON GYM\n"
+ .string "LEADER: KOGA\l"
+ .string "The Poisonous Ninja Master$"
+
+FuchsiaCity_Text_ChanseySign::
+ .string "Name: CHANSEY\n"
+ .string "Catching one is all up to chance.$"
+
+FuchsiaCity_Text_VoltorbSign::
+ .string "Name: VOLTORB\n"
+ .string "The very image of a POKé BALL.$"
+
+FuchsiaCity_Text_KangaskhanSign::
+ .string "Name: KANGASKHAN\p"
+ .string "A maternal POKéMON that raises its\n"
+ .string "young in a pouch on its belly.$"
+
+FuchsiaCity_Text_SlowpokeSign::
+ .string "Name: SLOWPOKE\n"
+ .string "Friendly and very slow moving.$"
+
+FuchsiaCity_Text_LaprasSign::
+ .string "Name: LAPRAS\n"
+ .string "AKA the king of the seas.$"
+
+FuchsiaCity_Text_OmanyteSign::
+ .string "Name: OMANYTE\n"
+ .string "An extremely rare POKéMON that was\l"
+ .string "regenerated from a fossil.$"
+
+FuchsiaCity_Text_KabutoSign::
+ .string "Name: KABUTO\n"
+ .string "An extremely rare POKéMON that was\l"
+ .string "regenerated from a fossil.$"
+
+@ Unused. May have been meant to be the placeholder text for the zoo mons, similar to RB's "!" text
+FuchsiaCity_Text_Ellipsis::
+ .string "……$"
+
+Text_SubstituteTeach::
+ .string "Aww, I wish I was a KANGASKHAN\n"
+ .string "baby.\p"
+ .string "I'd love to be a substitute for the\n"
+ .string "baby…\p"
+ .string "And snuggle in the mother\n"
+ .string "KANGASKHAN's belly pouch.\p"
+ .string "But only POKéMON can use the\n"
+ .string "technique SUBSTITUTE…\p"
+ .string "Want me to teach SUBSTITUTE to\n"
+ .string "one of your POKéMON?$"
+
+Text_SubstituteDeclined::
+ .string "Oh, really?\n"
+ .string "SUBSTITUTE seems so fun…$"
+
+Text_SubstituteWhichMon::
+ .string "Which POKéMON wants to learn\n"
+ .string "SUBSTITUTE?$"
+
+Text_SubstituteTaught::
+ .string "Boy, what I'd give to crawl inside\n"
+ .string "a KANGASKHAN belly pouch…$"
+
+FuchsiaCity_Text_MyFatherIsGymLeader::
+ .string "My father is the GYM LEADER of\n"
+ .string "this town.\p"
+ .string "I'm training to use POISON POKéMON\n"
+ .string "as well as my father.$"
+
diff --git a/data/maps/FuchsiaCity_Gym_Frlg/map.json b/data/maps/FuchsiaCity_Gym_Frlg/map.json
new file mode 100644
index 000000000000..ecf26f6f348b
--- /dev/null
+++ b/data/maps/FuchsiaCity_Gym_Frlg/map.json
@@ -0,0 +1,174 @@
+{
+ "id": "MAP_FUCHSIA_CITY_GYM",
+ "name": "FuchsiaCity_Gym_Frlg",
+ "layout": "LAYOUT_FUCHSIA_CITY_GYM",
+ "music": "MUS_GYM",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FUCHSIA_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_GYM",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 12,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "FuchsiaCity_Gym_EventScript_Kayden",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 2,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "FuchsiaCity_Gym_EventScript_Shawn",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 11,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "FuchsiaCity_Gym_EventScript_Kirk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 13,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "FuchsiaCity_Gym_EventScript_Edgar",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "FuchsiaCity_Gym_EventScript_Phil",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 2,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "FuchsiaCity_Gym_EventScript_Nate",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_KOGA",
+ "x": 7,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_Gym_EventScript_Koga",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GYM_GUY",
+ "x": 11,
+ "y": 19,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_Gym_EventScript_GymGuy",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 21,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 7,
+ "y": 21,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 8,
+ "y": 21,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 19,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FuchsiaCity_Gym_EventScript_GymStatue"
+ },
+ {
+ "type": "sign",
+ "x": 10,
+ "y": 19,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FuchsiaCity_Gym_EventScript_GymStatue"
+ }
+ ]
+}
diff --git a/data/maps/FuchsiaCity_Gym_Frlg/scripts.inc b/data/maps/FuchsiaCity_Gym_Frlg/scripts.inc
new file mode 100644
index 000000000000..04b3cca246b3
--- /dev/null
+++ b/data/maps/FuchsiaCity_Gym_Frlg/scripts.inc
@@ -0,0 +1,247 @@
+FuchsiaCity_Gym_Frlg_MapScripts::
+ .byte 0
+
+FuchsiaCity_Gym_EventScript_Koga::
+ famechecker FAMECHECKER_KOGA, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
+ trainerbattle_single TRAINER_LEADER_KOGA, FuchsiaCity_Gym_Text_KogaIntro, FuchsiaCity_Gym_Text_KogaDefeat, FuchsiaCity_Gym_EventScript_DefeatedKoga, NO_MUSIC
+ goto_if_unset FLAG_GOT_TM06_FROM_KOGA, FuchsiaCity_Gym_EventScript_GiveTM06
+ msgbox FuchsiaCity_Gym_Text_KogaPostBattle
+ release
+ end
+
+FuchsiaCity_Gym_EventScript_DefeatedKoga::
+ famechecker FAMECHECKER_KOGA, 1
+ clearflag FLAG_HIDE_FAME_CHECKER_KOGA_JOURNAL
+ setflag FLAG_DEFEATED_KOGA
+ setflag FLAG_BADGE05_GET
+ set_gym_trainers_frlg 5
+ goto FuchsiaCity_Gym_EventScript_GiveTM06
+ end
+
+FuchsiaCity_Gym_EventScript_GiveTM06::
+ msgbox FuchsiaCity_Gym_Text_KogaExplainSoulBadge
+ checkitemspace ITEM_TM06
+ goto_if_eq VAR_RESULT, FALSE, FuchsiaCity_Gym_EventScript_NoRoomForTM06
+ giveitem_msg FuchsiaCity_Gym_Text_ReceivedTM06FromKoga, ITEM_TM06
+ setflag FLAG_GOT_TM06_FROM_KOGA
+ msgbox FuchsiaCity_Gym_Text_KogaExplainTM06
+ release
+ end
+
+FuchsiaCity_Gym_EventScript_NoRoomForTM06::
+ msgbox FuchsiaCity_Gym_Text_MakeSpaceForThis
+ release
+ end
+
+FuchsiaCity_Gym_EventScript_Phil::
+ trainerbattle_single TRAINER_TAMER_PHIL, FuchsiaCity_Gym_Text_PhilIntro, FuchsiaCity_Gym_Text_PhilDefeat
+ msgbox FuchsiaCity_Gym_Text_PhilPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FuchsiaCity_Gym_EventScript_Edgar::
+ trainerbattle_single TRAINER_TAMER_EDGAR, FuchsiaCity_Gym_Text_EdgarIntro, FuchsiaCity_Gym_Text_EdgarDefeat
+ msgbox FuchsiaCity_Gym_Text_EdgarPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FuchsiaCity_Gym_EventScript_Kirk::
+ trainerbattle_single TRAINER_JUGGLER_KIRK, FuchsiaCity_Gym_Text_KirkIntro, FuchsiaCity_Gym_Text_KirkDefeat
+ famechecker FAMECHECKER_KOGA, 2
+ msgbox FuchsiaCity_Gym_Text_KirkPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FuchsiaCity_Gym_EventScript_Shawn::
+ trainerbattle_single TRAINER_JUGGLER_SHAWN, FuchsiaCity_Gym_Text_ShawnIntro, FuchsiaCity_Gym_Text_ShawnDefeat
+ msgbox FuchsiaCity_Gym_Text_ShawnPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FuchsiaCity_Gym_EventScript_Kayden::
+ trainerbattle_single TRAINER_JUGGLER_KAYDEN, FuchsiaCity_Gym_Text_KaydenIntro, FuchsiaCity_Gym_Text_KaydenDefeat
+ msgbox FuchsiaCity_Gym_Text_KaydenPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FuchsiaCity_Gym_EventScript_Nate::
+ trainerbattle_single TRAINER_JUGGLER_NATE, FuchsiaCity_Gym_Text_NateIntro, FuchsiaCity_Gym_Text_NateDefeat
+ msgbox FuchsiaCity_Gym_Text_NatePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FuchsiaCity_Gym_EventScript_GymGuy::
+ lock
+ faceplayer
+ goto_if_set FLAG_DEFEATED_KOGA, FuchsiaCity_Gym_EventScript_GymGuyPostVictory
+ msgbox FuchsiaCity_Gym_Text_GymGuyAdvice
+ release
+ end
+
+FuchsiaCity_Gym_EventScript_GymGuyPostVictory::
+ msgbox FuchsiaCity_Gym_Text_GymGuyPostVictory
+ release
+ end
+
+FuchsiaCity_Gym_EventScript_GymStatue::
+ lockall
+ goto_if_set FLAG_BADGE05_GET, FuchsiaCity_Gym_EventScript_GymStatuePostVictory
+ msgbox FuchsiaCity_Gym_Text_GymStatue
+ releaseall
+ end
+
+FuchsiaCity_Gym_EventScript_GymStatuePostVictory::
+ msgbox FuchsiaCity_Gym_Text_GymStatuePlayerWon
+ releaseall
+ end
+
+FuchsiaCity_Gym_Text_KogaIntro::
+ .string "KOGA: Fwahahaha!\p"
+ .string "A mere child like you dares to\n"
+ .string "challenge me?\p"
+ .string "The very idea makes me shiver\n"
+ .string "with mirth!\p"
+ .string "Very well, I shall show you true\n"
+ .string "terror as a ninja master.\p"
+ .string "Poison brings steady doom.\n"
+ .string "Sleep renders foes helpless.\p"
+ .string "Despair to the creeping horror of\n"
+ .string "POISON-type POKéMON!{PLAY_BGM}{MUS_RG_ENCOUNTER_GYM_LEADER}$"
+
+FuchsiaCity_Gym_Text_KogaDefeat::
+ .string "Humph!\n"
+ .string "You have proven your worth!\p"
+ .string "Here!\n"
+ .string "Take the SOULBADGE!$"
+
+FuchsiaCity_Gym_Text_KogaPostBattle::
+ .string "When afflicted by TOXIC, a POKéMON\n"
+ .string "suffers more and more.\p"
+ .string "It suffers worsening damage as the\n"
+ .string "battle wears on!\p"
+ .string "It will surely terrorize foes!$"
+
+FuchsiaCity_Gym_Text_KogaExplainSoulBadge::
+ .string "Now that you have the SOULBADGE,\n"
+ .string "the DEFENSE of your POKéMON rises.\p"
+ .string "It also lets you SURF outside of\n"
+ .string "battle.\p"
+ .string "Ah!\n"
+ .string "Take this, too!$"
+
+FuchsiaCity_Gym_Text_ReceivedTM06FromKoga::
+ .string "{PLAYER} received TM06\n"
+ .string "from KOGA.$"
+
+FuchsiaCity_Gym_Text_KogaExplainTM06::
+ .string "Sealed within that TM06 lies\n"
+ .string "TOXIC!\p"
+ .string "It is a secret technique dating\n"
+ .string "back some four hundred years.$"
+
+FuchsiaCity_Gym_Text_MakeSpaceForThis::
+ .string "Make space for this, child!$"
+
+FuchsiaCity_Gym_Text_KaydenIntro::
+ .string "Strength isn't the key for POKéMON.\n"
+ .string "Do you understand this?\p"
+ .string "POKéMON is about strategy!\p"
+ .string "I'll show you how strategy can\n"
+ .string "beat brute strength.$"
+
+FuchsiaCity_Gym_Text_KaydenDefeat::
+ .string "What?\n"
+ .string "Extraordinary!$"
+
+FuchsiaCity_Gym_Text_KaydenPostBattle::
+ .string "So, you mix brawn with brains?\n"
+ .string "Good strategy!\p"
+ .string "That's remarkable for a child\n"
+ .string "TRAINER.$"
+
+FuchsiaCity_Gym_Text_KirkIntro::
+ .string "I was a magician once upon a time.\p"
+ .string "But I dreamt of becoming a ninja,\n"
+ .string "so I joined this GYM.$"
+
+FuchsiaCity_Gym_Text_KirkDefeat::
+ .string "I'm done for!$"
+
+FuchsiaCity_Gym_Text_KirkPostBattle::
+ .string "Even though I've lost, I will keep\n"
+ .string "training according to the teachings\l"
+ .string "of KOGA, my ninja master.$"
+
+FuchsiaCity_Gym_Text_NateIntro::
+ .string "Let's see you beat my special\n"
+ .string "techniques!$"
+
+FuchsiaCity_Gym_Text_NateDefeat::
+ .string "You had me fooled!$"
+
+FuchsiaCity_Gym_Text_NatePostBattle::
+ .string "I like poison and sleep techniques,\n"
+ .string "as they linger after battle!$"
+
+FuchsiaCity_Gym_Text_PhilIntro::
+ .string "Stop right there!\p"
+ .string "The famed invisible walls of\n"
+ .string "FUCHSIA GYM have you frustrated?$"
+
+FuchsiaCity_Gym_Text_PhilDefeat::
+ .string "Whoa!\n"
+ .string "You've got it!$"
+
+FuchsiaCity_Gym_Text_PhilPostBattle::
+ .string "You impressed me!\n"
+ .string "Here's a hint!\p"
+ .string "Look very closely for gaps in the\n"
+ .string "invisible walls!$"
+
+FuchsiaCity_Gym_Text_EdgarIntro::
+ .string "I also study the way of the ninja\n"
+ .string "with Master KOGA!\p"
+ .string "Ninja have a long history of using\n"
+ .string "animals!$"
+
+FuchsiaCity_Gym_Text_EdgarDefeat::
+ .string "Awoo!$"
+
+FuchsiaCity_Gym_Text_EdgarPostBattle::
+ .string "I still have much to learn.$"
+
+FuchsiaCity_Gym_Text_ShawnIntro::
+ .string "Master KOGA comes from a long line\n"
+ .string "of ninjas.\p"
+ .string "What did you descend from?$"
+
+FuchsiaCity_Gym_Text_ShawnDefeat::
+ .string "You're more skilled than I'd\n"
+ .string "thought!$"
+
+FuchsiaCity_Gym_Text_ShawnPostBattle::
+ .string "Where there is light, there is\n"
+ .string "shadow!\p"
+ .string "Light and shadow!\n"
+ .string "Which do you choose?$"
+
+FuchsiaCity_Gym_Text_GymGuyAdvice::
+ .string "Yo!\n"
+ .string "Champ in the making!\p"
+ .string "FUCHSIA GYM is a tricked-up place.\n"
+ .string "It's riddled with invisible walls!\p"
+ .string "KOGA might appear close, but he's\n"
+ .string "blocked off.\p"
+ .string "You have to find gaps in the walls\n"
+ .string "to reach him.$"
+
+FuchsiaCity_Gym_Text_GymGuyPostVictory::
+ .string "It's amazing how ninja can terrify,\n"
+ .string "even now!$"
+
+FuchsiaCity_Gym_Text_GymStatue::
+ .string "FUCHSIA POKéMON GYM\n"
+ .string "LEADER: KOGA\p"
+ .string "WINNING TRAINERS:\n"
+ .string "{RIVAL}$"
+
+FuchsiaCity_Gym_Text_GymStatuePlayerWon::
+ .string "FUCHSIA POKéMON GYM\n"
+ .string "LEADER: KOGA\p"
+ .string "WINNING TRAINERS:\n"
+ .string "{RIVAL}, {PLAYER}$"
+
diff --git a/data/maps/FuchsiaCity_House1_Frlg/map.json b/data/maps/FuchsiaCity_House1_Frlg/map.json
new file mode 100644
index 000000000000..f2e59bba3e51
--- /dev/null
+++ b/data/maps/FuchsiaCity_House1_Frlg/map.json
@@ -0,0 +1,87 @@
+{
+ "id": "MAP_FUCHSIA_CITY_HOUSE1",
+ "name": "FuchsiaCity_House1_Frlg",
+ "layout": "LAYOUT_HOUSE1_FRLG",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FUCHSIA_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_House1_EventScript_OldMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_House1_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_BOY_FRLG",
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_House1_EventScript_LittleBoy",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "5"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FuchsiaCity_House1_Frlg/scripts.inc b/data/maps/FuchsiaCity_House1_Frlg/scripts.inc
new file mode 100644
index 000000000000..9edd3f9ade61
--- /dev/null
+++ b/data/maps/FuchsiaCity_House1_Frlg/scripts.inc
@@ -0,0 +1,36 @@
+FuchsiaCity_House1_Frlg_MapScripts::
+ .byte 0
+
+FuchsiaCity_House1_EventScript_Woman::
+ msgbox FuchsiaCity_House1_Text_WardenIsOldHasFalseTeeth, MSGBOX_NPC
+ end
+
+FuchsiaCity_House1_EventScript_OldMan::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_BILL, 2
+ msgbox FuchsiaCity_House1_Text_BillIsMyGrandson
+ release
+ end
+
+FuchsiaCity_House1_EventScript_LittleBoy::
+ msgbox FuchsiaCity_House1_Text_BillFilesHisOwnMonData, MSGBOX_NPC
+ end
+
+FuchsiaCity_House1_Text_WardenIsOldHasFalseTeeth::
+ .string "The SAFARI ZONE's WARDEN is old, \n"
+ .string "but he's still very much active.\p"
+ .string "All his teeth are false, though.$"
+
+FuchsiaCity_House1_Text_BillIsMyGrandson::
+ .string "Hmm?\n"
+ .string "You've met BILL?\p"
+ .string "He's my grandson!\p"
+ .string "He always liked collecting things,\n"
+ .string "even as a child!$"
+
+FuchsiaCity_House1_Text_BillFilesHisOwnMonData::
+ .string "BILL files his own POKéMON data on\n"
+ .string "his PC.\p"
+ .string "Did he show you?$"
+
diff --git a/data/maps/FuchsiaCity_House2_Frlg/map.json b/data/maps/FuchsiaCity_House2_Frlg/map.json
new file mode 100644
index 000000000000..9715a17c603d
--- /dev/null
+++ b/data/maps/FuchsiaCity_House2_Frlg/map.json
@@ -0,0 +1,66 @@
+{
+ "id": "MAP_FUCHSIA_CITY_HOUSE2",
+ "name": "FuchsiaCity_House2_Frlg",
+ "layout": "LAYOUT_FUCHSIA_CITY_HOUSE2",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FUCHSIA_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 6,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_House2_EventScript_FishingGurusBrother",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 3,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 4,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 3,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "8"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FuchsiaCity_House2_Frlg/scripts.inc b/data/maps/FuchsiaCity_House2_Frlg/scripts.inc
new file mode 100644
index 000000000000..5ccab6fa5c0f
--- /dev/null
+++ b/data/maps/FuchsiaCity_House2_Frlg/scripts.inc
@@ -0,0 +1,70 @@
+FuchsiaCity_House2_Frlg_MapScripts::
+ .byte 0
+
+FuchsiaCity_House2_EventScript_FishingGurusBrother::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_GOOD_ROD, FuchsiaCity_House2_EventScript_AlreadyGotGoodRod
+ msgbox FuchsiaCity_House2_Text_DoYouLikeToFish, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, FuchsiaCity_House2_EventScript_GiveGoodRod
+ msgbox FuchsiaCity_House2_Text_OhThatsDisappointing
+ release
+ end
+
+FuchsiaCity_House2_EventScript_AlreadyGotGoodRod::
+ msgbox FuchsiaCity_House2_Text_HowAreTheFishBiting
+ release
+ end
+
+FuchsiaCity_House2_EventScript_GiveGoodRod::
+ msgbox FuchsiaCity_House2_Text_LikeYourStyleTakeThis
+ checkitemspace ITEM_GOOD_ROD
+ goto_if_eq VAR_RESULT, FALSE, FuchsiaCity_House2_EventScript_NoRoomForGoodRod
+ giveitem_msg FuchsiaCity_House2_Text_ReceivedGoodRod, ITEM_GOOD_ROD
+ msgbox FuchsiaCity_House2_Text_GoodRodCanCatchBetterMons
+ setflag FLAG_GOT_GOOD_ROD
+ release
+ end
+
+FuchsiaCity_House2_EventScript_NoRoomForGoodRod::
+ msgbox FuchsiaCity_House2_Text_YouHaveNoRoomForGift
+ release
+ end
+
+FuchsiaCity_House2_Text_DoYouLikeToFish::
+ .string "I'm the FISHING GURU's older\n"
+ .string "brother.\p"
+ .string "I simply looove fishing!\n"
+ .string "I can't bear to go without.\p"
+ .string "Tell me, do you like to fish?$"
+
+FuchsiaCity_House2_Text_LikeYourStyleTakeThis::
+ .string "Grand! I like your style.\n"
+ .string "I think we can be friends.\p"
+ .string "Take this and fish, young friend!$"
+
+FuchsiaCity_House2_Text_ReceivedGoodRod::
+ .string "{PLAYER} received a GOOD ROD from\n"
+ .string "the FISHING GURU's brother.$"
+
+FuchsiaCity_House2_Text_GoodRodCanCatchBetterMons::
+ .string "Fishing is a way of life!\n"
+ .string "It is like the finest poetry.\p"
+ .string "A crummy OLD ROD could only catch\n"
+ .string "MAGIKARP, yes?\p"
+ .string "But with a GOOD ROD, you can\n"
+ .string "catch much better POKéMON.$"
+
+FuchsiaCity_House2_Text_OhThatsDisappointing::
+ .string "Oh…\n"
+ .string "That's so disappointing…$"
+
+FuchsiaCity_House2_Text_HowAreTheFishBiting::
+ .string "Hello there, {PLAYER}!\p"
+ .string "How are the fish biting?$"
+
+FuchsiaCity_House2_Text_YouHaveNoRoomForGift::
+ .string "Oh, no!\p"
+ .string "I had a gift for you, but you have\n"
+ .string "no room for it!$"
+
diff --git a/data/maps/FuchsiaCity_House3_Frlg/map.json b/data/maps/FuchsiaCity_House3_Frlg/map.json
new file mode 100644
index 000000000000..a9b17bcd5883
--- /dev/null
+++ b/data/maps/FuchsiaCity_House3_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_FUCHSIA_CITY_HOUSE3",
+ "name": "FuchsiaCity_House3_Frlg",
+ "layout": "LAYOUT_HOUSE1_FRLG",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FUCHSIA_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_House3_EventScript_MoveDeleter",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "10"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FuchsiaCity_House3_Frlg/scripts.inc b/data/maps/FuchsiaCity_House3_Frlg/scripts.inc
new file mode 100644
index 000000000000..5f6f10390d59
--- /dev/null
+++ b/data/maps/FuchsiaCity_House3_Frlg/scripts.inc
@@ -0,0 +1,90 @@
+FuchsiaCity_House3_Frlg_MapScripts::
+ .byte 0
+
+FuchsiaCity_House3_EventScript_MoveDeleter::
+ lock
+ faceplayer
+ msgbox FuchsiaCity_House3_Text_WouldYouLikeToForgetMove, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, FuchsiaCity_House3_EventScript_ChooseMonForMoveDeleter
+ goto FuchsiaCity_House3_EventScript_CancelForgetMove
+ end
+
+FuchsiaCity_House3_EventScript_ChooseMonForMoveDeleter::
+ msgbox FuchsiaCity_House3_Text_WhichMonShouldForgetMove
+ special ChoosePartyMon
+ waitstate
+ goto_if_ge VAR_0x8004, PARTY_SIZE, FuchsiaCity_House3_EventScript_CancelForgetMove
+ special IsSelectedMonEgg
+ goto_if_eq VAR_RESULT, TRUE, FuchsiaCity_House3_EventScript_CantForgetMoveEgg
+ special GetNumMovesSelectedMonHas
+ goto_if_eq VAR_RESULT, 1, FuchsiaCity_House3_EventScript_CantForgetOnlyMove
+ msgbox FuchsiaCity_House3_Text_WhichMoveShouldBeForgotten
+ fadescreen FADE_TO_BLACK
+ special MoveDeleterChooseMoveToForget
+ fadescreen FADE_FROM_BLACK
+ goto_if_eq VAR_0x8005, MAX_MON_MOVES, FuchsiaCity_House3_EventScript_ChooseMonForMoveDeleter
+ special BufferMoveDeleterNicknameAndMove
+ msgbox FuchsiaCity_House3_Text_MonsMoveShouldBeForgotten, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, FuchsiaCity_House3_EventScript_ForgetMove
+ goto FuchsiaCity_House3_EventScript_CancelForgetMove
+ end
+
+FuchsiaCity_House3_EventScript_ForgetMove::
+ special MoveDeleterForgetMove
+ playfanfare MUS_MOVE_DELETED
+ waitfanfare
+ msgbox FuchsiaCity_House3_Text_MonHasForgottenMoveCompletely
+ release
+ end
+
+FuchsiaCity_House3_EventScript_CantForgetOnlyMove::
+ special BufferMoveDeleterNicknameAndMove
+ msgbox FuchsiaCity_House3_Text_MonOnlyKnowsOneMove
+ release
+ end
+
+FuchsiaCity_House3_EventScript_CantForgetMoveEgg::
+ msgbox FuchsiaCity_House3_Text_NoEggShouldKnowMoves
+ release
+ end
+
+FuchsiaCity_House3_EventScript_CancelForgetMove::
+ msgbox FuchsiaCity_House3_Text_ComeAgainToForgetOtherMoves
+ release
+ end
+
+FuchsiaCity_House3_Text_WouldYouLikeToForgetMove::
+ .string "Uh…\n"
+ .string "Oh, yes, I'm the MOVE DELETER.\p"
+ .string "I can make POKéMON forget their\n"
+ .string "moves.\p"
+ .string "Would you like me to do that?$"
+
+FuchsiaCity_House3_Text_WhichMonShouldForgetMove::
+ .string "Which POKéMON should forget a\n"
+ .string "move?$"
+
+FuchsiaCity_House3_Text_WhichMoveShouldBeForgotten::
+ .string "Which move should be forgotten?$"
+
+FuchsiaCity_House3_Text_MonOnlyKnowsOneMove::
+ .string "{STR_VAR_1} seems to know only one\n"
+ .string "move…$"
+
+FuchsiaCity_House3_Text_MonsMoveShouldBeForgotten::
+ .string "Hm! {STR_VAR_1}'s {STR_VAR_2}?\n"
+ .string "That move should be forgotten?$"
+
+FuchsiaCity_House3_Text_MonHasForgottenMoveCompletely::
+ .string "It worked to perfection!\p"
+ .string "{STR_VAR_1} has forgotten\n"
+ .string "{STR_VAR_2} completely.$"
+
+FuchsiaCity_House3_Text_ComeAgainToForgetOtherMoves::
+ .string "Come again if there are other\n"
+ .string "moves to be forgotten.$"
+
+FuchsiaCity_House3_Text_NoEggShouldKnowMoves::
+ .string "What?\n"
+ .string "No EGG should know any moves.$"
+
diff --git a/data/maps/FuchsiaCity_Mart_Frlg/map.json b/data/maps/FuchsiaCity_Mart_Frlg/map.json
new file mode 100644
index 000000000000..0f77a1b803a3
--- /dev/null
+++ b/data/maps/FuchsiaCity_Mart_Frlg/map.json
@@ -0,0 +1,87 @@
+{
+ "id": "MAP_FUCHSIA_CITY_MART",
+ "name": "FuchsiaCity_Mart_Frlg",
+ "layout": "LAYOUT_MART_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FUCHSIA_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 2,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_Mart_EventScript_Clerk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 6,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_Mart_EventScript_Gentleman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 9,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_Mart_EventScript_CooltrainerF",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FuchsiaCity_Mart_Frlg/scripts.inc b/data/maps/FuchsiaCity_Mart_Frlg/scripts.inc
new file mode 100644
index 000000000000..3752f861abb3
--- /dev/null
+++ b/data/maps/FuchsiaCity_Mart_Frlg/scripts.inc
@@ -0,0 +1,43 @@
+FuchsiaCity_Mart_Frlg_MapScripts::
+ .byte 0
+
+FuchsiaCity_Mart_EventScript_CooltrainerF::
+ msgbox FuchsiaCity_Mart_Text_DidYouTryXSpeed, MSGBOX_NPC
+ end
+
+FuchsiaCity_Mart_EventScript_Gentleman::
+ msgbox FuchsiaCity_Mart_Text_DontTheyHaveSafariZonePennants, MSGBOX_NPC
+ end
+
+FuchsiaCity_Mart_EventScript_Clerk::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart FuchsiaCity_Mart_Items
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+FuchsiaCity_Mart_Items::
+ .2byte ITEM_ULTRA_BALL
+ .2byte ITEM_GREAT_BALL
+ .2byte ITEM_SUPER_POTION
+ .2byte ITEM_REVIVE
+ .2byte ITEM_FULL_HEAL
+ .2byte ITEM_MAX_REPEL
+ .2byte ITEM_NONE
+ release
+ end
+
+FuchsiaCity_Mart_Text_DontTheyHaveSafariZonePennants::
+ .string "Don't they have any pennants\n"
+ .string "promoting the SAFARI ZONE?\p"
+ .string "How about some paper lanterns?\n"
+ .string "Aren't there even any calendars?$"
+
+FuchsiaCity_Mart_Text_DidYouTryXSpeed::
+ .string "Did you try X SPEED?\n"
+ .string "It speeds up a POKéMON in battle.$"
+
diff --git a/data/maps/FuchsiaCity_PokemonCenter_1F_Frlg/map.json b/data/maps/FuchsiaCity_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..34e298deff13
--- /dev/null
+++ b/data/maps/FuchsiaCity_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,109 @@
+{
+ "id": "MAP_FUCHSIA_CITY_POKEMON_CENTER_1F",
+ "name": "FuchsiaCity_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FUCHSIA_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_FUCHSIA_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 12,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_PokemonCenter_1F_EventScript_Man",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 13,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_PokemonCenter_1F_EventScript_CooltrainerF",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 4,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_PokemonCenter_1F_EventScript_Youngster",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 8,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_FUCHSIA_CITY_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FuchsiaCity_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/FuchsiaCity_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..f51514a1a174
--- /dev/null
+++ b/data/maps/FuchsiaCity_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,46 @@
+FuchsiaCity_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, FuchsiaCity_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ .byte 0
+
+FuchsiaCity_PokemonCenter_1F_OnTransition::
+ setrespawn HEAL_LOCATION_FUCHSIA_CITY
+ end
+
+FuchsiaCity_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+FuchsiaCity_PokemonCenter_1F_EventScript_Man::
+ msgbox FuchsiaCity_PokemonCenter_1F_Text_CantBecomeGoodTrainerWithOneMon, MSGBOX_NPC
+ end
+
+FuchsiaCity_PokemonCenter_1F_EventScript_CooltrainerF::
+ msgbox FuchsiaCity_PokemonCenter_1F_Text_PokemonLeagueWestOfViridian, MSGBOX_NPC
+ end
+
+FuchsiaCity_PokemonCenter_1F_EventScript_Youngster::
+ msgbox FuchsiaCity_PokemonCenter_1F_Text_VisitSafariZoneForPokedex, MSGBOX_NPC
+ end
+
+FuchsiaCity_PokemonCenter_1F_Text_CantBecomeGoodTrainerWithOneMon::
+ .string "You can't become a good TRAINER\n"
+ .string "with just one strong POKéMON.\p"
+ .string "But raising many POKéMON evenly\n"
+ .string "is no easy task, either.$"
+
+FuchsiaCity_PokemonCenter_1F_Text_PokemonLeagueWestOfViridian::
+ .string "There's a narrow trail west of\n"
+ .string "VIRIDIAN CITY.\p"
+ .string "It goes to the POKéMON LEAGUE HQ.\n"
+ .string "The HQ governs all TRAINERS.$"
+
+FuchsiaCity_PokemonCenter_1F_Text_VisitSafariZoneForPokedex::
+ .string "If you're working on a POKéDEX,\n"
+ .string "visit the SAFARI ZONE.\p"
+ .string "All sorts of rare POKéMON breed\n"
+ .string "there.$"
+
diff --git a/data/maps/FuchsiaCity_PokemonCenter_2F_Frlg/map.json b/data/maps/FuchsiaCity_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..bf85919107f4
--- /dev/null
+++ b/data/maps/FuchsiaCity_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_FUCHSIA_CITY_POKEMON_CENTER_2F",
+ "name": "FuchsiaCity_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FUCHSIA_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_FUCHSIA_CITY_POKEMON_CENTER_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FuchsiaCity_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/FuchsiaCity_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..9cff6a66c594
--- /dev/null
+++ b/data/maps/FuchsiaCity_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+FuchsiaCity_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+FuchsiaCity_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+FuchsiaCity_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+FuchsiaCity_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/FuchsiaCity_SafariZone_Entrance_Frlg/map.json b/data/maps/FuchsiaCity_SafariZone_Entrance_Frlg/map.json
new file mode 100644
index 000000000000..8d46029b50e6
--- /dev/null
+++ b/data/maps/FuchsiaCity_SafariZone_Entrance_Frlg/map.json
@@ -0,0 +1,108 @@
+{
+ "id": "MAP_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE",
+ "name": "FuchsiaCity_SafariZone_Entrance_Frlg",
+ "layout": "LAYOUT_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FUCHSIA_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 7,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 1,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_SafariZone_Entrance_EventScript_InfoAttendant",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_CENTER",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 4,
+ "y": 3,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "FuchsiaCity_SafariZone_Entrance_EventScript_EntryTriggerMid"
+ },
+ {
+ "type": "trigger",
+ "x": 5,
+ "y": 3,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "FuchsiaCity_SafariZone_Entrance_EventScript_EntryTriggerRight"
+ },
+ {
+ "type": "trigger",
+ "x": 3,
+ "y": 3,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "FuchsiaCity_SafariZone_Entrance_EventScript_EntryTriggerLeft"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/FuchsiaCity_SafariZone_Entrance_Frlg/scripts.inc b/data/maps/FuchsiaCity_SafariZone_Entrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..a2bce1ca93e4
--- /dev/null
+++ b/data/maps/FuchsiaCity_SafariZone_Entrance_Frlg/scripts.inc
@@ -0,0 +1,280 @@
+FuchsiaCity_SafariZone_Entrance_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, FuchsiaCity_SafariZone_Entrance_OnFrame
+ .byte 0
+
+FuchsiaCity_SafariZone_Entrance_OnFrame::
+ map_script_2 VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 1, FuchsiaCity_SafariZone_Entrance_EventScript_ExitWarpIn
+ map_script_2 VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 2, FuchsiaCity_SafariZone_Entrance_EventScript_ExitEarly
+ map_script_2 VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 3, FuchsiaCity_SafariZone_Entrance_EventScript_ExitWalkIn
+ .2byte 0
+
+@ When player runs out of balls mid-battle
+FuchsiaCity_SafariZone_Entrance_EventScript_ExitWalkIn::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_PLAYER, FuchsiaCity_SafariZone_Entrance_Movement_ApproachCounter
+ waitmovement 0
+ msgbox FuchsiaCity_SafariZone_Entrance_Text_CatchFairShareComeAgain
+ closemessage
+ applymovement LOCALID_PLAYER, FuchsiaCity_SafariZone_Entrance_Movement_Exit2
+ waitmovement 0
+ special ExitSafariMode
+ setvar VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0
+ releaseall
+ end
+
+@ When player runs of out balls after catching a pokemon, or runs out of steps
+FuchsiaCity_SafariZone_Entrance_EventScript_ExitWarpIn::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox FuchsiaCity_SafariZone_Entrance_Text_CatchFairShareComeAgain
+ closemessage
+ applymovement LOCALID_PLAYER, FuchsiaCity_SafariZone_Entrance_Movement_Exit
+ waitmovement 0
+ special ExitSafariMode
+ setvar VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0
+ releaseall
+ end
+
+@ When player re-enters the entrance building with balls/steps remaining
+FuchsiaCity_SafariZone_Entrance_EventScript_ExitEarly::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox FuchsiaCity_SafariZone_Entrance_Text_GoingToLeaveSafariZoneEarly, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, FuchsiaCity_SafariZone_Entrance_EventScript_ReturnToSafariZone
+ msgbox FuchsiaCity_SafariZone_Entrance_Text_PleaseReturnSafariBalls
+ closemessage
+ applymovement LOCALID_PLAYER, FuchsiaCity_SafariZone_Entrance_Movement_Exit
+ waitmovement 0
+ special ExitSafariMode
+ setvar VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 0
+ releaseall
+ end
+
+FuchsiaCity_SafariZone_Entrance_EventScript_ReturnToSafariZone::
+ msgbox FuchsiaCity_SafariZone_Entrance_Text_GoodLuck
+ closemessage
+ applymovement LOCALID_PLAYER, FuchsiaCity_SafariZone_Entrance_Movement_ReEnter
+ waitmovement 0
+ warp MAP_SAFARI_ZONE_CENTER, 26, 30
+ waitstate
+ end
+
+FuchsiaCity_SafariZone_Entrance_Movement_Exit::
+ walk_down
+ walk_down
+ step_end
+
+FuchsiaCity_SafariZone_Entrance_Movement_ReEnter::
+ walk_up
+ step_end
+
+FuchsiaCity_SafariZone_Entrance_Movement_Exit2::
+ walk_down
+ walk_down
+ step_end
+
+FuchsiaCity_SafariZone_Entrance_Movement_ApproachCounter::
+ walk_down
+ delay_8
+ step_end
+
+FuchsiaCity_SafariZone_Entrance_EventScript_EntryTriggerMid::
+ lockall
+ setvar VAR_TEMP_2, 0
+ goto FuchsiaCity_SafariZone_Entrance_EventScript_AskEnterSafariZone
+ end
+
+FuchsiaCity_SafariZone_Entrance_EventScript_EntryTriggerRight::
+ lockall
+ setvar VAR_TEMP_2, 1
+ goto FuchsiaCity_SafariZone_Entrance_EventScript_AskEnterSafariZone
+ end
+
+FuchsiaCity_SafariZone_Entrance_EventScript_EntryTriggerLeft::
+ lockall
+ setvar VAR_TEMP_2, 2
+ goto FuchsiaCity_SafariZone_Entrance_EventScript_AskEnterSafariZone
+ end
+
+FuchsiaCity_SafariZone_Entrance_EventScript_AskEnterSafariZone::
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox FuchsiaCity_SafariZone_Entrance_Text_WelcomeToSafariZone
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ showmoneybox 0, 0
+ msgbox FuchsiaCity_SafariZone_Entrance_Text_PlaySafariGameFor500, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, FuchsiaCity_SafariZone_Entrance_EventScript_TryEnterSafariZone
+ msgbox FuchsiaCity_SafariZone_Entrance_Text_OkayPleaseComeAgain
+ goto FuchsiaCity_SafariZone_Entrance_EventScript_ForcePlayerBack
+ end
+
+FuchsiaCity_SafariZone_Entrance_EventScript_TryEnterSafariZone::
+ call FuchsiaCity_SafariZone_Entrance_EventScript_CheckSpaceForMons
+ checkmoney 500
+ goto_if_eq VAR_RESULT, FALSE, FuchsiaCity_SafariZone_Entrance_EventScript_NotEnoughMoney
+ removemoney 500
+ updatemoneybox
+ msgbox FuchsiaCity_SafariZone_Entrance_Text_ThatllBe500WeOnlyUseSpecialBalls
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_LEVEL_UP
+ message FuchsiaCity_SafariZone_Entrance_Text_PlayerReceived30SafariBalls
+ waitfanfare
+ call EventScript_RestorePrevTextColor
+ msgbox FuchsiaCity_SafariZone_Entrance_Text_CallYouOnPAWhenYouRunOut
+ closemessage
+ hidemoneybox
+ call_if_eq VAR_TEMP_2, 0, FuchsiaCity_SafariZone_Entrance_EventScript_EnterSafariZoneMid
+ call_if_eq VAR_TEMP_2, 1, FuchsiaCity_SafariZone_Entrance_EventScript_EnterSafariZoneRight
+ call_if_eq VAR_TEMP_2, 2, FuchsiaCity_SafariZone_Entrance_EventScript_EnterSafariZoneLeft
+ special EnterSafariMode
+ setvar VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 2
+ warp MAP_SAFARI_ZONE_CENTER, 255, 26, 30
+ waitstate
+ end
+
+FuchsiaCity_SafariZone_Entrance_EventScript_EnterSafariZoneRight::
+ applymovement LOCALID_PLAYER, FuchsiaCity_SafariZone_Entrance_Movement_EnterSafariZoneRight
+ waitmovement 0
+ return
+
+FuchsiaCity_SafariZone_Entrance_EventScript_EnterSafariZoneMid::
+ applymovement LOCALID_PLAYER, FuchsiaCity_SafariZone_Entrance_Movement_EnterSafariZoneMid
+ waitmovement 0
+ return
+
+FuchsiaCity_SafariZone_Entrance_EventScript_EnterSafariZoneLeft::
+ applymovement LOCALID_PLAYER, FuchsiaCity_SafariZone_Entrance_Movement_EnterSafariZoneLeft
+ waitmovement 0
+ return
+
+FuchsiaCity_SafariZone_Entrance_EventScript_CheckSpaceForMons::
+ getpartysize
+ goto_if_ne VAR_RESULT, PARTY_SIZE, Common_EventScript_NopReturn
+ specialvar VAR_RESULT, ScriptCheckFreePokemonStorageSpace
+ goto_if_eq VAR_RESULT, TRUE, Common_EventScript_NopReturn
+ msgbox Route121_SafariZoneEntrance_Text_PCIsFull
+ goto FuchsiaCity_SafariZone_Entrance_EventScript_ForcePlayerBack
+ end
+
+FuchsiaCity_SafariZone_Entrance_EventScript_NotEnoughMoney::
+ msgbox FuchsiaCity_SafariZone_Entrance_Text_OopsNotEnoughMoney
+ goto FuchsiaCity_SafariZone_Entrance_EventScript_ForcePlayerBack
+ end
+
+FuchsiaCity_SafariZone_Entrance_EventScript_ForcePlayerBack::
+ closemessage
+ hidemoneybox
+ applymovement LOCALID_PLAYER, FuchsiaCity_SafariZone_Entrance_Movement_ForceBack
+ waitmovement 0
+ releaseall
+ end
+
+FuchsiaCity_SafariZone_Entrance_Movement_ForceBack::
+ walk_down
+ step_end
+
+FuchsiaCity_SafariZone_Entrance_Movement_EnterSafariZoneMid::
+ walk_up
+ walk_up
+ step_end
+
+FuchsiaCity_SafariZone_Entrance_Movement_EnterSafariZoneRight::
+ walk_up
+ walk_left
+ walk_up
+ step_end
+
+FuchsiaCity_SafariZone_Entrance_Movement_EnterSafariZoneLeft::
+ walk_up
+ walk_right
+ walk_up
+ step_end
+
+FuchsiaCity_SafariZone_Entrance_EventScript_InfoAttendant::
+ lock
+ faceplayer
+ msgbox FuchsiaCity_SafariZone_Entrance_Text_FirstTimeAtSafariZone, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, FuchsiaCity_SafariZone_Entrance_EventScript_ExplainSafariZone
+ msgbox FuchsiaCity_SafariZone_Entrance_Text_SorryYoureARegularHere
+ release
+ end
+
+FuchsiaCity_SafariZone_Entrance_EventScript_ExplainSafariZone::
+ msgbox FuchsiaCity_SafariZone_Entrance_Text_ExplainSafariZone
+ release
+ end
+
+FuchsiaCity_SafariZone_Entrance_Text_WelcomeToSafariZone::
+ .string "Welcome to the SAFARI ZONE!$"
+
+FuchsiaCity_SafariZone_Entrance_Text_PlaySafariGameFor500::
+ .string "For just ¥500, you can play the\n"
+ .string "SAFARI GAME.\p"
+ .string "You can roam the wide-open safari\n"
+ .string "and catch what you like.\p"
+ .string "Would you like to play?$"
+
+FuchsiaCity_SafariZone_Entrance_Text_ThatllBe500WeOnlyUseSpecialBalls::
+ .string "That'll be ¥500, please!\p"
+ .string "We only use a special kind of \n"
+ .string "POKé BALLS here.$"
+
+FuchsiaCity_SafariZone_Entrance_Text_PlayerReceived30SafariBalls::
+ .string "{PLAYER} received 30 SAFARI BALLS\n"
+ .string "from the attendant.$"
+
+FuchsiaCity_SafariZone_Entrance_Text_CallYouOnPAWhenYouRunOut::
+ .string "We'll call you on the PA when you\n"
+ .string "run out of time or SAFARI BALLS.\p"
+ .string "Well, I'll wish you the best of\n"
+ .string "luck!$"
+
+FuchsiaCity_SafariZone_Entrance_Text_OkayPleaseComeAgain::
+ .string "Okay.\n"
+ .string "Please come again!$"
+
+FuchsiaCity_SafariZone_Entrance_Text_OopsNotEnoughMoney::
+ .string "Oops!\n"
+ .string "Not enough money!$"
+
+FuchsiaCity_SafariZone_Entrance_Text_GoingToLeaveSafariZoneEarly::
+ .string "Are you going to leave the\n"
+ .string "SAFARI ZONE early?$"
+
+FuchsiaCity_SafariZone_Entrance_Text_PleaseReturnSafariBalls::
+ .string "Please return any SAFARI BALLS\n"
+ .string "you may have left.$"
+
+FuchsiaCity_SafariZone_Entrance_Text_GoodLuck::
+ .string "Good luck!$"
+
+FuchsiaCity_SafariZone_Entrance_Text_CatchFairShareComeAgain::
+ .string "Did you catch your fair share?\n"
+ .string "Come again!$"
+
+FuchsiaCity_SafariZone_Entrance_Text_FirstTimeAtSafariZone::
+ .string "Hi! Is it your first time here at\n"
+ .string "the SAFARI ZONE?$"
+
+FuchsiaCity_SafariZone_Entrance_Text_ExplainSafariZone::
+ .string "The SAFARI ZONE actually has\n"
+ .string "four zones in it.\p"
+ .string "Each zone has different kinds of\n"
+ .string "POKéMON, even some rare ones.\p"
+ .string "Use the supplied SAFARI BALLS to\n"
+ .string "catch them.\p"
+ .string "You can also throw BAIT or ROCKS\n"
+ .string "besides the SAFARI BALLS.\p"
+ .string "If you throw BAIT, the POKéMON\n"
+ .string "becomes less likely to flee, but\l"
+ .string "harder to catch.\p"
+ .string "If you throw ROCKS, the POKéMON\n"
+ .string "becomes more likely to flee, but\l"
+ .string "easier to catch.\p"
+ .string "When you run out of time or SAFARI\n"
+ .string "BALLS, it's game over for you!$"
+
+FuchsiaCity_SafariZone_Entrance_Text_SorryYoureARegularHere::
+ .string "Sorry, you're a regular here!$"
+
diff --git a/data/maps/FuchsiaCity_SafariZone_Office_Frlg/map.json b/data/maps/FuchsiaCity_SafariZone_Office_Frlg/map.json
new file mode 100644
index 000000000000..3528fd2c4f04
--- /dev/null
+++ b/data/maps/FuchsiaCity_SafariZone_Office_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_FUCHSIA_CITY_SAFARI_ZONE_OFFICE",
+ "name": "FuchsiaCity_SafariZone_Office_Frlg",
+ "layout": "LAYOUT_FUCHSIA_CITY_SAFARI_ZONE_OFFICE",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FUCHSIA_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_SafariZone_Office_EventScript_Worker2",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 12,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_SafariZone_Office_EventScript_Worker3",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 6,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_SafariZone_Office_EventScript_Worker1",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 10,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_SafariZone_Office_EventScript_Worker4",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 6,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 7,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/FuchsiaCity_SafariZone_Office_Frlg/scripts.inc b/data/maps/FuchsiaCity_SafariZone_Office_Frlg/scripts.inc
new file mode 100644
index 000000000000..0596b36553bd
--- /dev/null
+++ b/data/maps/FuchsiaCity_SafariZone_Office_Frlg/scripts.inc
@@ -0,0 +1,44 @@
+FuchsiaCity_SafariZone_Office_Frlg_MapScripts::
+ .byte 0
+
+FuchsiaCity_SafariZone_Office_EventScript_Worker1::
+ msgbox FuchsiaCity_SafariZone_Office_Text_NicknamedWardenSlowpoke, MSGBOX_NPC
+ end
+
+FuchsiaCity_SafariZone_Office_EventScript_Worker2::
+ msgbox FuchsiaCity_SafariZone_Office_Text_WardenIsVeryKnowledgeable, MSGBOX_NPC
+ end
+
+FuchsiaCity_SafariZone_Office_EventScript_Worker3::
+ msgbox FuchsiaCity_SafariZone_Office_Text_CouldntUnderstandWarden, MSGBOX_NPC
+ end
+
+FuchsiaCity_SafariZone_Office_EventScript_Worker4::
+ msgbox FuchsiaCity_SafariZone_Office_Text_PrizeInSafariZone, MSGBOX_NPC
+ end
+
+FuchsiaCity_SafariZone_Office_Text_NicknamedWardenSlowpoke::
+ .string "We nicknamed the WARDEN\n"
+ .string "“SLOWPOKE.”\p"
+ .string "You know, he has that vacant look\n"
+ .string "like a SLOWPOKE.$"
+
+FuchsiaCity_SafariZone_Office_Text_WardenIsVeryKnowledgeable::
+ .string "WARDEN SLOWPOKE is very\n"
+ .string "knowledgeable about POKéMON.\p"
+ .string "He even has some fossils of rare,\n"
+ .string "extinct POKéMON.$"
+
+FuchsiaCity_SafariZone_Office_Text_CouldntUnderstandWarden::
+ .string "WARDEN SLOWPOKE came in, but\n"
+ .string "I couldn't understand him.\p"
+ .string "I think he's got a speech problem!$"
+
+FuchsiaCity_SafariZone_Office_Text_PrizeInSafariZone::
+ .string "WARDEN SLOWPOKE is running a\n"
+ .string "promotion campaign right now.\p"
+ .string "Try to get to the farthest corner\n"
+ .string "of the SAFARI ZONE.\p"
+ .string "If you can make it, you'll win a\n"
+ .string "very convenient prize.$"
+
diff --git a/data/maps/FuchsiaCity_WardensHouse_Frlg/map.json b/data/maps/FuchsiaCity_WardensHouse_Frlg/map.json
new file mode 100644
index 000000000000..b1417815e3a3
--- /dev/null
+++ b/data/maps/FuchsiaCity_WardensHouse_Frlg/map.json
@@ -0,0 +1,134 @@
+{
+ "id": "MAP_FUCHSIA_CITY_WARDENS_HOUSE",
+ "name": "FuchsiaCity_WardensHouse_Frlg",
+ "layout": "LAYOUT_FUCHSIA_CITY_WARDENS_HOUSE",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_FUCHSIA_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_2",
+ "x": 3,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_WardensHouse_EventScript_Warden",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER_FRLG",
+ "x": 11,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 11,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_WardensHouse_EventScript_ItemRareCandy",
+ "flag": "FLAG_HIDE_FUCHSIA_CITY_WARDENS_HOUSE_RARE_CANDY"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "FuchsiaCity_WardensHouse_EventScript_PokemonJournalKoga",
+ "flag": "FLAG_HIDE_FAME_CHECKER_KOGA_JOURNAL"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 10,
+ "elevation": 0,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 6,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 7,
+ "y": 10,
+ "elevation": 0,
+ "dest_map": "MAP_FUCHSIA_CITY",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FuchsiaCity_WardensHouse_EventScript_DisplaySign2"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FuchsiaCity_WardensHouse_EventScript_DisplaySign1"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FuchsiaCity_WardensHouse_EventScript_DisplaySign1"
+ },
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "FuchsiaCity_WardensHouse_EventScript_DisplaySign2"
+ }
+ ]
+}
diff --git a/data/maps/FuchsiaCity_WardensHouse_Frlg/scripts.inc b/data/maps/FuchsiaCity_WardensHouse_Frlg/scripts.inc
new file mode 100644
index 000000000000..a5bde83499b6
--- /dev/null
+++ b/data/maps/FuchsiaCity_WardensHouse_Frlg/scripts.inc
@@ -0,0 +1,125 @@
+FuchsiaCity_WardensHouse_Frlg_MapScripts::
+ .byte 0
+
+FuchsiaCity_WardensHouse_EventScript_Warden::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_HM04, FuchsiaCity_WardensHouse_EventScript_ExplainStrength
+ goto_if_set FLAG_HIDE_SAFARI_ZONE_WEST_GOLD_TEETH, FuchsiaCity_WardensHouse_EventScript_GiveGoldTeeth
+ msgbox FuchsiaCity_WardensHouse_Text_HifFuffHefifoo, MSGBOX_YESNO
+ call_if_eq VAR_RESULT, YES, FuchsiaCity_WardensHouse_EventScript_WardenYes
+ call_if_eq VAR_RESULT, NO, FuchsiaCity_WardensHouse_EventScript_WardenNo
+ release
+ end
+
+FuchsiaCity_WardensHouse_EventScript_GiveGoldTeeth::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_OBTAIN_TMHM
+ message FuchsiaCity_WardensHouse_Text_GaveGoldTeethToWarden
+ waitmessage
+ waitfanfare
+ msgbox FuchsiaCity_WardensHouse_Text_WardenPoppedInHisTeeth
+ call EventScript_RestorePrevTextColor
+ checkplayergender
+ call_if_eq VAR_RESULT, MALE, FuchsiaCity_WardensHouse_EventScript_WardenThanksMale
+ call_if_eq VAR_RESULT, FEMALE, FuchsiaCity_WardensHouse_EventScript_WardenThanksFemale
+ giveitem_msg FuchsiaCity_WardensHouse_Text_ReceivedHM04FromWarden, ITEM_HM04
+ setflag FLAG_GOT_HM04
+ removeitem ITEM_GOLD_TEETH
+ release
+ end
+
+FuchsiaCity_WardensHouse_EventScript_WardenThanksMale::
+ msgbox FuchsiaCity_WardensHouse_Text_ThanksSonGiveYouSomething
+ return
+
+FuchsiaCity_WardensHouse_EventScript_WardenThanksFemale::
+ msgbox FuchsiaCity_WardensHouse_Text_ThanksLassieGiveYouSomething
+ return
+
+FuchsiaCity_WardensHouse_EventScript_WardenYes::
+ msgbox FuchsiaCity_WardensHouse_Text_AhHowheeHoHoo
+ return
+
+FuchsiaCity_WardensHouse_EventScript_WardenNo::
+ msgbox FuchsiaCity_WardensHouse_Text_HeOhayHeHaHoo
+ return
+
+FuchsiaCity_WardensHouse_EventScript_ExplainStrength::
+ msgbox FuchsiaCity_WardensHouse_Text_ExplainStrength
+ release
+ end
+
+FuchsiaCity_WardensHouse_EventScript_DisplaySign1::
+ msgbox FuchsiaCity_WardensHouse_Text_MonPhotosFossilsOnDisplay, MSGBOX_SIGN
+ end
+
+FuchsiaCity_WardensHouse_EventScript_DisplaySign2::
+ msgbox FuchsiaCity_WardensHouse_Text_OldMonMerchandiseOnDisplay, MSGBOX_SIGN
+ end
+
+FuchsiaCity_WardensHouse_Text_HifFuffHefifoo::
+ .string "WARDEN: Hif fuff hefifoo!\p"
+ .string "Ha lof ha feef ee hafahi ho.\n"
+ .string "Heff hee fwee!$"
+
+FuchsiaCity_WardensHouse_Text_AhHowheeHoHoo::
+ .string "Ah howhee ho hoo!\n"
+ .string "Eef ee hafahi ho!$"
+
+FuchsiaCity_WardensHouse_Text_HeOhayHeHaHoo::
+ .string "Ha?\n"
+ .string "He ohay heh ha hoo ee haheh!$"
+
+FuchsiaCity_WardensHouse_Text_GaveGoldTeethToWarden::
+ .string "{PLAYER} gave the GOLD TEETH\n"
+ .string "to the WARDEN.$"
+
+FuchsiaCity_WardensHouse_Text_WardenPoppedInHisTeeth::
+ .string "The WARDEN popped in his teeth!$"
+
+FuchsiaCity_WardensHouse_Text_ThanksSonGiveYouSomething::
+ .string "WARDEN: Thanks, son!\n"
+ .string "You're a real lifesaver!\p"
+ .string "No one could understand a word\n"
+ .string "that I said, not a one!\p"
+ .string "I was too ashamed to show my face\n"
+ .string "around the OFFICE, even.\p"
+ .string "Let me give you something for your\n"
+ .string "trouble.$"
+
+FuchsiaCity_WardensHouse_Text_ThanksLassieGiveYouSomething::
+ .string "WARDEN: Thank you, lassie!\n"
+ .string "You're a real lifesaver!\p"
+ .string "No one could understand a word\n"
+ .string "that I said, not a one!\p"
+ .string "I was too ashamed to show my face\n"
+ .string "around the OFFICE, even.\p"
+ .string "Let me give you something for your\n"
+ .string "trouble.$"
+
+FuchsiaCity_WardensHouse_Text_ReceivedHM04FromWarden::
+ .string "{PLAYER} received HM04\n"
+ .string "from the WARDEN.$"
+
+FuchsiaCity_WardensHouse_Text_ExplainStrength::
+ .string "WARDEN: Inside HM04 you'll find\n"
+ .string "STRENGTH.\p"
+ .string "It lets POKéMON move boulders when\n"
+ .string "you're outside of battle.\p"
+ .string "Oh yes, did you find the SECRET\n"
+ .string "HOUSE in the SAFARI ZONE?$"
+
+@ Unused
+FuchsiaCity_WardensHouse_Text_YouHaveTooMuchStuff::
+ .string "なんや にもつ\n"
+ .string "いっぱいやんけ!$"
+
+FuchsiaCity_WardensHouse_Text_MonPhotosFossilsOnDisplay::
+ .string "POKéMON photos and fossils are on\n"
+ .string "display.$"
+
+FuchsiaCity_WardensHouse_Text_OldMonMerchandiseOnDisplay::
+ .string "Old POKéMON merchandise is on\n"
+ .string "display.$"
+
diff --git a/data/maps/IndigoPlateau_Exterior_Frlg/map.json b/data/maps/IndigoPlateau_Exterior_Frlg/map.json
new file mode 100644
index 000000000000..23fe444fa632
--- /dev/null
+++ b/data/maps/IndigoPlateau_Exterior_Frlg/map.json
@@ -0,0 +1,71 @@
+{
+ "id": "MAP_INDIGO_PLATEAU_EXTERIOR",
+ "name": "IndigoPlateau_Exterior_Frlg",
+ "layout": "LAYOUT_INDIGO_PLATEAU_EXTERIOR",
+ "music": "MUS_VICTORY_ROAD",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_INDIGO_PLATEAU",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE23",
+ "offset": 0,
+ "direction": "down"
+ }
+ ],
+ "object_events": [
+ {
+ "local_id": "LOCALID_CREDITS_RIVAL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLUE",
+ "x": 11,
+ "y": 6,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_CREDITS_RIVAL"
+ },
+ {
+ "local_id": "LOCALID_CREDITS_PROF_OAK",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PROF_OAK",
+ "x": 11,
+ "y": 6,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_CREDITS_OAK"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 6,
+ "elevation": 0,
+ "dest_map": "MAP_INDIGO_PLATEAU_POKEMON_CENTER_1F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/IndigoPlateau_Exterior_Frlg/scripts.inc b/data/maps/IndigoPlateau_Exterior_Frlg/scripts.inc
new file mode 100644
index 000000000000..dee7528945cd
--- /dev/null
+++ b/data/maps/IndigoPlateau_Exterior_Frlg/scripts.inc
@@ -0,0 +1,186 @@
+IndigoPlateau_Exterior_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, IndigoPlateau_Exterior_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, IndigoPlateau_Exterior_OnFrame
+ .byte 0
+
+IndigoPlateau_Exterior_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_INDIGO_PLATEAU_EXTERIOR
+ call_if_eq VAR_MAP_SCENE_INDIGO_PLATEAU_EXTERIOR, 1, IndigoPlateau_Exterior_EventScript_PlayCreditsMusic
+ end
+
+IndigoPlateau_Exterior_EventScript_PlayCreditsMusic::
+ playbgm MUS_CREDITS, 0
+ return
+
+IndigoPlateau_Exterior_OnFrame::
+ map_script_2 VAR_MAP_SCENE_INDIGO_PLATEAU_EXTERIOR, 1, IndigoPlateau_Exterior_EventScript_Credits
+ .2byte 0
+
+
+@ After beating the champion, you are warped to the main
+@ entrance of Indigo Plateau. This script starts running
+@ immediately after your walking animation.
+@ The script is timed to the music.
+IndigoPlateau_Exterior_EventScript_Credits::
+ lockall
+ delay 105
+
+ @ Rival exits building. Spawn a dummy object to lock the camera.
+ opendoor 11, 6
+ waitdooranim
+ special SpawnCameraObject
+ addobject LOCALID_CREDITS_RIVAL
+ applymovement LOCALID_CREDITS_RIVAL, IndigoPlateau_Exterior_Movement_RivalExitBuilding
+ applymovement LOCALID_PLAYER, IndigoPlateau_Exterior_Movement_PushPlayerOutOfWay
+ waitmovement 0
+ closedoor 11, 6
+ waitdooranim
+
+ @ Rival runs off
+ applymovement LOCALID_PLAYER, IndigoPlateau_Exterior_Movement_PlayerWatchRivalLeave
+ applymovement LOCALID_CREDITS_RIVAL, IndigoPlateau_Exterior_Movement_RivalLeave
+ waitmovement 0
+ delay 100
+
+ @ Oak exits building
+ opendoor 11, 6
+ waitdooranim
+ addobject LOCALID_CREDITS_PROF_OAK
+ applymovement LOCALID_CREDITS_PROF_OAK, IndigoPlateau_Exterior_Movement_OakExitBuilding
+ waitmovement 0
+ closedoor 11, 6
+ waitdooranim
+ delay 160
+
+ @ Oak looks at player, then walks off
+ applymovement LOCALID_PLAYER, IndigoPlateau_Exterior_Movement_PlayerWatchOakLeave
+ applymovement LOCALID_CREDITS_PROF_OAK, IndigoPlateau_Exterior_Movement_OakLeave
+ waitmovement 0
+ delay 100
+
+ @ Player begin to leave
+ applymovement LOCALID_PLAYER, IndigoPlateau_Exterior_Movement_PlayerBeginLeave
+ waitmovement 0
+ delay 155
+ applymovement LOCALID_PLAYER, IndigoPlateau_Exterior_Movement_PlayerFaceLeague
+ waitmovement 0
+ delay 90
+
+ @ Player runs off
+ applymovement LOCALID_PLAYER, IndigoPlateau_Exterior_Movement_PlayerTurnAround
+ waitmovement 0
+ applymovement LOCALID_PLAYER, IndigoPlateau_Exterior_Movement_PlayerLeave
+ waitmovement 0
+
+ @ Reset the map state and roll the credits
+ special RemoveCameraObject
+ setvar VAR_MAP_SCENE_INDIGO_PLATEAU_EXTERIOR, 0
+ removeobject LOCALID_CREDITS_RIVAL
+ removeobject LOCALID_CREDITS_PROF_OAK
+ special CB2_StartCreditsSequence
+ waitstate
+ releaseall
+ end
+
+IndigoPlateau_Exterior_Movement_PlayerLeave::
+ player_run_down
+ player_run_down
+ player_run_down
+ player_run_down
+ player_run_down
+ player_run_down
+ step_end
+
+@ Unused
+IndigoPlateau_Exterior_Movement_PlayerExitBuilding::
+ walk_down
+ walk_down
+ step_end
+
+IndigoPlateau_Exterior_Movement_PlayerWatchRivalLeave::
+ delay_16
+ delay_4
+ walk_in_place_faster_down
+ step_end
+
+IndigoPlateau_Exterior_Movement_PlayerWatchOakLeave::
+ delay_8
+ walk_in_place_faster_right
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ walk_in_place_faster_down
+ step_end
+
+IndigoPlateau_Exterior_Movement_PlayerBeginLeave::
+ walk_right
+ delay_16
+ walk_down
+ walk_down
+ delay_16
+ delay_16
+ step_end
+
+IndigoPlateau_Exterior_Movement_PlayerTurnAround::
+ walk_in_place_faster_down
+ step_end
+
+IndigoPlateau_Exterior_Movement_PushPlayerOutOfWay::
+ face_right
+ lock_facing_direction
+ walk_left
+ unlock_facing_direction
+ step_end
+
+IndigoPlateau_Exterior_Movement_PlayerFaceLeague::
+ walk_in_place_faster_up
+ step_end
+
+IndigoPlateau_Exterior_Movement_RivalLeave::
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ step_end
+
+IndigoPlateau_Exterior_Movement_RivalExitBuilding::
+ walk_fast_down
+ step_end
+
+IndigoPlateau_Exterior_Movement_OakLeave::
+ walk_in_place_faster_left
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ walk_in_place_faster_down
+ delay_16
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+IndigoPlateau_Exterior_Movement_OakExitBuilding::
+ walk_down
+ step_end
diff --git a/data/maps/IndigoPlateau_PokemonCenter_1F_Frlg/map.json b/data/maps/IndigoPlateau_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..057c1800a94d
--- /dev/null
+++ b/data/maps/IndigoPlateau_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,159 @@
+{
+ "id": "MAP_INDIGO_PLATEAU_POKEMON_CENTER_1F",
+ "name": "IndigoPlateau_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_INDIGO_PLATEAU_POKEMON_CENTER_1F",
+ "music": "MUS_GYM",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_INDIGO_PLATEAU",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_GYM",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 0,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "IndigoPlateau_PokemonCenter_1F_EventScript_Clerk",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_INDIGO_LEAGUE_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 13,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "IndigoPlateau_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GYM_GUY",
+ "x": 7,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "IndigoPlateau_PokemonCenter_1F_EventScript_GymGuy",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_LEAGUE_DOOR_GUARD",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 5,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "IndigoPlateau_PokemonCenter_1F_EventScript_DoorGuard",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 23,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "IndigoPlateau_PokemonCenter_1F_EventScript_BlackBelt",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 22,
+ "y": 9,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "IndigoPlateau_PokemonCenter_1F_EventScript_PokemonJournal",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 16,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "IndigoPlateau_PokemonCenter_1F_EventScript_CooltrainerM",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 23,
+ "y": 9,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "IndigoPlateau_PokemonCenter_1F_EventScript_PokemonJournal",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 16,
+ "elevation": 3,
+ "dest_map": "MAP_INDIGO_PLATEAU_EXTERIOR",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 4,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_LEAGUE_LORELEIS_ROOM",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 1,
+ "y": 14,
+ "elevation": 4,
+ "dest_map": "MAP_INDIGO_PLATEAU_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/IndigoPlateau_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/IndigoPlateau_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..42411f1bf028
--- /dev/null
+++ b/data/maps/IndigoPlateau_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,113 @@
+IndigoPlateau_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, IndigoPlateau_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ .byte 0
+
+IndigoPlateau_PokemonCenter_1F_OnTransition::
+ setrespawn HEAL_LOCATION_INDIGO_PLATEAU
+ specialvar VAR_RESULT, IsNationalPokedexEnabled
+ call_if_eq VAR_RESULT, TRUE, IndigoPlateau_PokemonCenter_1F_EventScript_CheckBlockDoor
+ end
+
+IndigoPlateau_PokemonCenter_1F_EventScript_CheckBlockDoor::
+ goto_if_set FLAG_IS_CHAMPION, Common_EventScript_NopReturn
+ setobjectxyperm LOCALID_LEAGUE_DOOR_GUARD, 4, 2
+ return
+
+IndigoPlateau_PokemonCenter_1F_EventScript_DoorGuard::
+ lock
+ faceplayer
+ specialvar VAR_RESULT, IsNationalPokedexEnabled
+ goto_if_eq VAR_RESULT, TRUE, IndigoPlateau_PokemonCenter_1F_EventScript_CheckSeviiIslandComplete
+ msgbox IndigoPlateau_PokemonCenter_1F_Text_FaceEliteFourGoodLuck
+ release
+ end
+
+IndigoPlateau_PokemonCenter_1F_EventScript_CheckSeviiIslandComplete::
+ goto_if_set FLAG_IS_CHAMPION, IndigoPlateau_PokemonCenter_1F_EventScript_SeviiIslandComplete
+ msgbox IndigoPlateau_PokemonCenter_1F_Text_LoreleiIsAbsentClosedForTimeBeing
+ release
+ end
+
+IndigoPlateau_PokemonCenter_1F_EventScript_SeviiIslandComplete::
+ msgbox IndigoPlateau_PokemonCenter_1F_Text_FaceEliteFourGoodLuck
+ release
+ end
+
+IndigoPlateau_PokemonCenter_1F_EventScript_GymGuy::
+ msgbox IndigoPlateau_PokemonCenter_1F_Text_GymGuyAdvice, MSGBOX_NPC
+ end
+
+IndigoPlateau_PokemonCenter_1F_EventScript_Clerk::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart IndigoPlateau_PokemonCenter_1F_Items
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+IndigoPlateau_PokemonCenter_1F_Items::
+ .2byte ITEM_ULTRA_BALL
+ .2byte ITEM_GREAT_BALL
+ .2byte ITEM_FULL_RESTORE
+ .2byte ITEM_MAX_POTION
+ .2byte ITEM_REVIVE
+ .2byte ITEM_FULL_HEAL
+ .2byte ITEM_MAX_REPEL
+ .2byte ITEM_NONE
+ release
+ end
+
+IndigoPlateau_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+IndigoPlateau_PokemonCenter_1F_Text_GymGuyAdvice::
+ .string "Yo!\n"
+ .string "Champ in the making!\p"
+ .string "At the POKéMON LEAGUE, you will\n"
+ .string "face the ELITE FOUR all in a row.\p"
+ .string "If you lose, you have to start all\n"
+ .string "over again!\p"
+ .string "This is it!\n"
+ .string "Go for it!$"
+
+IndigoPlateau_PokemonCenter_1F_Text_FaceEliteFourGoodLuck::
+ .string "From here on, you face the\n"
+ .string "ELITE FOUR one by one.\p"
+ .string "If you win, a door opens to the\n"
+ .string "next TRAINER. Good luck!$"
+
+IndigoPlateau_PokemonCenter_1F_Text_LoreleiIsAbsentClosedForTimeBeing::
+ .string "I am so sorry, but you've wasted\n"
+ .string "your time coming here.\p"
+ .string "LORELEI of the ELITE FOUR is\n"
+ .string "absent, you see.\p"
+ .string "As a result, the POKéMON LEAGUE is\n"
+ .string "closed for the time being.$"
+
+IndigoPlateau_PokemonCenter_1F_Text_AgathaWhuppedUs::
+ .string "AGATHA's GHOST-type POKéMON are\n"
+ .string "horrifically terrifying in toughness.\p"
+ .string "I took my FIGHTING-type POKéMON\n"
+ .string "and raised them to the max.\p"
+ .string "I went at AGATHA feeling pretty\n"
+ .string "confident, but she whupped us.\p"
+ .string "That old lady's also got a really\n"
+ .string "short fuse, too.\p"
+ .string "It doesn't take anything to get\n"
+ .string "that scary lady hollering.$"
+
+IndigoPlateau_PokemonCenter_1F_Text_LancesCousinGymLeaderFarAway::
+ .string "Maybe becoming an ELITE FOUR\n"
+ .string "member is in the blood.\p"
+ .string "From what I've heard, LANCE has\n"
+ .string "a cousin who's a GYM LEADER\l"
+ .string "somewhere far away.$"
+
diff --git a/data/maps/IndigoPlateau_PokemonCenter_2F_Frlg/map.json b/data/maps/IndigoPlateau_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..9178abe96663
--- /dev/null
+++ b/data/maps/IndigoPlateau_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_INDIGO_PLATEAU_POKEMON_CENTER_2F",
+ "name": "IndigoPlateau_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_INDIGO_PLATEAU",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_GYM",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_INDIGO_PLATEAU_POKEMON_CENTER_1F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/IndigoPlateau_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/IndigoPlateau_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..6d24b567645a
--- /dev/null
+++ b/data/maps/IndigoPlateau_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+IndigoPlateau_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+IndigoPlateau_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+IndigoPlateau_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+IndigoPlateau_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/LavenderTown_Frlg/map.json b/data/maps/LavenderTown_Frlg/map.json
new file mode 100644
index 000000000000..190855eac951
--- /dev/null
+++ b/data/maps/LavenderTown_Frlg/map.json
@@ -0,0 +1,159 @@
+{
+ "id": "MAP_LAVENDER_TOWN",
+ "name": "LavenderTown_Frlg",
+ "layout": "LAYOUT_LAVENDER_TOWN",
+ "music": "MUS_RG_LAVENDER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LAVENDER_TOWN",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE10",
+ "offset": 0,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_ROUTE12",
+ "offset": 0,
+ "direction": "down"
+ },
+ {
+ "map": "MAP_ROUTE8",
+ "offset": 0,
+ "direction": "left"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 19,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_EventScript_LittleGirl",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 12,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_EventScript_WorkerM",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 10,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_EventScript_Boy",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 18,
+ "y": 6,
+ "elevation": 0,
+ "dest_map": "MAP_POKEMON_TOWER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 6,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_LAVENDER_TOWN_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 10,
+ "y": 11,
+ "elevation": 0,
+ "dest_map": "MAP_LAVENDER_TOWN_VOLUNTEER_POKEMON_HOUSE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 5,
+ "y": 16,
+ "elevation": 0,
+ "dest_map": "MAP_LAVENDER_TOWN_HOUSE1",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 10,
+ "y": 16,
+ "elevation": 0,
+ "dest_map": "MAP_LAVENDER_TOWN_HOUSE2",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 20,
+ "y": 15,
+ "elevation": 0,
+ "dest_map": "MAP_LAVENDER_TOWN_MART",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "LavenderTown_EventScript_SilphScopeNotice"
+ },
+ {
+ "type": "sign",
+ "x": 15,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "LavenderTown_EventScript_TownSign"
+ },
+ {
+ "type": "sign",
+ "x": 21,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "LavenderTown_EventScript_PokemonTowerSign"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "LavenderTown_EventScript_VolunteerHouseSign"
+ }
+ ]
+}
diff --git a/data/maps/LavenderTown_Frlg/scripts.inc b/data/maps/LavenderTown_Frlg/scripts.inc
new file mode 100644
index 000000000000..59add4c917a3
--- /dev/null
+++ b/data/maps/LavenderTown_Frlg/scripts.inc
@@ -0,0 +1,88 @@
+LavenderTown_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, LavenderTown_OnTransition
+ .byte 0
+
+LavenderTown_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_LAVENDER_TOWN
+ setvar VAR_MAP_SCENE_S_S_ANNE_2F_CORRIDOR, 1
+ setflag FLAG_HIDE_SS_ANNE_RIVAL
+ end
+
+LavenderTown_EventScript_LittleGirl::
+ lock
+ faceplayer
+ msgbox LavenderTown_Text_DoYouBelieveInGhosts, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, LavenderTown_EventScript_LittleGirlBelieve
+ msgbox LavenderTown_Text_JustImaginingWhiteHand
+ release
+ end
+
+LavenderTown_EventScript_LittleGirlBelieve::
+ msgbox LavenderTown_Text_SoThereAreBelievers
+ release
+ end
+
+LavenderTown_EventScript_WorkerM::
+ msgbox LavenderTown_Text_TownKnownAsMonGraveSite, MSGBOX_NPC
+ end
+
+LavenderTown_EventScript_Boy::
+ msgbox LavenderTown_Text_GhostsAppearedInTower, MSGBOX_NPC
+ end
+
+LavenderTown_EventScript_TownSign::
+ msgbox LavenderTown_Text_TownSign, MSGBOX_SIGN
+ end
+
+LavenderTown_EventScript_SilphScopeNotice::
+ msgbox LavenderTown_Text_SilphScopeNotice, MSGBOX_SIGN
+ end
+
+LavenderTown_EventScript_VolunteerHouseSign::
+ msgbox LavenderTown_Text_VolunteerPokemonHouse, MSGBOX_SIGN
+ end
+
+LavenderTown_EventScript_PokemonTowerSign::
+ msgbox LavenderTown_Text_PokemonTowerSign, MSGBOX_SIGN
+ end
+
+LavenderTown_Text_DoYouBelieveInGhosts::
+ .string "Do you believe in ghosts?$"
+
+LavenderTown_Text_SoThereAreBelievers::
+ .string "Really?\n"
+ .string "So there are believers…$"
+
+LavenderTown_Text_JustImaginingWhiteHand::
+ .string "Hahaha, I guess not.\p"
+ .string "That white hand on your shoulder…\n"
+ .string "I'm just imagining it.$"
+
+LavenderTown_Text_TownKnownAsMonGraveSite::
+ .string "This town is known as the grave\n"
+ .string "site of POKéMON.\p"
+ .string "Memorial services are held in\n"
+ .string "POKéMON TOWER.$"
+
+LavenderTown_Text_GhostsAppearedInTower::
+ .string "Ghosts appeared in POKéMON TOWER.\p"
+ .string "I think they're the spirits of\n"
+ .string "POKéMON that the ROCKETS killed.$"
+
+LavenderTown_Text_TownSign::
+ .string "LAVENDER TOWN\n"
+ .string "The Noble Purple Town$"
+
+LavenderTown_Text_SilphScopeNotice::
+ .string "New SILPH SCOPE!\n"
+ .string "Make the Invisible Plain to See!\p"
+ .string "SILPH CO.$"
+
+LavenderTown_Text_VolunteerPokemonHouse::
+ .string "LAVENDER VOLUNTEER\n"
+ .string "POKéMON HOUSE$"
+
+LavenderTown_Text_PokemonTowerSign::
+ .string "POKéMON TOWER\n"
+ .string "Becalm the Spirits of POKéMON$"
+
diff --git a/data/maps/LavenderTown_House1_Frlg/map.json b/data/maps/LavenderTown_House1_Frlg/map.json
new file mode 100644
index 000000000000..42f7cfa0a436
--- /dev/null
+++ b/data/maps/LavenderTown_House1_Frlg/map.json
@@ -0,0 +1,73 @@
+{
+ "id": "MAP_LAVENDER_TOWN_HOUSE1",
+ "name": "LavenderTown_House1_Frlg",
+ "layout": "LAYOUT_HOUSE5_FRLG",
+ "music": "MUS_RG_LAVENDER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LAVENDER_TOWN",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_House1_EventScript_CooltrainerF",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUBONE",
+ "x": 8,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_House1_EventScript_Cubone",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/LavenderTown_House1_Frlg/scripts.inc b/data/maps/LavenderTown_House1_Frlg/scripts.inc
new file mode 100644
index 000000000000..8104c6d900a0
--- /dev/null
+++ b/data/maps/LavenderTown_House1_Frlg/scripts.inc
@@ -0,0 +1,42 @@
+LavenderTown_House1_Frlg_MapScripts::
+ .byte 0
+
+LavenderTown_House1_EventScript_CooltrainerF::
+ lock
+ faceplayer
+ goto_if_set FLAG_RESCUED_MR_FUJI, LavenderTown_House1_EventScript_CooltrainerFGhostGone
+ msgbox LavenderTown_House1_Text_RocketsKilledCubonesMother
+ release
+ end
+
+LavenderTown_House1_EventScript_CooltrainerFGhostGone::
+ msgbox LavenderTown_House1_Text_GhostOfPokemonTowerIsGone
+ release
+ end
+
+LavenderTown_House1_EventScript_Cubone::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_CUBONE, CRY_MODE_NORMAL
+ msgbox LavenderTown_House1_Text_Cubone
+ waitmoncry
+ release
+ end
+
+LavenderTown_House1_Text_Cubone::
+ .string "CUBONE: Kyarugoo!$"
+
+LavenderTown_House1_Text_RocketsKilledCubonesMother::
+ .string "Those horrible ROCKETS!\n"
+ .string "They deserve no mercy!\p"
+ .string "That poor CUBONE's mother…\p"
+ .string "It was killed trying to escape from\n"
+ .string "TEAM ROCKET.$"
+
+LavenderTown_House1_Text_GhostOfPokemonTowerIsGone::
+ .string "The ghost of POKéMON TOWER is\n"
+ .string "gone!\p"
+ .string "Someone must have soothed its\n"
+ .string "restless spirit!$"
+
diff --git a/data/maps/LavenderTown_House2_Frlg/map.json b/data/maps/LavenderTown_House2_Frlg/map.json
new file mode 100644
index 000000000000..03756d6a1353
--- /dev/null
+++ b/data/maps/LavenderTown_House2_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_LAVENDER_TOWN_HOUSE2",
+ "name": "LavenderTown_House2_Frlg",
+ "layout": "LAYOUT_HOUSE5_FRLG",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LAVENDER_TOWN",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_House2_EventScript_NameRater",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/LavenderTown_House2_Frlg/scripts.inc b/data/maps/LavenderTown_House2_Frlg/scripts.inc
new file mode 100644
index 000000000000..d47aa7e2e340
--- /dev/null
+++ b/data/maps/LavenderTown_House2_Frlg/scripts.inc
@@ -0,0 +1,110 @@
+LavenderTown_House2_Frlg_MapScripts::
+ .byte 0
+
+LavenderTown_House2_EventScript_NameRater::
+ lock
+ faceplayer
+ msgbox LavenderTown_House2_Text_WantMeToRateNicknames, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, LavenderTown_House2_EventScript_ChooseMon
+ goto_if_eq VAR_RESULT, NO, LavenderTown_House2_EventScript_DontRateNickname
+ end
+
+LavenderTown_House2_EventScript_ChooseMon::
+ msgbox LavenderTown_House2_Text_CritiqueWhichMonsNickname
+ special ChoosePartyMon
+ waitstate
+ goto_if_lt VAR_0x8004, PARTY_SIZE, LavenderTown_House2_EventScript_CheckCanRateMon
+ goto_if_ge VAR_0x8004, PARTY_SIZE, LavenderTown_House2_EventScript_DontRateNickname
+ end
+
+LavenderTown_House2_EventScript_DontRateNickname::
+ msgbox LavenderTown_House2_Text_ISeeComeVisitAgain
+ release
+ end
+
+LavenderTown_House2_EventScript_CheckCanRateMon::
+ specialvar VAR_RESULT, ScriptGetPartyMonSpecies
+ goto_if_eq VAR_RESULT, SPECIES_EGG, LavenderTown_House2_EventScript_CantNicknameEgg
+ special BufferMonNickname
+ special IsMonOTIDNotPlayers
+ goto_if_eq VAR_RESULT, TRUE, LavenderTown_House2_EventScript_CantNicknameTradeMon
+ specialvar VAR_RESULT, MonOTNameNotPlayer
+ special BufferMonNickname
+ goto_if_eq VAR_RESULT, TRUE, LavenderTown_House2_EventScript_CantNicknameTradeMon
+ msgbox LavenderTown_House2_Text_GiveItANicerName, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, LavenderTown_House2_EventScript_ChooseNewNickname
+ goto_if_eq VAR_RESULT, NO, LavenderTown_House2_EventScript_DontRateNickname
+ end
+
+LavenderTown_House2_EventScript_CantNicknameEgg::
+ msgbox LavenderTown_House2_Text_ThatIsMerelyAnEgg
+ release
+ end
+
+LavenderTown_House2_EventScript_CantNicknameTradeMon::
+ msgbox LavenderTown_House2_Text_TrulyImpeccableName
+ release
+ end
+
+LavenderTown_House2_EventScript_ChooseNewNickname::
+ msgbox LavenderTown_House2_Text_WhatShallNewNicknameBe
+ call Common_EventScript_NameReceivedPartyMon
+ specialvar VAR_RESULT, TryPutNameRaterShowOnTheAir
+ special BufferMonNickname
+ goto_if_eq VAR_RESULT, TRUE, LavenderTown_House2_EventScript_ChoseNewNickname
+ msgbox LavenderTown_House2_Text_FromNowOnShallBeKnownAsSameName
+ release
+ end
+
+LavenderTown_House2_EventScript_ChoseNewNickname::
+ msgbox LavenderTown_House2_Text_FromNowOnShallBeKnownAsName
+ release
+ end
+
+LavenderTown_House2_Text_WantMeToRateNicknames::
+ .string "Hello, hello!\n"
+ .string "I am the official NAME RATER!\p"
+ .string "Want me to rate the nicknames of\n"
+ .string "your POKéMON?$"
+
+LavenderTown_House2_Text_CritiqueWhichMonsNickname::
+ .string "Which POKéMON's nickname should\n"
+ .string "I critique?$"
+
+LavenderTown_House2_Text_GiveItANicerName::
+ .string "{STR_VAR_1}, is it?\n"
+ .string "That is a decent nickname!\p"
+ .string "But, would you like me to give it\n"
+ .string "a nicer name?\p"
+ .string "How about it?$"
+
+LavenderTown_House2_Text_WhatShallNewNicknameBe::
+ .string "Ah, good. Then, what shall the new\n"
+ .string "nickname be?$"
+
+LavenderTown_House2_Text_FromNowOnShallBeKnownAsName::
+ .string "Done! From now on, this POKéMON\n"
+ .string "shall be known as {STR_VAR_1}!\p"
+ .string "It is a better name than before!\n"
+ .string "How fortunate for you!$"
+
+LavenderTown_House2_Text_ISeeComeVisitAgain::
+ .string "I see.\n"
+ .string "Do come visit again.$"
+
+LavenderTown_House2_Text_FromNowOnShallBeKnownAsSameName::
+ .string "Done! From now on, this POKéMON\n"
+ .string "shall be known as {STR_VAR_1}!\p"
+ .string "It looks no different from before,\n"
+ .string "and yet, this is vastly superior!\p"
+ .string "How fortunate for you!$"
+
+LavenderTown_House2_Text_TrulyImpeccableName::
+ .string "{STR_VAR_1}, is it?\n"
+ .string "That is a truly impeccable name!\p"
+ .string "Take good care of {STR_VAR_1}!$"
+
+LavenderTown_House2_Text_ThatIsMerelyAnEgg::
+ .string "Now, now.\n"
+ .string "That is merely an EGG!$"
+
diff --git a/data/maps/LavenderTown_Mart_Frlg/map.json b/data/maps/LavenderTown_Mart_Frlg/map.json
new file mode 100644
index 000000000000..6abdb93bae11
--- /dev/null
+++ b/data/maps/LavenderTown_Mart_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_LAVENDER_TOWN_MART",
+ "name": "LavenderTown_Mart_Frlg",
+ "layout": "LAYOUT_MART_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LAVENDER_TOWN",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 2,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_Mart_EventScript_Clerk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_Mart_EventScript_BaldingMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 9,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_Mart_EventScript_Rocker",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 9,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_Mart_EventScript_Youngster",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "5"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/LavenderTown_Mart_Frlg/scripts.inc b/data/maps/LavenderTown_Mart_Frlg/scripts.inc
new file mode 100644
index 000000000000..8412f4ff66c7
--- /dev/null
+++ b/data/maps/LavenderTown_Mart_Frlg/scripts.inc
@@ -0,0 +1,65 @@
+LavenderTown_Mart_Frlg_MapScripts::
+ .byte 0
+
+LavenderTown_Mart_EventScript_BaldingMan::
+ msgbox LavenderTown_Mart_Text_SearchingForStatRaiseItems, MSGBOX_NPC
+ end
+
+LavenderTown_Mart_EventScript_Rocker::
+ msgbox LavenderTown_Mart_Text_DidYouBuyRevives, MSGBOX_NPC
+ end
+
+LavenderTown_Mart_EventScript_Youngster::
+ msgbox LavenderTown_Mart_Text_TrainerDuosCanChallengeYou, MSGBOX_NPC
+ end
+
+LavenderTown_Mart_EventScript_Clerk::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart LavenderTown_Mart_Items
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+LavenderTown_Mart_Items::
+ .2byte ITEM_GREAT_BALL
+ .2byte ITEM_SUPER_POTION
+ .2byte ITEM_REVIVE
+ .2byte ITEM_ANTIDOTE
+ .2byte ITEM_PARALYZE_HEAL
+ .2byte ITEM_BURN_HEAL
+ .2byte ITEM_ICE_HEAL
+ .2byte ITEM_ESCAPE_ROPE
+ .2byte ITEM_SUPER_REPEL
+ .2byte ITEM_NONE
+ release
+ end
+
+LavenderTown_Mart_Text_SearchingForStatRaiseItems::
+ .string "I'm searching for items that raise\n"
+ .string "the stats of POKéMON.\p"
+ .string "They're effective over the course\n"
+ .string "of a single battle.\p"
+ .string "X ATTACK, X DEFEND, X SPEED, \n"
+ .string "and X SPECIAL are what I'm after.\p"
+ .string "Do you know where I can get them?$"
+
+LavenderTown_Mart_Text_DidYouBuyRevives::
+ .string "Did you buy some REVIVES?\n"
+ .string "They revive any fainted POKéMON!$"
+
+LavenderTown_Mart_Text_TrainerDuosCanChallengeYou::
+ .string "Sometimes, a TRAINER duo will\n"
+ .string "challenge you with two POKéMON\l"
+ .string "at the same time.\p"
+ .string "If that happens, you have to send\n"
+ .string "out two POKéMON to battle, too.$"
+
+LavenderTown_Mart_Text_SoldNuggetFromMountainsFor5000::
+ .string "この あいだ やまおくで\n"
+ .string "きんのたまを ひろい ましてね!\p"
+ .string "つかえない しなもの ですが\n"
+ .string "うったら なんと 5000¥でした$"
diff --git a/data/maps/LavenderTown_PokemonCenter_1F_Frlg/map.json b/data/maps/LavenderTown_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..a43c399c728a
--- /dev/null
+++ b/data/maps/LavenderTown_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,123 @@
+{
+ "id": "MAP_LAVENDER_TOWN_POKEMON_CENTER_1F",
+ "name": "LavenderTown_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LAVENDER_TOWN",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_LAVENDER_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 9,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_PokemonCenter_1F_EventScript_Gentleman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 5,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_PokemonCenter_1F_EventScript_Lass",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_PokemonCenter_1F_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 14,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_PokemonCenter_1F_EventScript_BaldingMan",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 8,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_LAVENDER_TOWN_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/LavenderTown_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/LavenderTown_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..57cb720840c0
--- /dev/null
+++ b/data/maps/LavenderTown_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,44 @@
+LavenderTown_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, LavenderTown_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ .byte 0
+
+LavenderTown_PokemonCenter_1F_OnTransition::
+ setrespawn HEAL_LOCATION_LAVENDER_TOWN
+ end
+
+LavenderTown_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+LavenderTown_PokemonCenter_1F_EventScript_Gentleman::
+ msgbox LavenderTown_PokemonCenter_1F_Text_RocketsDoAnythingForMoney, MSGBOX_NPC
+ end
+
+LavenderTown_PokemonCenter_1F_EventScript_Lass::
+ msgbox LavenderTown_PokemonCenter_1F_Text_CubonesMotherKilledByRockets, MSGBOX_NPC
+ end
+
+LavenderTown_PokemonCenter_1F_EventScript_Youngster::
+ msgbox LavenderTown_PokemonCenter_1F_Text_PeoplePayForCuboneSkulls, MSGBOX_NPC
+ end
+
+LavenderTown_PokemonCenter_1F_Text_RocketsDoAnythingForMoney::
+ .string "TEAM ROCKET will do anything for\n"
+ .string "the sake of money!\p"
+ .string "There is no job too dirty, no deed\n"
+ .string "too heinous, no crime too wicked!$"
+
+LavenderTown_PokemonCenter_1F_Text_CubonesMotherKilledByRockets::
+ .string "I saw CUBONE's mother trying to\n"
+ .string "escape from TEAM ROCKET.\p"
+ .string "She was killed trying to get away…$"
+
+LavenderTown_PokemonCenter_1F_Text_PeoplePayForCuboneSkulls::
+ .string "You know how the CUBONE species\n"
+ .string "wears skulls, right?\p"
+ .string "People will pay a lot for one.$"
+
diff --git a/data/maps/LavenderTown_PokemonCenter_2F_Frlg/map.json b/data/maps/LavenderTown_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..9793d718cd52
--- /dev/null
+++ b/data/maps/LavenderTown_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_LAVENDER_TOWN_POKEMON_CENTER_2F",
+ "name": "LavenderTown_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LAVENDER_TOWN",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_LAVENDER_TOWN_POKEMON_CENTER_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/LavenderTown_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/LavenderTown_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..b76a5ed75f07
--- /dev/null
+++ b/data/maps/LavenderTown_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+LavenderTown_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+LavenderTown_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+LavenderTown_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+LavenderTown_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/LavenderTown_VolunteerPokemonHouse_Frlg/map.json b/data/maps/LavenderTown_VolunteerPokemonHouse_Frlg/map.json
new file mode 100644
index 000000000000..84880bb0599a
--- /dev/null
+++ b/data/maps/LavenderTown_VolunteerPokemonHouse_Frlg/map.json
@@ -0,0 +1,154 @@
+{
+ "id": "MAP_LAVENDER_TOWN_VOLUNTEER_POKEMON_HOUSE",
+ "name": "LavenderTown_VolunteerPokemonHouse_Frlg",
+ "layout": "LAYOUT_LAVENDER_TOWN_VOLUNTEER_POKEMON_HOUSE",
+ "music": "MUS_RG_LAVENDER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LAVENDER_TOWN",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MR_FUJI",
+ "x": 3,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_VolunteerPokemonHouse_EventScript_MrFuji",
+ "flag": "FLAG_HIDE_POKEHOUSE_FUJI"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NIDORINO",
+ "x": 1,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_VolunteerPokemonHouse_EventScript_Nidorino",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PSYDUCK",
+ "x": 9,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_VolunteerPokemonHouse_EventScript_Psyduck",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_BOY_FRLG",
+ "x": 9,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_VolunteerPokemonHouse_EventScript_LittleBoy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 3,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_VolunteerPokemonHouse_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "LavenderTown_VolunteerPokemonHouse_EventScript_LittleGirl",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "LavenderTown_VolunteerPokemonHouse_EventScript_PokemonFanMagazine"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "LavenderTown_VolunteerPokemonHouse_EventScript_Bookshelf"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "LavenderTown_VolunteerPokemonHouse_EventScript_Bookshelf"
+ }
+ ]
+}
diff --git a/data/maps/LavenderTown_VolunteerPokemonHouse_Frlg/scripts.inc b/data/maps/LavenderTown_VolunteerPokemonHouse_Frlg/scripts.inc
new file mode 100644
index 000000000000..0bf4a41f6f77
--- /dev/null
+++ b/data/maps/LavenderTown_VolunteerPokemonHouse_Frlg/scripts.inc
@@ -0,0 +1,149 @@
+LavenderTown_VolunteerPokemonHouse_Frlg_MapScripts::
+ .byte 0
+
+LavenderTown_VolunteerPokemonHouse_EventScript_MrFuji::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_POKE_FLUTE, LavenderTown_VolunteerPokemonHouse_EventScript_AlreadyHavePokeFlute
+ msgbox LavenderTown_VolunteerPokemonHouse_Text_IdLikeYouToHaveThis
+ checkitemspace ITEM_POKE_FLUTE
+ goto_if_eq VAR_RESULT, FALSE, LavenderTown_VolunteerPokemonHouse_EventScript_NoRoomForPokeFlute
+ setflag FLAG_GOT_POKE_FLUTE
+ giveitem_msg LavenderTown_VolunteerPokemonHouse_Text_ReceivedPokeFluteFromMrFuji, ITEM_POKE_FLUTE, 1, MUS_RG_OBTAIN_KEY_ITEM
+ msgbox LavenderTown_VolunteerPokemonHouse_Text_ExplainPokeFlute
+ release
+ end
+
+LavenderTown_VolunteerPokemonHouse_EventScript_AlreadyHavePokeFlute::
+ msgbox LavenderTown_VolunteerPokemonHouse_Text_HasPokeFluteHelpedYou
+ release
+ end
+
+LavenderTown_VolunteerPokemonHouse_EventScript_NoRoomForPokeFlute::
+ msgbox LavenderTown_VolunteerPokemonHouse_Text_MustMakeRoomForThis
+ release
+ end
+
+LavenderTown_VolunteerPokemonHouse_EventScript_LittleGirl::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_MRFUJI, 0
+ msgbox LavenderTown_VolunteerPokemonHouse_Text_MrFujiLooksAfterOrphanedMons
+ release
+ end
+
+LavenderTown_VolunteerPokemonHouse_EventScript_LittleBoy::
+ msgbox LavenderTown_VolunteerPokemonHouse_Text_MonsNiceToHug, MSGBOX_NPC
+ end
+
+LavenderTown_VolunteerPokemonHouse_EventScript_Youngster::
+ lock
+ faceplayer
+ goto_if_set FLAG_RESCUED_MR_FUJI, LavenderTown_VolunteerPokemonHouse_EventScript_YoungsterFujiBack
+ msgbox LavenderTown_VolunteerPokemonHouse_Text_WhereDidMrFujiGo
+ release
+ end
+
+LavenderTown_VolunteerPokemonHouse_EventScript_YoungsterFujiBack::
+ msgbox LavenderTown_VolunteerPokemonHouse_Text_MrFujiWasPrayingForCubonesMother
+ release
+ end
+
+LavenderTown_VolunteerPokemonHouse_EventScript_Nidorino::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_NIDORINO, CRY_MODE_NORMAL
+ msgbox LavenderTown_VolunteerPokemonHouse_Text_Nidorino
+ waitmoncry
+ release
+ end
+
+LavenderTown_VolunteerPokemonHouse_EventScript_Psyduck::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_PSYDUCK, CRY_MODE_NORMAL
+ msgbox LavenderTown_VolunteerPokemonHouse_Text_Psyduck
+ waitmoncry
+ release
+ end
+
+LavenderTown_VolunteerPokemonHouse_EventScript_PokemonFanMagazine::
+ lockall
+ famechecker FAMECHECKER_MRFUJI, 2
+ msgbox LavenderTown_VolunteerPokemonHouse_Text_GrandPrizeDrawingClipped
+ releaseall
+ end
+
+LavenderTown_VolunteerPokemonHouse_EventScript_Bookshelf::
+ msgbox LavenderTown_VolunteerPokemonHouse_Text_PokemonMagazinesLineShelf, MSGBOX_SIGN
+ end
+
+LavenderTown_PokemonCenter_1F_Text_HearMrFujiNotFromAroundHere::
+ .string "I recently moved to this town.\p"
+ .string "I hear that MR. FUJI's not from\n"
+ .string "these parts originally, either.$"
+
+LavenderTown_VolunteerPokemonHouse_Text_WhereDidMrFujiGo::
+ .string "That's odd, MR. FUJI isn't here.\n"
+ .string "Where'd he go?$"
+
+LavenderTown_VolunteerPokemonHouse_Text_MrFujiWasPrayingForCubonesMother::
+ .string "MR. FUJI had been praying alone\n"
+ .string "for CUBONE's mother.$"
+
+LavenderTown_VolunteerPokemonHouse_Text_MrFujiLooksAfterOrphanedMons::
+ .string "This is really MR. FUJI's house.\p"
+ .string "He's really kind.\p"
+ .string "He looks after abandoned and\n"
+ .string "orphaned POKéMON.$"
+
+LavenderTown_VolunteerPokemonHouse_Text_MonsNiceToHug::
+ .string "It's so warm!\n"
+ .string "POKéMON are so nice to hug.$"
+
+LavenderTown_VolunteerPokemonHouse_Text_Nidorino::
+ .string "NIDORINO: Gaoo!$"
+
+LavenderTown_VolunteerPokemonHouse_Text_Psyduck::
+ .string "PSYDUCK: Gwappa!$"
+
+LavenderTown_VolunteerPokemonHouse_Text_IdLikeYouToHaveThis::
+ .string "MR. FUJI: {PLAYER}…\p"
+ .string "Your POKéDEX quest is one that\n"
+ .string "requires strong dedication.\p"
+ .string "Without deep love for POKéMON,\n"
+ .string "your quest may fail.\p"
+ .string "I'm not sure if this will help you,\n"
+ .string "but I'd like you to have it.$"
+
+LavenderTown_VolunteerPokemonHouse_Text_ReceivedPokeFluteFromMrFuji::
+ .string "{PLAYER} received a POKé FLUTE\n"
+ .string "from MR. FUJI.$"
+
+LavenderTown_VolunteerPokemonHouse_Text_ExplainPokeFlute::
+ .string "Upon hearing the POKé FLUTE,\n"
+ .string "sleeping POKéMON will spring awake.\p"
+ .string "Try using it on POKéMON that are\n"
+ .string "sleeping obstacles.$"
+
+LavenderTown_VolunteerPokemonHouse_Text_MustMakeRoomForThis::
+ .string "You must make room for this!$"
+
+LavenderTown_VolunteerPokemonHouse_Text_HasPokeFluteHelpedYou::
+ .string "MR. FUJI: Has my POKé FLUTE\n"
+ .string "helped you?$"
+
+LavenderTown_VolunteerPokemonHouse_Text_GrandPrizeDrawingClipped::
+ .string "POKéMON FAN MAGAZINE\n"
+ .string "Monthly Grand Prize Drawing!\p"
+ .string "The application form is…\p"
+ .string "Gone! It's been clipped out.\n"
+ .string "Someone must have applied already.$"
+
+LavenderTown_VolunteerPokemonHouse_Text_PokemonMagazinesLineShelf::
+ .string "POKéMON magazines line the shelf.\p"
+ .string "POKéMON INSIDER…\p"
+ .string "POKéMON FAN…$"
+
diff --git a/data/maps/LilycoveCity_MoveDeletersHouse/scripts.inc b/data/maps/LilycoveCity_MoveDeletersHouse/scripts.inc
index b8d21d5e283c..4dc933056d37 100644
--- a/data/maps/LilycoveCity_MoveDeletersHouse/scripts.inc
+++ b/data/maps/LilycoveCity_MoveDeletersHouse/scripts.inc
@@ -14,7 +14,7 @@ LilycoveCity_MoveDeletersHouse_EventScript_MoveDeleter::
LilycoveCity_MoveDeletersHouse_EventScript_ChooseMonAndMoveToForget::
msgbox LilycoveCity_MoveDeletersHouse_Text_WhichMonShouldForget, MSGBOX_DEFAULT
- special ChoosePartyMon
+ chooseboxmon SELECT_PC_MON_MOVE_DELETER
waitstate
goto_if_eq VAR_0x8004, PARTY_NOTHING_CHOSEN, LilycoveCity_MoveDeletersHouse_EventScript_ComeAgain
special IsSelectedMonEgg
diff --git a/data/maps/LittlerootTown_BrendansHouse_2F/scripts.inc b/data/maps/LittlerootTown_BrendansHouse_2F/scripts.inc
index 2832e9d79491..3cd958330b1e 100644
--- a/data/maps/LittlerootTown_BrendansHouse_2F/scripts.inc
+++ b/data/maps/LittlerootTown_BrendansHouse_2F/scripts.inc
@@ -294,7 +294,7 @@ PlayersHouse_2F_Text_Notebook:
Common_Text_LookCloserAtMap:
.string "{PLAYER} took a closer look at the\n"
- .string "HOENN region map.$"
+ .string "{REGION} region map.$"
PlayersHouse_2F_Text_ItsAGameCube:
.string "It's a Nintendo GameCube.\p"
diff --git a/data/maps/MauvilleCity_GameCorner/map.json b/data/maps/MauvilleCity_GameCorner/map.json
index 7fc434b05808..0b7755e03f22 100644
--- a/data/maps/MauvilleCity_GameCorner/map.json
+++ b/data/maps/MauvilleCity_GameCorner/map.json
@@ -2,24 +2,24 @@
"id": "MAP_MAUVILLE_CITY_GAME_CORNER",
"name": "MauvilleCity_GameCorner",
"layout": "LAYOUT_MAUVILLE_CITY_GAME_CORNER",
- "music": "MUS_GAME_CORNER",
+ "music": "MUS_RG_FUCHSIA",
"region_map_section": "MAPSEC_MAUVILLE_CITY",
"requires_flash": false,
"weather": "WEATHER_NONE",
"map_type": "MAP_TYPE_INDOOR",
"allow_cycling": false,
"allow_escaping": false,
- "allow_running": false,
+ "allow_running": true,
"show_map_name": false,
"battle_scene": "MAP_BATTLE_SCENE_NORMAL",
- "connections": null,
+ "connections": 0,
"object_events": [
{
"graphics_id": "OBJ_EVENT_GFX_WOMAN_2",
- "x": 12,
- "y": 7,
+ "x": 27,
+ "y": 18,
"elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
@@ -29,10 +29,10 @@
},
{
"graphics_id": "OBJ_EVENT_GFX_GENTLEMAN",
- "x": 16,
- "y": 5,
+ "x": 24,
+ "y": 17,
"elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
@@ -40,38 +40,25 @@
"script": "MauvilleCity_GameCorner_EventScript_Gentleman",
"flag": "0"
},
- {
- "graphics_id": "OBJ_EVENT_GFX_BEAUTY",
- "x": 11,
- "y": 2,
- "elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
- "movement_range_x": 0,
- "movement_range_y": 0,
- "trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "0",
- "script": "MauvilleCity_GameCorner_EventScript_CoinsClerk",
- "flag": "0"
- },
{
"graphics_id": "OBJ_EVENT_GFX_BEAUTY",
"x": 14,
- "y": 2,
+ "y": 16,
"elevation": 3,
"movement_type": "MOVEMENT_TYPE_FACE_DOWN",
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
- "script": "MauvilleCity_GameCorner_EventScript_PrizeCornerDolls",
+ "script": "MauvilleCity_GameCorner_EventScript_CoinsClerk",
"flag": "0"
},
{
"graphics_id": "OBJ_EVENT_GFX_GIRL_2",
- "x": 7,
- "y": 3,
+ "x": 25,
+ "y": 5,
"elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
@@ -81,10 +68,10 @@
},
{
"graphics_id": "OBJ_EVENT_GFX_POKEFAN_M",
- "x": 19,
- "y": 4,
+ "x": 4,
+ "y": 12,
"elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
@@ -95,9 +82,9 @@
{
"graphics_id": "OBJ_EVENT_GFX_OLD_MAN",
"x": 20,
- "y": 8,
+ "y": 18,
"elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
@@ -108,7 +95,7 @@
{
"graphics_id": "OBJ_EVENT_GFX_COOK",
"x": 6,
- "y": 8,
+ "y": 19,
"elevation": 3,
"movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
"movement_range_x": 0,
@@ -121,9 +108,9 @@
{
"graphics_id": "OBJ_EVENT_GFX_BEAUTY",
"x": 13,
- "y": 2,
+ "y": 15,
"elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
"movement_range_x": 1,
"movement_range_y": 1,
"trainer_type": "TRAINER_TYPE_NONE",
@@ -134,7 +121,7 @@
{
"graphics_id": "OBJ_EVENT_GFX_MAN_3",
"x": 1,
- "y": 7,
+ "y": 18,
"elevation": 3,
"movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
"movement_range_x": 1,
@@ -147,7 +134,7 @@
{
"graphics_id": "OBJ_EVENT_GFX_MANIAC",
"x": 9,
- "y": 8,
+ "y": 19,
"elevation": 3,
"movement_type": "MOVEMENT_TYPE_FACE_LEFT",
"movement_range_x": 1,
@@ -160,7 +147,7 @@
{
"graphics_id": "OBJ_EVENT_GFX_WOMAN_5",
"x": 4,
- "y": 6,
+ "y": 17,
"elevation": 3,
"movement_type": "MOVEMENT_TYPE_FACE_LEFT",
"movement_range_x": 1,
@@ -169,30 +156,253 @@
"trainer_sight_or_berry_tree_id": "0",
"script": "MauvilleCity_GameCorner_EventScript_Woman",
"flag": "0"
+ },
+ {
+ "graphics_id": "OBJ_EVENT_GFX_FAT_MAN",
+ "x": 9,
+ "y": 3,
+ "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": "MauvilleCity_GameCorner_EventScript_PachinkoGuy",
+ "flag": "0"
+ },
+ {
+ "graphics_id": "OBJ_EVENT_GFX_DEVON_EMPLOYEE",
+ "x": 21,
+ "y": 7,
+ "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": "MauvilleCity_GameCorner_EventScript_VFGuy1",
+ "flag": "0"
+ },
+ {
+ "graphics_id": "OBJ_EVENT_GFX_DEVON_EMPLOYEE",
+ "x": 21,
+ "y": 11,
+ "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": "MauvilleCity_GameCorner_EventScript_Dealer",
+ "flag": "0"
+ },
+ {
+ "graphics_id": "OBJ_EVENT_GFX_FISHERMAN",
+ "x": 23,
+ "y": 3,
+ "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": "MauvilleCity_GameCorner_EventScript_Fisherman",
+ "flag": "0"
+ },
+ {
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY",
+ "x": 13,
+ "y": 2,
+ "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": "MauvilleCity_GameCorner_EventScript_DerbyLady1",
+ "flag": "0"
+ },
+ {
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY",
+ "x": 16,
+ "y": 2,
+ "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": "MauvilleCity_GameCorner_EventScript_DerbyLady2",
+ "flag": "0"
+ },
+ {
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY",
+ "x": 15,
+ "y": 15,
+ "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": "MauvilleCity_GameCorner_EventScript_PrizeCornerNew",
+ "flag": "0"
+ },
+ {
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY",
+ "x": 27,
+ "y": 2,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "NULL",
+ "flag": "0"
+ },
+ {
+ "graphics_id": "OBJ_EVENT_GFX_DEVON_EMPLOYEE",
+ "x": 26,
+ "y": 7,
+ "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": "MauvilleCity_GameCorner_EventScript_VFGuy2",
+ "flag": "0"
+ },
+ {
+ "graphics_id": "OBJ_EVENT_GFX_DEVON_EMPLOYEE",
+ "x": 26,
+ "y": 11,
+ "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": "MauvilleCity_GameCorner_EventScript_Dealer2",
+ "flag": "0"
+ },
+ {
+ "graphics_id": "OBJ_EVENT_GFX_POKEFAN_F",
+ "x": 17,
+ "y": 13,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MauvilleCity_GameCorner_EventScript_Gachalady",
+ "flag": "0"
+ },
+ {
+ "graphics_id": "OBJ_EVENT_GFX_HIKER",
+ "x": 2,
+ "y": 3,
+ "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": "MauvilleCity_GameCorner_EventScript_Hiker",
+ "flag": "0"
+ },
+ {
+ "graphics_id": "OBJ_EVENT_GFX_DEVON_EMPLOYEE",
+ "x": 17,
+ "y": 21,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MauvilleCity_GameCorner_EventScript_Bouncer",
+ "flag": "0"
+ },
+ {
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY",
+ "x": 5,
+ "y": 15,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 2,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MauvilleCity_GameCorner_EventScript_JuiceLady",
+ "flag": "0"
+ },
+ {
+ "graphics_id": "OBJ_EVENT_GFX_DEVON_EMPLOYEE",
+ "x": 7,
+ "y": 8,
+ "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": "MauvilleCity_GameCorner_EventScript_Employee",
+ "flag": "0"
+ },
+ {
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY",
+ "x": 27,
+ "y": 16,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 3,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MauvilleCity_GameCorner_EventScript_JuiceLady",
+ "flag": "0"
+ },
+ {
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY",
+ "x": 16,
+ "y": 16,
+ "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": "MauvilleCity_GameCorner_EventScript_PrizeCornerNew2",
+ "flag": "0"
}
],
"warp_events": [
{
- "x": 11,
- "y": 10,
+ "x": 14,
+ "y": 21,
"elevation": 3,
"dest_map": "MAP_MAUVILLE_CITY",
"dest_warp_id": "5"
},
{
- "x": 12,
- "y": 10,
+ "x": 15,
+ "y": 21,
"elevation": 3,
"dest_map": "MAP_MAUVILLE_CITY",
"dest_warp_id": "5"
}
],
- "coord_events": [],
+ "coord_events": [
+
+ ],
"bg_events": [
{
"type": "sign",
"x": 2,
- "y": 6,
+ "y": 17,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
"script": "MauvilleCity_GameCorner_EventScript_SlotMachine0"
@@ -200,7 +410,7 @@
{
"type": "sign",
"x": 2,
- "y": 8,
+ "y": 19,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
"script": "MauvilleCity_GameCorner_EventScript_SlotMachine1"
@@ -208,7 +418,7 @@
{
"type": "sign",
"x": 2,
- "y": 9,
+ "y": 20,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
"script": "MauvilleCity_GameCorner_EventScript_SlotMachine2"
@@ -216,7 +426,7 @@
{
"type": "sign",
"x": 3,
- "y": 7,
+ "y": 18,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
"script": "MauvilleCity_GameCorner_EventScript_SlotMachine3"
@@ -224,7 +434,7 @@
{
"type": "sign",
"x": 3,
- "y": 8,
+ "y": 19,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
"script": "MauvilleCity_GameCorner_EventScript_SlotMachine4"
@@ -232,7 +442,7 @@
{
"type": "sign",
"x": 3,
- "y": 9,
+ "y": 20,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
"script": "MauvilleCity_GameCorner_EventScript_SlotMachine5"
@@ -240,7 +450,7 @@
{
"type": "sign",
"x": 7,
- "y": 6,
+ "y": 17,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
"script": "MauvilleCity_GameCorner_EventScript_SlotMachine6"
@@ -248,7 +458,7 @@
{
"type": "sign",
"x": 7,
- "y": 7,
+ "y": 18,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
"script": "MauvilleCity_GameCorner_EventScript_SlotMachine7"
@@ -256,7 +466,7 @@
{
"type": "sign",
"x": 7,
- "y": 9,
+ "y": 20,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
"script": "MauvilleCity_GameCorner_EventScript_SlotMachine8"
@@ -264,7 +474,7 @@
{
"type": "sign",
"x": 8,
- "y": 6,
+ "y": 17,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
"script": "MauvilleCity_GameCorner_EventScript_SlotMachine9"
@@ -272,7 +482,7 @@
{
"type": "sign",
"x": 8,
- "y": 7,
+ "y": 18,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
"script": "MauvilleCity_GameCorner_EventScript_SlotMachine10"
@@ -280,106 +490,354 @@
{
"type": "sign",
"x": 8,
- "y": 9,
+ "y": 20,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
"script": "MauvilleCity_GameCorner_EventScript_SlotMachine11"
},
{
"type": "sign",
- "x": 14,
- "y": 6,
+ "x": 21,
+ "y": 17,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
"script": "Roulette_EventScript_Table1"
},
{
"type": "sign",
- "x": 15,
- "y": 6,
+ "x": 22,
+ "y": 17,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
"script": "Roulette_EventScript_Table1"
},
{
"type": "sign",
- "x": 14,
- "y": 7,
+ "x": 21,
+ "y": 18,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
"script": "Roulette_EventScript_Table1"
},
{
"type": "sign",
- "x": 15,
- "y": 7,
+ "x": 22,
+ "y": 18,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
"script": "Roulette_EventScript_Table1"
},
{
"type": "sign",
- "x": 14,
- "y": 8,
+ "x": 21,
+ "y": 19,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
"script": "Roulette_EventScript_Table1"
},
{
"type": "sign",
- "x": 15,
- "y": 8,
+ "x": 22,
+ "y": 19,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
"script": "Roulette_EventScript_Table1"
},
{
"type": "sign",
- "x": 18,
- "y": 6,
+ "x": 25,
+ "y": 17,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
"script": "Roulette_EventScript_Table2"
},
{
"type": "sign",
- "x": 19,
- "y": 6,
+ "x": 26,
+ "y": 17,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
"script": "Roulette_EventScript_Table2"
},
{
"type": "sign",
- "x": 18,
- "y": 7,
+ "x": 25,
+ "y": 18,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
"script": "Roulette_EventScript_Table2"
},
{
"type": "sign",
- "x": 19,
- "y": 7,
+ "x": 26,
+ "y": 18,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
"script": "Roulette_EventScript_Table2"
},
{
"type": "sign",
- "x": 18,
- "y": 8,
+ "x": 25,
+ "y": 19,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
"script": "Roulette_EventScript_Table2"
},
{
"type": "sign",
- "x": 19,
- "y": 8,
+ "x": 26,
+ "y": 19,
"elevation": 0,
"player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
"script": "Roulette_EventScript_Table2"
+ },
+ {
+ "type": "sign",
+ "x": 22,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "MauvilleCity_GameCorner_EventScript_Blackjack"
+ },
+ {
+ "type": "sign",
+ "x": 21,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "MauvilleCity_GameCorner_EventScript_Blackjack"
+ },
+ {
+ "type": "sign",
+ "x": 20,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "MauvilleCity_GameCorner_EventScript_Blackjack"
+ },
+ {
+ "type": "sign",
+ "x": 22,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "MauvilleCity_GameCorner_EventScript_Blackjack"
+ },
+ {
+ "type": "sign",
+ "x": 21,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "MauvilleCity_GameCorner_EventScript_Blackjack"
+ },
+ {
+ "type": "sign",
+ "x": 20,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "MauvilleCity_GameCorner_EventScript_Blackjack"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MauvilleCity_GameCorner_EventScript_Pachinko"
+ },
+ {
+ "type": "sign",
+ "x": 16,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MauvilleCity_GameCorner_EventScript_Gacha_Master"
+ },
+ {
+ "type": "sign",
+ "x": 15,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MauvilleCity_GameCorner_EventScript_Gacha_Ultra"
+ },
+ {
+ "type": "sign",
+ "x": 14,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MauvilleCity_GameCorner_EventScript_Gacha_Great"
+ },
+ {
+ "type": "sign",
+ "x": 13,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MauvilleCity_GameCorner_EventScript_Gacha_Basic"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
+ "script": "MauvilleCity_GameCorner_EventScript_PinballGengar"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
+ "script": "MauvilleCity_GameCorner_EventScript_PinballSeel"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_EAST",
+ "script": "MauvilleCity_GameCorner_EventScript_PinballDiglett"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_WEST",
+ "script": "MauvilleCity_GameCorner_EventScript_PinballMeowth"
+ },
+ {
+ "type": "sign",
+ "x": 21,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MauvilleCity_GameCorner_EventScript_VoltorbFlip"
+ },
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MauvilleCity_GameCorner_EventScript_BlockStacker"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MauvilleCity_GameCorner_EventScript_Snake"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MauvilleCity_GameCorner_EventScript_FlappyBird"
+ },
+ {
+ "type": "sign",
+ "x": 14,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MauvilleCity_GameCorner_EventScript_Derby"
+ },
+ {
+ "type": "sign",
+ "x": 15,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MauvilleCity_GameCorner_EventScript_Derby"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MauvilleCity_GameCorner_EventScript_Pachinko"
+ },
+ {
+ "type": "sign",
+ "x": 18,
+ "y": 3,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MauvilleCity_GameCorner_EventScript_Derby"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 3,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MauvilleCity_GameCorner_EventScript_Derby"
+ },
+ {
+ "type": "sign",
+ "x": 26,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MauvilleCity_GameCorner_EventScript_VoltorbFlip"
+ },
+ {
+ "type": "sign",
+ "x": 27,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "MauvilleCity_GameCorner_EventScript_Blackjack"
+ },
+ {
+ "type": "sign",
+ "x": 26,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "MauvilleCity_GameCorner_EventScript_Blackjack"
+ },
+ {
+ "type": "sign",
+ "x": 25,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "MauvilleCity_GameCorner_EventScript_Blackjack"
+ },
+ {
+ "type": "sign",
+ "x": 27,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "MauvilleCity_GameCorner_EventScript_Blackjack"
+ },
+ {
+ "type": "sign",
+ "x": 26,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "MauvilleCity_GameCorner_EventScript_Blackjack"
+ },
+ {
+ "type": "sign",
+ "x": 25,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "MauvilleCity_GameCorner_EventScript_Blackjack"
}
]
}
diff --git a/data/maps/MauvilleCity_GameCorner/scripts.inc b/data/maps/MauvilleCity_GameCorner/scripts.inc
index c9e425be73d5..afcec506b225 100644
--- a/data/maps/MauvilleCity_GameCorner/scripts.inc
+++ b/data/maps/MauvilleCity_GameCorner/scripts.inc
@@ -1,17 +1,436 @@
+.set LOCALID_BOUNCER, 24
+
MauvilleCity_GameCorner_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerId_Onframe
.byte 0
- @ Game Corner prices
+ @ Game Corner prices
.set TM_DOUBLE_TEAM_COINS, 1500
.set TM_PSYCHIC_COINS, 3500
.set TM_FLAMETHROWER_COINS, 4000
.set TM_THUNDERBOLT_COINS, 4000
.set TM_ICE_BEAM_COINS, 4000
.set DOLL_COINS, 1000
+ .set RARECANDY_COINS, 4000
+ .set SUNSTONE_COINS, 2000
+ .set MOONSTONE_COINS, 2000
+ .set FIRESTONE_COINS, 2000
+ .set THUNDERSTONE_COINS, 2000
+ .set WATERSTONE_COINS, 2000
+ .set LEAFSTONE_COINS, 2000
+ .set CHOICEBAND_COINS, 4500
+ .set BRIGHTPOWDER_COINS, 4500
.set COINS_PRICE_50, 1000
.set COINS_PRICE_500, 10000
+TrainerId_Onframe:
+.if GAME_CORNER_VAR_ID_CHECK != 0
+ map_script_2 GAME_CORNER_VAR_ID_CHECK, 0, BouncerCheck
+.endif
+ .2byte 0
+
+BouncerCheck::
+ lockall
+ applymovement LOCALID_BOUNCER, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ playse SE_PIN
+ applymovement LOCALID_BOUNCER, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_BOUNCER, Common_Movement_Delay48
+ waitmovement 0
+ applymovement LOCALID_BOUNCER, Movement_Bouncer_Approach
+ waitmovement 0
+ msgbox MauvilleCity_GameCorner_Text_Bouncer1, MSGBOX_DEFAULT
+ closemessage
+ setvar GAME_CORNER_VAR_ID_CHECK, 1
+ applymovement LOCALID_BOUNCER, Movement_Bouncer_Leave
+ waitmovement 0
+ releaseall
+ end
+
+Movement_Bouncer_Approach:
+ walk_left
+ walk_left
+ step_end
+
+Movement_Bouncer_Leave:
+ walk_right
+ walk_right
+ walk_in_place_faster_left
+ step_end
+
+MauvilleCity_GameCorner_EventScript_Blackjack::
+ lockall
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
+ msgbox MauvilleCity_GameCorner_Text_BlackJack, MSGBOX_YESNO
+ closemessage
+ goto_if_eq VAR_RESULT, NO, MauvilleCity_GameCorner_CancelBJ
+ playbgm MUS_GAME_CORNER, FALSE
+ special StartBlackJack
+ waitstate
+ savebgm MUS_DUMMY
+ fadedefaultbgm
+ releaseall
+ end
+
+MauvilleCity_GameCorner_EventScript_Derby::
+ lockall
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
+ msgbox MauvilleCity_GameCorner_Text_Derby, MSGBOX_YESNO
+ closemessage
+ goto_if_eq VAR_RESULT, NO, MauvilleCity_GameCorner_CancelBJ
+ playbgm MUS_RG_PEWTER, FALSE
+ special StartDerby
+ waitstate
+ savebgm MUS_DUMMY
+ fadedefaultbgm
+MauvilleCity_GameCorner_EventScript_CheckWinnings::
+ goto_if_eq GAME_CORNER_VAR_WINNINGS, 0, MauvilleCity_GameCorner_NoWin
+ showcoinsbox 1, 1
+ buffernumberstring STR_VAR_1, GAME_CORNER_VAR_WINNINGS
+ msgbox PB_YOU_WON_TEXT, MSGBOX_DEFAULT
+ waitmessage
+ addcoins GAME_CORNER_VAR_WINNINGS
+ setvar GAME_CORNER_VAR_WINNINGS, 0
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ delay 40
+MauvilleCity_GameCorner_CancelVF::
+ hidecoinsbox 0, 5
+MauvilleCity_GameCorner_CancelBJ::
+ closemessage
+MauvilleCity_GameCorner_NoWin::
+ releaseall
+ end
+
+MauvilleCity_GameCorner_EventScript_Snake::
+ lockall
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, 25, Onix_Not_Enough
+ showcoinsbox 1, 1
+ msgbox MauvilleCity_GameCorner_Text_Snake, MSGBOX_YESNO
+ closemessage
+ goto_if_eq VAR_RESULT, NO, MauvilleCity_GameCorner_CancelVF
+ removecoins 25
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ delay 40
+ hidecoinsbox 0, 5
+ playbgm MUS_NONE, FALSE
+ special StartSnake
+ waitstate
+ savebgm MUS_DUMMY
+ fadedefaultbgm
+ goto MauvilleCity_GameCorner_EventScript_CheckWinnings
+
+MauvilleCity_GameCorner_EventScript_FlappyBird::
+ lockall
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, 25, Butterfree_Not_Enough
+ showcoinsbox 1, 1
+ msgbox MauvilleCity_GameCorner_Text_Bird, MSGBOX_YESNO
+ closemessage
+ goto_if_eq VAR_RESULT, NO, MauvilleCity_GameCorner_CancelVF
+ removecoins 25
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ delay 40
+ hidecoinsbox 0, 5
+ playbgm MUS_NONE, FALSE
+ special StartFlappyBird
+ waitstate
+ savebgm MUS_DUMMY
+ fadedefaultbgm
+ goto MauvilleCity_GameCorner_EventScript_CheckWinnings
+
+MauvilleCity_GameCorner_EventScript_BlockStacker::
+ lockall
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, 25, BlockStacker_Not_Enough
+ showcoinsbox 1, 1
+ msgbox MauvilleCity_GameCorner_Text_BS, MSGBOX_YESNO
+ closemessage
+ goto_if_eq VAR_RESULT, NO, MauvilleCity_GameCorner_CancelVF
+ removecoins 25
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ delay 40
+ hidecoinsbox 0, 5
+ playbgm MUS_CASINO_PLUS_1, FALSE
+ special StartBlockStacker
+ waitstate
+ savebgm MUS_DUMMY
+ fadedefaultbgm
+ goto MauvilleCity_GameCorner_EventScript_CheckWinnings
+
+BlockStacker_Not_Enough::
+ msgbox BS_Not_Enough, MSGBOX_DEFAULT
+ releaseall
+ end
+
+Pinball_Not_Enough::
+ msgbox PB_Not_Enough, MSGBOX_DEFAULT
+ releaseall
+ end
+
+Onix_Not_Enough::
+ msgbox Snake_Not_Enough, MSGBOX_DEFAULT
+ releaseall
+ end
+
+Juice_Not_Enough::
+ msgbox Bjuice_Not_Enough, MSGBOX_DEFAULT
+ releaseall
+ end
+
+Butterfree_Not_Enough::
+ msgbox Bird_Not_Enough, MSGBOX_DEFAULT
+ releaseall
+ end
+
+VF_Not_Enough::
+ msgbox Flip_Not_Enough, MSGBOX_DEFAULT
+ releaseall
+ end
+
+MauvilleCity_GameCorner_EventScript_Pachinko::
+ lockall
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
+ msgbox MauvilleCity_GameCorner_Text_Pachinko, MSGBOX_YESNO
+ closemessage
+ goto_if_eq VAR_RESULT, NO, MauvilleCity_GameCorner_CancelVF
+ playbgm MUS_RG_ROUTE1, FALSE
+ callnative PlayPachinko
+ waitstate
+ savebgm MUS_DUMMY
+ fadedefaultbgm
+ releaseall
+ end
+
+MauvilleCity_GameCorner_EventScript_PinballMeowth::
+ lockall
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, 25, Pinball_Not_Enough
+ showcoinsbox 1, 1
+ msgbox MauvilleCity_GameCorner_Text_Pinball_Meowth, MSGBOX_YESNO
+ closemessage
+ goto_if_eq VAR_RESULT, NO, MauvilleCity_GameCorner_CancelVF
+ removecoins 25
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ delay 40
+ hidecoinsbox 0, 5
+ playbgm MUS_RG_POKE_CENTER, FALSE
+ callnative PlayMeowthPinballGame
+ waitstate
+ savebgm MUS_DUMMY
+ fadedefaultbgm
+ goto MauvilleCity_GameCorner_EventScript_CheckWinnings
+
+MauvilleCity_GameCorner_EventScript_PinballDiglett::
+ lockall
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, 50, Pinball_Not_Enough
+ showcoinsbox 1, 1
+ msgbox MauvilleCity_GameCorner_Text_Pinball_Diglett, MSGBOX_YESNO
+ closemessage
+ goto_if_eq VAR_RESULT, NO, MauvilleCity_GameCorner_CancelVF
+ removecoins 50
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ delay 40
+ hidecoinsbox 0, 5
+ playbgm MUS_RG_POKE_JUMP, FALSE
+ callnative PlayDiglettPinballGame
+ waitstate
+ savebgm MUS_DUMMY
+ fadedefaultbgm
+ goto MauvilleCity_GameCorner_EventScript_CheckWinnings
+
+MauvilleCity_GameCorner_EventScript_PinballSeel::
+ lockall
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, 25, Pinball_Not_Enough
+ showcoinsbox 1, 1
+ msgbox MauvilleCity_GameCorner_Text_Pinball_Seel, MSGBOX_YESNO
+ closemessage
+ goto_if_eq VAR_RESULT, NO, MauvilleCity_GameCorner_CancelVF
+ removecoins 25
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ delay 40
+ hidecoinsbox 0, 5
+ playbgm MUS_RG_SS_ANNE, FALSE
+ callnative PlaySeelPinballGame
+ waitstate
+ savebgm MUS_DUMMY
+ fadedefaultbgm
+ goto MauvilleCity_GameCorner_EventScript_CheckWinnings
+
+MauvilleCity_GameCorner_EventScript_PinballGengar::
+ lockall
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, 100, Pinball_Not_Enough
+ showcoinsbox 1, 1
+ msgbox MauvilleCity_GameCorner_Text_Pinball_Gengar, MSGBOX_YESNO
+ closemessage
+ goto_if_eq VAR_RESULT, NO, MauvilleCity_GameCorner_CancelVF
+ removecoins 100
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ delay 40
+ hidecoinsbox 0, 5
+ playbgm MUS_RG_POKE_TOWER, FALSE
+ callnative PlayGengarPinballGame
+ waitstate
+ savebgm MUS_DUMMY
+ fadedefaultbgm
+ goto MauvilleCity_GameCorner_EventScript_CheckWinnings
+
+MauvilleCity_GameCorner_EventScript_VoltorbFlip::
+ lockall
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, 50, VF_Not_Enough
+ showcoinsbox 1, 1
+ msgbox MauvilleCity_GameCorner_Text_VF, MSGBOX_YESNO
+ closemessage
+ goto_if_eq VAR_RESULT, NO, MauvilleCity_GameCorner_CancelVF
+ removecoins 50
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ delay 40
+ hidecoinsbox 0, 5
+ playbgm MUS_RG_OAK, FALSE
+ setvar GAME_CORNER_VAR_WINNINGS, 0
+ special Special_ViewVoltorbFlip
+ waitstate
+ goto_if_eq VAR_RESULT, 0, VF_Come_Again
+ goto_if_eq VAR_RESULT, 1, VF_Go_On
+ releaseall
+ end
+
+VF_Come_Again::
+ savebgm MUS_DUMMY
+ fadedefaultbgm
+ msgbox VF_Come_Again_Text, MSGBOX_DEFAULT
+ setvar GAME_CORNER_VAR_WINNINGS, 0
+ releaseall
+ end
+
+VF_Go_On::
+ showcoinsbox 1, 1
+ buffernumberstring STR_VAR_1, GAME_CORNER_VAR_WINNINGS
+ msgbox MauvilleCity_GameCorner_Text_VF_Keep_Going, MSGBOX_YESNO
+ closemessage
+ goto_if_eq VAR_RESULT, NO, VF_Cash_Out
+ goto VF_Loop
+
+VF_Loop::
+ hidecoinsbox 0, 5
+ special Special_ViewVoltorbFlip
+ waitstate
+ goto_if_eq VAR_RESULT, 0, VF_Come_Again
+ goto_if_eq VAR_RESULT, 1, VF_Go_On
+ releaseall
+ end
+
+VF_Cash_Out::
+ addcoins GAME_CORNER_VAR_WINNINGS
+ setvar GAME_CORNER_VAR_WINNINGS, 0
+.if FLIP_VAR_LEVEL != 0
+ setvar FLIP_VAR_LEVEL, 0
+.endif
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ savebgm MUS_DUMMY
+ fadedefaultbgm
+ delay 40
+ hidecoinsbox 0, 5
+ releaseall
+ end
+
+MauvilleCity_GameCorner_EventScript_Gacha_Basic::
+ lockall
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
+ setvar VAR_0x8004, 1
+ call MauvilleCity_GameCorner_EventScript_GachaCommon
+ releaseall
+ end
+
+MauvilleCity_GameCorner_EventScript_GachaCommon::
+ playbgm MUS_RG_CINNABAR, FALSE
+ special StartGacha
+ waitstate
+ savebgm MUS_DUMMY
+ fadedefaultbgm
+ goto_if_eq VAR_RESULT, MON_GIVEN_TO_PARTY, MauvilleCity_GameCorner_EventScript_RecieveGachaMonParty
+ goto_if_eq VAR_RESULT, MON_GIVEN_TO_PC, MauvilleCity_GameCorner_EventScript_RecieveGachaMonPC
+MauvilleCity_GameCorner_EventScript_GachaEnd:
+ return
+
+MauvilleCity_GameCorner_EventScript_RecieveGachaMonParty:
+ msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, MauvilleCity_GameCorner_EventScript_GachaEnd
+ call Common_EventScript_GetGiftMonPartySlot
+ call Common_EventScript_NameReceivedPartyMon
+ goto MauvilleCity_GameCorner_EventScript_GachaEnd
+
+MauvilleCity_GameCorner_EventScript_RecieveGachaMonPC:
+ msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, MauvilleCity_GameCorner_EventScript_TransferGachaMonToPC
+ call Common_EventScript_NameReceivedBoxMon
+MauvilleCity_GameCorner_EventScript_TransferGachaMonToPC:
+ call Common_EventScript_TransferredToPC
+ goto MauvilleCity_GameCorner_EventScript_GachaEnd
+
+MauvilleCity_GameCorner_EventScript_Gacha_Great::
+ lockall
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
+ setvar VAR_0x8004, 2
+ call MauvilleCity_GameCorner_EventScript_GachaCommon
+ releaseall
+ end
+
+MauvilleCity_GameCorner_EventScript_Gacha_Ultra::
+ lockall
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
+ setvar VAR_0x8004, 3
+ call MauvilleCity_GameCorner_EventScript_GachaCommon
+ releaseall
+ end
+
+MauvilleCity_GameCorner_EventScript_Gacha_Master::
+ lockall
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
+ setvar VAR_0x8004, 4
+ call MauvilleCity_GameCorner_EventScript_GachaCommon
+ releaseall
+ end
+
MauvilleCity_GameCorner_EventScript_CoinsClerk::
lock
faceplayer
@@ -220,6 +639,24 @@ MauvilleCity_GameCorner_EventScript_PrizeCornerTMs::
goto_if_eq VAR_RESULT, TRUE, MauvilleCity_GameCorner_EventScript_ChooseTMPrizeMessage
release
end
+
+MauvilleCity_GameCorner_EventScript_PrizeCornerNew::
+ lock
+ faceplayer
+ msgbox MauvilleCity_GameCorner_Text_ExchangeCoinsForPrizes, MSGBOX_DEFAULT
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, TRUE, MauvilleCity_GameCorner_EventScript_ChooseNewPrizeMessage
+ release
+ end
+
+MauvilleCity_GameCorner_EventScript_PrizeCornerNew2::
+ lock
+ faceplayer
+ msgbox MauvilleCity_GameCorner_Text_ExchangeCoinsForPrizes, MSGBOX_DEFAULT
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, TRUE, MauvilleCity_GameCorner_EventScript_ChooseNewPrizeMessage2
+ release
+ end
MauvilleCity_GameCorner_EventScript_ChooseTMPrizeMessage::
message MauvilleCity_GameCorner_Text_WhichPrize
@@ -227,11 +664,35 @@ MauvilleCity_GameCorner_EventScript_ChooseTMPrizeMessage::
setvar VAR_TEMP_1, 0
showcoinsbox 1, 1
goto MauvilleCity_GameCorner_EventScript_ChooseTMPrize
+
+MauvilleCity_GameCorner_EventScript_ChooseNewPrizeMessage::
+ message MauvilleCity_GameCorner_Text_WhichPrize
+ waitmessage
+ setvar VAR_TEMP_1, 0
+ showcoinsbox 1, 1
+ goto MauvilleCity_GameCorner_EventScript_ChooseNewPrize
+
+MauvilleCity_GameCorner_EventScript_ChooseNewPrizeMessage2::
+ message MauvilleCity_GameCorner_Text_WhichPrize
+ waitmessage
+ setvar VAR_TEMP_1, 0
+ showcoinsbox 1, 1
+ goto MauvilleCity_GameCorner_EventScript_ChooseNewPrize2
MauvilleCity_GameCorner_EventScript_ReturnToChooseTMPrize::
message MauvilleCity_GameCorner_Text_WhichPrize
waitmessage
goto MauvilleCity_GameCorner_EventScript_ChooseTMPrize
+
+MauvilleCity_GameCorner_EventScript_ReturnToChooseNewPrize::
+ message MauvilleCity_GameCorner_Text_WhichPrize
+ waitmessage
+ goto MauvilleCity_GameCorner_EventScript_ChooseNewPrize
+
+MauvilleCity_GameCorner_EventScript_ReturnToChooseNewPrize2::
+ message MauvilleCity_GameCorner_Text_WhichPrize
+ waitmessage
+ goto MauvilleCity_GameCorner_EventScript_ChooseNewPrize2
MauvilleCity_GameCorner_EventScript_ChooseTMPrize::
multichoice 12, 0, MULTI_GAME_CORNER_TMS, FALSE
@@ -244,6 +705,217 @@ MauvilleCity_GameCorner_EventScript_ChooseTMPrize::
case 5, MauvilleCity_GameCorner_EventScript_CancelTMSelect
goto MauvilleCity_GameCorner_EventScript_CancelTMSelect
end
+
+MauvilleCity_GameCorner_EventScript_ChooseNewPrize::
+ @ multichoice 12, 0, MULTI_GAMECORNER_NEW, FALSE
+ switch VAR_RESULT
+ case 0, MauvilleCity_GameCorner_EventScript_RareCandy
+ case 1, MauvilleCity_GameCorner_EventScript_SunStone
+ case 2, MauvilleCity_GameCorner_EventScript_MoonStone
+ case 3, MauvilleCity_GameCorner_EventScript_ChoiceBand
+ case 4, MauvilleCity_GameCorner_EventScript_BrightPowder
+ case 7, MauvilleCity_GameCorner_EventScript_CancelTMSelect
+ goto MauvilleCity_GameCorner_EventScript_CancelTMSelect
+ end
+
+MauvilleCity_GameCorner_EventScript_ChooseNewPrize2::
+ @ multichoice 12, 0, MULTI_GAMECORNER_NEW2, FALSE
+ switch VAR_RESULT
+ case 0, MauvilleCity_GameCorner_EventScript_FireStone
+ case 1, MauvilleCity_GameCorner_EventScript_ThunderStone
+ case 2, MauvilleCity_GameCorner_EventScript_WaterStone
+ case 3, MauvilleCity_GameCorner_EventScript_LeafStone
+ case 4, MauvilleCity_GameCorner_EventScript_CancelTMSelect
+ goto MauvilleCity_GameCorner_EventScript_CancelTMSelect
+ end
+
+MauvilleCity_GameCorner_EventScript_ChoiceBand::
+ setvar VAR_TEMP_1, 8
+ bufferitemname STR_VAR_1, ITEM_CHOICE_BAND
+ setvar VAR_0x8004, ITEM_CHOICE_BAND
+ goto MauvilleCity_GameCorner_EventScript_ConfirmNewPrize
+
+MauvilleCity_GameCorner_EventScript_BrightPowder::
+ setvar VAR_TEMP_1, 9
+ bufferitemname STR_VAR_1, ITEM_BRIGHT_POWDER
+ setvar VAR_0x8004, ITEM_BRIGHT_POWDER
+ goto MauvilleCity_GameCorner_EventScript_ConfirmNewPrize
+
+MauvilleCity_GameCorner_EventScript_RareCandy::
+ setvar VAR_TEMP_1, 1
+ bufferitemname STR_VAR_1, ITEM_RARE_CANDY
+ setvar VAR_0x8004, ITEM_RARE_CANDY
+ goto MauvilleCity_GameCorner_EventScript_ConfirmNewPrize
+
+MauvilleCity_GameCorner_EventScript_SunStone::
+ setvar VAR_TEMP_1, 2
+ bufferitemname STR_VAR_1, ITEM_SUN_STONE
+ setvar VAR_0x8004, ITEM_SUN_STONE
+ goto MauvilleCity_GameCorner_EventScript_ConfirmNewPrize
+
+MauvilleCity_GameCorner_EventScript_MoonStone::
+ setvar VAR_TEMP_1, 3
+ bufferitemname STR_VAR_1, ITEM_MOON_STONE
+ setvar VAR_0x8004, ITEM_MOON_STONE
+ goto MauvilleCity_GameCorner_EventScript_ConfirmNewPrize
+
+MauvilleCity_GameCorner_EventScript_ThunderStone::
+ setvar VAR_TEMP_1, 5
+ bufferitemname STR_VAR_1, ITEM_THUNDER_STONE
+ setvar VAR_0x8004, ITEM_THUNDER_STONE
+ goto MauvilleCity_GameCorner_EventScript_ConfirmNewPrize
+
+MauvilleCity_GameCorner_EventScript_WaterStone::
+ setvar VAR_TEMP_1, 6
+ bufferitemname STR_VAR_1, ITEM_WATER_STONE
+ setvar VAR_0x8004, ITEM_WATER_STONE
+ goto MauvilleCity_GameCorner_EventScript_ConfirmNewPrize
+
+MauvilleCity_GameCorner_EventScript_LeafStone::
+ setvar VAR_TEMP_1, 7
+ bufferitemname STR_VAR_1, ITEM_LEAF_STONE
+ setvar VAR_0x8004, ITEM_LEAF_STONE
+ goto MauvilleCity_GameCorner_EventScript_ConfirmNewPrize
+
+MauvilleCity_GameCorner_EventScript_FireStone::
+ setvar VAR_TEMP_1, 4
+ bufferitemname STR_VAR_1, ITEM_FIRE_STONE
+ setvar VAR_0x8004, ITEM_FIRE_STONE
+ goto MauvilleCity_GameCorner_EventScript_ConfirmNewPrize
+
+MauvilleCity_GameCorner_EventScript_ConfirmNewPrize::
+ //special BufferItemName
+ msgbox MauvilleCity_GameCorner_Text_SoYourChoiceIsTheNewX, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, MauvilleCity_GameCorner_EventScript_CancelTMSelect
+ switch VAR_TEMP_1
+ case 1, MauvilleCity_GameCorner_EventScript_BuyRareCandy
+ case 2, MauvilleCity_GameCorner_EventScript_BuySunStone
+ case 3, MauvilleCity_GameCorner_EventScript_BuyMoonStone
+ case 4, MauvilleCity_GameCorner_EventScript_BuyFireStone
+ case 5, MauvilleCity_GameCorner_EventScript_BuyThunderStone
+ case 6, MauvilleCity_GameCorner_EventScript_BuyWaterStone
+ case 7, MauvilleCity_GameCorner_EventScript_BuyLeafStone
+ case 8, MauvilleCity_GameCorner_EventScript_BuyChoiceBand
+ case 9, MauvilleCity_GameCorner_EventScript_BuyBrightPowder
+
+ end
+
+MauvilleCity_GameCorner_EventScript_BuyBrightPowder::
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, BRIGHTPOWDER_COINS, MauvilleCity_GameCorner_EventScript_NotEnoughCoinsForNew
+ checkitemspace ITEM_BRIGHT_POWDER
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoRoomForNew
+ removecoins BRIGHTPOWDER_COINS
+ additem ITEM_BRIGHT_POWDER
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ msgbox MauvilleCity_GameCorner_Text_HereYouGo, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_ReturnToChooseNewPrize
+ end
+
+MauvilleCity_GameCorner_EventScript_BuyChoiceBand::
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, CHOICEBAND_COINS, MauvilleCity_GameCorner_EventScript_NotEnoughCoinsForNew
+ checkitemspace ITEM_CHOICE_BAND
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoRoomForNew
+ removecoins CHOICEBAND_COINS
+ additem ITEM_CHOICE_BAND
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ msgbox MauvilleCity_GameCorner_Text_HereYouGo, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_ReturnToChooseNewPrize
+ end
+
+MauvilleCity_GameCorner_EventScript_BuyRareCandy::
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, RARECANDY_COINS, MauvilleCity_GameCorner_EventScript_NotEnoughCoinsForNew
+ checkitemspace ITEM_RARE_CANDY
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoRoomForNew
+ removecoins RARECANDY_COINS
+ additem ITEM_RARE_CANDY
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ msgbox MauvilleCity_GameCorner_Text_HereYouGo, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_ReturnToChooseNewPrize
+ end
+
+MauvilleCity_GameCorner_EventScript_BuySunStone::
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, SUNSTONE_COINS, MauvilleCity_GameCorner_EventScript_NotEnoughCoinsForNew
+ checkitemspace ITEM_SUN_STONE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoRoomForNew
+ removecoins SUNSTONE_COINS
+ additem ITEM_SUN_STONE
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ msgbox MauvilleCity_GameCorner_Text_HereYouGo, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_ReturnToChooseNewPrize
+ end
+
+MauvilleCity_GameCorner_EventScript_BuyMoonStone::
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, MOONSTONE_COINS, MauvilleCity_GameCorner_EventScript_NotEnoughCoinsForNew
+ checkitemspace ITEM_MOON_STONE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoRoomForNew
+ removecoins MOONSTONE_COINS
+ additem ITEM_MOON_STONE
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ msgbox MauvilleCity_GameCorner_Text_HereYouGo, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_ReturnToChooseNewPrize
+ end
+
+MauvilleCity_GameCorner_EventScript_BuyFireStone::
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, FIRESTONE_COINS, MauvilleCity_GameCorner_EventScript_NotEnoughCoinsForNew2
+ checkitemspace ITEM_FIRE_STONE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoRoomForNew2
+ removecoins FIRESTONE_COINS
+ additem ITEM_FIRE_STONE
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ msgbox MauvilleCity_GameCorner_Text_HereYouGo, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_ReturnToChooseNewPrize2
+ end
+
+MauvilleCity_GameCorner_EventScript_BuyThunderStone::
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, THUNDERSTONE_COINS, MauvilleCity_GameCorner_EventScript_NotEnoughCoinsForNew2
+ checkitemspace ITEM_THUNDER_STONE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoRoomForNew2
+ removecoins THUNDERSTONE_COINS
+ additem ITEM_THUNDER_STONE
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ msgbox MauvilleCity_GameCorner_Text_HereYouGo, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_ReturnToChooseNewPrize2
+ end
+
+MauvilleCity_GameCorner_EventScript_BuyWaterStone::
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, WATERSTONE_COINS, MauvilleCity_GameCorner_EventScript_NotEnoughCoinsForNew2
+ checkitemspace ITEM_WATER_STONE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoRoomForNew2
+ removecoins WATERSTONE_COINS
+ additem ITEM_WATER_STONE
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ msgbox MauvilleCity_GameCorner_Text_HereYouGo, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_ReturnToChooseNewPrize2
+ end
+
+MauvilleCity_GameCorner_EventScript_BuyLeafStone::
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, LEAFSTONE_COINS, MauvilleCity_GameCorner_EventScript_NotEnoughCoinsForNew2
+ checkitemspace ITEM_LEAF_STONE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoRoomForNew2
+ removecoins LEAFSTONE_COINS
+ additem ITEM_LEAF_STONE
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ msgbox MauvilleCity_GameCorner_Text_HereYouGo, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_ReturnToChooseNewPrize2
+ end
MauvilleCity_GameCorner_EventScript_TMDoubleTeam::
setvar VAR_TEMP_1, 1
@@ -356,11 +1028,31 @@ MauvilleCity_GameCorner_EventScript_NotEnoughCoinsForTM::
msgbox MauvilleCity_GameCorner_Text_NotEnoughCoins, MSGBOX_DEFAULT
goto MauvilleCity_GameCorner_EventScript_ReturnToChooseTMPrize
end
+
+MauvilleCity_GameCorner_EventScript_NotEnoughCoinsForNew::
+ msgbox MauvilleCity_GameCorner_Text_NotEnoughCoins, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_ReturnToChooseNewPrize
+ end
+
+MauvilleCity_GameCorner_EventScript_NotEnoughCoinsForNew2::
+ msgbox MauvilleCity_GameCorner_Text_NotEnoughCoins, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_ReturnToChooseNewPrize2
+ end
MauvilleCity_GameCorner_EventScript_NoRoomForTM::
call Common_EventScript_BagIsFull
goto MauvilleCity_GameCorner_EventScript_ReturnToChooseTMPrize
end
+
+MauvilleCity_GameCorner_EventScript_NoRoomForNew::
+ call Common_EventScript_BagIsFull
+ goto MauvilleCity_GameCorner_EventScript_ReturnToChooseNewPrize
+ end
+
+MauvilleCity_GameCorner_EventScript_NoRoomForNew2::
+ call Common_EventScript_BagIsFull
+ goto MauvilleCity_GameCorner_EventScript_ReturnToChooseNewPrize2
+ end
MauvilleCity_GameCorner_EventScript_CancelTMSelect::
msgbox MauvilleCity_GameCorner_Text_OhIsThatSo, MSGBOX_DEFAULT
@@ -371,6 +1063,26 @@ MauvilleCity_GameCorner_EventScript_CancelTMSelect::
MauvilleCity_GameCorner_EventScript_Woman2::
msgbox MauvilleCity_GameCorner_Text_CoinsAreNeededToPlay, MSGBOX_NPC
end
+
+MauvilleCity_GameCorner_EventScript_Dealer::
+ msgbox MauvilleCity_GameCorner_Text_Dealer, MSGBOX_NPC
+ goto MauvilleCity_GameCorner_EventScript_NPCReturnToSlots
+ end
+
+MauvilleCity_GameCorner_EventScript_Dealer2::
+ msgbox MauvilleCity_GameCorner_Text_Dealer2, MSGBOX_NPC
+ goto MauvilleCity_GameCorner_EventScript_NPCReturnToSlots
+ end
+
+MauvilleCity_GameCorner_EventScript_VFGuy1::
+ msgbox MauvilleCity_GameCorner_Text_VFGuy1, MSGBOX_NPC
+ goto MauvilleCity_GameCorner_EventScript_NPCReturnToSlots
+ end
+
+MauvilleCity_GameCorner_EventScript_VFGuy2::
+ msgbox MauvilleCity_GameCorner_Text_VFGuy2, MSGBOX_NPC
+ goto MauvilleCity_GameCorner_EventScript_NPCReturnToSlots
+ end
MauvilleCity_GameCorner_EventScript_Gentleman::
msgbox MauvilleCity_GameCorner_Text_RouletteOnlyLuck, MSGBOX_NPC
@@ -465,6 +1177,62 @@ MauvilleCity_GameCorner_EventScript_OldMan::
msgbox MauvilleCity_GameCorner_Text_RouletteTablesDifferentRates, MSGBOX_DEFAULT
goto MauvilleCity_GameCorner_EventScript_NPCReturnToSlots
end
+
+MauvilleCity_GameCorner_EventScript_PachinkoGuy::
+ lock
+ faceplayer
+ msgbox MauvilleCity_GameCorner_Text_PachinkoGuy, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_NPCReturnToSlots
+ end
+
+MauvilleCity_GameCorner_EventScript_Hiker::
+ lock
+ faceplayer
+ msgbox MauvilleCity_GameCorner_Text_Hiker, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_NPCReturnToSlots
+ end
+
+MauvilleCity_GameCorner_EventScript_Bouncer::
+ lock
+ faceplayer
+ msgbox MauvilleCity_GameCorner_Text_Bouncer2, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_NPCReturnToSlots
+ end
+
+MauvilleCity_GameCorner_EventScript_DerbyLady1::
+ lock
+ faceplayer
+ msgbox MauvilleCity_GameCorner_Text_Derby_1, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_NPCReturnToSlots
+ end
+
+MauvilleCity_GameCorner_EventScript_DerbyLady2::
+ lock
+ faceplayer
+ msgbox MauvilleCity_GameCorner_Text_Derby_2, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_NPCReturnToSlots
+ end
+
+MauvilleCity_GameCorner_EventScript_Fisherman::
+ lock
+ faceplayer
+ msgbox MauvilleCity_GameCorner_Text_Fisherman, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_NPCReturnToSlots
+ end
+
+MauvilleCity_GameCorner_EventScript_Gachalady::
+ lock
+ faceplayer
+ msgbox MauvilleCity_GameCorner_Text_Gachalady, MSGBOX_DEFAULT
+ closemessage
+ end
+
+MauvilleCity_GameCorner_EventScript_Employee::
+ lock
+ faceplayer
+ msgbox MauvilleCity_GameCorner_Text_Employee, MSGBOX_DEFAULT
+ goto MauvilleCity_GameCorner_EventScript_NPCReturnToSlots
+ end
MauvilleCity_GameCorner_EventScript_Cook::
lock
@@ -480,6 +1248,26 @@ MauvilleCity_GameCorner_EventScript_Man::
goto MauvilleCity_GameCorner_EventScript_NPCReturnToSlots
end
+MauvilleCity_GameCorner_EventScript_JuiceLady::
+ lock
+ faceplayer
+ checkitem ITEM_COIN_CASE
+ goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase2
+ showcoinsbox 1, 1
+ msgbox MauvilleCity_GameCorner_Text_Juice, MSGBOX_YESNO
+ closemessage
+ goto_if_eq VAR_RESULT, NO, MauvilleCity_GameCorner_CancelVF
+ checkcoins VAR_TEMP_2
+ goto_if_lt VAR_TEMP_2, 10, Juice_Not_Enough
+ removecoins 10
+ updatecoinsbox 1, 1
+ playse SE_SHOP
+ delay 40
+ hidecoinsbox 0, 5
+ giveitem ITEM_BERRY_JUICE
+ release
+ end
+
MauvilleCity_GameCorner_EventScript_NPCReturnToSlots::
closemessage
applymovement VAR_LAST_TALKED, Common_Movement_FaceOriginalDirection
@@ -507,6 +1295,7 @@ MauvilleCity_GameCorner_EventScript_SlotMachine0::
goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
setvar VAR_0x8004, 0
specialvar VAR_RESULT, GetSlotMachineId
+ playbgm MUS_GAME_CORNER, FALSE
playslotmachine VAR_RESULT
releaseall
end
@@ -517,6 +1306,7 @@ MauvilleCity_GameCorner_EventScript_SlotMachine1::
goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
setvar VAR_0x8004, 1
specialvar VAR_RESULT, GetSlotMachineId
+ playbgm MUS_GAME_CORNER, FALSE
playslotmachine VAR_RESULT
releaseall
end
@@ -527,6 +1317,7 @@ MauvilleCity_GameCorner_EventScript_SlotMachine2::
goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
setvar VAR_0x8004, 2
specialvar VAR_RESULT, GetSlotMachineId
+ playbgm MUS_GAME_CORNER, FALSE
playslotmachine VAR_RESULT
releaseall
end
@@ -537,6 +1328,7 @@ MauvilleCity_GameCorner_EventScript_SlotMachine3::
goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
setvar VAR_0x8004, 3
specialvar VAR_RESULT, GetSlotMachineId
+ playbgm MUS_GAME_CORNER, FALSE
playslotmachine VAR_RESULT
releaseall
end
@@ -547,6 +1339,7 @@ MauvilleCity_GameCorner_EventScript_SlotMachine4::
goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
setvar VAR_0x8004, 4
specialvar VAR_RESULT, GetSlotMachineId
+ playbgm MUS_GAME_CORNER, FALSE
playslotmachine VAR_RESULT
releaseall
end
@@ -557,6 +1350,7 @@ MauvilleCity_GameCorner_EventScript_SlotMachine5::
goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
setvar VAR_0x8004, 5
specialvar VAR_RESULT, GetSlotMachineId
+ playbgm MUS_GAME_CORNER, FALSE
playslotmachine VAR_RESULT
releaseall
end
@@ -567,6 +1361,7 @@ MauvilleCity_GameCorner_EventScript_SlotMachine6::
goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
setvar VAR_0x8004, 6
specialvar VAR_RESULT, GetSlotMachineId
+ playbgm MUS_GAME_CORNER, FALSE
playslotmachine VAR_RESULT
releaseall
end
@@ -577,6 +1372,7 @@ MauvilleCity_GameCorner_EventScript_SlotMachine7::
goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
setvar VAR_0x8004, 7
specialvar VAR_RESULT, GetSlotMachineId
+ playbgm MUS_GAME_CORNER, FALSE
playslotmachine VAR_RESULT
releaseall
end
@@ -587,6 +1383,7 @@ MauvilleCity_GameCorner_EventScript_SlotMachine8::
goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
setvar VAR_0x8004, 8
specialvar VAR_RESULT, GetSlotMachineId
+ playbgm MUS_GAME_CORNER, FALSE
playslotmachine VAR_RESULT
releaseall
end
@@ -597,6 +1394,7 @@ MauvilleCity_GameCorner_EventScript_SlotMachine9::
goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
setvar VAR_0x8004, 9
specialvar VAR_RESULT, GetSlotMachineId
+ playbgm MUS_GAME_CORNER, FALSE
playslotmachine VAR_RESULT
releaseall
end
@@ -607,6 +1405,7 @@ MauvilleCity_GameCorner_EventScript_SlotMachine10::
goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
setvar VAR_0x8004, 10
specialvar VAR_RESULT, GetSlotMachineId
+ playbgm MUS_GAME_CORNER, FALSE
playslotmachine VAR_RESULT
releaseall
end
@@ -617,6 +1416,7 @@ MauvilleCity_GameCorner_EventScript_SlotMachine11::
goto_if_eq VAR_RESULT, FALSE, MauvilleCity_GameCorner_EventScript_NoCoinCase
setvar VAR_0x8004, 11
specialvar VAR_RESULT, GetSlotMachineId
+ playbgm MUS_GAME_CORNER, FALSE
playslotmachine VAR_RESULT
releaseall
end
@@ -626,9 +1426,78 @@ MauvilleCity_GameCorner_EventScript_NoCoinCase::
releaseall
end
+MauvilleCity_GameCorner_EventScript_NoCoinCase2::
+ msgbox MauvilleCity_GameCorner_Text_CantBuyWithNoCoinCase, MSGBOX_DEFAULT
+ releaseall
+ end
+
MauvilleCity_GameCorner_Text_ThisIsMauvilleGameCorner:
.string "This is MAUVILLE GAME CORNER.$"
+MauvilleCity_GameCorner_Text_PachinkoGuy:
+ .string "I used to own one of these dusty old\n"
+ .string "DROPSPIN MACHINES.\p"
+ .string "The manual always said 'Use the\n"
+ .string "DIRECTIONAL BUTTONS to TILT and\l"
+ .string "change the DROP SPEED…'\p"
+ .string "I've always wondered what that\n"
+ .string "means.$"
+
+MauvilleCity_GameCorner_Text_Hiker:
+ .string "Gah!\n"
+ .string "I blew it all on that ONIX game.\p"
+ .string "You need to be careful…\p"
+ .string "You only win 2 COINS for\n"
+ .string "every point in these machines.$"
+
+MauvilleCity_GameCorner_Text_Derby_1:
+ .string "Looking to bet on the DERBY?\n"
+ .string "We've gone digital!\p"
+ .string "Use one of the tablets\n"
+ .string "in front of the counter.$"
+
+MauvilleCity_GameCorner_Text_Derby_2:
+ .string "It's not all about CONDITION.\p"
+ .string "At the end of the day, it's\n"
+ .string "really all luck.\p"
+ .string "Sometimes it's best to just\n"
+ .string "pick your favorite!$"
+
+MauvilleCity_GameCorner_Text_Fisherman:
+ .string "I come here for the food.\p"
+ .string "It's no CELADON CAFE…\n"
+ .string "But it'll do.$"
+
+MauvilleCity_GameCorner_Text_Gachalady:
+ .string "The LOTTERY MACHINES have odds,\n"
+ .string "but nothing is guaranteed.\p"
+ .string "Some machines are better than\n"
+ .string "others, and there are different\l"
+ .string "rarities in all of them.\p"
+ .string "New POKéMON are also weighted\n"
+ .string "By your POKéDEX, so be wary.$"
+
+MauvilleCity_GameCorner_Text_Employee:
+ .string "I'm on the lookout for cheaters.\n"
+ .string "Nobody likes a cheater!$"
+
+MauvilleCity_GameCorner_Text_Bouncer1:
+ .string "You need a valid TRAINER ID\n"
+ .string "to enter the GAME CORNER.\p"
+ .string "Let's see…\p"
+ .string "…\p"
+ .string "Hmm…\p"
+ .string "…\p"
+ .string "Everything looks good here.\n"
+ .string "Enjoy the GAME CORNER!$"
+
+MauvilleCity_GameCorner_Text_Bouncer2:
+ .string "Enjoy the GAME CORNER!$"
+
+MauvilleCity_GameCorner_Text_Pachinko:
+ .string "A DROPSPIN MACHINE!\n"
+ .string "It's 3 COINS per BALL.$"
+
MauvilleCity_GameCorner_Text_NeedCoinCaseForCoins:
.string "Okay, you wanted some COINS for\n"
.string "the games?\p"
@@ -667,6 +1536,54 @@ MauvilleCity_GameCorner_Text_WhichPrize:
MauvilleCity_GameCorner_Text_SoYourChoiceIsTheTMX:
.string "So your choice is\n"
.string "the {STR_VAR_1} {STR_VAR_2}?$"
+
+MauvilleCity_GameCorner_Text_SoYourChoiceIsTheNewX:
+ .string "So your choice is\n"
+ .string "the {STR_VAR_1}?$"
+
+MauvilleCity_GameCorner_Text_BlackJack:
+ .string "It's a BLACKJACK TABLE!\n"
+ .string "Want to play?$"
+
+MauvilleCity_GameCorner_Text_Derby:
+ .string "It's the MAUVILLE DERBY!\n"
+ .string "Want to place a bet?$"
+
+MauvilleCity_GameCorner_Text_Snake:
+ .string "It's ONIX!\n"
+ .string "It costs 25 COINS to play.$"
+
+MauvilleCity_GameCorner_Text_Bird:
+ .string "It's FLUTTERFREE!\n"
+ .string "It costs 25 COINS to play.$"
+
+MauvilleCity_GameCorner_Text_Pinball_Meowth:
+ .string "It's a PINBALL MACHINE!\n"
+ .string "It costs 25 COINS to play.$"
+
+MauvilleCity_GameCorner_Text_BS:
+ .string "It's BLOCK BUILDER!\n"
+ .string "It costs 25 COINS to play.$"
+
+MauvilleCity_GameCorner_Text_Pinball_Seel:
+ .string "It's a PINBALL MACHINE!\n"
+ .string "It costs 25 COINS to play.$"
+
+MauvilleCity_GameCorner_Text_Pinball_Diglett:
+ .string "It's a PINBALL MACHINE!\n"
+ .string "It costs 50 COINS to play.$"
+
+MauvilleCity_GameCorner_Text_Pinball_Gengar:
+ .string "It's a PINBALL MACHINE!\n"
+ .string "It costs 100 COINS to play.$"
+
+MauvilleCity_GameCorner_Text_VF:
+ .string "It's VOLTORB FLIP!\n"
+ .string "It costs 50 COINS to play.$"
+
+VF_Come_Again_Text:
+ .string "Too bad.\n"
+ .string "Try again soon!$"
MauvilleCity_GameCorner_Text_SendToYourHomePC:
.string "Thank you!\n"
@@ -675,10 +1592,41 @@ MauvilleCity_GameCorner_Text_SendToYourHomePC:
MauvilleCity_GameCorner_Text_NotEnoughCoins:
.string "You don't have enough COINS.$"
+PB_YOU_WON_TEXT:
+ .string "You won\n"
+ .string "{STR_VAR_1} COINS!$"
+
+PB_Not_Enough:
+ .string "It's a PINBALL MACHINE!\p"
+ .string "You don't have enough COINS…$"
+
+Snake_Not_Enough:
+ .string "It's ONIX!\p"
+ .string "You don't have enough COINS…$"
+
+Bjuice_Not_Enough:
+ .string "You don't have enough COINS.$"
+
+Bird_Not_Enough:
+ .string "It's FLUTTERFREE!\p"
+ .string "You don't have enough COINS…$"
+
+BS_Not_Enough:
+ .string "It's BLOCK BUILDER!\p"
+ .string "You don't have enough COINS…$"
+
+Flip_Not_Enough:
+ .string "It's VOLTORB FLIP!\p"
+ .string "You don't have enough COINS…$"
+
@ Unused
MauvilleCity_GameCorner_Text_NoRoomForPlacingDecor:
.string "There isn't any room available for\n"
.string "placing {STR_VAR_1}.$"
+
+MauvilleCity_GameCorner_Text_VF_Keep_Going:
+ .string "You've made {STR_VAR_1} COINS.\n"
+ .string "Keep going?$"
MauvilleCity_GameCorner_Text_OhIsThatSo:
.string "Oh, is that so? \n"
@@ -744,6 +1692,26 @@ MauvilleCity_GameCorner_Text_EasyToLoseTrackOfTime:
MauvilleCity_GameCorner_Text_CoinsAreNeededToPlay:
.string "COINS are needed to play here\n"
.string "in the GAME CORNER.$"
+
+ MauvilleCity_GameCorner_Text_Dealer:
+ .string "Some say BLACKJACK is about skill.\n"
+ .string "Others say it's about luck.\p"
+ .string "I say it's about having fun…\n"
+ .string "and maybe winning big!$"
+
+ MauvilleCity_GameCorner_Text_Dealer2:
+ .string "You can bet anything divisible\n"
+ .string "by 10 here.\p"
+ .string "Maybe you should go all in!$"
+
+MauvilleCity_GameCorner_Text_VFGuy1:
+ .string "You want to play VOLTORB FLIP?\p"
+ .string "You need to be on the other\n"
+ .string "side of the table.$"
+
+MauvilleCity_GameCorner_Text_VFGuy2:
+ .string "Try the other side of\n"
+ .string "the table, pal.$"
MauvilleCity_GameCorner_Text_RouletteOnlyLuck:
.string "This ROULETTE thing…\n"
@@ -776,3 +1744,10 @@ MauvilleCity_GameCorner_Text_CantPlayWithNoCoinCase:
.string "You can't play if you don't have\n"
.string "a COIN CASE.$"
+MauvilleCity_GameCorner_Text_CantBuyWithNoCoinCase:
+ .string "Huh? Looks like you need\n"
+ .string "a COIN CASE.$"
+
+MauvilleCity_GameCorner_Text_Juice:
+ .string "BERRY JUICE!\n"
+ .string "Just 10 COINS.$"
diff --git a/data/maps/MtEmber_Exterior_Frlg/map.json b/data/maps/MtEmber_Exterior_Frlg/map.json
new file mode 100644
index 000000000000..87b346266035
--- /dev/null
+++ b/data/maps/MtEmber_Exterior_Frlg/map.json
@@ -0,0 +1,397 @@
+{
+ "id": "MAP_MT_EMBER_EXTERIOR",
+ "name": "MtEmber_Exterior_Frlg",
+ "layout": "LAYOUT_MT_EMBER_EXTERIOR",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MT_EMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 29,
+ "y": 45,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtEmber_Exterior_EventScript_ExplosionTutor",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_MT_EMBER_GRUNT1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 41,
+ "y": 40,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtEmber_Exterior_EventScript_Grunt1",
+ "flag": "FLAG_HIDE_MT_EMBER_EXTERIOR_ROCKETS"
+ },
+ {
+ "local_id": "LOCALID_MT_EMBER_GRUNT2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 42,
+ "y": 40,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtEmber_Exterior_EventScript_Grunt2",
+ "flag": "FLAG_HIDE_MT_EMBER_EXTERIOR_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BATTLE_GIRL",
+ "x": 22,
+ "y": 35,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_UP_LEFT",
+ "movement_range_x": 5,
+ "movement_range_y": 3,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "MtEmber_Exterior_EventScript_Jocelyn",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CAMPER_FRLG",
+ "x": 15,
+ "y": 28,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "MtEmber_Exterior_EventScript_Logan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 14,
+ "y": 42,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "MtEmber_Exterior_EventScript_Beth",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 29,
+ "y": 41,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 30,
+ "y": 42,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER_FRLG",
+ "x": 22,
+ "y": 45,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER_FRLG",
+ "x": 17,
+ "y": 46,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER_FRLG",
+ "x": 36,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 34,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_14"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 36,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_15"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER_FRLG",
+ "x": 35,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER_FRLG",
+ "x": 35,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 18,
+ "y": 39,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_16"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 19,
+ "y": 40,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_17"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 13,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtEmber_Exterior_EventScript_ItemUltraBall",
+ "flag": "FLAG_HIDE_MT_EMBER_EXTERIOR_ULTRA_BALL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 38,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtEmber_Exterior_EventScript_ItemFireStone",
+ "flag": "FLAG_HIDE_MT_EMBER_EXTERIOR_FIRE_STONE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 48,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtEmber_Exterior_EventScript_ItemDireHit",
+ "flag": "FLAG_HIDE_MT_EMBER_EXTERIOR_DIRE_HIT"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 28,
+ "y": 48,
+ "elevation": 3,
+ "dest_map": "MAP_ONE_ISLAND_KINDLE_ROAD",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 29,
+ "y": 48,
+ "elevation": 3,
+ "dest_map": "MAP_ONE_ISLAND_KINDLE_ROAD",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 14,
+ "y": 24,
+ "elevation": 3,
+ "dest_map": "MAP_MT_EMBER_SUMMIT_PATH_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 39,
+ "y": 19,
+ "elevation": 3,
+ "dest_map": "MAP_MT_EMBER_SUMMIT_PATH_3F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 29,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_MT_EMBER_SUMMIT",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 42,
+ "y": 39,
+ "elevation": 0,
+ "dest_map": "MAP_MT_EMBER_RUBY_PATH_1F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 37,
+ "y": 43,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_MT_EMBER_EXTERIOR",
+ "var_value": "1",
+ "script": "MtEmber_Exterior_EventScript_RocketPasswordScene"
+ },
+ {
+ "type": "trigger",
+ "x": 38,
+ "y": 43,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_MT_EMBER_EXTERIOR",
+ "var_value": "1",
+ "script": "MtEmber_Exterior_EventScript_RocketPasswordScene"
+ },
+ {
+ "type": "trigger",
+ "x": 39,
+ "y": 43,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_MT_EMBER_EXTERIOR",
+ "var_value": "1",
+ "script": "MtEmber_Exterior_EventScript_RocketPasswordScene"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 18,
+ "y": 17,
+ "elevation": 0,
+ "item": "ITEM_FIRE_STONE",
+ "flag": "FLAG_HIDDEN_ITEM_MT_EMBER_EXTERIOR_FIRE_STONE",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 8,
+ "y": 30,
+ "elevation": 3,
+ "item": "ITEM_ULTRA_BALL",
+ "flag": "FLAG_HIDDEN_ITEM_MT_EMBER_EXTERIOR_ULTRA_BALL",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/MtEmber_Exterior_Frlg/scripts.inc b/data/maps/MtEmber_Exterior_Frlg/scripts.inc
new file mode 100644
index 000000000000..59de1d10fbef
--- /dev/null
+++ b/data/maps/MtEmber_Exterior_Frlg/scripts.inc
@@ -0,0 +1,247 @@
+MtEmber_Exterior_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, MtEmber_Exterior_OnTransition
+ map_script MAP_SCRIPT_ON_LOAD, MtEmber_Exterior_OnLoad
+ .byte 0
+
+MtEmber_Exterior_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_MT_EMBER_EXTERIOR
+ call_if_eq VAR_MAP_SCENE_MT_EMBER_EXTERIOR, 2, MtEmber_Exterior_EventScript_RocketsFaceDown
+ end
+
+MtEmber_Exterior_EventScript_RocketsFaceDown::
+ setobjectmovementtype LOCALID_MT_EMBER_GRUNT1, MOVEMENT_TYPE_FACE_DOWN
+ setobjectmovementtype LOCALID_MT_EMBER_GRUNT2, MOVEMENT_TYPE_FACE_DOWN
+ return
+
+MtEmber_Exterior_OnLoad::
+ call_if_ge VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 4, MtEmber_Exterior_EventScript_OpenCave
+ end
+
+MtEmber_Exterior_EventScript_OpenCave::
+ setmetatile 42, 39, METATILE_MtEmber_CaveEntrance, 0
+ return
+
+MtEmber_Exterior_EventScript_Grunt1::
+ lock
+ goto_if_defeated TRAINER_TEAM_ROCKET_GRUNT_43, MtEmber_Exterior_EventScript_Grunt1Defeated
+ goto_if_eq VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 4, MtEmber_Exterior_EventScript_BattleGrunt1
+ msgbox MtEmber_Exterior_Text_WellTryDiggingHere
+ release
+ end
+
+MtEmber_Exterior_EventScript_Grunt1Defeated::
+ msgbox MtEmber_Exterior_Text_Grunt1PostBattle
+ release
+ end
+
+MtEmber_Exterior_EventScript_BattleGrunt1::
+ applymovement LOCALID_MT_EMBER_GRUNT1, Common_Movement_FacePlayer
+ waitmovement 0
+ playbgm MUS_RG_ENCOUNTER_ROCKET, 0
+ msgbox MtEmber_Exterior_Text_Grunt1Intro
+ trainerbattle_no_intro TRAINER_TEAM_ROCKET_GRUNT_43, MtEmber_Exterior_Text_Grunt1Defeat
+ msgbox MtEmber_Exterior_Text_Grunt1PostBattle
+ goto_if_defeated TRAINER_TEAM_ROCKET_GRUNT_44, MtEmber_Exterior_EventScript_DefeatedBothGrunts
+ release
+ end
+
+MtEmber_Exterior_EventScript_DefeatedBothGrunts::
+ msgbox MtEmber_Exterior_Text_WellRegroupDontStepInsideThere
+ closemessage
+ fadescreenswapbuffers FADE_TO_BLACK
+ removeobject LOCALID_MT_EMBER_GRUNT1
+ removeobject LOCALID_MT_EMBER_GRUNT2
+ fadescreenswapbuffers FADE_FROM_BLACK
+ release
+ end
+
+MtEmber_Exterior_EventScript_Grunt2::
+ lock
+ faceplayer
+ goto_if_defeated TRAINER_TEAM_ROCKET_GRUNT_44, MtEmber_Exterior_EventScript_DefeatedGrunt2
+ goto_if_eq VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 4, MtEmber_Exterior_EventScript_BattleGrunt2
+ msgbox MtEmber_Exterior_Text_YoureInTheWayGetLost
+ closemessage
+ applymovement LOCALID_MT_EMBER_GRUNT2, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+MtEmber_Exterior_EventScript_DefeatedGrunt2::
+ msgbox MtEmber_Exterior_Text_Grunt2PostBattle
+ release
+ end
+
+MtEmber_Exterior_EventScript_BattleGrunt2::
+ playbgm MUS_RG_ENCOUNTER_ROCKET, 0
+ msgbox MtEmber_Exterior_Text_Grunt2Intro
+ trainerbattle_no_intro TRAINER_TEAM_ROCKET_GRUNT_44, MtEmber_Exterior_Text_Grunt2Defeat
+ msgbox MtEmber_Exterior_Text_Grunt2PostBattle
+ goto_if_defeated TRAINER_TEAM_ROCKET_GRUNT_43, MtEmber_Exterior_EventScript_DefeatedBothGrunts
+ release
+ end
+
+MtEmber_Exterior_EventScript_RocketPasswordScene::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox MtEmber_Exterior_Text_PunchedThroughAtLast
+ message MtEmber_Exterior_Text_WhatsPasswordAgain
+ waitmessage
+ playse SE_PIN
+ applymovement LOCALID_MT_EMBER_GRUNT2, Common_Movement_QuestionMark
+ waitmovement 0
+ waitbuttonpress
+ msgbox MtEmber_Exterior_Text_FirstPasswordGoldeen
+ applymovement LOCALID_MT_EMBER_GRUNT1, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ playse SE_PIN
+ applymovement LOCALID_MT_EMBER_GRUNT1, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_MT_EMBER_GRUNT1, Common_Movement_Delay48
+ waitmovement 0
+ applymovement LOCALID_MT_EMBER_GRUNT2, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ call MtEmber_Exterior_EventScript_RocketsFaceDown
+ msgbox MtEmber_Exterior_Text_SnoopsBeenListeningIn
+ setvar VAR_MAP_SCENE_MT_EMBER_EXTERIOR, 2
+ releaseall
+ end
+
+MtEmber_Exterior_EventScript_Logan::
+ trainerbattle_single TRAINER_PKMN_RANGER_LOGAN, MtEmber_Exterior_Text_LoganIntro, MtEmber_Exterior_Text_LoganDefeat
+ msgbox MtEmber_Exterior_Text_LoganPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+MtEmber_Exterior_EventScript_Beth::
+ trainerbattle_single TRAINER_PKMN_RANGER_BETH, MtEmber_Exterior_Text_BethIntro, MtEmber_Exterior_Text_BethDefeat
+ msgbox MtEmber_Exterior_Text_BethPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+MtEmber_Exterior_EventScript_Jocelyn::
+ trainerbattle_single TRAINER_CRUSH_GIRL_JOCELYN, MtEmber_Exterior_Text_JocelynIntro, MtEmber_Exterior_Text_JocelynDefeat
+ msgbox MtEmber_Exterior_Text_JocelynPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Text_ExplosionTeach::
+ .string "Can you imagine?\n"
+ .string "If this volcano were to erupt?\p"
+ .string "The explosion would be the end of\n"
+ .string "us. How terrifying is that?\p"
+ .string "While we're terrified, would you\n"
+ .string "like me to teach EXPLOSION?$"
+
+Text_ExplosionDeclined::
+ .string "Yeah, you're right.\n"
+ .string "It is too terrifying.$"
+
+Text_ExplosionWhichMon::
+ .string "You're terribly brave!\p"
+ .string "Which POKéMON should I teach\n"
+ .string "EXPLOSION?$"
+
+Text_ExplosionTaught::
+ .string "Using EXPLOSION while on this\n"
+ .string "volcano…\p"
+ .string "What a terrifying thrill!$"
+
+MtEmber_Exterior_Text_WellTryDiggingHere::
+ .string "Over here.\n"
+ .string "We'll try digging here.\p"
+ .string "That treasure the ADMINS've been\n"
+ .string "talking about should be here.$"
+
+MtEmber_Exterior_Text_YoureInTheWayGetLost::
+ .string "What the…?\n"
+ .string "You're in the way. Get lost.$"
+
+MtEmber_Exterior_Text_PunchedThroughAtLast::
+ .string "Whew, punched through at last.\n"
+ .string "Let's go treasure hunting!$"
+
+MtEmber_Exterior_Text_WhatsPasswordAgain::
+ .string "Any treasure we find, we haul back\n"
+ .string "to the WAREHOUSE, understood?\p"
+ .string "…Oh, and what're the passwords?\n"
+ .string "At the ROCKET WAREHOUSE, I mean.$"
+
+MtEmber_Exterior_Text_FirstPasswordGoldeen::
+ .string "What, you forgot the password?\n"
+ .string "There're actually two.\p"
+ .string "The first one's “GOLDEEN need\n"
+ .string "log.”\p"
+ .string "And the second one is…$"
+
+MtEmber_Exterior_Text_SnoopsBeenListeningIn::
+ .string "Hey!\n"
+ .string "This snoop's been listening in!$"
+
+MtEmber_Exterior_Text_Grunt1Intro::
+ .string "You've been eavesdropping on us,\n"
+ .string "haven't you?$"
+
+MtEmber_Exterior_Text_Grunt1Defeat::
+ .string "Huh, what?$"
+
+MtEmber_Exterior_Text_Grunt1PostBattle::
+ .string "Why'd you have to win?$"
+
+MtEmber_Exterior_Text_Grunt2Intro::
+ .string "Trying to horn in on our treasure?\n"
+ .string "Don't bet on it!$"
+
+MtEmber_Exterior_Text_Grunt2Defeat::
+ .string "Wait!\n"
+ .string "But how?$"
+
+MtEmber_Exterior_Text_Grunt2PostBattle::
+ .string "Develop amnesia conveniently and\n"
+ .string "forget everything you heard!$"
+
+MtEmber_Exterior_Text_WellRegroupDontStepInsideThere::
+ .string "What a setback…\n"
+ .string "We'll have to regroup.\p"
+ .string "You! Don't even think about taking\n"
+ .string "a step inside here!\p"
+ .string "If you know what's good for you,\n"
+ .string "don't even think about this!$"
+
+MtEmber_Exterior_Text_LoganIntro::
+ .string "An active volcano is one that's\n"
+ .string "erupting, or about to.$"
+
+MtEmber_Exterior_Text_LoganDefeat::
+ .string "Whew… That was hot!\n"
+ .string "Sweat's erupting from me!$"
+
+MtEmber_Exterior_Text_LoganPostBattle::
+ .string "They say there're over 1,500\n"
+ .string "active volcanoes in the world.\p"
+ .string "Just thinking about them makes me\n"
+ .string "feel all hot and gooey inside!$"
+
+MtEmber_Exterior_Text_BethIntro::
+ .string "Do you know how caves form inside\n"
+ .string "volcanoes?$"
+
+MtEmber_Exterior_Text_BethDefeat::
+ .string "Atchah!\n"
+ .string "You're shockingly good!$"
+
+MtEmber_Exterior_Text_BethPostBattle::
+ .string "When lava at the surface of magma\n"
+ .string "hardens, and the magma inside flows\l"
+ .string "out, caverns are left behind.$"
+
+MtEmber_Exterior_Text_JocelynIntro::
+ .string "I've been in training so I can mend\n"
+ .string "my broken heart…\p"
+ .string "It toughened me up physically at\n"
+ .string "least! Hi-yah!$"
+
+MtEmber_Exterior_Text_JocelynDefeat::
+ .string "I think I tried to overdo it…$"
+
+MtEmber_Exterior_Text_JocelynPostBattle::
+ .string "The way you battle, it reminds me\n"
+ .string "of the guy who dumped me…$"
+
diff --git a/data/maps/MtEmber_RubyPath_1F_Frlg/map.json b/data/maps/MtEmber_RubyPath_1F_Frlg/map.json
new file mode 100644
index 000000000000..cf28517cc6f4
--- /dev/null
+++ b/data/maps/MtEmber_RubyPath_1F_Frlg/map.json
@@ -0,0 +1,115 @@
+{
+ "id": "MAP_MT_EMBER_RUBY_PATH_1F",
+ "name": "MtEmber_RubyPath_1F_Frlg",
+ "layout": "LAYOUT_MT_EMBER_RUBY_PATH_1F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MT_EMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 18,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 23,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 20,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_14"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 19,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_15"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 21,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_16"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 22,
+ "y": 17,
+ "elevation": 3,
+ "dest_map": "MAP_MT_EMBER_EXTERIOR",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 1,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_MT_EMBER_RUBY_PATH_B1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 24,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_MT_EMBER_RUBY_PATH_B2F_STAIRS",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/MtEmber_RubyPath_1F_Frlg/scripts.inc b/data/maps/MtEmber_RubyPath_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..e9d9ff6b0998
--- /dev/null
+++ b/data/maps/MtEmber_RubyPath_1F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+MtEmber_RubyPath_1F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/MtEmber_RubyPath_B1F_Frlg/map.json b/data/maps/MtEmber_RubyPath_B1F_Frlg/map.json
new file mode 100644
index 000000000000..f35f18b75c68
--- /dev/null
+++ b/data/maps/MtEmber_RubyPath_B1F_Frlg/map.json
@@ -0,0 +1,94 @@
+{
+ "id": "MAP_MT_EMBER_RUBY_PATH_B1F",
+ "name": "MtEmber_RubyPath_B1F_Frlg",
+ "layout": "LAYOUT_MT_EMBER_RUBY_PATH_B1F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MT_EMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 1,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 1,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 3,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_14"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 5,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_15"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 9,
+ "y": 21,
+ "elevation": 0,
+ "dest_map": "MAP_MT_EMBER_RUBY_PATH_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 6,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_MT_EMBER_RUBY_PATH_B2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/MtEmber_RubyPath_B1F_Frlg/scripts.inc b/data/maps/MtEmber_RubyPath_B1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..d6f0b7a3e9c2
--- /dev/null
+++ b/data/maps/MtEmber_RubyPath_B1F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+MtEmber_RubyPath_B1F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/MtEmber_RubyPath_B1F_Stairs_Frlg/map.json b/data/maps/MtEmber_RubyPath_B1F_Stairs_Frlg/map.json
new file mode 100644
index 000000000000..f771c7a6d2a3
--- /dev/null
+++ b/data/maps/MtEmber_RubyPath_B1F_Stairs_Frlg/map.json
@@ -0,0 +1,52 @@
+{
+ "id": "MAP_MT_EMBER_RUBY_PATH_B1F_STAIRS",
+ "name": "MtEmber_RubyPath_B1F_Stairs_Frlg",
+ "layout": "LAYOUT_MT_EMBER_RUBY_PATH_B1F_STAIRS",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MT_EMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_12"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_MT_EMBER_RUBY_PATH_B3F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 1,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_MT_EMBER_RUBY_PATH_B2F_STAIRS",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/MtEmber_RubyPath_B1F_Stairs_Frlg/scripts.inc b/data/maps/MtEmber_RubyPath_B1F_Stairs_Frlg/scripts.inc
new file mode 100644
index 000000000000..a89312ff34d3
--- /dev/null
+++ b/data/maps/MtEmber_RubyPath_B1F_Stairs_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+MtEmber_RubyPath_B1F_Stairs_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/MtEmber_RubyPath_B2F_Frlg/map.json b/data/maps/MtEmber_RubyPath_B2F_Frlg/map.json
new file mode 100644
index 000000000000..7d62dc49e049
--- /dev/null
+++ b/data/maps/MtEmber_RubyPath_B2F_Frlg/map.json
@@ -0,0 +1,136 @@
+{
+ "id": "MAP_MT_EMBER_RUBY_PATH_B2F",
+ "name": "MtEmber_RubyPath_B2F_Frlg",
+ "layout": "LAYOUT_MT_EMBER_RUBY_PATH_B2F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MT_EMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER_FRLG",
+ "x": 9,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER_FRLG",
+ "x": 12,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER_FRLG",
+ "x": 12,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 4,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 1,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 4,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_14"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 5,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_15"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_MT_EMBER_RUBY_PATH_B1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 13,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_MT_EMBER_RUBY_PATH_B3F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/MtEmber_RubyPath_B2F_Frlg/scripts.inc b/data/maps/MtEmber_RubyPath_B2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..b7acd0ebc0a4
--- /dev/null
+++ b/data/maps/MtEmber_RubyPath_B2F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+MtEmber_RubyPath_B2F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/MtEmber_RubyPath_B2F_Stairs_Frlg/map.json b/data/maps/MtEmber_RubyPath_B2F_Stairs_Frlg/map.json
new file mode 100644
index 000000000000..10e0f68b6841
--- /dev/null
+++ b/data/maps/MtEmber_RubyPath_B2F_Stairs_Frlg/map.json
@@ -0,0 +1,66 @@
+{
+ "id": "MAP_MT_EMBER_RUBY_PATH_B2F_STAIRS",
+ "name": "MtEmber_RubyPath_B2F_Stairs_Frlg",
+ "layout": "LAYOUT_MT_EMBER_RUBY_PATH_B2F_STAIRS",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MT_EMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 4,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_13"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_MT_EMBER_RUBY_PATH_B1F_STAIRS",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 1,
+ "y": 4,
+ "elevation": 0,
+ "dest_map": "MAP_MT_EMBER_RUBY_PATH_1F",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/MtEmber_RubyPath_B2F_Stairs_Frlg/scripts.inc b/data/maps/MtEmber_RubyPath_B2F_Stairs_Frlg/scripts.inc
new file mode 100644
index 000000000000..94cc35b6985c
--- /dev/null
+++ b/data/maps/MtEmber_RubyPath_B2F_Stairs_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+MtEmber_RubyPath_B2F_Stairs_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/MtEmber_RubyPath_B3F_Frlg/map.json b/data/maps/MtEmber_RubyPath_B3F_Frlg/map.json
new file mode 100644
index 000000000000..4f4ccadf4e0c
--- /dev/null
+++ b/data/maps/MtEmber_RubyPath_B3F_Frlg/map.json
@@ -0,0 +1,186 @@
+{
+ "id": "MAP_MT_EMBER_RUBY_PATH_B3F",
+ "name": "MtEmber_RubyPath_B3F_Frlg",
+ "layout": "LAYOUT_MT_EMBER_RUBY_PATH_B3F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MT_EMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_RUBY",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER_FRLG",
+ "x": 10,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER_FRLG",
+ "x": 26,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER_FRLG",
+ "x": 28,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 4,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 6,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_14"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 7,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_15"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 4,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_16"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 5,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_17"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER_FRLG",
+ "x": 15,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 4,
+ "elevation": 0,
+ "dest_map": "MAP_MT_EMBER_RUBY_PATH_B2F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 19,
+ "y": 19,
+ "elevation": 3,
+ "dest_map": "MAP_MT_EMBER_RUBY_PATH_B1F_STAIRS",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 5,
+ "y": 19,
+ "elevation": 3,
+ "dest_map": "MAP_MT_EMBER_RUBY_PATH_B4F",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/MtEmber_RubyPath_B3F_Frlg/scripts.inc b/data/maps/MtEmber_RubyPath_B3F_Frlg/scripts.inc
new file mode 100644
index 000000000000..1209935c31e8
--- /dev/null
+++ b/data/maps/MtEmber_RubyPath_B3F_Frlg/scripts.inc
@@ -0,0 +1,16 @@
+MtEmber_RubyPath_B3F_Frlg_MapScripts::
+ .byte 0
+
+@ Odd that this is here and not in MtEmber_RubyPath_B5F/scripts.inc
+MtEmber_RubyPath_B5F_EventScript_Ruby::
+ lock
+ faceplayer
+ setflag FLAG_GOT_RUBY
+ removeobject LOCALID_RUBY
+ giveitem_msg MtEmber_RubyPath_B3F_Text_FoundARuby, ITEM_RUBY, 1, MUS_RG_OBTAIN_KEY_ITEM
+ release
+ end
+
+MtEmber_RubyPath_B3F_Text_FoundARuby::
+ .string "{PLAYER} found a RUBY!$"
+
diff --git a/data/maps/MtEmber_RubyPath_B4F_Frlg/map.json b/data/maps/MtEmber_RubyPath_B4F_Frlg/map.json
new file mode 100644
index 000000000000..e510435cfef8
--- /dev/null
+++ b/data/maps/MtEmber_RubyPath_B4F_Frlg/map.json
@@ -0,0 +1,246 @@
+{
+ "id": "MAP_MT_EMBER_RUBY_PATH_B4F",
+ "name": "MtEmber_RubyPath_B4F_Frlg",
+ "layout": "LAYOUT_MT_EMBER_RUBY_PATH_B4F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MT_EMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 14,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_MT_EMBER_RUBY_PATH_B5F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_MT_EMBER_RUBY_PATH_B3F",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleABC"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleABC"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleABC"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleGHI"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleGHI"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleGHI"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleMNO"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleMNO"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleMNO"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleTUV"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleTUV"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleTUV"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleDEF"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleDEF"
+ },
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleDEF"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleJKL"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleJKL"
+ },
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleJKL"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BraillePQRS"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BraillePeriod"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleComma"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BraillePQRS"
+ },
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BraillePQRS"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleWXYZ"
+ },
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleWXYZ"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B4F_EventScript_BrailleWXYZ"
+ }
+ ]
+}
diff --git a/data/maps/MtEmber_RubyPath_B4F_Frlg/scripts.inc b/data/maps/MtEmber_RubyPath_B4F_Frlg/scripts.inc
new file mode 100644
index 000000000000..722d14841042
--- /dev/null
+++ b/data/maps/MtEmber_RubyPath_B4F_Frlg/scripts.inc
@@ -0,0 +1,62 @@
+MtEmber_RubyPath_B4F_Frlg_MapScripts::
+ .byte 0
+
+MtEmber_RubyPath_B4F_EventScript_BrailleABC::
+ lockall
+ braillemsgbox Braille_Text_ABC
+ releaseall
+ end
+
+MtEmber_RubyPath_B4F_EventScript_BrailleGHI::
+ lockall
+ braillemsgbox Braille_Text_GHI
+ releaseall
+ end
+
+MtEmber_RubyPath_B4F_EventScript_BrailleMNO::
+ lockall
+ braillemsgbox Braille_Text_MNO
+ releaseall
+ end
+
+MtEmber_RubyPath_B4F_EventScript_BrailleTUV::
+ lockall
+ braillemsgbox Braille_Text_TUV
+ releaseall
+ end
+
+MtEmber_RubyPath_B4F_EventScript_BrailleDEF::
+ lockall
+ braillemsgbox Braille_Text_DEF
+ releaseall
+ end
+
+MtEmber_RubyPath_B4F_EventScript_BrailleJKL::
+ lockall
+ braillemsgbox Braille_Text_JKL
+ releaseall
+ end
+
+MtEmber_RubyPath_B4F_EventScript_BraillePQRS::
+ lockall
+ braillemsgbox Braille_Text_PQRS
+ releaseall
+ end
+
+MtEmber_RubyPath_B4F_EventScript_BrailleWXYZ::
+ lockall
+ braillemsgbox Braille_Text_WXYZ
+ releaseall
+ end
+
+MtEmber_RubyPath_B4F_EventScript_BraillePeriod::
+ lockall
+ braillemsgbox Braille_Text_Period
+ releaseall
+ end
+
+MtEmber_RubyPath_B4F_EventScript_BrailleComma::
+ lockall
+ braillemsgbox Braille_Text_Comma
+ releaseall
+ end
diff --git a/data/maps/MtEmber_RubyPath_B5F_Frlg/map.json b/data/maps/MtEmber_RubyPath_B5F_Frlg/map.json
new file mode 100644
index 000000000000..ed3d97657862
--- /dev/null
+++ b/data/maps/MtEmber_RubyPath_B5F_Frlg/map.json
@@ -0,0 +1,54 @@
+{
+ "id": "MAP_MT_EMBER_RUBY_PATH_B5F",
+ "name": "MtEmber_RubyPath_B5F_Frlg",
+ "layout": "LAYOUT_MT_EMBER_RUBY_PATH_B5F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MT_EMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_RUBY",
+ "x": 7,
+ "y": 7,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtEmber_RubyPath_B5F_EventScript_Ruby",
+ "flag": "FLAG_HIDE_RUBY"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_MT_EMBER_RUBY_PATH_B4F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "MtEmber_RubyPath_B5F_EventScript_BrailleMessage"
+ }
+ ]
+}
diff --git a/data/maps/MtEmber_RubyPath_B5F_Frlg/scripts.inc b/data/maps/MtEmber_RubyPath_B5F_Frlg/scripts.inc
new file mode 100644
index 000000000000..fd1b22a98ad1
--- /dev/null
+++ b/data/maps/MtEmber_RubyPath_B5F_Frlg/scripts.inc
@@ -0,0 +1,16 @@
+MtEmber_RubyPath_B5F_Frlg_MapScripts::
+ .byte 0
+
+MtEmber_RubyPath_B5F_EventScript_BrailleMessage::
+ lockall
+ setvar VAR_0x8005, 130
+ braillemessage_wait Braille_Text_Everything
+ braillemessage_wait Braille_Text_HasMeaning1
+ braillemessage_wait Braille_Text_Existence
+ braillemessage_wait Braille_Text_HasMeaning2
+ braillemessage_wait Braille_Text_BeingAlive
+ braillemessage_wait Braille_Text_HasMeaning3
+ braillemessage_wait Braille_Text_HaveDreams
+ braillemsgbox Braille_Text_UsePower
+ releaseall
+ end
diff --git a/data/maps/MtEmber_SummitPath_1F_Frlg/map.json b/data/maps/MtEmber_SummitPath_1F_Frlg/map.json
new file mode 100644
index 000000000000..99385eeb2810
--- /dev/null
+++ b/data/maps/MtEmber_SummitPath_1F_Frlg/map.json
@@ -0,0 +1,37 @@
+{
+ "id": "MAP_MT_EMBER_SUMMIT_PATH_1F",
+ "name": "MtEmber_SummitPath_1F_Frlg",
+ "layout": "LAYOUT_MT_EMBER_SUMMIT_PATH_1F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MT_EMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 15,
+ "elevation": 0,
+ "dest_map": "MAP_MT_EMBER_EXTERIOR",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 11,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_MT_EMBER_SUMMIT_PATH_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/MtEmber_SummitPath_1F_Frlg/scripts.inc b/data/maps/MtEmber_SummitPath_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..63e947899d8e
--- /dev/null
+++ b/data/maps/MtEmber_SummitPath_1F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+MtEmber_SummitPath_1F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/MtEmber_SummitPath_2F_Frlg/map.json b/data/maps/MtEmber_SummitPath_2F_Frlg/map.json
new file mode 100644
index 000000000000..7d6437bc1021
--- /dev/null
+++ b/data/maps/MtEmber_SummitPath_2F_Frlg/map.json
@@ -0,0 +1,164 @@
+{
+ "id": "MAP_MT_EMBER_SUMMIT_PATH_2F",
+ "name": "MtEmber_SummitPath_2F_Frlg",
+ "layout": "LAYOUT_MT_EMBER_SUMMIT_PATH_2F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MT_EMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 40,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 33,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 15,
+ "y": 19,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_14"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 13,
+ "y": 23,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_15"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 13,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_16"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 7,
+ "y": 38,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_17"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 9,
+ "y": 35,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_18"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 7,
+ "y": 34,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_19"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 15,
+ "y": 26,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_1A"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 39,
+ "elevation": 0,
+ "dest_map": "MAP_MT_EMBER_SUMMIT_PATH_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 39,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_MT_EMBER_SUMMIT_PATH_3F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/MtEmber_SummitPath_2F_Frlg/scripts.inc b/data/maps/MtEmber_SummitPath_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..0f7e95c6d8bf
--- /dev/null
+++ b/data/maps/MtEmber_SummitPath_2F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+MtEmber_SummitPath_2F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/MtEmber_SummitPath_3F_Frlg/map.json b/data/maps/MtEmber_SummitPath_3F_Frlg/map.json
new file mode 100644
index 000000000000..4de3af46265b
--- /dev/null
+++ b/data/maps/MtEmber_SummitPath_3F_Frlg/map.json
@@ -0,0 +1,37 @@
+{
+ "id": "MAP_MT_EMBER_SUMMIT_PATH_3F",
+ "name": "MtEmber_SummitPath_3F_Frlg",
+ "layout": "LAYOUT_MT_EMBER_SUMMIT_PATH_3F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MT_EMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 4,
+ "elevation": 0,
+ "dest_map": "MAP_MT_EMBER_SUMMIT_PATH_2F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 11,
+ "y": 8,
+ "elevation": 0,
+ "dest_map": "MAP_MT_EMBER_EXTERIOR",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/MtEmber_SummitPath_3F_Frlg/scripts.inc b/data/maps/MtEmber_SummitPath_3F_Frlg/scripts.inc
new file mode 100644
index 000000000000..d5b8fab6b6d1
--- /dev/null
+++ b/data/maps/MtEmber_SummitPath_3F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+MtEmber_SummitPath_3F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/MtEmber_Summit_Frlg/map.json b/data/maps/MtEmber_Summit_Frlg/map.json
new file mode 100644
index 000000000000..1ff1c34b4004
--- /dev/null
+++ b/data/maps/MtEmber_Summit_Frlg/map.json
@@ -0,0 +1,105 @@
+{
+ "id": "MAP_MT_EMBER_SUMMIT",
+ "name": "MtEmber_Summit_Frlg",
+ "layout": "LAYOUT_MT_EMBER_SUMMIT",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MT_EMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MOLTRES",
+ "x": 9,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtEmber_Summit_EventScript_Moltres",
+ "flag": "FLAG_HIDE_MOLTRES"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER_FRLG",
+ "x": 10,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER_FRLG",
+ "x": 9,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 8,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 8,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 9,
+ "y": 15,
+ "elevation": 0,
+ "dest_map": "MAP_MT_EMBER_EXTERIOR",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/MtEmber_Summit_Frlg/scripts.inc b/data/maps/MtEmber_Summit_Frlg/scripts.inc
new file mode 100644
index 000000000000..508dd078e260
--- /dev/null
+++ b/data/maps/MtEmber_Summit_Frlg/scripts.inc
@@ -0,0 +1,56 @@
+MtEmber_Summit_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, MtEmber_Summit_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, MtEmber_Summit_OnResume
+ .byte 0
+
+MtEmber_Summit_OnResume::
+ call_if_set FLAG_SYS_CTRL_OBJ_DELETE, MtEmber_Summit_EventScript_TryRemoveMoltres
+ end
+
+MtEmber_Summit_EventScript_TryRemoveMoltres::
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_ne VAR_RESULT, B_OUTCOME_CAUGHT, Common_EventScript_NopReturn
+ removeobject VAR_LAST_TALKED
+ return
+
+MtEmber_Summit_OnTransition::
+ call_if_unset FLAG_FOUGHT_MOLTRES, MtEmber_Summit_EventScript_ShowMoltres
+ end
+
+MtEmber_Summit_EventScript_ShowMoltres::
+ clearflag FLAG_HIDE_MOLTRES
+ return
+
+MtEmber_Summit_EventScript_Moltres::
+ lock
+ faceplayer
+ setwildbattle SPECIES_MOLTRES, 50
+ waitse
+ playmoncry SPECIES_MOLTRES, CRY_MODE_ENCOUNTER
+ message Text_Gyaoo
+ waitmessage
+ waitmoncry
+ delay 10
+ playbgm MUS_RG_ENCOUNTER_GYM_LEADER, 0
+ waitbuttonpress
+ setflag FLAG_SYS_CTRL_OBJ_DELETE
+ special BattleSetup_StartLegendaryBattle
+ waitstate
+ clearflag FLAG_SYS_CTRL_OBJ_DELETE
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_eq VAR_RESULT, B_OUTCOME_WON, MtEmber_Summit_EventScript_DefeatedMoltres
+ goto_if_eq VAR_RESULT, B_OUTCOME_RAN, MtEmber_Summit_EventScript_RanFromMoltres
+ goto_if_eq VAR_RESULT, B_OUTCOME_PLAYER_TELEPORTED, MtEmber_Summit_EventScript_RanFromMoltres
+ setflag FLAG_FOUGHT_MOLTRES
+ release
+ end
+
+MtEmber_Summit_EventScript_DefeatedMoltres::
+ setflag FLAG_FOUGHT_MOLTRES
+ goto EventScript_RemoveStaticMon
+ end
+
+MtEmber_Summit_EventScript_RanFromMoltres::
+ setvar VAR_0x8004, SPECIES_MOLTRES
+ goto EventScript_MonFlewAway
+ end
diff --git a/data/maps/MtMoon_1F_Frlg/map.json b/data/maps/MtMoon_1F_Frlg/map.json
new file mode 100644
index 000000000000..06e56ca9f06b
--- /dev/null
+++ b/data/maps/MtMoon_1F_Frlg/map.json
@@ -0,0 +1,257 @@
+{
+ "id": "MAP_MT_MOON_1F",
+ "name": "MtMoon_1F_Frlg",
+ "layout": "LAYOUT_MT_MOON_1F",
+ "music": "MUS_RG_MT_MOON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MT_MOON",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 20,
+ "y": 26,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "MtMoon_1F_EventScript_Iris",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 36,
+ "y": 30,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "MtMoon_1F_EventScript_Robby",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 30,
+ "y": 35,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "MtMoon_1F_EventScript_Jovan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 33,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_RIGHT_UP",
+ "movement_range_x": 5,
+ "movement_range_y": 3,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "MtMoon_1F_EventScript_Miriam",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 7,
+ "y": 26,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "MtMoon_1F_EventScript_Kent",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 13,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "MtMoon_1F_EventScript_Josh",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 7,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "MtMoon_1F_EventScript_Marcos",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 2,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtMoon_1F_EventScript_ItemParalyzeHeal",
+ "flag": "FLAG_HIDE_MT_MOON_1F_PARALYZE_HEAL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 11,
+ "y": 35,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtMoon_1F_EventScript_ItemTM09",
+ "flag": "FLAG_HIDE_MT_MOON_1F_TM09"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 26,
+ "y": 32,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtMoon_1F_EventScript_ItemPotion",
+ "flag": "FLAG_HIDE_MT_MOON_1F_POTION"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 42,
+ "y": 35,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtMoon_1F_EventScript_ItemRareCandy",
+ "flag": "FLAG_HIDE_MT_MOON_1F_RARE_CANDY"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 44,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtMoon_1F_EventScript_ItemEscapeRope",
+ "flag": "FLAG_HIDE_MT_MOON_1F_ESCAPE_ROPE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 3,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtMoon_1F_EventScript_ItemMoonStone",
+ "flag": "FLAG_HIDE_MT_MOON_1F_MOON_STONE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 42,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtMoon_1F_EventScript_BaldingMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_MT_MOON_B1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 19,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_MT_MOON_B1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 31,
+ "y": 16,
+ "elevation": 3,
+ "dest_map": "MAP_MT_MOON_B1F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 18,
+ "y": 37,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE4",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 19,
+ "y": 26,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "MtMoon_1F_EventScript_ZubatSign"
+ }
+ ]
+}
diff --git a/data/maps/MtMoon_1F_Frlg/scripts.inc b/data/maps/MtMoon_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..2149c42b4453
--- /dev/null
+++ b/data/maps/MtMoon_1F_Frlg/scripts.inc
@@ -0,0 +1,139 @@
+MtMoon_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, MtMoon_1F_OnTransition
+ .byte 0
+
+MtMoon_1F_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_MT_MOON_1F
+ end
+
+MtMoon_1F_EventScript_ZubatSign::
+ msgbox MtMoon_1F_Text_ZubatIsABloodsucker, MSGBOX_SIGN
+ end
+
+MtMoon_1F_EventScript_Marcos::
+ trainerbattle_single TRAINER_HIKER_MARCOS, MtMoon_1F_Text_MarcosIntro, MtMoon_1F_Text_MarcosDefeat
+ msgbox MtMoon_1F_Text_MarcosPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+MtMoon_1F_EventScript_Josh::
+ trainerbattle_single TRAINER_YOUNGSTER_JOSH, MtMoon_1F_Text_JoshIntro, MtMoon_1F_Text_JoshDefeat
+ msgbox MtMoon_1F_Text_JoshPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+MtMoon_1F_EventScript_Miriam::
+ trainerbattle_single TRAINER_LASS_MIRIAM, MtMoon_1F_Text_MiriamIntro, MtMoon_1F_Text_MiriamDefeat
+ msgbox MtMoon_1F_Text_MiriamPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+MtMoon_1F_EventScript_Iris::
+ trainerbattle_single TRAINER_LASS_IRIS, MtMoon_1F_Text_IrisIntro, MtMoon_1F_Text_IrisDefeat
+ msgbox MtMoon_1F_Text_IrisPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+MtMoon_1F_EventScript_Jovan::
+ trainerbattle_single TRAINER_SUPER_NERD_JOVAN, MtMoon_1F_Text_JovanIntro, MtMoon_1F_Text_JovanDefeat
+ msgbox MtMoon_1F_Text_JovanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+MtMoon_1F_EventScript_Kent::
+ trainerbattle_single TRAINER_BUG_CATCHER_KENT, MtMoon_1F_Text_KentIntro, MtMoon_1F_Text_KentDefeat
+ msgbox MtMoon_1F_Text_KentPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+MtMoon_1F_EventScript_Robby::
+ trainerbattle_single TRAINER_BUG_CATCHER_ROBBY, MtMoon_1F_Text_RobbyIntro, MtMoon_1F_Text_RobbyDefeat
+ msgbox MtMoon_1F_Text_RobbyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+MtMoon_1F_Text_MarcosIntro::
+ .string "WHOA!\n"
+ .string "You shocked me!\l"
+ .string "…Oh, you're just a kid!$"
+
+MtMoon_1F_Text_MarcosDefeat::
+ .string "Wow!\n"
+ .string "Shocked again!$"
+
+MtMoon_1F_Text_MarcosPostBattle::
+ .string "Kids like you shouldn't be\n"
+ .string "wandering around here in the dark.$"
+
+MtMoon_1F_Text_JoshIntro::
+ .string "Did you come to explore the cave,\n"
+ .string "too?$"
+
+MtMoon_1F_Text_JoshDefeat::
+ .string "Losing stinks!\n"
+ .string "It's so uncool.$"
+
+MtMoon_1F_Text_JoshPostBattle::
+ .string "I came all the way down here to\n"
+ .string "show off to girls.$"
+
+MtMoon_1F_Text_MiriamIntro::
+ .string "Wow! It's way bigger in here than\n"
+ .string "I thought!$"
+
+MtMoon_1F_Text_MiriamDefeat::
+ .string "Oh!\n"
+ .string "I lost it!$"
+
+MtMoon_1F_Text_MiriamPostBattle::
+ .string "How do you get out of here?\n"
+ .string "It's so big, I may get lost.$"
+
+MtMoon_1F_Text_JovanIntro::
+ .string "What!\n"
+ .string "Don't sneak up on me!$"
+
+MtMoon_1F_Text_JovanDefeat::
+ .string "My POKéMON won't do!$"
+
+MtMoon_1F_Text_JovanPostBattle::
+ .string "I have to find stronger POKéMON.\n"
+ .string "Where might they be?$"
+
+MtMoon_1F_Text_IrisIntro::
+ .string "What?\n"
+ .string "I'm waiting for my friends to find\l"
+ .string "me here.$"
+
+MtMoon_1F_Text_IrisDefeat::
+ .string "I lost?$"
+
+MtMoon_1F_Text_IrisPostBattle::
+ .string "I came because I heard there are\n"
+ .string "some very rare fossils here.$"
+
+MtMoon_1F_Text_KentIntro::
+ .string "Suspicious men are in the cave.\n"
+ .string "What about you?$"
+
+MtMoon_1F_Text_KentDefeat::
+ .string "You got me!$"
+
+MtMoon_1F_Text_KentPostBattle::
+ .string "I saw them!\n"
+ .string "I'm sure they're from TEAM ROCKET!$"
+
+MtMoon_1F_Text_RobbyIntro::
+ .string "You need to go through this cave\n"
+ .string "to get to CERULEAN CITY.$"
+
+MtMoon_1F_Text_RobbyDefeat::
+ .string "I lost.$"
+
+MtMoon_1F_Text_RobbyPostBattle::
+ .string "ZUBAT is tough!\n"
+ .string "But if you can catch one, you'll\l"
+ .string "be able to count on it.$"
+
+MtMoon_1F_Text_ZubatIsABloodsucker::
+ .string "Beware!\n"
+ .string "ZUBAT is a bloodsucker!$"
+
+MtMoon_1F_Text_BrockHelpsExcavateFossils::
+ .string "Hi, I'm excavating for fossils here\n"
+ .string "under MT. MOON.\p"
+ .string "Sometimes, BROCK of PEWTER GYM\n"
+ .string "lends me a hand.$"
diff --git a/data/maps/MtMoon_B1F_Frlg/map.json b/data/maps/MtMoon_B1F_Frlg/map.json
new file mode 100644
index 000000000000..90442fe268d1
--- /dev/null
+++ b/data/maps/MtMoon_B1F_Frlg/map.json
@@ -0,0 +1,140 @@
+{
+ "id": "MAP_MT_MOON_B1F",
+ "name": "MtMoon_B1F_Frlg",
+ "layout": "LAYOUT_MT_MOON_B1F",
+ "music": "MUS_RG_MT_MOON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MT_MOON",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 3,
+ "elevation": 3,
+ "dest_map": "MAP_MT_MOON_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 25,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_MT_MOON_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 43,
+ "y": 21,
+ "elevation": 3,
+ "dest_map": "MAP_MT_MOON_1F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 22,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_MT_MOON_B2F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 17,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_MT_MOON_B2F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 26,
+ "y": 36,
+ "elevation": 3,
+ "dest_map": "MAP_MT_MOON_B2F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 39,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_MT_MOON_B2F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 45,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE4",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 46,
+ "y": 2,
+ "elevation": 0,
+ "item": "ITEM_TINY_MUSHROOM",
+ "flag": "FLAG_HIDDEN_ITEM_MT_MOON_B1F_TINY_MUSHROOM",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 26,
+ "y": 2,
+ "elevation": 0,
+ "item": "ITEM_TINY_MUSHROOM",
+ "flag": "FLAG_HIDDEN_ITEM_MT_MOON_B1F_TINY_MUSHROOM_2",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 39,
+ "y": 34,
+ "elevation": 0,
+ "item": "ITEM_TINY_MUSHROOM",
+ "flag": "FLAG_HIDDEN_ITEM_MT_MOON_B1F_TINY_MUSHROOM_3",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 24,
+ "y": 35,
+ "elevation": 0,
+ "item": "ITEM_BIG_MUSHROOM",
+ "flag": "FLAG_HIDDEN_ITEM_MT_MOON_B1F_BIG_MUSHROOM",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 6,
+ "y": 12,
+ "elevation": 0,
+ "item": "ITEM_BIG_MUSHROOM",
+ "flag": "FLAG_HIDDEN_ITEM_MT_MOON_B1F_BIG_MUSHROOM_2",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 25,
+ "y": 34,
+ "elevation": 0,
+ "item": "ITEM_BIG_MUSHROOM",
+ "flag": "FLAG_HIDDEN_ITEM_MT_MOON_B1F_BIG_MUSHROOM_3",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/MtMoon_B1F_Frlg/scripts.inc b/data/maps/MtMoon_B1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..b3c1a602d4d1
--- /dev/null
+++ b/data/maps/MtMoon_B1F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+MtMoon_B1F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/MtMoon_B2F_Frlg/map.json b/data/maps/MtMoon_B2F_Frlg/map.json
new file mode 100644
index 000000000000..c2089f1f5992
--- /dev/null
+++ b/data/maps/MtMoon_B2F_Frlg/map.json
@@ -0,0 +1,240 @@
+{
+ "id": "MAP_MT_MOON_B2F",
+ "name": "MtMoon_B2F_Frlg",
+ "layout": "LAYOUT_MT_MOON_B2F",
+ "music": "MUS_RG_MT_MOON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MT_MOON",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_DOME_FOSSIL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FOSSIL_FRLG",
+ "x": 13,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtMoon_B2F_EventScript_DomeFossil",
+ "flag": "FLAG_HIDE_DOME_FOSSIL"
+ },
+ {
+ "local_id": "LOCALID_HELIX_FOSSIL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FOSSIL_FRLG",
+ "x": 14,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtMoon_B2F_EventScript_HelixFossil",
+ "flag": "FLAG_HIDE_HELIX_FOSSIL"
+ },
+ {
+ "local_id": "LOCALID_MIGUEL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 13,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtMoon_B2F_EventScript_Miguel",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 37,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "MtMoon_B2F_EventScript_Grunt4",
+ "flag": "FLAG_HIDE_MISC_KANTO_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 12,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "MtMoon_B2F_EventScript_Grunt1",
+ "flag": "FLAG_HIDE_MISC_KANTO_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 35,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "MtMoon_B2F_EventScript_Grunt3",
+ "flag": "FLAG_HIDE_MISC_KANTO_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 18,
+ "y": 27,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "MtMoon_B2F_EventScript_Grunt2",
+ "flag": "FLAG_HIDE_MISC_KANTO_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 30,
+ "y": 26,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtMoon_B2F_EventScript_ItemStarPiece",
+ "flag": "FLAG_HIDE_MT_MOON_B2F_STAR_PIECE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 35,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtMoon_B2F_EventScript_ItemTM46",
+ "flag": "FLAG_HIDE_MT_MOON_B2F_TM46"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 24,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtMoon_B2F_EventScript_ItemRevive",
+ "flag": "FLAG_HIDE_MT_MOON_B2F_REVIVE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 3,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MtMoon_B2F_EventScript_ItemAntidote",
+ "flag": "FLAG_HIDE_MT_MOON_B2F_ANTIDOTE"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 25,
+ "y": 21,
+ "elevation": 3,
+ "dest_map": "MAP_MT_MOON_B1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 31,
+ "y": 11,
+ "elevation": 3,
+ "dest_map": "MAP_MT_MOON_B1F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 17,
+ "y": 31,
+ "elevation": 3,
+ "dest_map": "MAP_MT_MOON_B1F",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 5,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_MT_MOON_B1F",
+ "dest_warp_id": "6"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 14,
+ "y": 11,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_MT_MOON_B2F",
+ "var_value": "0",
+ "script": "MtMoon_B2F_EventScript_MiguelTrigger"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 20,
+ "y": 16,
+ "elevation": 3,
+ "item": "ITEM_MOON_STONE",
+ "flag": "FLAG_HIDDEN_ITEM_MT_MOON_B2F_MOON_STONE",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 39,
+ "y": 11,
+ "elevation": 3,
+ "item": "ITEM_ETHER",
+ "flag": "FLAG_HIDDEN_ITEM_MT_MOON_B2F_ETHER",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/MtMoon_B2F_Frlg/scripts.inc b/data/maps/MtMoon_B2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..641dc07ea065
--- /dev/null
+++ b/data/maps/MtMoon_B2F_Frlg/scripts.inc
@@ -0,0 +1,219 @@
+MtMoon_B2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, MtMoon_B2F_OnTransition
+ .byte 0
+
+MtMoon_B2F_OnTransition::
+ call_if_unset FLAG_GOT_FOSSIL_FROM_MT_MOON, MtMoon_B2F_EventScript_ShowFossils
+ end
+
+MtMoon_B2F_EventScript_ShowFossils::
+ clearflag FLAG_HIDE_DOME_FOSSIL
+ clearflag FLAG_HIDE_HELIX_FOSSIL
+ return
+
+MtMoon_B2F_EventScript_MiguelTrigger::
+ lockall
+ applymovement LOCALID_MIGUEL, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ call MtMoon_B2F_EventScript_BattleMiguel
+ releaseall
+ end
+
+MtMoon_B2F_EventScript_Miguel::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_FOSSIL_FROM_MT_MOON, MtMoon_B2F_EventScript_MiguelFossilPicked
+ goto_if_defeated TRAINER_SUPER_NERD_MIGUEL, MtMoon_B2F_EventScript_MiguelGoPickFossil
+ call MtMoon_B2F_EventScript_BattleMiguel
+ release
+ end
+
+MtMoon_B2F_EventScript_BattleMiguel::
+ textcolor NPC_TEXT_COLOR_MALE
+ message MtMoon_B2F_Text_MiguelIntro
+ waitmessage
+ playbgm MUS_RG_ENCOUNTER_GYM_LEADER, 0
+ waitbuttonpress
+ setvar VAR_LAST_TALKED, LOCALID_MIGUEL
+ trainerbattle_no_intro TRAINER_SUPER_NERD_MIGUEL, MtMoon_B2F_Text_MiguelDefeat
+ setvar VAR_MAP_SCENE_MT_MOON_B2F, 1
+ msgbox MtMoon_B2F_Text_WellEachTakeAFossil
+ return
+
+MtMoon_B2F_EventScript_MiguelFossilPicked::
+ msgbox MtMoon_B2F_Text_LabOnCinnabarRegeneratesFossils
+ release
+ end
+
+MtMoon_B2F_EventScript_MiguelGoPickFossil::
+ msgbox MtMoon_B2F_Text_WellEachTakeAFossil
+ release
+ end
+
+MtMoon_B2F_EventScript_DomeFossil::
+ lock
+ faceplayer
+ msgbox MtMoon_B2F_Text_YouWantDomeFossil, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, MtMoon_B2F_EventScript_DontTakeFossil
+ removeobject LOCALID_DOME_FOSSIL
+ giveitem_msg MtMoon_B2F_Text_ObtainedDomeFossil, ITEM_DOME_FOSSIL, 1, MUS_RG_OBTAIN_KEY_ITEM
+ closemessage
+ delay 10
+ applymovement LOCALID_MIGUEL, MtMoon_B2F_Movement_MiguelToHelixFossil
+ waitmovement 0
+ copyobjectxytoperm LOCALID_MIGUEL
+ textcolor NPC_TEXT_COLOR_MALE
+ playfanfare MUS_RG_OBTAIN_KEY_ITEM
+ message MtMoon_B2F_Text_ThenThisFossilIsMine
+ waitmessage
+ waitfanfare
+ removeobject LOCALID_HELIX_FOSSIL
+ setflag FLAG_GOT_DOME_FOSSIL
+ setflag FLAG_GOT_FOSSIL_FROM_MT_MOON
+ release
+ end
+
+MtMoon_B2F_Movement_MiguelToHelixFossil::
+ walk_right
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+MtMoon_B2F_EventScript_HelixFossil::
+ lock
+ faceplayer
+ msgbox MtMoon_B2F_Text_YouWantHelixFossil, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, MtMoon_B2F_EventScript_DontTakeFossil
+ removeobject LOCALID_HELIX_FOSSIL
+ giveitem_msg MtMoon_B2F_Text_ObtainedHelixFossil, ITEM_HELIX_FOSSIL, 1, MUS_RG_OBTAIN_KEY_ITEM
+ closemessage
+ delay 10
+ applymovement LOCALID_MIGUEL, MtMoon_B2F_Movement_MiguelToDomeFossil
+ waitmovement 0
+ copyobjectxytoperm LOCALID_MIGUEL
+ textcolor NPC_TEXT_COLOR_MALE
+ playfanfare MUS_RG_OBTAIN_KEY_ITEM
+ message MtMoon_B2F_Text_ThenThisFossilIsMine
+ waitmessage
+ waitfanfare
+ removeobject LOCALID_DOME_FOSSIL
+ setflag FLAG_GOT_HELIX_FOSSIL
+ setflag FLAG_GOT_FOSSIL_FROM_MT_MOON
+ release
+ end
+
+MtMoon_B2F_EventScript_DontTakeFossil::
+ release
+ end
+
+MtMoon_B2F_Movement_MiguelToDomeFossil::
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+MtMoon_B2F_EventScript_Grunt1::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT, MtMoon_B2F_Text_Grunt1Intro, MtMoon_B2F_Text_Grunt1Defeat
+ msgbox MtMoon_B2F_Text_Grunt1PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+MtMoon_B2F_EventScript_Grunt2::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_2, MtMoon_B2F_Text_Grunt2Intro, MtMoon_B2F_Text_Grunt2Defeat
+ msgbox MtMoon_B2F_Text_Grunt2PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+MtMoon_B2F_EventScript_Grunt3::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_3, MtMoon_B2F_Text_Grunt3Intro, MtMoon_B2F_Text_Grunt3Defeat
+ msgbox MtMoon_B2F_Text_Grunt3PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+MtMoon_B2F_EventScript_Grunt4::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_4, MtMoon_B2F_Text_Grunt4Intro, MtMoon_B2F_Text_Grunt4Defeat
+ msgbox MtMoon_B2F_Text_Grunt4PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+MtMoon_B2F_Text_MiguelIntro::
+ .string "Hey, stop!\p"
+ .string "I found these fossils!\n"
+ .string "They're both mine!$"
+
+MtMoon_B2F_Text_MiguelDefeat::
+ .string "Okay!\n"
+ .string "I'll share!$"
+
+MtMoon_B2F_Text_WellEachTakeAFossil::
+ .string "We'll each take a fossil!\n"
+ .string "No being greedy!$"
+
+MtMoon_B2F_Text_ThenThisFossilIsMine::
+ .string "All right.\n"
+ .string "Then this fossil is mine!$"
+
+MtMoon_B2F_Text_LabOnCinnabarRegeneratesFossils::
+ .string "Far away, on CINNABAR ISLAND,\n"
+ .string "there's a POKéMON LAB.\p"
+ .string "They do research on regenerating\n"
+ .string "fossils.$"
+
+MtMoon_B2F_Text_Grunt1Intro::
+ .string "We, TEAM ROCKET, shall find the\n"
+ .string "fossils!\p"
+ .string "Reviving POKéMON from them will\n"
+ .string "earn us huge riches!$"
+
+MtMoon_B2F_Text_Grunt1Defeat::
+ .string "Urgh!\n"
+ .string "Now I'm mad!$"
+
+MtMoon_B2F_Text_Grunt1PostBattle::
+ .string "You made me mad!\n"
+ .string "TEAM ROCKET will blacklist you!$"
+
+MtMoon_B2F_Text_Grunt2Intro::
+ .string "We, TEAM ROCKET, are POKéMON\n"
+ .string "gangsters!\l"
+ .string "We strike fear with our strength!$"
+
+MtMoon_B2F_Text_Grunt2Defeat::
+ .string "I blew it!$"
+
+MtMoon_B2F_Text_Grunt2PostBattle::
+ .string "Darn it all!\n"
+ .string "My associates won't stand for this!$"
+
+MtMoon_B2F_Text_Grunt3Intro::
+ .string "We're pulling a big job here!\n"
+ .string "Get lost, kid!$"
+
+MtMoon_B2F_Text_Grunt3Defeat::
+ .string "So, you are good…$"
+
+MtMoon_B2F_Text_Grunt3PostBattle::
+ .string "If you find a fossil, give it to me\n"
+ .string "and scram!$"
+
+MtMoon_B2F_Text_Grunt4Intro::
+ .string "Little kids shouldn't be messing\n"
+ .string "around with grown-ups!\p"
+ .string "It could be bad news!$"
+
+MtMoon_B2F_Text_Grunt4Defeat::
+ .string "I'm steamed!$"
+
+MtMoon_B2F_Text_Grunt4PostBattle::
+ .string "POKéMON lived here long before\n"
+ .string "people came.$"
+
+MtMoon_B2F_Text_YouWantDomeFossil::
+ .string "Do you want the DOME FOSSIL?$"
+
+MtMoon_B2F_Text_YouWantHelixFossil::
+ .string "Do you want the HELIX FOSSIL?$"
+
+MtMoon_B2F_Text_ObtainedHelixFossil::
+ .string "Obtained the HELIX FOSSIL!$"
+
+MtMoon_B2F_Text_ObtainedDomeFossil::
+ .string "Obtained the DOME FOSSIL!$"
+
diff --git a/data/maps/NavelRock_1F_Frlg/map.json b/data/maps/NavelRock_1F_Frlg/map.json
new file mode 100644
index 000000000000..336d65f904cc
--- /dev/null
+++ b/data/maps/NavelRock_1F_Frlg/map.json
@@ -0,0 +1,43 @@
+{
+ "id": "MAP_NAVEL_ROCK_1F",
+ "name": "NavelRock_1F_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_1F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_B1F_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 8,
+ "y": 23,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_EXTERIOR_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_1F_Frlg/scripts.inc b/data/maps/NavelRock_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..5b5933c03347
--- /dev/null
+++ b/data/maps/NavelRock_1F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_1F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_B1F_Frlg/map.json b/data/maps/NavelRock_B1F_Frlg/map.json
new file mode 100644
index 000000000000..f39e93b188e2
--- /dev/null
+++ b/data/maps/NavelRock_B1F_Frlg/map.json
@@ -0,0 +1,43 @@
+{
+ "id": "MAP_NAVEL_ROCK_B1F_FRLG",
+ "name": "NavelRock_B1F_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_B1F_FRLG",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 11,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_FORK_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_B1F_Frlg/scripts.inc b/data/maps/NavelRock_B1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..b96afb4a3cd6
--- /dev/null
+++ b/data/maps/NavelRock_B1F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_B1F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_BasePath_B10F_Frlg/map.json b/data/maps/NavelRock_BasePath_B10F_Frlg/map.json
new file mode 100644
index 000000000000..7c0ee53e4afb
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B10F_Frlg/map.json
@@ -0,0 +1,43 @@
+{
+ "id": "MAP_NAVEL_ROCK_BASE_PATH_B10F",
+ "name": "NavelRock_BasePath_B10F_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_BASE_PATH_B10F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B9F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B11F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_BasePath_B10F_Frlg/scripts.inc b/data/maps/NavelRock_BasePath_B10F_Frlg/scripts.inc
new file mode 100644
index 000000000000..602a814361d5
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B10F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_BasePath_B10F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_BasePath_B11F_Frlg/map.json b/data/maps/NavelRock_BasePath_B11F_Frlg/map.json
new file mode 100644
index 000000000000..0557ff63b77b
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B11F_Frlg/map.json
@@ -0,0 +1,43 @@
+{
+ "id": "MAP_NAVEL_ROCK_BASE_PATH_B11F",
+ "name": "NavelRock_BasePath_B11F_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_BASE_PATH_B11F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B10F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_BasePath_B11F_Frlg/scripts.inc b/data/maps/NavelRock_BasePath_B11F_Frlg/scripts.inc
new file mode 100644
index 000000000000..7e02dbacdef0
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B11F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_BasePath_B11F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_BasePath_B1F_Frlg/map.json b/data/maps/NavelRock_BasePath_B1F_Frlg/map.json
new file mode 100644
index 000000000000..2ffd6fab3e07
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B1F_Frlg/map.json
@@ -0,0 +1,43 @@
+{
+ "id": "MAP_NAVEL_ROCK_BASE_PATH_B1F",
+ "name": "NavelRock_BasePath_B1F_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_BASE_PATH_B1F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_FORK_FRLG",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_BasePath_B1F_Frlg/scripts.inc b/data/maps/NavelRock_BasePath_B1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..7621e0951e97
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B1F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_BasePath_B1F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_BasePath_B2F_Frlg/map.json b/data/maps/NavelRock_BasePath_B2F_Frlg/map.json
new file mode 100644
index 000000000000..74a418155ac3
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B2F_Frlg/map.json
@@ -0,0 +1,43 @@
+{
+ "id": "MAP_NAVEL_ROCK_BASE_PATH_B2F",
+ "name": "NavelRock_BasePath_B2F_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_BASE_PATH_B2F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B3F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_BasePath_B2F_Frlg/scripts.inc b/data/maps/NavelRock_BasePath_B2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..6ebb7b4c63cb
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B2F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_BasePath_B2F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_BasePath_B3F_Frlg/map.json b/data/maps/NavelRock_BasePath_B3F_Frlg/map.json
new file mode 100644
index 000000000000..05404d535f42
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B3F_Frlg/map.json
@@ -0,0 +1,43 @@
+{
+ "id": "MAP_NAVEL_ROCK_BASE_PATH_B3F",
+ "name": "NavelRock_BasePath_B3F_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_BASE_PATH_B3F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B2F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B4F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_BasePath_B3F_Frlg/scripts.inc b/data/maps/NavelRock_BasePath_B3F_Frlg/scripts.inc
new file mode 100644
index 000000000000..5f54eb7c6484
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B3F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_BasePath_B3F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_BasePath_B4F_Frlg/map.json b/data/maps/NavelRock_BasePath_B4F_Frlg/map.json
new file mode 100644
index 000000000000..7e5100c2da23
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B4F_Frlg/map.json
@@ -0,0 +1,37 @@
+{
+ "id": "MAP_NAVEL_ROCK_BASE_PATH_B4F",
+ "name": "NavelRock_BasePath_B4F_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_BASE_PATH_B4F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B3F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B5F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/NavelRock_BasePath_B4F_Frlg/scripts.inc b/data/maps/NavelRock_BasePath_B4F_Frlg/scripts.inc
new file mode 100644
index 000000000000..7e5567c18333
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B4F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_BasePath_B4F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_BasePath_B5F_Frlg/map.json b/data/maps/NavelRock_BasePath_B5F_Frlg/map.json
new file mode 100644
index 000000000000..c000b27547d3
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B5F_Frlg/map.json
@@ -0,0 +1,43 @@
+{
+ "id": "MAP_NAVEL_ROCK_BASE_PATH_B5F",
+ "name": "NavelRock_BasePath_B5F_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_BASE_PATH_B5F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B4F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B6F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_BasePath_B5F_Frlg/scripts.inc b/data/maps/NavelRock_BasePath_B5F_Frlg/scripts.inc
new file mode 100644
index 000000000000..7c995d7fb14c
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B5F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_BasePath_B5F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_BasePath_B6F_Frlg/map.json b/data/maps/NavelRock_BasePath_B6F_Frlg/map.json
new file mode 100644
index 000000000000..81880bb60a32
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B6F_Frlg/map.json
@@ -0,0 +1,37 @@
+{
+ "id": "MAP_NAVEL_ROCK_BASE_PATH_B6F",
+ "name": "NavelRock_BasePath_B6F_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_BASE_PATH_B6F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B5F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B7F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/NavelRock_BasePath_B6F_Frlg/scripts.inc b/data/maps/NavelRock_BasePath_B6F_Frlg/scripts.inc
new file mode 100644
index 000000000000..d4a630fe610c
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B6F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_BasePath_B6F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_BasePath_B7F_Frlg/map.json b/data/maps/NavelRock_BasePath_B7F_Frlg/map.json
new file mode 100644
index 000000000000..de999a362de5
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B7F_Frlg/map.json
@@ -0,0 +1,37 @@
+{
+ "id": "MAP_NAVEL_ROCK_BASE_PATH_B7F",
+ "name": "NavelRock_BasePath_B7F_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_BASE_PATH_B7F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B6F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B8F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/NavelRock_BasePath_B7F_Frlg/scripts.inc b/data/maps/NavelRock_BasePath_B7F_Frlg/scripts.inc
new file mode 100644
index 000000000000..c75580dc191f
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B7F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_BasePath_B7F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_BasePath_B8F_Frlg/map.json b/data/maps/NavelRock_BasePath_B8F_Frlg/map.json
new file mode 100644
index 000000000000..74a13287b849
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B8F_Frlg/map.json
@@ -0,0 +1,43 @@
+{
+ "id": "MAP_NAVEL_ROCK_BASE_PATH_B8F",
+ "name": "NavelRock_BasePath_B8F_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_BASE_PATH_B8F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B7F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B9F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_BasePath_B8F_Frlg/scripts.inc b/data/maps/NavelRock_BasePath_B8F_Frlg/scripts.inc
new file mode 100644
index 000000000000..1ae7e9b7d5a7
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B8F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_BasePath_B8F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_BasePath_B9F_Frlg/map.json b/data/maps/NavelRock_BasePath_B9F_Frlg/map.json
new file mode 100644
index 000000000000..9ebd5a92985e
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B9F_Frlg/map.json
@@ -0,0 +1,43 @@
+{
+ "id": "MAP_NAVEL_ROCK_BASE_PATH_B9F",
+ "name": "NavelRock_BasePath_B9F_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_BASE_PATH_B9F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B8F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B10F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_BasePath_B9F_Frlg/scripts.inc b/data/maps/NavelRock_BasePath_B9F_Frlg/scripts.inc
new file mode 100644
index 000000000000..f9435beca2db
--- /dev/null
+++ b/data/maps/NavelRock_BasePath_B9F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_BasePath_B9F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_Base_Frlg/map.json b/data/maps/NavelRock_Base_Frlg/map.json
new file mode 100644
index 000000000000..740daa83ab1a
--- /dev/null
+++ b/data/maps/NavelRock_Base_Frlg/map.json
@@ -0,0 +1,50 @@
+{
+ "id": "MAP_NAVEL_ROCK_BASE_FRLG",
+ "name": "NavelRock_Base_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_BASE_FRLG",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "local_id": "LOCALID_NAVEL_ROCK_LUGIA",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LUGIA",
+ "x": 10,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "NavelRock_Base_Frlg_EventScript_Lugia",
+ "flag": "FLAG_HIDE_LUGIA"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 13,
+ "y": 20,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B11F",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_Base_Frlg/scripts.inc b/data/maps/NavelRock_Base_Frlg/scripts.inc
new file mode 100644
index 000000000000..5568a01c5afc
--- /dev/null
+++ b/data/maps/NavelRock_Base_Frlg/scripts.inc
@@ -0,0 +1,76 @@
+NavelRock_Base_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, NavelRock_Base_Frlg_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, NavelRock_Base_Frlg_OnResume
+ .byte 0
+
+NavelRock_Base_Frlg_OnTransition::
+ call_if_set FLAG_FOUGHT_LUGIA, NavelRock_Base_Frlg_EventScript_HideLugia
+ call_if_unset FLAG_FOUGHT_LUGIA, NavelRock_Base_Frlg_EventScript_TryShowLugia
+ end
+
+NavelRock_Base_Frlg_EventScript_HideLugia::
+ setflag FLAG_HIDE_LUGIA
+ return
+
+NavelRock_Base_Frlg_EventScript_TryShowLugia::
+ goto_if_set FLAG_LUGIA_FLEW_AWAY, Common_EventScript_NopReturn
+ clearflag FLAG_HIDE_LUGIA
+ return
+
+NavelRock_Base_Frlg_OnResume::
+ call_if_set FLAG_SYS_CTRL_OBJ_DELETE, NavelRock_Base_Frlg_EventScript_TryRemoveLugia
+ end
+
+NavelRock_Base_Frlg_EventScript_TryRemoveLugia::
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_ne VAR_RESULT, B_OUTCOME_CAUGHT, Common_EventScript_NopReturn
+ removeobject LOCALID_NAVEL_ROCK_LUGIA
+ return
+
+NavelRock_Base_Frlg_EventScript_Lugia::
+ lock
+ faceplayer
+ waitse
+ delay 20
+ playse SE_THUNDERSTORM_STOP
+ setvar VAR_0x8004, 0 @ Vertical pan
+ setvar VAR_0x8005, 3 @ Horizontal pan
+ setvar VAR_0x8006, 4 @ Num shakes
+ setvar VAR_0x8007, 2 @ Shake delay
+ special ShakeScreen
+ delay 30
+ playse SE_THUNDERSTORM_STOP
+ setvar VAR_0x8004, 0 @ Vertical pan
+ setvar VAR_0x8005, 3 @ Horizontal pan
+ setvar VAR_0x8006, 4 @ Num shakes
+ setvar VAR_0x8007, 2 @ Shake delay
+ special ShakeScreen
+ delay 30
+ delay 50
+ waitse
+ playmoncry SPECIES_LUGIA, CRY_MODE_ENCOUNTER
+ waitmoncry
+ delay 20
+ seteventmon SPECIES_LUGIA, 70
+ setflag FLAG_SYS_CTRL_OBJ_DELETE
+ special BattleSetup_StartLegendaryBattle
+ waitstate
+ clearflag FLAG_SYS_CTRL_OBJ_DELETE
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_eq VAR_RESULT, B_OUTCOME_WON, NavelRock_Base_Frlg_EventScript_DefeatedLugia
+ goto_if_eq VAR_RESULT, B_OUTCOME_RAN, NavelRock_Base_Frlg_EventScript_RanFromLugia
+ goto_if_eq VAR_RESULT, B_OUTCOME_PLAYER_TELEPORTED, NavelRock_Base_Frlg_EventScript_RanFromLugia
+ setflag FLAG_FOUGHT_LUGIA
+ release
+ end
+
+NavelRock_Base_Frlg_EventScript_DefeatedLugia::
+ setflag FLAG_LUGIA_FLEW_AWAY
+ setvar VAR_0x8004, SPECIES_LUGIA
+ goto EventScript_MonFlewAway
+ end
+
+NavelRock_Base_Frlg_EventScript_RanFromLugia::
+ setvar VAR_0x8004, SPECIES_LUGIA
+ goto EventScript_MonFlewAway
+ end
diff --git a/data/maps/NavelRock_Exterior_Frlg/map.json b/data/maps/NavelRock_Exterior_Frlg/map.json
new file mode 100644
index 000000000000..933ad0b4aa1b
--- /dev/null
+++ b/data/maps/NavelRock_Exterior_Frlg/map.json
@@ -0,0 +1,43 @@
+{
+ "id": "MAP_NAVEL_ROCK_EXTERIOR_FRLG",
+ "name": "NavelRock_Exterior_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_EXTERIOR_FRLG",
+ "music": "MUS_RG_SEVII_ROUTE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 9,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 9,
+ "y": 16,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_HARBOR_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_Exterior_Frlg/scripts.inc b/data/maps/NavelRock_Exterior_Frlg/scripts.inc
new file mode 100644
index 000000000000..b4be1184aa61
--- /dev/null
+++ b/data/maps/NavelRock_Exterior_Frlg/scripts.inc
@@ -0,0 +1,7 @@
+NavelRock_Exterior_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, NavelRock_Exterior_OnTransition
+ .byte 0
+
+NavelRock_Exterior_Frlg_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_NAVEL_ROCK_EXTERIOR
+ end
diff --git a/data/maps/NavelRock_Fork_Frlg/map.json b/data/maps/NavelRock_Fork_Frlg/map.json
new file mode 100644
index 000000000000..79d68c7a1e33
--- /dev/null
+++ b/data/maps/NavelRock_Fork_Frlg/map.json
@@ -0,0 +1,50 @@
+{
+ "id": "MAP_NAVEL_ROCK_FORK_FRLG",
+ "name": "NavelRock_Fork_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_FORK_FRLG",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 13,
+ "y": 95,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_B1F_FRLG",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 3,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_SUMMIT_PATH_2F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 26,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_BASE_PATH_B1F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_Fork_Frlg/scripts.inc b/data/maps/NavelRock_Fork_Frlg/scripts.inc
new file mode 100644
index 000000000000..cdcd21a7d76e
--- /dev/null
+++ b/data/maps/NavelRock_Fork_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_Fork_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_Harbor_Frlg/map.json b/data/maps/NavelRock_Harbor_Frlg/map.json
new file mode 100644
index 000000000000..052177cf0e07
--- /dev/null
+++ b/data/maps/NavelRock_Harbor_Frlg/map.json
@@ -0,0 +1,63 @@
+{
+ "id": "MAP_NAVEL_ROCK_HARBOR_FRLG",
+ "name": "NavelRock_Harbor_Frlg",
+ "layout": "LAYOUT_ISLAND_HARBOR_FRLG",
+ "music": "MUS_RG_SEVII_ROUTE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SEAGALLOP",
+ "x": 8,
+ "y": 9,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 8,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "NavelRock_Harbor_Frlg_EventScript_Sailor",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_EXTERIOR_FRLG",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_Harbor_Frlg/scripts.inc b/data/maps/NavelRock_Harbor_Frlg/scripts.inc
new file mode 100644
index 000000000000..b921ffacbec8
--- /dev/null
+++ b/data/maps/NavelRock_Harbor_Frlg/scripts.inc
@@ -0,0 +1,15 @@
+NavelRock_Harbor_Frlg_MapScripts::
+ .byte 0
+
+NavelRock_Harbor_Frlg_EventScript_Sailor::
+ lock
+ faceplayer
+ message Text_WhereDoYouWantToSail
+ waitmessage
+ setvar VAR_0x8004, SEAGALLOP_NAVEL_ROCK
+ multichoice 20, 8, MULTI_SEAGALLOP_VERMILION, FALSE
+ switch VAR_RESULT
+ case 0, EventScript_SailToVermilionCity
+ case 1, EventScript_CancelSail
+ case 127, EventScript_CancelSail
+ end
diff --git a/data/maps/NavelRock_SummitPath_2F_Frlg/map.json b/data/maps/NavelRock_SummitPath_2F_Frlg/map.json
new file mode 100644
index 000000000000..04182a5f6ccf
--- /dev/null
+++ b/data/maps/NavelRock_SummitPath_2F_Frlg/map.json
@@ -0,0 +1,43 @@
+{
+ "id": "MAP_NAVEL_ROCK_SUMMIT_PATH_2F",
+ "name": "NavelRock_SummitPath_2F_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_SUMMIT_PATH_2F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_FORK_FRLG",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_SUMMIT_PATH_3F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_SummitPath_2F_Frlg/scripts.inc b/data/maps/NavelRock_SummitPath_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..a11dd2951442
--- /dev/null
+++ b/data/maps/NavelRock_SummitPath_2F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_SummitPath_2F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_SummitPath_3F_Frlg/map.json b/data/maps/NavelRock_SummitPath_3F_Frlg/map.json
new file mode 100644
index 000000000000..b8f81357f4d3
--- /dev/null
+++ b/data/maps/NavelRock_SummitPath_3F_Frlg/map.json
@@ -0,0 +1,43 @@
+{
+ "id": "MAP_NAVEL_ROCK_SUMMIT_PATH_3F",
+ "name": "NavelRock_SummitPath_3F_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_SUMMIT_PATH_3F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_SUMMIT_PATH_2F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_SUMMIT_PATH_4F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_SummitPath_3F_Frlg/scripts.inc b/data/maps/NavelRock_SummitPath_3F_Frlg/scripts.inc
new file mode 100644
index 000000000000..6404da8fab8b
--- /dev/null
+++ b/data/maps/NavelRock_SummitPath_3F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_SummitPath_3F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_SummitPath_4F_Frlg/map.json b/data/maps/NavelRock_SummitPath_4F_Frlg/map.json
new file mode 100644
index 000000000000..0ec5da07f2b2
--- /dev/null
+++ b/data/maps/NavelRock_SummitPath_4F_Frlg/map.json
@@ -0,0 +1,43 @@
+{
+ "id": "MAP_NAVEL_ROCK_SUMMIT_PATH_4F",
+ "name": "NavelRock_SummitPath_4F_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_SUMMIT_PATH_4F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_SUMMIT_PATH_3F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_SUMMIT_PATH_5F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_SummitPath_4F_Frlg/scripts.inc b/data/maps/NavelRock_SummitPath_4F_Frlg/scripts.inc
new file mode 100644
index 000000000000..66e8bbf4fb0e
--- /dev/null
+++ b/data/maps/NavelRock_SummitPath_4F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_SummitPath_4F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_SummitPath_5F_Frlg/map.json b/data/maps/NavelRock_SummitPath_5F_Frlg/map.json
new file mode 100644
index 000000000000..3ed17e82a82f
--- /dev/null
+++ b/data/maps/NavelRock_SummitPath_5F_Frlg/map.json
@@ -0,0 +1,43 @@
+{
+ "id": "MAP_NAVEL_ROCK_SUMMIT_PATH_5F",
+ "name": "NavelRock_SummitPath_5F_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_SUMMIT_PATH_5F",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_SUMMIT_PATH_4F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_SUMMIT",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/NavelRock_SummitPath_5F_Frlg/scripts.inc b/data/maps/NavelRock_SummitPath_5F_Frlg/scripts.inc
new file mode 100644
index 000000000000..7aff9939b528
--- /dev/null
+++ b/data/maps/NavelRock_SummitPath_5F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+NavelRock_SummitPath_5F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/NavelRock_Summit_Frlg/map.json b/data/maps/NavelRock_Summit_Frlg/map.json
new file mode 100644
index 000000000000..c2bd6d4dc779
--- /dev/null
+++ b/data/maps/NavelRock_Summit_Frlg/map.json
@@ -0,0 +1,67 @@
+{
+ "id": "MAP_NAVEL_ROCK_SUMMIT",
+ "name": "NavelRock_Summit_Frlg",
+ "layout": "LAYOUT_NAVEL_ROCK_SUMMIT",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_NAVEL_ROCK_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_SHADE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "local_id": "LOCALID_NAVEL_ROCK_HO_OH",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HOOH",
+ "x": 9,
+ "y": 6,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_HO_OH"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 10,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_NAVEL_ROCK_SUMMIT_PATH_5F",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 12,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "NavelRock_Summit_EventScript_HoOh"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 9,
+ "y": 11,
+ "elevation": 3,
+ "item": "ITEM_SACRED_ASH",
+ "flag": "FLAG_HIDDEN_ITEM_NAVEL_ROCK_SUMMIT_SACRED_ASH",
+ "quantity": 1,
+ "underfoot": true
+ }
+ ]
+}
diff --git a/data/maps/NavelRock_Summit_Frlg/scripts.inc b/data/maps/NavelRock_Summit_Frlg/scripts.inc
new file mode 100644
index 000000000000..637812dacf4f
--- /dev/null
+++ b/data/maps/NavelRock_Summit_Frlg/scripts.inc
@@ -0,0 +1,115 @@
+NavelRock_Summit_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, NavelRock_Summit_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, NavelRock_Summit_OnResume
+ .byte 0
+
+NavelRock_Summit_OnTransition::
+ call_if_set FLAG_FOUGHT_HO_OH, NavelRock_Summit_EventScript_HideHoOh
+ call_if_unset FLAG_FOUGHT_HO_OH, NavelRock_Summit_EventScript_TryShowHoOh
+ end
+
+NavelRock_Summit_EventScript_HideHoOh::
+ setvar VAR_TEMP_1, 1
+ setflag FLAG_HIDE_HO_OH
+ return
+
+NavelRock_Summit_EventScript_TryShowHoOh::
+ setvar VAR_TEMP_1, 1
+ goto_if_set FLAG_HO_OH_FLEW_AWAY, Common_EventScript_NopReturn
+ setvar VAR_TEMP_1, 0
+ clearflag FLAG_HIDE_HO_OH
+ return
+
+NavelRock_Summit_OnResume::
+ call_if_set FLAG_SYS_CTRL_OBJ_DELETE, NavelRock_Summit_EventScript_TryRemoveHoOh
+ end
+
+NavelRock_Summit_EventScript_TryRemoveHoOh::
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_ne VAR_RESULT, B_OUTCOME_CAUGHT, Common_EventScript_NopReturn
+ removeobject LOCALID_NAVEL_ROCK_HO_OH
+ return
+
+NavelRock_Summit_EventScript_HoOh::
+ lockall
+ setvar VAR_TEMP_1, 1
+ special SpawnCameraObject
+ setvar VAR_0x8004, 3 @ Num loops
+ setvar VAR_0x8005, 35 @ Delay
+ special LoopWingFlapSE
+ applymovement LOCALID_NAVEL_ROCK_HO_OH, Movement_HoOhAppear
+ applymovement LOCALID_CAMERA, Movement_CameraPanUp
+ waitmovement 0
+ delay 50
+ setweather 0
+ doweather
+ waitse
+ playmoncry SPECIES_HO_OH, CRY_MODE_ENCOUNTER
+ delay 30
+ waitmoncry
+ delay 60
+ setvar VAR_0x8004, 3 @ Num loops
+ setvar VAR_0x8005, 35 @ Delay
+ special LoopWingFlapSE
+ applymovement LOCALID_CAMERA, Movement_CameraPanDown
+ applymovement LOCALID_NAVEL_ROCK_HO_OH, Movement_HoOhApproach
+ waitmovement 0
+ special RemoveCameraObject
+ seteventmon SPECIES_HO_OH, 70
+ setflag FLAG_SYS_CTRL_OBJ_DELETE
+ special BattleSetup_StartLegendaryBattle
+ waitstate
+ clearflag FLAG_SYS_CTRL_OBJ_DELETE
+ setvar VAR_LAST_TALKED, LOCALID_NAVEL_ROCK_HO_OH
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_eq VAR_RESULT, B_OUTCOME_WON, NavelRock_Summit_EventScript_DefeatedHoOh
+ goto_if_eq VAR_RESULT, B_OUTCOME_RAN, NavelRock_Summit_EventScript_RanFromHoOh
+ goto_if_eq VAR_RESULT, B_OUTCOME_PLAYER_TELEPORTED, NavelRock_Summit_EventScript_RanFromHoOh
+ setflag FLAG_FOUGHT_HO_OH
+ releaseall
+ end
+
+NavelRock_Summit_EventScript_DefeatedHoOh::
+ setflag FLAG_HO_OH_FLEW_AWAY
+ setvar VAR_0x8004, SPECIES_HO_OH
+ goto EventScript_MonFlewAway
+ end
+
+NavelRock_Summit_EventScript_RanFromHoOh::
+ setvar VAR_0x8004, SPECIES_HO_OH
+ goto EventScript_MonFlewAway
+ end
+
+Movement_CameraPanUp:
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+Movement_CameraPanDown:
+ delay_16
+ delay_16
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+Movement_HoOhApproach:
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_in_place_down
+ delay_16
+ delay_16
+ step_end
+
+Movement_HoOhAppear:
+ delay_16
+ delay_16
+ walk_in_place_down
+ walk_in_place_down
+ walk_in_place_down
+ walk_in_place_down
+ step_end
diff --git a/data/maps/OneIsland_Frlg/map.json b/data/maps/OneIsland_Frlg/map.json
new file mode 100644
index 000000000000..311456f3de1a
--- /dev/null
+++ b/data/maps/OneIsland_Frlg/map.json
@@ -0,0 +1,125 @@
+{
+ "id": "MAP_ONE_ISLAND",
+ "name": "OneIsland_Frlg",
+ "layout": "LAYOUT_ONE_ISLAND",
+ "music": "MUS_RG_SEVII_123",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ONE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ONE_ISLAND_TREASURE_BEACH",
+ "offset": 0,
+ "direction": "down"
+ },
+ {
+ "map": "MAP_ONE_ISLAND_KINDLE_ROAD",
+ "offset": -120,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "local_id": "LOCALID_ONE_ISLAND_BILL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BILL",
+ "x": 12,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_ONE_ISLAND_BILL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 16,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_EventScript_OldMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 13,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_EventScript_BaldingMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 14,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_ONE_ISLAND_POKEMON_CENTER_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 19,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_ONE_ISLAND_HOUSE1",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 8,
+ "y": 11,
+ "elevation": 0,
+ "dest_map": "MAP_ONE_ISLAND_HOUSE2",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 12,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_ONE_ISLAND_HARBOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 14,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "OneIsland_EventScript_IslandSign"
+ },
+ {
+ "type": "sign",
+ "x": 15,
+ "y": 6,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "OneIsland_EventScript_PokemonNetCenterSign"
+ }
+ ]
+}
diff --git a/data/maps/OneIsland_Frlg/scripts.inc b/data/maps/OneIsland_Frlg/scripts.inc
new file mode 100644
index 000000000000..878d864f360b
--- /dev/null
+++ b/data/maps/OneIsland_Frlg/scripts.inc
@@ -0,0 +1,169 @@
+OneIsland_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, OneIsland_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, OneIsland_OnFrame
+ .byte 0
+
+OneIsland_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_ONE_ISLAND
+ end
+
+OneIsland_OnFrame::
+ map_script_2 VAR_MAP_SCENE_ONE_ISLAND_HARBOR, 2, OneIsland_EventScript_EnterOneIslandFirstTime
+ .2byte 0
+
+OneIsland_EventScript_EnterOneIslandFirstTime::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_PLAYER, OneIsland_Movement_PlayerExitHarbor
+ waitmovement 0
+ msgbox OneIsland_Text_BillLetsGoSeeCelio
+ closemessage
+ applymovement LOCALID_ONE_ISLAND_BILL, OneIsland_Movement_BillWalkToPokeCenter
+ applymovement LOCALID_PLAYER, OneIsland_Movement_PlayerWalkToPokeCenter
+ waitmovement 0
+ opendoor 14, 5
+ waitdooranim
+ applymovement LOCALID_ONE_ISLAND_BILL, OneIsland_Movement_BillEnterPokeCenter
+ applymovement LOCALID_PLAYER, OneIsland_Movement_PlayerEnterPokeCenter
+ waitmovement 0
+ closedoor 14, 5
+ waitdooranim
+ removeobject LOCALID_ONE_ISLAND_BILL
+ setvar VAR_MAP_SCENE_ONE_ISLAND_HARBOR, 3
+ warp MAP_ONE_ISLAND_POKEMON_CENTER_1F, 9, 9
+ waitstate
+ releaseall
+ end
+
+ .macro walk_to_pokecenter
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_right
+ walk_right
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ .endm
+
+OneIsland_Movement_PlayerWalkToPokeCenter::
+ walk_up
+ walk_to_pokecenter
+ step_end
+
+OneIsland_Movement_PlayerEnterPokeCenter::
+ walk_up
+ walk_up
+ set_invisible
+ step_end
+
+OneIsland_Movement_PlayerExitHarbor::
+ walk_up
+ step_end
+
+OneIsland_Movement_BillWalkToPokeCenter::
+ walk_to_pokecenter
+ walk_up
+ step_end
+
+OneIsland_Movement_BillEnterPokeCenter::
+ walk_up
+ set_invisible
+ step_end
+
+OneIsland_EventScript_OldMan::
+ lock
+ faceplayer
+ goto_if_set FLAG_IS_CHAMPION, OneIsland_EventScript_OldManLinkHoenn
+ goto_if_set FLAG_SEVII_DETOUR_FINISHED, OneIsland_EventScript_OldManLinkKanto
+ msgbox OneIsland_Text_LuckyToHaveCelioHere
+ release
+ end
+
+OneIsland_EventScript_OldManLinkKanto::
+ msgbox OneIsland_Text_HavePCLinkageWithKanto
+ release
+ end
+
+OneIsland_EventScript_OldManLinkHoenn::
+ msgbox OneIsland_Text_HavePCLinkageWithHoenn
+ release
+ end
+
+OneIsland_EventScript_BaldingMan::
+ msgbox OneIsland_Text_IsntWarmClimateHereGreat, MSGBOX_NPC
+ end
+
+OneIsland_EventScript_IslandSign::
+ msgbox OneIsland_Text_IslandSign, MSGBOX_SIGN
+ end
+
+OneIsland_EventScript_PokemonNetCenterSign::
+ msgbox OneIsland_Text_PokemonNetCenterSign, MSGBOX_SIGN
+ end
+
+OneIsland_Text_BillLetsGoSeeCelio::
+ .string "BILL: Here we are!\n"
+ .string "This is ONE ISLAND.\p"
+ .string "There are several islands around\n"
+ .string "here, and this is one of them.\p"
+ .string "My friend CELIO sent the boat to\n"
+ .string "fetch me here.\p"
+ .string "He's in charge of the island's PC\n"
+ .string "network by his lonesome.\p"
+ .string "…Why am I telling you this now?\n"
+ .string "Let's just go see CELIO!$"
+
+Text_WhereDoYouWantToSail::
+ .string "Ahoy, there!\n"
+ .string "Where do you want to sail?$"
+
+OneIsland_Text_LuckyToHaveCelioHere::
+ .string "Here we are on an island smack in\n"
+ .string "the middle of nowhere.\p"
+ .string "We're lucky to have an upstanding\n"
+ .string "young man like CELIO here.\p"
+ .string "My granddaughter was in a tizzy\n"
+ .string "over CELIO's friend.\p"
+ .string "Something about a famous\n"
+ .string "POKéMANIAC?\p"
+ .string "I'm not sure what that means, but\n"
+ .string "CELIO is quite the man!$"
+
+OneIsland_Text_HavePCLinkageWithKanto::
+ .string "My granddaughter was in a tizzy\n"
+ .string "over a new breakthrough.\p"
+ .string "She said we now have PC linkage\n"
+ .string "with people in KANTO.\p"
+ .string "I'm not sure what that means, but\n"
+ .string "CELIO is quite the man!$"
+
+OneIsland_Text_HavePCLinkageWithHoenn::
+ .string "My granddaughter was in a tizzy\n"
+ .string "over a new breakthrough.\p"
+ .string "She said we finally have PC linkage\n"
+ .string "with people in HOENN.\p"
+ .string "I'm not sure what that means, but\n"
+ .string "CELIO is quite the man.\p"
+ .string "He would make a fine husband for\n"
+ .string "my granddaughter!$"
+
+OneIsland_Text_IslandSign::
+ .string "ONE ISLAND\n"
+ .string "Friends Gather at Knot Island$"
+
+OneIsland_Text_PokemonNetCenterSign::
+ .string "Expanding the POKéMON World!\n"
+ .string "POKéMON NET CENTER$"
+
+@ Unused
+OneIsland_Text_ReturnToCinnabar::
+ .string "グレンタウンに もどりますか?$"
+
+OneIsland_Text_IsntWarmClimateHereGreat::
+ .string "Hi, sight-seeing, are you?\n"
+ .string "Isn't the warm climate here great?$"
+
diff --git a/data/maps/OneIsland_Harbor_Frlg/map.json b/data/maps/OneIsland_Harbor_Frlg/map.json
new file mode 100644
index 000000000000..77f0abbd5c7f
--- /dev/null
+++ b/data/maps/OneIsland_Harbor_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_ONE_ISLAND_HARBOR",
+ "name": "OneIsland_Harbor_Frlg",
+ "layout": "LAYOUT_ISLAND_HARBOR_FRLG",
+ "music": "MUS_RG_SEVII_123",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ONE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SEAGALLOP",
+ "x": 8,
+ "y": 9,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 8,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_Harbor_EventScript_Sailor",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_ONE_ISLAND",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/OneIsland_Harbor_Frlg/scripts.inc b/data/maps/OneIsland_Harbor_Frlg/scripts.inc
new file mode 100644
index 000000000000..fdf9418d18a0
--- /dev/null
+++ b/data/maps/OneIsland_Harbor_Frlg/scripts.inc
@@ -0,0 +1,42 @@
+OneIsland_Harbor_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, OneIsland_Harbor_OnWarp
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, OneIsland_Harbor_OnFrame
+ .byte 0
+
+OneIsland_Harbor_OnWarp::
+ map_script_2 VAR_MAP_SCENE_ONE_ISLAND_HARBOR, 1, OneIsland_Harbor_EventScript_TurnPlayerNorth
+ .2byte 0
+
+OneIsland_Harbor_EventScript_TurnPlayerNorth::
+ turnobject LOCALID_PLAYER, DIR_NORTH
+ end
+
+OneIsland_Harbor_OnFrame::
+ map_script_2 VAR_MAP_SCENE_ONE_ISLAND_HARBOR, 1, OneIsland_Harbor_EventScript_PlayerEnterHarborFirstTime
+ .2byte 0
+
+OneIsland_Harbor_EventScript_PlayerEnterHarborFirstTime::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_PLAYER, OneIsland_Harbor_Movement_PlayerExitHarbor
+ waitmovement 0
+ setvar VAR_MAP_SCENE_ONE_ISLAND_HARBOR, 2
+ warp MAP_ONE_ISLAND, 12, 18
+ waitstate
+ releaseall
+ end
+
+OneIsland_Harbor_Movement_PlayerExitHarbor::
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+OneIsland_Harbor_EventScript_Sailor::
+ lock
+ faceplayer
+ message Text_WhereDoYouWantToSail
+ waitmessage
+ setvar VAR_0x8004, SEAGALLOP_ONE_ISLAND
+ goto EventScript_ChooseDestFromOneIsland
+ end
diff --git a/data/maps/OneIsland_House1_Frlg/map.json b/data/maps/OneIsland_House1_Frlg/map.json
new file mode 100644
index 000000000000..7f9ad96bc7e1
--- /dev/null
+++ b/data/maps/OneIsland_House1_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_ONE_ISLAND_HOUSE1",
+ "name": "OneIsland_House1_Frlg",
+ "layout": "LAYOUT_HOUSE3_FRLG",
+ "music": "MUS_RG_SEVII_123",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ONE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 4,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_House1_EventScript_OldMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_WOMAN_FRLG",
+ "x": 7,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_House1_EventScript_OldWoman",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_ONE_ISLAND",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/OneIsland_House1_Frlg/scripts.inc b/data/maps/OneIsland_House1_Frlg/scripts.inc
new file mode 100644
index 000000000000..7d3d12cd48cf
--- /dev/null
+++ b/data/maps/OneIsland_House1_Frlg/scripts.inc
@@ -0,0 +1,20 @@
+OneIsland_House1_Frlg_MapScripts::
+ .byte 0
+
+OneIsland_House1_EventScript_OldMan::
+ msgbox OneIsland_House1_Text_GazeUponVolcanoOnSunnyDays, MSGBOX_NPC
+ end
+
+OneIsland_House1_EventScript_OldWoman::
+ msgbox OneIsland_House1_Text_LastTimeMtEmberErupted, MSGBOX_NPC
+ end
+
+OneIsland_House1_Text_GazeUponVolcanoOnSunnyDays::
+ .string "On sunny days, I step out and gaze\n"
+ .string "upon the volcano.\p"
+ .string "That's my daily routine.$"
+
+OneIsland_House1_Text_LastTimeMtEmberErupted::
+ .string "Let me think… When was the last\n"
+ .string "time MT. EMBER erupted?$"
+
diff --git a/data/maps/OneIsland_House2_Frlg/map.json b/data/maps/OneIsland_House2_Frlg/map.json
new file mode 100644
index 000000000000..20d0a436e413
--- /dev/null
+++ b/data/maps/OneIsland_House2_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_ONE_ISLAND_HOUSE2",
+ "name": "OneIsland_House2_Frlg",
+ "layout": "LAYOUT_HOUSE3_FRLG",
+ "music": "MUS_RG_SEVII_123",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ONE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 9,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_House2_EventScript_Lass",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_ONE_ISLAND",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/OneIsland_House2_Frlg/scripts.inc b/data/maps/OneIsland_House2_Frlg/scripts.inc
new file mode 100644
index 000000000000..e2ffcc68cf53
--- /dev/null
+++ b/data/maps/OneIsland_House2_Frlg/scripts.inc
@@ -0,0 +1,12 @@
+OneIsland_House2_Frlg_MapScripts::
+ .byte 0
+
+OneIsland_House2_EventScript_Lass::
+ msgbox OneIsland_House2_Text_IWantToStayHereForever, MSGBOX_NPC
+ end
+
+OneIsland_House2_Text_IWantToStayHereForever::
+ .string "Young people all want to go off to\n"
+ .string "big cities.\p"
+ .string "But I want to stay here forever!$"
+
diff --git a/data/maps/OneIsland_KindleRoad_EmberSpa_Frlg/map.json b/data/maps/OneIsland_KindleRoad_EmberSpa_Frlg/map.json
new file mode 100644
index 000000000000..a4e2d5614f8a
--- /dev/null
+++ b/data/maps/OneIsland_KindleRoad_EmberSpa_Frlg/map.json
@@ -0,0 +1,127 @@
+{
+ "id": "MAP_ONE_ISLAND_KINDLE_ROAD_EMBER_SPA",
+ "name": "OneIsland_KindleRoad_EmberSpa_Frlg",
+ "layout": "LAYOUT_ONE_ISLAND_KINDLE_ROAD_EMBER_SPA",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_EMBER_SPA",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 11,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_KindleRoad_EmberSpa_EventScript_OldMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 15,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_KindleRoad_EmberSpa_EventScript_BaldingMan1",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_KindleRoad_EmberSpa_EventScript_BlackBelt",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_WOMAN_FRLG",
+ "x": 20,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_KindleRoad_EmberSpa_EventScript_OldWoman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 10,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_KindleRoad_EmberSpa_EventScript_RockSmashMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 11,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_KindleRoad_EmberSpa_EventScript_BaldingMan2",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 13,
+ "y": 36,
+ "elevation": 3,
+ "dest_map": "MAP_ONE_ISLAND_KINDLE_ROAD",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 13,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "OneIsland_KindleRoad_EmberSpa_EventScript_SpaHeal"
+ }
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/OneIsland_KindleRoad_EmberSpa_Frlg/scripts.inc b/data/maps/OneIsland_KindleRoad_EmberSpa_Frlg/scripts.inc
new file mode 100644
index 000000000000..ec246e1138d3
--- /dev/null
+++ b/data/maps/OneIsland_KindleRoad_EmberSpa_Frlg/scripts.inc
@@ -0,0 +1,107 @@
+OneIsland_KindleRoad_EmberSpa_Frlg_MapScripts::
+ .byte 0
+
+OneIsland_KindleRoad_EmberSpa_EventScript_OldMan::
+ msgbox OneIsland_KindleRoad_EmberSpa_Text_WaterWarmsMeToCore, MSGBOX_NPC
+ end
+
+OneIsland_KindleRoad_EmberSpa_EventScript_BaldingMan1::
+ msgbox OneIsland_KindleRoad_EmberSpa_Text_EnjoyBowlOfChowder, MSGBOX_NPC
+ end
+
+OneIsland_KindleRoad_EmberSpa_EventScript_BaldingMan2::
+ msgbox OneIsland_KindleRoad_EmberSpa_Text_HotSpringIsTherapeutic, MSGBOX_NPC
+ end
+
+OneIsland_KindleRoad_EmberSpa_EventScript_OldWoman::
+ msgbox OneIsland_KindleRoad_EmberSpa_Text_SeeHowSmoothMySkinIs, MSGBOX_NPC
+ end
+
+OneIsland_KindleRoad_EmberSpa_EventScript_BlackBelt::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_BRUNO, 3
+ msgbox OneIsland_KindleRoad_EmberSpa_Text_BrunoVisitsSpaOnOccasion
+ release
+ end
+
+OneIsland_KindleRoad_EmberSpa_EventScript_RockSmashMan::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_HM06, OneIsland_KindleRoad_EmberSpa_EventScript_AlreadyGotHM06
+ msgbox OneIsland_KindleRoad_EmberSpa_Text_UsedThisToMakeEmberSpa
+ giveitem ITEM_HM06
+ setflag FLAG_GOT_HM06
+ msgbox OneIsland_KindleRoad_EmberSpa_Text_ExplainHM06
+ release
+ end
+
+OneIsland_KindleRoad_EmberSpa_EventScript_AlreadyGotHM06::
+ msgbox OneIsland_KindleRoad_EmberSpa_Text_ExplainHM06
+ release
+ end
+
+OneIsland_KindleRoad_EmberSpa_EventScript_SpaHeal::
+ lockall
+ fadescreen FADE_TO_WHITE
+ special HealPlayerParty
+ fadescreen FADE_FROM_WHITE
+ msgbox OneIsland_KindleRoad_EmberSpa_Text_WaterExquisiteFullyRefreshed
+ setvar VAR_TEMP_1, 1
+ releaseall
+ end
+
+OneIsland_KindleRoad_EmberSpa_Text_WaterWarmsMeToCore::
+ .string "Hm!\n"
+ .string "Haaaaaaaaaaah!\p"
+ .string "Aaaah! This is heavenly!\n"
+ .string "The water warms me to my core!\p"
+ .string "You should jump in, too.\p"
+ .string "Go to the middle, relax, and get\n"
+ .string "good and warm!$"
+
+OneIsland_KindleRoad_EmberSpa_Text_EnjoyBowlOfChowder::
+ .string "My favorite part of bathing comes\n"
+ .string "up right after this.\p"
+ .string "I enjoy a bowl of chowder to\n"
+ .string "warm me from the inside, too!$"
+
+OneIsland_KindleRoad_EmberSpa_Text_WaterExquisiteFullyRefreshed::
+ .string "The water is perfectly warm.\n"
+ .string "It feels exquisite…\p"
+ .string "{PLAYER} and the POKéMON were\n"
+ .string "fully refreshed!$"
+
+OneIsland_KindleRoad_EmberSpa_Text_HotSpringIsTherapeutic::
+ .string "Soaking in a hot spring pool is\n"
+ .string "therapeutic, people say.$"
+
+OneIsland_KindleRoad_EmberSpa_Text_SeeHowSmoothMySkinIs::
+ .string "Have a look at my face.\n"
+ .string "See how smooth my skin is?\p"
+ .string "The hot spring's water keeps my\n"
+ .string "skin younger than my age.$"
+
+OneIsland_KindleRoad_EmberSpa_Text_BrunoVisitsSpaOnOccasion::
+ .string "After an honest day of training,\n"
+ .string "nothing beats a relaxing soak in\l"
+ .string "the hot spring pool.\p"
+ .string "BRUNO, who's a senior ahead of me,\n"
+ .string "visits the SPA on occasion.\p"
+ .string "He comes to rehab injuries, both\n"
+ .string "his own and his POKéMON's.$"
+
+OneIsland_KindleRoad_EmberSpa_Text_UsedThisToMakeEmberSpa::
+ .string "Hot springs go hand-in-hand with\n"
+ .string "volcanoes.\p"
+ .string "The EMBER SPA here, well,\n"
+ .string "I made it years ago.\p"
+ .string "I hewed the pool right out of a\n"
+ .string "gigantic boulder by hand.\p"
+ .string "I was using this at the time.\n"
+ .string "I suppose I can part with it.$"
+
+OneIsland_KindleRoad_EmberSpa_Text_ExplainHM06::
+ .string "That shatters boulders as if they\n"
+ .string "were made of crackers.$"
+
diff --git a/data/maps/OneIsland_KindleRoad_Frlg/map.json b/data/maps/OneIsland_KindleRoad_Frlg/map.json
new file mode 100644
index 000000000000..4aaaf96d30e0
--- /dev/null
+++ b/data/maps/OneIsland_KindleRoad_Frlg/map.json
@@ -0,0 +1,476 @@
+{
+ "id": "MAP_ONE_ISLAND_KINDLE_ROAD",
+ "name": "OneIsland_KindleRoad_Frlg",
+ "layout": "LAYOUT_ONE_ISLAND_KINDLE_ROAD",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_KINDLE_ROAD",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ONE_ISLAND",
+ "offset": 120,
+ "direction": "left"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_F_WATER",
+ "x": 11,
+ "y": 32,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "OneIsland_KindleRoad_EventScript_Maria",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_F_LAND",
+ "x": 17,
+ "y": 132,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "OneIsland_KindleRoad_EventScript_Abigail",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_WATER",
+ "x": 7,
+ "y": 39,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_LEFT_UP",
+ "movement_range_x": 6,
+ "movement_range_y": 3,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "OneIsland_KindleRoad_EventScript_Finn",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_LAND",
+ "x": 19,
+ "y": 79,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "OneIsland_KindleRoad_EventScript_Garrett",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 15,
+ "y": 25,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_KindleRoad_EventScript_Tommy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BATTLE_GIRL",
+ "x": 9,
+ "y": 53,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 7,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "OneIsland_KindleRoad_EventScript_Sharon",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BATTLE_GIRL",
+ "x": 18,
+ "y": 105,
+ "elevation": 4,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_UP_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 4,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "OneIsland_KindleRoad_EventScript_Tanya",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 16,
+ "y": 64,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_LEFT_AND_RIGHT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "OneIsland_KindleRoad_EventScript_Shea",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 11,
+ "y": 64,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_RIGHT_AND_LEFT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "OneIsland_KindleRoad_EventScript_Hugh",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CAMPER_FRLG",
+ "x": 11,
+ "y": 89,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "OneIsland_KindleRoad_EventScript_Bryce",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 9,
+ "y": 108,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "OneIsland_KindleRoad_EventScript_Claire",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 8,
+ "y": 68,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "OneIsland_KindleRoad_EventScript_Mik",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BATTLE_GIRL",
+ "x": 9,
+ "y": 68,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "OneIsland_KindleRoad_EventScript_Kia",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 8,
+ "y": 104,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 11,
+ "y": 95,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_15"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 12,
+ "y": 96,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_16"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 10,
+ "y": 95,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_17"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 9,
+ "y": 105,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_18"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 15,
+ "y": 75,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_19"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 9,
+ "y": 84,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_1A"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 15,
+ "y": 74,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_1B"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 15,
+ "y": 73,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_1C"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 18,
+ "y": 111,
+ "elevation": 4,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_1D"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 10,
+ "y": 86,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_1E"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 9,
+ "y": 110,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_1F"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 18,
+ "y": 112,
+ "elevation": 4,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_11"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 15,
+ "y": 70,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_KindleRoad_EventScript_ItemEther",
+ "flag": "FLAG_HIDE_ONE_ISLAND_KINDLE_ROAD_ETHER"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 17,
+ "y": 103,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_KindleRoad_EventScript_ItemMaxRepel",
+ "flag": "FLAG_HIDE_ONE_ISLAND_KINDLE_ROAD_MAX_REPEL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 18,
+ "y": 114,
+ "elevation": 4,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_KindleRoad_EventScript_ItemCarbos",
+ "flag": "FLAG_HIDE_ONE_ISLAND_KINDLE_ROAD_CARBOS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_MT_EMBER_EXTERIOR",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 12,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_MT_EMBER_EXTERIOR",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 15,
+ "y": 58,
+ "elevation": 3,
+ "dest_map": "MAP_ONE_ISLAND_KINDLE_ROAD_EMBER_SPA",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 13,
+ "y": 59,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "OneIsland_KindleRoad_EventScript_EmberSpaSign"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 115,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "OneIsland_KindleRoad_EventScript_RouteSign"
+ }
+ ]
+}
diff --git a/data/maps/OneIsland_KindleRoad_Frlg/scripts.inc b/data/maps/OneIsland_KindleRoad_Frlg/scripts.inc
new file mode 100644
index 000000000000..dc1957ff3aef
--- /dev/null
+++ b/data/maps/OneIsland_KindleRoad_Frlg/scripts.inc
@@ -0,0 +1,175 @@
+OneIsland_KindleRoad_Frlg_MapScripts::
+ .byte 0
+
+OneIsland_KindleRoad_EventScript_RouteSign::
+ msgbox OneIsland_KindleRoad_Text_RouteSign, MSGBOX_SIGN
+ end
+
+OneIsland_KindleRoad_EventScript_EmberSpaSign::
+ msgbox OneIsland_KindleRoad_Text_EmberSpaSign, MSGBOX_SIGN
+ end
+
+OneIsland_KindleRoad_Text_MariaIntro::
+ .string "The weather's gorgeous!\n"
+ .string "Perfect for a battle!$"
+
+OneIsland_KindleRoad_Text_MariaDefeat::
+ .string "Aiyeeeeh!$"
+
+OneIsland_KindleRoad_Text_MariaPostBattle::
+ .string "Please don't splash my face!\n"
+ .string "You'll ruin the makeup.$"
+
+OneIsland_KindleRoad_Text_AbigailIntro::
+ .string "I'm beginning to get a sunburn…$"
+
+OneIsland_KindleRoad_Text_AbigailDefeat::
+ .string "Oh, you're so awful.$"
+
+OneIsland_KindleRoad_Text_AbigailPostBattle::
+ .string "I like that cap you have.\n"
+ .string "Maybe I should wear one, too…$"
+
+OneIsland_KindleRoad_Text_FinnIntro::
+ .string "Seen from here, MT. EMBER towers\n"
+ .string "into the sky.$"
+
+OneIsland_KindleRoad_Text_FinnDefeat::
+ .string "Well, aren't you tough?$"
+
+OneIsland_KindleRoad_Text_FinnPostBattle::
+ .string "The sky is immense around these\n"
+ .string "parts.$"
+
+OneIsland_KindleRoad_Text_GarrettIntro::
+ .string "I took a break from swimming,\n"
+ .string "only to have you challenge me?$"
+
+OneIsland_KindleRoad_Text_GarrettDefeat::
+ .string "Hey, what the…\n"
+ .string "You're good, you!$"
+
+OneIsland_KindleRoad_Text_GarrettPostBattle::
+ .string "Instead of using SURF all the time,\n"
+ .string "you should swim some.$"
+
+OneIsland_KindleRoad_Text_TommyIntro::
+ .string "Wait! Wait a second!\n"
+ .string "I think I've hooked a big one!$"
+
+OneIsland_KindleRoad_Text_TommyDefeat::
+ .string "I've lost it all again…$"
+
+OneIsland_KindleRoad_Text_TommyPostBattle::
+ .string "Not only did I lose, the big one\n"
+ .string "got away from me, too!$"
+
+OneIsland_KindleRoad_Text_SharonIntro::
+ .string "Could you help me out with my\n"
+ .string "training?$"
+
+OneIsland_KindleRoad_Text_SharonDefeat::
+ .string "You were a cut above me.$"
+
+OneIsland_KindleRoad_Text_SharonPostBattle::
+ .string "It's clear that you're skilled.\n"
+ .string "I like you!$"
+
+OneIsland_KindleRoad_Text_TanyaIntro::
+ .string "There isn't a day in which we don't\n"
+ .string "train!$"
+
+OneIsland_KindleRoad_Text_TanyaDefeat::
+ .string "I'm such a fool!$"
+
+OneIsland_KindleRoad_Text_TanyaPostBattle::
+ .string "I'll train even harder from now on!$"
+
+OneIsland_KindleRoad_Text_SheaIntro::
+ .string "Every morning, before breakfast,\n"
+ .string "I swim around this island.$"
+
+OneIsland_KindleRoad_Text_SheaDefeat::
+ .string "Gasp…\n"
+ .string "Gasp…$"
+
+OneIsland_KindleRoad_Text_SheaPostBattle::
+ .string "I lost because I'm pooped from all\n"
+ .string "the running I did…$"
+
+OneIsland_KindleRoad_Text_HughIntro::
+ .string "Dress appropriately for battle!\n"
+ .string "Lose that frivolous outfit!$"
+
+OneIsland_KindleRoad_Text_HughDefeat::
+ .string "Why me?!$"
+
+OneIsland_KindleRoad_Text_HughPostBattle::
+ .string "Even martial artists are becoming\n"
+ .string "fashion conscious these days…$"
+
+OneIsland_KindleRoad_Text_BryceIntro::
+ .string "You know, everything tastes great\n"
+ .string "when you're out in the wild.$"
+
+OneIsland_KindleRoad_Text_BryceDefeat::
+ .string "Awww, blown!$"
+
+OneIsland_KindleRoad_Text_BrycePostBattle::
+ .string "The water in volcanic regions is\n"
+ .string "delicious.$"
+
+OneIsland_KindleRoad_Text_ClaireIntro::
+ .string "My lunch filled us up, so will you\n"
+ .string "battle us for some exercise?$"
+
+OneIsland_KindleRoad_Text_ClaireDefeat::
+ .string "That made me all sweaty.$"
+
+OneIsland_KindleRoad_Text_ClairePostBattle::
+ .string "What should I do?\n"
+ .string "I feel famished again.$"
+
+OneIsland_KindleRoad_Text_KiaIntro::
+ .string "KIA: My big brother and I make\n"
+ .string "an awesome combination!$"
+
+OneIsland_KindleRoad_Text_KiaDefeat::
+ .string "KIA: Huh?!\n"
+ .string "I can't believe it!$"
+
+OneIsland_KindleRoad_Text_KiaPostBattle::
+ .string "KIA: How could there be anyone\n"
+ .string "better than my big brother?$"
+
+OneIsland_KindleRoad_Text_KiaNotEnoughMons::
+ .string "KIA: If you want to battle with\n"
+ .string "us, you have to bring at least two\l"
+ .string "POKéMON with you.$"
+
+OneIsland_KindleRoad_Text_MikIntro::
+ .string "MIK: Together with KIA, I'm afraid\n"
+ .string "of nothing!$"
+
+OneIsland_KindleRoad_Text_MikDefeat::
+ .string "MIK: Whoa!\n"
+ .string "That's too much!$"
+
+OneIsland_KindleRoad_Text_MikPostBattle::
+ .string "MIK: How could my combination\n"
+ .string "with KIA fail?$"
+
+OneIsland_KindleRoad_Text_MikNotEnoughMons::
+ .string "MIK: Hey, do you want to battle\n"
+ .string "with us two?\p"
+ .string "Bring two or more POKéMON with\n"
+ .string "you, then.$"
+
+OneIsland_KindleRoad_Text_RouteSign::
+ .string "This is KINDLE ROAD.\p"
+ .string "Go straight for MT. EMBER.$"
+
+OneIsland_KindleRoad_Text_EmberSpaSign::
+ .string "Light the Fire in Your Heart!\n"
+ .string "EMBER SPA$"
+
diff --git a/data/maps/OneIsland_PokemonCenter_1F_Frlg/map.json b/data/maps/OneIsland_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..e63b783ad544
--- /dev/null
+++ b/data/maps/OneIsland_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,235 @@
+{
+ "id": "MAP_ONE_ISLAND_POKEMON_CENTER_1F",
+ "name": "OneIsland_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_ONE_ISLAND_POKEMON_CENTER_1F",
+ "music": "MUS_RG_NET_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ONE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_ONE_ISLAND_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 5,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_ONE_ISLAND_POKEMON_CENTER_BILL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BILL",
+ "x": 14,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_Bill",
+ "flag": "FLAG_HIDE_ONE_ISLAND_POKECENTER_BILL"
+ },
+ {
+ "local_id": "LOCALID_CELIO",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CELIO",
+ "x": 15,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_Celio",
+ "flag": "FLAG_HIDE_ONE_ISLAND_POKECENTER_CELIO"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_BOY_FRLG",
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_LittleBoy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_Hiker",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BATTLE_GIRL",
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_BattleGirl",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 9,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_ONE_ISLAND",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 1,
+ "y": 5,
+ "elevation": 4,
+ "dest_map": "MAP_ONE_ISLAND_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 12,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F",
+ "var_value": "2",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_LeaveOneIslandTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 12,
+ "y": 7,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F",
+ "var_value": "2",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_LeaveOneIslandTriggerMidTop"
+ },
+ {
+ "type": "trigger",
+ "x": 12,
+ "y": 8,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F",
+ "var_value": "2",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_LeaveOneIslandTriggerMidBottom"
+ },
+ {
+ "type": "trigger",
+ "x": 12,
+ "y": 9,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F",
+ "var_value": "2",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_LeaveOneIslandTriggerBottom"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_NetworkMachine"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 3,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_NetworkMachine"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_NetworkMachine"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_NetworkMachine"
+ },
+ {
+ "type": "sign",
+ "x": 13,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_NetworkMachine"
+ },
+ {
+ "type": "sign",
+ "x": 15,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_NetworkMachine"
+ },
+ {
+ "type": "sign",
+ "x": 14,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_NetworkMachine"
+ },
+ {
+ "type": "sign",
+ "x": 16,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_NetworkMachine"
+ },
+ {
+ "type": "sign",
+ "x": 17,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "OneIsland_PokemonCenter_1F_EventScript_NetworkMachine"
+ }
+ ]
+}
diff --git a/data/maps/OneIsland_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/OneIsland_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..9fbbe779c0ac
--- /dev/null
+++ b/data/maps/OneIsland_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,921 @@
+OneIsland_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, OneIsland_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ map_script MAP_SCRIPT_ON_LOAD, OneIsland_PokemonCenter_1F_OnLoad
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, OneIsland_PokemonCenter_1F_OnFrame
+ .byte 0
+
+OneIsland_PokemonCenter_1F_OnLoad::
+ call_if_ge VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 5, OneIsland_PokemonCenter_1F_EventScript_SetRubyMetatile
+ call_if_set FLAG_IS_CHAMPION, OneIsland_PokemonCenter_1F_EventScript_SetNetworkMachineOn
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_SetRubyMetatile::
+ setmetatile 13, 4, METATILE_PokemonCenterFrlg_NetworkMachine_Ruby, 1
+ return
+
+OneIsland_PokemonCenter_1F_EventScript_SetSapphireMetatile::
+ setmetatile 16, 4, METATILE_PokemonCenterFrlg_NetworkMachine_Sapphire, 1
+ return
+
+OneIsland_PokemonCenter_1F_EventScript_SetNetworkMachineOn::
+ call OneIsland_PokemonCenter_1F_EventScript_SetSapphireMetatile
+ setmetatile 14, 4, METATILE_PokemonCenterFrlg_NetworkMachine_ScreenLeft_On, 1
+ setmetatile 15, 4, METATILE_PokemonCenterFrlg_NetworkMachine_ScreenRight_On, 1
+ return
+
+OneIsland_PokemonCenter_1F_OnTransition::
+ setrespawn HEAL_LOCATION_ONE_ISLAND
+ call_if_eq VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 6, OneIsland_PokemonCenter_1F_EventScript_SetCelioQuestDone
+ call_if_eq VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 0, OneIsland_PokemonCenter_1F_EventScript_SetBillCelioFirstMeetingPos
+ call_if_eq VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 2, OneIsland_PokemonCenter_1F_EventScript_SetBillCelioReadyToLeavePos
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_SetCelioQuestDone::
+ setvar VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 7
+ return
+
+OneIsland_PokemonCenter_1F_EventScript_SetBillCelioFirstMeetingPos::
+ setobjectxyperm LOCALID_ONE_ISLAND_POKEMON_CENTER_BILL, 9, 8
+ setobjectmovementtype LOCALID_ONE_ISLAND_POKEMON_CENTER_BILL, MOVEMENT_TYPE_FACE_UP
+ setobjectxyperm LOCALID_CELIO, 15, 6
+ setobjectmovementtype LOCALID_CELIO, MOVEMENT_TYPE_FACE_UP
+ return
+
+OneIsland_PokemonCenter_1F_EventScript_SetBillCelioReadyToLeavePos::
+ setobjectxyperm LOCALID_ONE_ISLAND_POKEMON_CENTER_BILL, 14, 7
+ setobjectmovementtype LOCALID_ONE_ISLAND_POKEMON_CENTER_BILL, MOVEMENT_TYPE_FACE_LEFT
+ setobjectxyperm LOCALID_CELIO, 14, 8
+ setobjectmovementtype LOCALID_CELIO, MOVEMENT_TYPE_FACE_LEFT
+ return
+
+OneIsland_PokemonCenter_1F_OnFrame::
+ map_script_2 VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 0, OneIsland_PokemonCenter_1F_EventScript_MeetCelioScene
+ .2byte 0
+
+OneIsland_PokemonCenter_1F_EventScript_MeetCelioScene::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_PLAYER, OneIsland_PokemonCenter_1F_Movement_PlayerWalkToCelio
+ applymovement LOCALID_ONE_ISLAND_POKEMON_CENTER_BILL, OneIsland_PokemonCenter_1F_Movement_BillWalkToCelio
+ waitmovement 0
+ msgbox OneIsland_PokemonCenter_1F_Text_BillHeyThereCelio
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ playse SE_PIN
+ applymovement LOCALID_CELIO, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_CELIO, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ applymovement LOCALID_CELIO, Common_Movement_Delay48
+ waitmovement 0
+ msgbox OneIsland_PokemonCenter_1F_Text_CelioCantBelieveYouCameOut
+ msgbox OneIsland_PokemonCenter_1F_Text_BillHowsYourResearchComing
+ applymovement LOCALID_ONE_ISLAND_POKEMON_CENTER_BILL, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ msgbox OneIsland_PokemonCenter_1F_Text_ThisIsMyBuddyCelio
+ applymovement LOCALID_ONE_ISLAND_POKEMON_CENTER_BILL, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ call_if_set FLAG_SYS_GAME_CLEAR, OneIsland_PokemonCenter_1F_EventScript_IntroducePlayerChamp
+ call_if_unset FLAG_SYS_GAME_CLEAR, OneIsland_PokemonCenter_1F_EventScript_IntroducePlayerNotChamp
+ applymovement LOCALID_CELIO, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ msgbox OneIsland_PokemonCenter_1F_Text_CelioThatsReallyImpressive
+ msgbox OneIsland_PokemonCenter_1F_Text_BillBringMeUpToSpeed
+ applymovement LOCALID_CELIO, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ msgbox OneIsland_PokemonCenter_1F_Text_CelioPCsCantLinkWithYours
+ closemessage
+ applymovement LOCALID_ONE_ISLAND_POKEMON_CENTER_BILL, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ msgbox OneIsland_PokemonCenter_1F_Text_BillLetMeHelpYou
+ applymovement LOCALID_ONE_ISLAND_POKEMON_CENTER_BILL, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ msgbox OneIsland_PokemonCenter_1F_Text_CanYouDeliverThisMeteoritePlayer
+ msgreceiveditem OneIsland_PokemonCenter_1F_Text_AcceptedMeteoriteFromBill, ITEM_METEORITE, 1, MUS_RG_OBTAIN_KEY_ITEM
+ additem ITEM_METEORITE
+ applymovement LOCALID_CELIO, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ msgbox OneIsland_PokemonCenter_1F_Text_CelioPleaseTakeThis
+ giveitem_msg OneIsland_PokemonCenter_1F_Text_ObtainedTriPass, ITEM_TRI_PASS, 1, MUS_RG_OBTAIN_KEY_ITEM
+ msgbox OneIsland_PokemonCenter_1F_Text_PassLetsYouTravelBetweenIslands
+ call_if_ge VAR_MAP_SCENE_PALLET_TOWN_RIVALS_HOUSE, 2, OneIsland_PokemonCenter_1F_EventScript_ReceiveTownMapPage
+ call_if_lt VAR_MAP_SCENE_PALLET_TOWN_RIVALS_HOUSE, 2, OneIsland_PokemonCenter_1F_EventScript_ReceiveTownMap
+ setflag FLAG_SYS_SEVII_MAP_123
+ msgbox OneIsland_PokemonCenter_1F_Text_BillCatchYouLater
+ closemessage
+ applymovement LOCALID_ONE_ISLAND_POKEMON_CENTER_BILL, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ applymovement LOCALID_CELIO, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ setflag FLAG_SYS_PC_STORAGE_DISABLED
+ setvar VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 1
+ releaseall
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_IntroducePlayerChamp::
+ msgbox OneIsland_PokemonCenter_1F_Text_PlayerIsReigningPokemonChamp
+ return
+
+OneIsland_PokemonCenter_1F_EventScript_IntroducePlayerNotChamp::
+ msgbox OneIsland_PokemonCenter_1F_Text_PlayerIsRisingPokemonChamp
+ return
+
+OneIsland_PokemonCenter_1F_EventScript_ReceiveTownMapPage::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_RG_OBTAIN_KEY_ITEM
+ message OneIsland_PokemonCenter_1F_Text_ReceivedExtraPageForTownMap
+ waitmessage
+ waitfanfare
+ call EventScript_RestorePrevTextColor
+ return
+
+OneIsland_PokemonCenter_1F_EventScript_ReceiveTownMap::
+ setflag FLAG_HIDE_TOWN_MAP
+ setvar VAR_MAP_SCENE_PALLET_TOWN_RIVALS_HOUSE, 2
+ giveitem_msg OneIsland_PokemonCenter_1F_Text_ReceivedTownMap, ITEM_TOWN_MAP, 1, MUS_RG_OBTAIN_KEY_ITEM
+ return
+
+OneIsland_PokemonCenter_1F_Movement_PlayerWalkToCelio::
+ walk_up
+ walk_up
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_in_place_faster_up
+ step_end
+
+OneIsland_PokemonCenter_1F_Movement_BillWalkToCelio::
+ walk_up
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_up
+ walk_in_place_faster_right
+ step_end
+
+@ Unused
+OneIsland_PokemonCenter_1F_Movement_WalkUp:
+ walk_up
+ step_end
+
+@ Unused
+OneIsland_PokemonCenter_1F_Movement_StepAsideLeft::
+ walk_left
+ walk_in_place_faster_right
+ step_end
+
+OneIsland_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_Bill::
+ lock
+ goto_if_set FLAG_SEVII_DETOUR_FINISHED, OneIsland_PokemonCenter_1F_EventScript_BillGoTakeStroll
+ msgbox OneIsland_PokemonCenter_1F_Text_HmmHowAboutLikeThis
+ release
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_BillGoTakeStroll::
+ applymovement LOCALID_ONE_ISLAND_POKEMON_CENTER_BILL, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox OneIsland_PokemonCenter_1F_Text_GotPCWorkingStrollAWhileMore
+ release
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_Celio::
+ lock
+ faceplayer
+ goto_if_eq VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 7, OneIsland_PokemonCenter_1F_EventScript_CelioGiveBillFact
+ goto_if_eq VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 6, OneIsland_PokemonCenter_1F_EventScript_CelioJustGivenSapphire
+ goto_if_set FLAG_RECOVERED_SAPPHIRE, OneIsland_PokemonCenter_1F_EventScript_GiveCelioSapphire
+ goto_if_eq VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 5, OneIsland_PokemonCenter_1F_EventScript_ExplainRainbowPass
+ goto_if_set FLAG_GOT_RUBY, OneIsland_PokemonCenter_1F_EventScript_GiveCelioRuby
+ goto_if_eq VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 4, OneIsland_PokemonCenter_1F_EventScript_CelioWaitingForRuby
+ specialvar VAR_RESULT, IsNationalPokedexEnabled
+ goto_if_eq VAR_RESULT, TRUE, OneIsland_PokemonCenter_1F_EventScript_CelioRequestRuby
+ goto_if_eq VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 3, OneIsland_PokemonCenter_1F_EventScript_CelioPlayerMissingNationalDex
+ msgbox OneIsland_PokemonCenter_1F_Text_SorryForBeingPoorHost
+ closemessage
+ applymovement LOCALID_CELIO, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_CelioGiveBillFact::
+ msgbox OneIsland_PokemonCenter_1F_Text_CelioHearingRumorsAboutYou
+ random 3
+ goto_if_eq VAR_RESULT, 0, OneIsland_PokemonCenter_1F_EventScript_BillFact1
+ goto_if_eq VAR_RESULT, 1, OneIsland_PokemonCenter_1F_EventScript_BillFact2
+ famechecker FAMECHECKER_BILL, 5
+ msgbox OneIsland_PokemonCenter_1F_Text_BillCantStomachMilk
+ release
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_BillFact1::
+ famechecker FAMECHECKER_BILL, 3
+ msgbox OneIsland_PokemonCenter_1F_Text_BillsFirstMonWasAbra
+ release
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_BillFact2::
+ famechecker FAMECHECKER_BILL, 4
+ msgbox OneIsland_PokemonCenter_1F_Text_BillsHometownInGoldenrod
+ release
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_CelioJustGivenSapphire::
+ msgbox OneIsland_PokemonCenter_1F_Text_WishYouBestOfLuck
+ release
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_GiveCelioSapphire::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_OBTAIN_TMHM
+ message OneIsland_PokemonCenter_1F_Text_HandedSapphireToCelio
+ waitmessage
+ waitfanfare
+ call EventScript_RestorePrevTextColor
+ removeitem ITEM_SAPPHIRE
+ msgbox OneIsland_PokemonCenter_1F_Text_ThankYouGiveMeTime
+ closemessage
+ applymovement LOCALID_CELIO, OneIsland_PokemonCenter_1F_Movement_CelioPutGemInMachine
+ waitmovement 0
+ playse SE_CLICK
+ call OneIsland_PokemonCenter_1F_EventScript_SetSapphireMetatile
+ special DrawWholeMapView
+ msgbox OneIsland_PokemonCenter_1F_Text_OkayThisIsGood
+ closemessage
+ delay 60
+ applymovement LOCALID_CELIO, OneIsland_PokemonCenter_1F_Movement_CelioCheckMachine
+ waitmovement 0
+ delay 30
+ applymovement LOCALID_CELIO, OneIsland_PokemonCenter_1F_Movement_CelioCheckMachine
+ waitmovement 0
+ delay 40
+ playse SE_PC_ON
+ call OneIsland_PokemonCenter_1F_EventScript_SetNetworkMachineOn
+ special DrawWholeMapView
+ msgbox OneIsland_PokemonCenter_1F_Text_LinkedUpWithLanette
+ applymovement LOCALID_CELIO, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox OneIsland_PokemonCenter_1F_Text_ManagedToLinkWithHoennThankYou
+ special SetPostgameFlags
+ setflag FLAG_IS_CHAMPION
+ setflag FLAG_HIDE_CERULEAN_CAVE_GUARD
+ setflag FLAG_HIDE_LORELEI_IN_HER_HOUSE
+ setvar VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 6
+ special InitRoamer
+ release
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_ExplainRainbowPass::
+ msgbox OneIsland_PokemonCenter_1F_Text_PassLetYouGetToAllIslands
+ release
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_GiveCelioRuby::
+ msgbox OneIsland_PokemonCenter_1F_Text_OhThats
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_OBTAIN_TMHM
+ message OneIsland_PokemonCenter_1F_Text_HandedRubyToCelio
+ waitmessage
+ waitfanfare
+ call EventScript_RestorePrevTextColor
+ closemessage
+ applymovement LOCALID_CELIO, OneIsland_PokemonCenter_1F_Movement_CelioPutGemInMachine
+ waitmovement 0
+ playse SE_CLICK
+ call OneIsland_PokemonCenter_1F_EventScript_SetRubyMetatile
+ special DrawWholeMapView
+ delay 30
+ applymovement LOCALID_CELIO, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox OneIsland_PokemonCenter_1F_Text_MayIAskOneMoreFavor, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, OneIsland_PokemonCenter_1F_EventScript_DeclineHelpCelio
+ goto OneIsland_PokemonCenter_1F_EventScript_GiveRainbowPass
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_DeclineHelpCelio::
+ msgbox OneIsland_PokemonCenter_1F_Text_PleaseINeedYourHelp, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, OneIsland_PokemonCenter_1F_EventScript_DeclineHelpCelio
+ goto OneIsland_PokemonCenter_1F_EventScript_GiveRainbowPass
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_GiveRainbowPass::
+ msgbox OneIsland_PokemonCenter_1F_Text_AnotherGemstoneInSeviiIslands
+ removeitem ITEM_RUBY
+ removeitem ITEM_TRI_PASS
+ setvar VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 5
+ additem ITEM_RAINBOW_PASS
+ setflag FLAG_SYS_SEVII_MAP_4567
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_RG_OBTAIN_KEY_ITEM
+ message OneIsland_PokemonCenter_1F_Text_ReturnedTriPassForRainbowPass
+ waitmessage
+ waitfanfare
+ playfanfare MUS_RG_OBTAIN_KEY_ITEM
+ message OneIsland_PokemonCenter_1F_Text_ObtainedExtraMapPage
+ waitmessage
+ waitfanfare
+ call EventScript_RestorePrevTextColor
+ goto OneIsland_PokemonCenter_1F_EventScript_ExplainRainbowPass
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_CelioWaitingForRuby::
+ msgbox OneIsland_PokemonCenter_1F_Text_TryingToFindGem
+ release
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_CelioRequestRuby::
+ msgbox OneIsland_PokemonCenter_1F_Text_CelioCaughtMoreMonMaybeICanBeUseful
+ applymovement LOCALID_CELIO, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ msgbox OneIsland_PokemonCenter_1F_Text_YoullBeTradingFromTrainersFarAway
+ applymovement LOCALID_CELIO, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox OneIsland_PokemonCenter_1F_Text_NeedsSpecialGemstone
+ setvar VAR_MAP_SCENE_MT_EMBER_EXTERIOR, 1
+ setvar VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 4
+ release
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_CelioPlayerMissingNationalDex::
+ msgbox OneIsland_PokemonCenter_1F_Text_CelioImModifyingMyNetworkMachine
+ release
+ end
+
+OneIsland_PokemonCenter_1F_Movement_CelioCheckMachine::
+ walk_in_place_up
+ delay_8
+ walk_in_place_up
+ step_end
+
+OneIsland_PokemonCenter_1F_Movement_CelioPutGemInMachine::
+ walk_in_place_faster_up
+ walk_in_place_up
+ delay_16
+ walk_in_place_up
+ walk_in_place_up
+ step_end
+
+OneIsland_PokemonCenter_1F_EventScript_LittleBoy::
+ msgbox OneIsland_PokemonCenter_1F_Text_CameFromPalletDontKnowIt, MSGBOX_NPC
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_Hiker::
+ msgbox OneIsland_PokemonCenter_1F_Text_EnormousVolcanoOnIsland, MSGBOX_NPC
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_BattleGirl::
+ lock
+ faceplayer
+ goto_if_set FLAG_IS_CHAMPION, OneIsland_PokemonCenter_1F_EventScript_BattleGirlHoennLinked
+ msgbox OneIsland_PokemonCenter_1F_Text_WishICouldTradeWithBoyfriend
+ release
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_BattleGirlHoennLinked::
+ msgbox OneIsland_PokemonCenter_1F_Text_TradedWithFarAwayBoyfriend
+ release
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_NetworkMachine::
+ lockall
+ goto_if_set FLAG_IS_CHAMPION, OneIsland_PokemonCenter_1F_EventScript_NetworkMachineLinkedWithHoenn
+ goto_if_set FLAG_SEVII_DETOUR_FINISHED, OneIsland_PokemonCenter_1F_EventScript_NetworkMachineLinkedWithKanto
+ msgbox OneIsland_PokemonCenter_1F_Text_MachineUnderAdjustment
+ releaseall
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_NetworkMachineLinkedWithKanto::
+ msgbox OneIsland_PokemonCenter_1F_Text_MachineLinkedWithKanto
+ releaseall
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_NetworkMachineLinkedWithHoenn::
+ msgbox OneIsland_PokemonCenter_1F_Text_MachineLinkedWithKantoAndHoenn
+ releaseall
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_LeaveOneIslandTriggerTop::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto OneIsland_PokemonCenter_1F_EventScript_LeaveOneIslandScene
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_LeaveOneIslandTriggerMidTop::
+ lockall
+ setvar VAR_TEMP_1, 2
+ goto OneIsland_PokemonCenter_1F_EventScript_LeaveOneIslandScene
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_LeaveOneIslandTriggerMidBottom::
+ lockall
+ setvar VAR_TEMP_1, 3
+ goto OneIsland_PokemonCenter_1F_EventScript_LeaveOneIslandScene
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_LeaveOneIslandTriggerBottom::
+ lockall
+ setvar VAR_TEMP_1, 4
+ goto OneIsland_PokemonCenter_1F_EventScript_LeaveOneIslandScene
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_LeaveOneIslandScene::
+ textcolor NPC_TEXT_COLOR_MALE
+ playse SE_PIN
+ applymovement LOCALID_ONE_ISLAND_POKEMON_CENTER_BILL, Common_Movement_ExclamationMark
+ waitmovement 0
+ msgbox OneIsland_PokemonCenter_1F_Text_BillOhHeyPlayer
+ closemessage
+ call_if_eq VAR_TEMP_1, 1, OneIsland_PokemonCenter_1F_EventScript_PlayerWalkToBillTop
+ call_if_eq VAR_TEMP_1, 2, OneIsland_PokemonCenter_1F_EventScript_PlayerWalkToBillMidTop
+ call_if_eq VAR_TEMP_1, 3, OneIsland_PokemonCenter_1F_EventScript_PlayerWalkToBillMidBottom
+ call_if_eq VAR_TEMP_1, 4, OneIsland_PokemonCenter_1F_EventScript_PlayerWalkToBillBottom
+ delay 10
+ msgbox OneIsland_PokemonCenter_1F_Text_BillWeGotItDone
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ msgbox OneIsland_PokemonCenter_1F_Text_CelioJobWentQuick
+ applymovement LOCALID_ONE_ISLAND_POKEMON_CENTER_BILL, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ applymovement LOCALID_CELIO, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ msgbox OneIsland_PokemonCenter_1F_Text_BillYouveLearnedALot
+ msgbox OneIsland_PokemonCenter_1F_Text_CelioOhReallyEhehe
+ closemessage
+ applymovement LOCALID_ONE_ISLAND_POKEMON_CENTER_BILL, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ delay 10
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ delay 15
+ msgbox OneIsland_PokemonCenter_1F_Text_BillWeShouldHeadBackToKanto
+ closemessage
+ applymovement LOCALID_ONE_ISLAND_POKEMON_CENTER_BILL, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ delay 15
+ applymovement LOCALID_CELIO, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ msgbox OneIsland_PokemonCenter_1F_Text_CelioPromiseIllShowYouAroundSometime
+ closemessage
+ delay 25
+ applymovement LOCALID_PLAYER, OneIsland_PokemonCenter_1F_Movement_PlayerExit
+ applymovement LOCALID_ONE_ISLAND_POKEMON_CENTER_BILL, OneIsland_PokemonCenter_1F_Movement_BillExit
+ waitmovement 0
+ playse SE_EXIT
+ setflag FLAG_HIDE_ONE_ISLAND_POKECENTER_BILL
+ setvar VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 3
+ clearflag FLAG_HIDE_CINNABAR_BILL
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND, 3
+ setvar VAR_0x8004, SEAGALLOP_ONE_ISLAND
+ setvar VAR_0x8006, SEAGALLOP_CINNABAR_ISLAND
+ goto EventScript_SetSail
+ end
+
+OneIsland_PokemonCenter_1F_EventScript_PlayerWalkToBillTop::
+ applymovement LOCALID_PLAYER, OneIsland_PokemonCenter_1F_Movement_PlayerWalkToBillTop
+ waitmovement 0
+ return
+
+OneIsland_PokemonCenter_1F_EventScript_PlayerWalkToBillMidTop::
+ applymovement LOCALID_PLAYER, OneIsland_PokemonCenter_1F_Movement_PlayerWalkToBillMidTop
+ waitmovement 0
+ return
+
+OneIsland_PokemonCenter_1F_EventScript_PlayerWalkToBillMidBottom::
+ applymovement LOCALID_PLAYER, OneIsland_PokemonCenter_1F_Movement_PlayerWalkToBillMidBottom
+ waitmovement 0
+ return
+
+OneIsland_PokemonCenter_1F_EventScript_PlayerWalkToBillBottom::
+ applymovement LOCALID_PLAYER, OneIsland_PokemonCenter_1F_Movement_PlayerWalkToBillBottom
+ waitmovement 0
+ return
+
+OneIsland_PokemonCenter_1F_Movement_PlayerWalkToBillTop::
+ walk_right
+ walk_down
+ walk_in_place_faster_right
+ step_end
+
+OneIsland_PokemonCenter_1F_Movement_PlayerWalkToBillMidTop::
+ walk_right
+ step_end
+
+OneIsland_PokemonCenter_1F_Movement_PlayerWalkToBillMidBottom::
+ walk_right
+ walk_up
+ walk_in_place_faster_right
+ step_end
+
+OneIsland_PokemonCenter_1F_Movement_PlayerWalkToBillBottom::
+ walk_right
+ walk_up
+ walk_up
+ walk_in_place_faster_right
+ step_end
+
+@ Unused
+OneIsland_PokemonCenter_1F_Movement_DelayWalkInPlaceLeft::
+ delay_16
+ delay_16
+ delay_4
+ walk_in_place_faster_left
+ step_end
+
+@ Unused
+OneIsland_PokemonCenter_1F_Movement_WalkInPlaceDown::
+ walk_in_place_fast_down
+ step_end
+
+OneIsland_PokemonCenter_1F_Movement_PlayerExit::
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ step_end
+
+OneIsland_PokemonCenter_1F_Movement_BillExit::
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_down
+ step_end
+
+OneIsland_PokemonCenter_1F_Text_BillHeyThereCelio::
+ .string "BILL: Hey, there!\n"
+ .string "CELIO!$"
+
+OneIsland_PokemonCenter_1F_Text_CelioCantBelieveYouCameOut::
+ .string "CELIO: BILL!\n"
+ .string "I can't believe you came out here.$"
+
+OneIsland_PokemonCenter_1F_Text_BillHowsYourResearchComing::
+ .string "BILL: Well, absolutely!\n"
+ .string "How's your research coming along?\p"
+ .string "…Oh, wait a sec.$"
+
+OneIsland_PokemonCenter_1F_Text_ThisIsMyBuddyCelio::
+ .string "{PLAYER}, this is my buddy CELIO.\n"
+ .string "He's one dedicated PC MANIAC!$"
+
+OneIsland_PokemonCenter_1F_Text_PlayerIsRisingPokemonChamp::
+ .string "CELIO, this is {PLAYER}, a rising\n"
+ .string "contender as the POKéMON CHAMP!$"
+
+OneIsland_PokemonCenter_1F_Text_PlayerIsReigningPokemonChamp::
+ .string "CELIO, this is {PLAYER}, the\n"
+ .string "reigning POKéMON CHAMP!$"
+
+OneIsland_PokemonCenter_1F_Text_CelioThatsReallyImpressive::
+ .string "CELIO: That's really impressive.\p"
+ .string "I hate to say it, but I have zero\n"
+ .string "aptitude for battling.\p"
+ .string "Anyways, I'm glad to meet you.$"
+
+OneIsland_PokemonCenter_1F_Text_BillBringMeUpToSpeed::
+ .string "BILL: So, bring me up to speed.\n"
+ .string "How's your machine running?$"
+
+OneIsland_PokemonCenter_1F_Text_CelioPCsCantLinkWithYours::
+ .string "CELIO: It's running fine, but we're\n"
+ .string "too remote out here.\p"
+ .string "The PCs on this island just can't\n"
+ .string "link with your PC, BILL.$"
+
+OneIsland_PokemonCenter_1F_Text_BillLetMeHelpYou::
+ .string "BILL: Oh, yeah?\n"
+ .string "Okay, let me take a look-see.\p"
+ .string "…Hang on here…\n"
+ .string "I think we can make it work.\l"
+ .string "Let me help you, okay?$"
+
+OneIsland_PokemonCenter_1F_Text_CanYouDeliverThisMeteoritePlayer::
+ .string "{PLAYER}, can I get you to wait for\n"
+ .string "me just a bit?\p"
+ .string "…Actually, can I get you to do\n"
+ .string "me a favor?\p"
+ .string "The island next to this one's\n"
+ .string "called TWO ISLAND.\p"
+ .string "There's a guy there that runs\n"
+ .string "a GAME CORNER.\p"
+ .string "He has this thing for rare rocks\n"
+ .string "and gems.\p"
+ .string "We keep in touch, being fellow\n"
+ .string "maniacs.\p"
+ .string "So, can I get you to deliver this\n"
+ .string "METEORITE to him?$"
+
+OneIsland_PokemonCenter_1F_Text_AcceptedMeteoriteFromBill::
+ .string "{PLAYER} accepted the METEORITE\n"
+ .string "from BILL.$"
+
+OneIsland_PokemonCenter_1F_Text_CelioPleaseTakeThis::
+ .string "CELIO: {PLAYER}, if you are going\n"
+ .string "to TWO ISLAND, please take this.$"
+
+OneIsland_PokemonCenter_1F_Text_PassLetsYouTravelBetweenIslands::
+ .string "It's a PASS for the ferry service\n"
+ .string "serving the local islands.\p"
+ .string "It will let you travel between the\n"
+ .string "ISLANDS ONE, TWO, and THREE.\p"
+ .string "Oh, you should have this, too.$"
+
+OneIsland_PokemonCenter_1F_Text_ReceivedExtraPageForTownMap::
+ .string "{PLAYER} received an extra page\n"
+ .string "for the TOWN MAP!$"
+
+OneIsland_PokemonCenter_1F_Text_ReceivedTownMap::
+ .string "{PLAYER} received\n"
+ .string "a TOWN MAP!$"
+
+OneIsland_PokemonCenter_1F_Text_BillCatchYouLater::
+ .string "BILL: I'll catch you later!\n"
+ .string "Say hi to the guy for me!$"
+
+OneIsland_PokemonCenter_1F_Text_HmmHowAboutLikeThis::
+ .string "Hmm…\p"
+ .string "How about we try this like this…$"
+
+OneIsland_PokemonCenter_1F_Text_GotPCWorkingStrollAWhileMore::
+ .string "Oh, hey, {PLAYER}!\p"
+ .string "Did you see?\n"
+ .string "We got the PC working!\p"
+ .string "I've got a few things to show\n"
+ .string "CELIO here.\p"
+ .string "Can you go out on a stroll or\n"
+ .string "something for a while more?$"
+
+OneIsland_PokemonCenter_1F_Text_SorryForBeingPoorHost::
+ .string "I'm sorry for taking up so much of\n"
+ .string "BILL's time.\p"
+ .string "I'm also sorry for being such a \n"
+ .string "poor host on your visit here.$"
+
+OneIsland_PokemonCenter_1F_Text_UsualPCServicesUnavailable::
+ .string "The usual PC services aren't\n"
+ .string "available…$"
+
+OneIsland_PokemonCenter_1F_Text_BillOhHeyPlayer::
+ .string "BILL: Oh, hey!\n"
+ .string "{PLAYER}!$"
+
+OneIsland_PokemonCenter_1F_Text_BillWeGotItDone::
+ .string "BILL: What kept you so long?\n"
+ .string "Been out having a good time?\p"
+ .string "We got it done.\n"
+ .string "The PCs are up and running!$"
+
+OneIsland_PokemonCenter_1F_Text_CelioJobWentQuick::
+ .string "CELIO: The job went incredibly\n"
+ .string "quick.\p"
+ .string "BILL is one amazing guy…$"
+
+OneIsland_PokemonCenter_1F_Text_BillYouveLearnedALot::
+ .string "BILL: No, no! There was almost\n"
+ .string "nothing left for me to do.\p"
+ .string "CELIO, I have to hand it to you.\n"
+ .string "You've learned a lot.$"
+
+OneIsland_PokemonCenter_1F_Text_CelioOhReallyEhehe::
+ .string "CELIO: Oh, really?\n"
+ .string "Ehehe…$"
+
+OneIsland_PokemonCenter_1F_Text_BillWeShouldHeadBackToKanto::
+ .string "BILL: Well, there you have it.\n"
+ .string "I'm finished with the job.\l"
+ .string "We should head back to KANTO.\p"
+ .string "CELIO, I'll be seeing you again.$"
+
+OneIsland_PokemonCenter_1F_Text_CelioPromiseIllShowYouAroundSometime::
+ .string "CELIO: {PLAYER}, I'm really sorry\n"
+ .string "that we sent you off alone today.\p"
+ .string "I promise, I will show you around\n"
+ .string "these islands sometime.$"
+
+OneIsland_PokemonCenter_1F_Text_CelioImModifyingMyNetworkMachine::
+ .string "CELIO: Hello!\n"
+ .string "You look awfully busy as always.\p"
+ .string "How am I doing?\p"
+ .string "Well, I'm modifying my Network\n"
+ .string "Machine.\p"
+ .string "When I get done with the machine,\n"
+ .string "I hope you'll be first to use it,\l"
+ .string "{PLAYER}.$"
+
+OneIsland_PokemonCenter_1F_Text_CelioCaughtMoreMonMaybeICanBeUseful::
+ .string "CELIO: {PLAYER}, how have things\n"
+ .string "been for you?\p"
+ .string "Oh, is that right?\n"
+ .string "You've caught more POKéMON.\p"
+ .string "Do you know what?\n"
+ .string "Maybe I can be useful to you.$"
+
+OneIsland_PokemonCenter_1F_Text_YoullBeTradingFromTrainersFarAway::
+ .string "I'm modifying the Network Machine\n"
+ .string "right now.\p"
+ .string "I'm changing it so it can handle\n"
+ .string "trades over long distances.\p"
+ .string "When I get finished, you'll be\n"
+ .string "trading for exotic POKéMON from\l"
+ .string "TRAINERS far away.$"
+
+OneIsland_PokemonCenter_1F_Text_NeedsSpecialGemstone::
+ .string "But, there is a slight catch.\p"
+ .string "For the link to work, the Machine\n"
+ .string "needs a special gemstone.\p"
+ .string "It's supposed to be on ONE ISLAND,\n"
+ .string "but I haven't found one yet.\p"
+ .string "Who knows where it could be.$"
+
+OneIsland_PokemonCenter_1F_Text_TryingToFindGem::
+ .string "I was trying to find the gem\n"
+ .string "even while I was studying.\p"
+ .string "As a result, I've made no headway\n"
+ .string "in both my search and studies…\p"
+ .string "If I relied on BILL, I'm sure my\n"
+ .string "research would progress.\p"
+ .string "But this time, I want to try to do\n"
+ .string "things by myself.$"
+
+OneIsland_PokemonCenter_1F_Text_OhThats::
+ .string "Oh!\n"
+ .string "Th-that's…$"
+
+OneIsland_PokemonCenter_1F_Text_HandedRubyToCelio::
+ .string "{PLAYER} handed the RUBY\n"
+ .string "to CELIO.$"
+
+OneIsland_PokemonCenter_1F_Text_MayIAskOneMoreFavor::
+ .string "Thank you!\n"
+ .string "{PLAYER}, you're simply amazing.\p"
+ .string "… … … … … …\p"
+ .string "Um… May I ask one more giant favor\n"
+ .string "of you?$"
+
+OneIsland_PokemonCenter_1F_Text_PleaseINeedYourHelp::
+ .string "It… It's not anything weird.\n"
+ .string "Please, I need your help.$"
+
+OneIsland_PokemonCenter_1F_Text_AnotherGemstoneInSeviiIslands::
+ .string "While I was studying gemstones,\n"
+ .string "I discovered something important.\p"
+ .string "There is another gem that forms\n"
+ .string "a pair with this RUBY.\p"
+ .string "That other gemstone is supposed to\n"
+ .string "be in the SEVII ISLANDS.\p"
+ .string "{PLAYER}, please, I need you to go\n"
+ .string "find the other gem.\p"
+ .string "{PLAYER}, may I have your ferry\n"
+ .string "PASS and the TOWN MAP?$"
+
+OneIsland_PokemonCenter_1F_Text_ReturnedTriPassForRainbowPass::
+ .string "{PLAYER} returned the TRI-PASS and\n"
+ .string "received the RAINBOW PASS.$"
+
+OneIsland_PokemonCenter_1F_Text_ObtainedExtraMapPage::
+ .string "Obtained an extra page for the\n"
+ .string "TOWN MAP!$"
+
+OneIsland_PokemonCenter_1F_Text_PassLetYouGetToAllIslands::
+ .string "This is my own ferry PASS.\p"
+ .string "It will let you get to all the\n"
+ .string "SEVII ISLANDS.\p"
+ .string "{PLAYER}, please, I can't do\n"
+ .string "it without your help.$"
+
+OneIsland_PokemonCenter_1F_Text_HandedSapphireToCelio::
+ .string "{PLAYER} handed the SAPPHIRE\n"
+ .string "to CELIO.$"
+
+OneIsland_PokemonCenter_1F_Text_ThankYouGiveMeTime::
+ .string "CELIO: So this is the gem that\n"
+ .string "forms a pair with the RUBY…\p"
+ .string "{PLAYER}, you've gone through a lot\n"
+ .string "to get this, didn't you?\p"
+ .string "You don't have to tell me. I know\n"
+ .string "it wasn't easy.\p"
+ .string "Thank you so much!\p"
+ .string "Now it's my turn to work for you!\n"
+ .string "Please give me a little time.$"
+
+OneIsland_PokemonCenter_1F_Text_OkayThisIsGood::
+ .string "Okay, this is good…$"
+
+OneIsland_PokemonCenter_1F_Text_LinkedUpWithLanette::
+ .string "I did it!\n"
+ .string "I linked up with LANETTE!$"
+
+OneIsland_PokemonCenter_1F_Text_ManagedToLinkWithHoennThankYou::
+ .string "{PLAYER}…\n"
+ .string "{PLAYER}, I did it!\p"
+ .string "I've managed to link up with\n"
+ .string "TRAINERS in the HOENN region!\p"
+ .string "Finally, the Network Machine is\n"
+ .string "fully operational!\p"
+ .string "{PLAYER}, I owe it all to you!\p"
+ .string "Thanks to you, my dream came\n"
+ .string "true…$"
+
+OneIsland_PokemonCenter_1F_Text_WishYouBestOfLuck::
+ .string "I…\n"
+ .string "I'm not crying.\p"
+ .string "That's enough about me!\p"
+ .string "{PLAYER}, you're going to keep\n"
+ .string "looking for exotic POKéMON, right?\p"
+ .string "I wish you the best of luck!$"
+
+OneIsland_PokemonCenter_1F_Text_CelioHearingRumorsAboutYou::
+ .string "CELIO: Hello!\p"
+ .string "{PLAYER}, I've been hearing rumors\n"
+ .string "about you.$"
+
+OneIsland_PokemonCenter_1F_Text_BillsFirstMonWasAbra::
+ .string "{PLAYER}, what's your favorite kind\n"
+ .string "of POKéMON?\p"
+ .string "BILL is a POKéMANIAC, so he loves\n"
+ .string "every kind.\p"
+ .string "Apparently, the first one he caught\n"
+ .string "was an ABRA.$"
+
+OneIsland_PokemonCenter_1F_Text_BillsHometownInGoldenrod::
+ .string "By the way, {PLAYER}, you're from\n"
+ .string "PALLET TOWN, aren't you?\p"
+ .string "I've heard that it's a quiet and\n"
+ .string "pleasant place.\p"
+ .string "BILL's hometown is GOLDENROD CITY,\n"
+ .string "where his folks still live.\p"
+ .string "I've heard that it's quite the\n"
+ .string "festive, bustling city.\p"
+ .string "I'd like to go there one day.$"
+
+OneIsland_PokemonCenter_1F_Text_BillCantStomachMilk::
+ .string "{PLAYER}, is there anything that\n"
+ .string "you can't stand?\p"
+ .string "Apparently, BILL simply can't\n"
+ .string "stomach milk at all.$"
+
+OneIsland_PokemonCenter_1F_Text_CameFromPalletDontKnowIt::
+ .string "Oh, you're a stranger here!\n"
+ .string "Hi! Where did you come from?\p"
+ .string "…PALLET TOWN?\n"
+ .string "I don't know it!$"
+
+OneIsland_PokemonCenter_1F_Text_EnormousVolcanoOnIsland::
+ .string "On this island, there's an enormous\n"
+ .string "volcano.\p"
+ .string "It hasn't erupted lately, so why\n"
+ .string "not enjoy a hike?$"
+
+OneIsland_PokemonCenter_1F_Text_WishICouldTradeWithBoyfriend::
+ .string "I wish I could trade POKéMON with\n"
+ .string "my boyfriend who lives far away…$"
+
+OneIsland_PokemonCenter_1F_Text_TradedWithFarAwayBoyfriend::
+ .string "I traded POKéMON with my boyfriend\n"
+ .string "far away!\p"
+ .string "Everyone's saying that we can\n"
+ .string "thank you and CELIO.\p"
+ .string "So, thank you!$"
+
+OneIsland_PokemonCenter_1F_Text_MachineUnderAdjustment::
+ .string "Network Machine\n"
+ .string "Link Level 0\p"
+ .string "…POKéMON Storage System under\n"
+ .string "adjustment…$"
+
+OneIsland_PokemonCenter_1F_Text_MachineLinkedWithKanto::
+ .string "Network Machine\n"
+ .string "Link Level 1\p"
+ .string "Link established with the KANTO\n"
+ .string "region.$"
+
+OneIsland_PokemonCenter_1F_Text_MachineLinkedWithKantoAndHoenn::
+ .string "Network Machine\n"
+ .string "Link Level 2\p"
+ .string "Link established with the KANTO\n"
+ .string "and HOENN regions.$"
+
+OneIsland_PokemonCenter_1F_Text_ObtainedTriPass::
+ .string "Obtained the TRI-PASS!$"
+
diff --git a/data/maps/OneIsland_PokemonCenter_2F_Frlg/map.json b/data/maps/OneIsland_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..e27b71f9ff21
--- /dev/null
+++ b/data/maps/OneIsland_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_ONE_ISLAND_POKEMON_CENTER_2F",
+ "name": "OneIsland_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_ONE_ISLAND_POKEMON_CENTER_2F",
+ "music": "MUS_RG_NET_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ONE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_ONE_ISLAND_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/OneIsland_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/OneIsland_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..6e7e4cdfb8e8
--- /dev/null
+++ b/data/maps/OneIsland_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+OneIsland_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+OneIsland_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+OneIsland_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+OneIsland_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/OneIsland_TreasureBeach_Frlg/map.json b/data/maps/OneIsland_TreasureBeach_Frlg/map.json
new file mode 100644
index 000000000000..065329d546ff
--- /dev/null
+++ b/data/maps/OneIsland_TreasureBeach_Frlg/map.json
@@ -0,0 +1,142 @@
+{
+ "id": "MAP_ONE_ISLAND_TREASURE_BEACH",
+ "name": "OneIsland_TreasureBeach_Frlg",
+ "layout": "LAYOUT_ONE_ISLAND_TREASURE_BEACH",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TREASURE_BEACH",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ONE_ISLAND",
+ "offset": 0,
+ "direction": "up"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_F_WATER",
+ "x": 8,
+ "y": 11,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "OneIsland_TreasureBeach_EventScript_Amara",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 13,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "OneIsland_TreasureBeach_EventScript_Boy",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 8,
+ "y": 20,
+ "elevation": 3,
+ "item": "ITEM_STARDUST",
+ "flag": "FLAG_HIDDEN_ITEM_ONE_ISLAND_TREASURE_BEACH_STARDUST",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 13,
+ "y": 27,
+ "elevation": 3,
+ "item": "ITEM_STARDUST",
+ "flag": "FLAG_HIDDEN_ITEM_ONE_ISLAND_TREASURE_BEACH_STARDUST_2",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 11,
+ "y": 31,
+ "elevation": 3,
+ "item": "ITEM_PEARL",
+ "flag": "FLAG_HIDDEN_ITEM_ONE_ISLAND_TREASURE_BEACH_PEARL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 9,
+ "y": 34,
+ "elevation": 3,
+ "item": "ITEM_PEARL",
+ "flag": "FLAG_HIDDEN_ITEM_ONE_ISLAND_TREASURE_BEACH_PEARL_2",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 15,
+ "y": 22,
+ "elevation": 3,
+ "item": "ITEM_ULTRA_BALL",
+ "flag": "FLAG_HIDDEN_ITEM_ONE_ISLAND_TREASURE_BEACH_ULTRA_BALL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 16,
+ "y": 33,
+ "elevation": 3,
+ "item": "ITEM_ULTRA_BALL",
+ "flag": "FLAG_HIDDEN_ITEM_ONE_ISLAND_TREASURE_BEACH_ULTRA_BALL_2",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 15,
+ "y": 29,
+ "elevation": 3,
+ "item": "ITEM_STAR_PIECE",
+ "flag": "FLAG_HIDDEN_ITEM_ONE_ISLAND_TREASURE_BEACH_STAR_PIECE",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 8,
+ "y": 27,
+ "elevation": 3,
+ "item": "ITEM_BIG_PEARL",
+ "flag": "FLAG_HIDDEN_ITEM_ONE_ISLAND_TREASURE_BEACH_BIG_PEARL",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/OneIsland_TreasureBeach_Frlg/scripts.inc b/data/maps/OneIsland_TreasureBeach_Frlg/scripts.inc
new file mode 100644
index 000000000000..bf0116c22148
--- /dev/null
+++ b/data/maps/OneIsland_TreasureBeach_Frlg/scripts.inc
@@ -0,0 +1,25 @@
+OneIsland_TreasureBeach_Frlg_MapScripts::
+ .byte 0
+
+OneIsland_TreasureBeach_EventScript_Boy::
+ msgbox OneIsland_TreasureBeach_Text_GoodThingsWashUpOnBeach, MSGBOX_NPC
+ end
+
+OneIsland_TreasureBeach_Text_AmaraIntro::
+ .string "Lying back, rocked by the waves…\n"
+ .string "It's exquisite.$"
+
+OneIsland_TreasureBeach_Text_AmaraDefeat::
+ .string "I lost…\n"
+ .string "It feels awful.$"
+
+OneIsland_TreasureBeach_Text_AmaraPostBattle::
+ .string "The sea is pleasantly warm in these\n"
+ .string "parts.$"
+
+OneIsland_TreasureBeach_Text_GoodThingsWashUpOnBeach::
+ .string "Good things get washed up by the\n"
+ .string "ocean current onto this beach.\p"
+ .string "That's why I often come here for\n"
+ .string "some beachcombing.$"
+
diff --git a/data/maps/PacifidlogTown_House3/scripts.inc b/data/maps/PacifidlogTown_House3/scripts.inc
index 5582f3b6b9c1..22abdecec89b 100644
--- a/data/maps/PacifidlogTown_House3/scripts.inc
+++ b/data/maps/PacifidlogTown_House3/scripts.inc
@@ -5,27 +5,7 @@ PacifidlogTown_House3_EventScript_Trader::
lock
faceplayer
goto_if_set FLAG_PACIFIDLOG_NPC_TRADE_COMPLETED, PacifidlogTown_House3_EventScript_TradeCompleted
- setvar VAR_0x8008, INGAME_TRADE_HORSEA
- copyvar VAR_0x8004, VAR_0x8008
- specialvar VAR_RESULT, GetInGameTradeSpeciesInfo
- copyvar VAR_0x8009, VAR_RESULT
- msgbox PacifidlogTown_House3_Text_WillingToTradeIt, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, PacifidlogTown_House3_EventScript_DeclineTrade
- special ChoosePartyMon
- waitstate
- copyvar VAR_0x800A, VAR_0x8004
- goto_if_eq VAR_0x8004, PARTY_NOTHING_CHOSEN, PacifidlogTown_House3_EventScript_DeclineTrade
- copyvar VAR_0x8005, VAR_0x800A
- specialvar VAR_RESULT, GetTradeSpecies
- copyvar VAR_0x800B, VAR_RESULT
- goto_if_ne VAR_RESULT, VAR_0x8009, PacifidlogTown_House3_EventScript_NotRequestedMon
- copyvar VAR_0x8004, VAR_0x8008
- copyvar VAR_0x8005, VAR_0x800A
- special CreateInGameTradePokemon
- special DoInGameTradeScene
- waitstate
- bufferspeciesname STR_VAR_1, VAR_0x8009
- msgbox PacifidlogTown_House3_Text_ItsSubtlyDifferentThankYou, MSGBOX_DEFAULT
+ ingame_trade INGAME_TRADE_HORSEA, PacifidlogTown_House3_Text_WillingToTradeIt, PacifidlogTown_House3_EventScript_DeclineTrade, PacifidlogTown_House3_EventScript_NotRequestedMon, PacifidlogTown_House3_Text_ItsSubtlyDifferentThankYou
setflag FLAG_PACIFIDLOG_NPC_TRADE_COMPLETED
release
end
diff --git a/data/maps/PalletTown_Frlg/map.json b/data/maps/PalletTown_Frlg/map.json
new file mode 100644
index 000000000000..c50a207f2d13
--- /dev/null
+++ b/data/maps/PalletTown_Frlg/map.json
@@ -0,0 +1,170 @@
+{
+ "id": "MAP_PALLET_TOWN",
+ "name": "PalletTown_Frlg",
+ "layout": "LAYOUT_PALLET_TOWN",
+ "music": "MUS_RG_PALLET",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_PALLET_TOWN",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE1",
+ "offset": 0,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_ROUTE21_NORTH",
+ "offset": 0,
+ "direction": "down"
+ }
+ ],
+ "object_events": [
+ {
+ "local_id": "LOCALID_PALLET_SIGN_LADY",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 3,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 4,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PalletTown_EventScript_SignLady",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_PALLET_FAT_MAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FAT_MAN_FRLG",
+ "x": 13,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 6,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PalletTown_EventScript_FatMan",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_PALLET_PROF_OAK",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PROF_OAK",
+ "x": 10,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_OAK_IN_PALLET_TOWN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_PALLET_TOWN_PLAYERS_HOUSE_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 15,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_PALLET_TOWN_RIVALS_HOUSE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 16,
+ "y": 13,
+ "elevation": 0,
+ "dest_map": "MAP_PALLET_TOWN_PROFESSOR_OAKS_LAB",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 12,
+ "y": 1,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PALLET_TOWN_OAK",
+ "var_value": "0",
+ "script": "PalletTown_EventScript_OakTriggerLeft"
+ },
+ {
+ "type": "trigger",
+ "x": 13,
+ "y": 1,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PALLET_TOWN_OAK",
+ "var_value": "0",
+ "script": "PalletTown_EventScript_OakTriggerRight"
+ },
+ {
+ "type": "trigger",
+ "x": 13,
+ "y": 2,
+ "elevation": 3,
+ "var": "VAR_TEMP_2",
+ "var_value": "1",
+ "script": "PalletTown_EventScript_SignLadyTrigger"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 16,
+ "y": 16,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PalletTown_EventScript_OaksLabSign"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PalletTown_EventScript_PlayersHouseSign"
+ },
+ {
+ "type": "sign",
+ "x": 13,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PalletTown_EventScript_RivalsHouseSign"
+ },
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PalletTown_EventScript_TownSign"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 14,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PalletTown_EventScript_TrainerTips"
+ }
+ ]
+}
diff --git a/data/maps/PalletTown_Frlg/scripts.inc b/data/maps/PalletTown_Frlg/scripts.inc
new file mode 100644
index 000000000000..47e6a2bcf0c3
--- /dev/null
+++ b/data/maps/PalletTown_Frlg/scripts.inc
@@ -0,0 +1,548 @@
+.equ SIGN_LADY_READY, VAR_TEMP_2
+
+PalletTown_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, PalletTown_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, PalletTown_OnFrame
+ .byte 0
+
+PalletTown_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_PALLET_TOWN
+ call_if_set FLAG_PALLET_LADY_NOT_BLOCKING_SIGN, PalletTown_EventScript_TryReadySignLady
+ call_if_eq VAR_MAP_SCENE_PALLET_TOWN_SIGN_LADY, 0, PalletTown_EventScript_SetSignLadyPos
+ call_if_eq VAR_MAP_SCENE_PALLET_TOWN_SIGN_LADY, 1, PalletTown_EventScript_SetSignLadyDone
+ end
+
+PalletTown_EventScript_TryReadySignLady::
+ goto_if_unset FLAG_OPENED_START_MENU, Common_EventScript_NopReturn
+ goto_if_ge VAR_MAP_SCENE_PALLET_TOWN_SIGN_LADY, 1, Common_EventScript_NopReturn
+ setvar VAR_MAP_SCENE_PALLET_TOWN_SIGN_LADY, 1
+ return
+
+PalletTown_EventScript_SetSignLadyDone::
+ setvar VAR_MAP_SCENE_PALLET_TOWN_SIGN_LADY, 2
+ return
+
+PalletTown_EventScript_SetSignLadyPos::
+ goto_if_set FLAG_PALLET_LADY_NOT_BLOCKING_SIGN, PalletTown_EventScript_MoveSignLadyToRouteEntrance
+ setobjectxyperm LOCALID_PALLET_SIGN_LADY, 5, 15
+ setobjectmovementtype LOCALID_PALLET_SIGN_LADY, MOVEMENT_TYPE_FACE_UP
+ return
+
+PalletTown_EventScript_MoveSignLadyToRouteEntrance::
+ setobjectxyperm LOCALID_PALLET_SIGN_LADY, 12, 2
+ setobjectmovementtype LOCALID_PALLET_SIGN_LADY, MOVEMENT_TYPE_FACE_DOWN
+ setvar SIGN_LADY_READY, TRUE
+ return
+
+PalletTown_OnFrame::
+ map_script_2 VAR_MAP_SCENE_PALLET_TOWN_OAK, 2, PalletTown_EventScript_OakRatingScene
+ .2byte 0
+
+@ Oak approaches player after exiting their house post Elite Four to check if they should receieve the National Dex
+PalletTown_EventScript_OakRatingScene::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ setobjectxyperm LOCALID_PALLET_PROF_OAK, 14, 14
+ setobjectmovementtype LOCALID_PALLET_PROF_OAK, MOVEMENT_TYPE_FACE_LEFT
+ addobject LOCALID_PALLET_PROF_OAK
+ applymovement LOCALID_PALLET_PROF_OAK, PalletTown_Movement_OakWalkToPlayersDoor
+ waitmovement 0
+ goto_if_unset FLAG_WORLD_MAP_ONE_ISLAND, PalletTown_EventScript_NotBeenToOneIslandYet
+ msgbox PalletTown_Text_OakLetMeSeePokedex
+ setvar VAR_0x8004, 0
+ specialvar VAR_RESULT, GetFrlgPokedexCount
+ copyvar VAR_0x8008, VAR_0x8005
+ copyvar VAR_0x8009, VAR_0x8006
+ buffernumberstring STR_VAR_1, VAR_0x8008
+ buffernumberstring STR_VAR_2, VAR_0x8009
+ goto_if_lt VAR_0x8009, 60, PalletTown_EventScript_NotEnoughMonsForNationalDex
+ msgbox PalletTown_Text_CaughtXImpressiveFollowMe
+ closemessage
+ playbgm MUS_FOLLOW_ME, 0
+ applymovement LOCALID_PLAYER, PalletTown_Movement_PlayerWalkToLabFromHouse
+ applymovement LOCALID_PALLET_PROF_OAK, PalletTown_Movement_OakWalkToLabFromHouse
+ waitmovement 0
+ opendoor 16, 13
+ waitdooranim
+ applymovement LOCALID_PALLET_PROF_OAK, PalletTown_Movement_OakEnterLab
+ applymovement LOCALID_PLAYER, PalletTown_Movement_PlayerEnterLab
+ waitmovement 0
+ closedoor 16, 13
+ waitdooranim
+ setvar VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 7
+ setvar VAR_MAP_SCENE_PALLET_TOWN_OAK, 3
+ setflag FLAG_HIDE_OAK_IN_PALLET_TOWN
+ warp MAP_PALLET_TOWN_PROFESSOR_OAKS_LAB, 6, 12
+ waitstate
+ releaseall
+ end
+
+PalletTown_EventScript_EndOakRatingScene::
+ closemessage
+ applymovement LOCALID_PALLET_PROF_OAK, PalletTown_Movement_OakExit
+ waitmovement 0
+ removeobject LOCALID_PALLET_PROF_OAK
+ setvar VAR_MAP_SCENE_PALLET_TOWN_OAK, 3
+ releaseall
+ end
+
+PalletTown_EventScript_NotEnoughMonsForNationalDex::
+ msgbox PalletTown_Text_CaughtXPuttingInHonestEffort
+ goto PalletTown_EventScript_EndOakRatingScene
+ end
+
+PalletTown_EventScript_NotBeenToOneIslandYet::
+ msgbox PalletTown_Text_OakYouEnjoyingTraveling
+ goto PalletTown_EventScript_EndOakRatingScene
+ end
+
+PalletTown_Movement_OakWalkToPlayersDoor::
+ walk_left
+ walk_left
+ walk_left
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_in_place_faster_up
+ step_end
+
+PalletTown_Movement_OakExit::
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_right
+ walk_right
+ walk_right
+ step_end
+
+PalletTown_Movement_OakWalkToLabFromHouse::
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_in_place_faster_up
+ step_end
+
+PalletTown_Movement_PlayerWalkToLabFromHouse::
+ walk_down
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ step_end
+
+PalletTown_EventScript_OakTriggerLeft::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto PalletTown_EventScript_OakTrigger
+ end
+
+PalletTown_EventScript_OakTriggerRight::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto PalletTown_EventScript_OakTrigger
+ end
+
+PalletTown_EventScript_OakTrigger::
+ famechecker FAMECHECKER_OAK, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
+ textcolor NPC_TEXT_COLOR_MALE
+ delay 30
+ playbgm MUS_RG_OAK, 0
+ message PalletTown_Text_OakDontGoOut
+ waitmessage
+ delay 85
+ closemessage
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ playse SE_PIN
+ applymovement LOCALID_PLAYER, Common_Movement_ExclamationMark
+ waitmovement 0
+ delay 30
+ addobject LOCALID_PALLET_PROF_OAK
+ call_if_eq VAR_TEMP_1, 0, PalletTown_EventScript_OakEnterLeft
+ call_if_eq VAR_TEMP_1, 1, PalletTown_EventScript_OakEnterRight
+ delay 30
+ msgbox PalletTown_Text_OakGrassUnsafeNeedMon
+ closemessage
+ delay 30
+ call_if_eq VAR_TEMP_1, 0, PalletTown_EventScript_OakLeadPlayerToLabLeft
+ call_if_eq VAR_TEMP_1, 1, PalletTown_EventScript_OakLeadPlayerToLabRight
+ opendoor 16, 13
+ waitdooranim
+ applymovement LOCALID_PALLET_PROF_OAK, PalletTown_Movement_OakEnterLab
+ applymovement LOCALID_PLAYER, PalletTown_Movement_PlayerEnterLab
+ waitmovement 0
+ closedoor 16, 13
+ waitdooranim
+ setvar VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 1
+ clearflag FLAG_HIDE_OAK_IN_HIS_LAB
+ setvar VAR_MAP_SCENE_PALLET_TOWN_OAK, 1
+ setflag FLAG_HIDE_OAK_IN_PALLET_TOWN
+ setflag FLAG_DONT_TRANSITION_MUSIC
+ warp MAP_PALLET_TOWN_PROFESSOR_OAKS_LAB, 6, 12
+ waitstate
+ releaseall
+ end
+
+PalletTown_EventScript_OakEnterLeft::
+ applymovement LOCALID_PALLET_PROF_OAK, PalletTown_Movement_OakEnterLeft
+ waitmovement 0
+ return
+
+PalletTown_EventScript_OakEnterRight::
+ applymovement LOCALID_PALLET_PROF_OAK, PalletTown_Movement_OakEnterRight
+ waitmovement 0
+ return
+
+PalletTown_EventScript_OakLeadPlayerToLabLeft::
+ applymovement LOCALID_PALLET_PROF_OAK, PalletTown_Movement_OakWalkToLabLeft
+ applymovement LOCALID_PLAYER, PalletTown_Movement_PlayerWalkToLabLeft
+ waitmovement 0
+ return
+
+PalletTown_EventScript_OakLeadPlayerToLabRight::
+ applymovement LOCALID_PALLET_PROF_OAK, PalletTown_Movement_OakWalkToLabRight
+ applymovement LOCALID_PLAYER, PalletTown_Movement_PlayerWalkToLabRight
+ waitmovement 0
+ return
+
+PalletTown_Movement_OakEnterLeft::
+ walk_up
+ walk_up
+ walk_right
+ walk_up
+ walk_up
+ walk_right
+ walk_up
+ walk_up
+ step_end
+
+PalletTown_Movement_OakEnterRight::
+ walk_right
+ walk_up
+ walk_up
+ walk_right
+ walk_up
+ walk_up
+ walk_right
+ walk_up
+ walk_up
+ step_end
+
+ .macro walk_to_lab
+ walk_left
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ .endm
+
+PalletTown_Movement_OakWalkToLabLeft::
+ walk_down
+ walk_to_lab
+ walk_right
+ walk_in_place_faster_up
+ step_end
+
+PalletTown_Movement_OakWalkToLabRight::
+ walk_down
+ walk_left
+ walk_to_lab
+ walk_right
+ walk_in_place_faster_up
+ step_end
+
+PalletTown_Movement_OakEnterLab::
+ walk_up
+ set_invisible
+ step_end
+
+PalletTown_Movement_PlayerWalkToLabLeft::
+ walk_down
+ walk_down
+ walk_to_lab
+ step_end
+
+PalletTown_Movement_PlayerWalkToLabRight::
+ walk_down
+ walk_down
+ walk_left
+ walk_to_lab
+ step_end
+
+PalletTown_Movement_PlayerEnterLab::
+ walk_right
+ walk_up
+ set_invisible
+ step_end
+
+PalletTown_EventScript_SignLady::
+ lock
+ goto_if_eq VAR_MAP_SCENE_PALLET_TOWN_SIGN_LADY, 2, PalletTown_EventScript_SignLadyDone
+ goto_if_eq VAR_MAP_SCENE_PALLET_TOWN_SIGN_LADY, 1, PalletTown_EventScript_SignLadyJustShowedSign
+ goto_if_eq SIGN_LADY_READY, TRUE, PalletTown_EventScript_SignLadyStartShowSign
+ goto_if_set FLAG_TEMP_2, PalletTown_EventScript_SignLadyGoReadSign
+ msgbox PalletTown_Text_HmmIsThatRight
+ applymovement LOCALID_PALLET_SIGN_LADY, Common_Movement_FacePlayer
+ waitmovement 0
+ playse SE_PIN
+ applymovement LOCALID_PALLET_SIGN_LADY, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_PALLET_SIGN_LADY, Common_Movement_Delay48
+ waitmovement 0
+ msgbox PalletTown_Text_OhLookLook
+ closemessage
+ call_if_eq VAR_FACING, DIR_EAST, PalletTown_EventScript_SignLadyMoveOutOfWayRight
+ call_if_ne VAR_FACING, DIR_EAST, PalletTown_EventScript_SignLadyMoveOutOfWayLeft
+ copyobjectxytoperm LOCALID_PALLET_SIGN_LADY
+ setflag FLAG_TEMP_2
+ release
+ end
+
+PalletTown_EventScript_SignLadyMoveOutOfWayRight::
+ applymovement LOCALID_PALLET_SIGN_LADY, PalletTown_Movement_SignLadyMoveOutOfWayRight
+ waitmovement 0
+ return
+
+PalletTown_EventScript_SignLadyMoveOutOfWayLeft::
+ applymovement LOCALID_PALLET_SIGN_LADY, PalletTown_Movement_SignLadyMoveOutOfWayLeft
+ waitmovement 0
+ return
+
+PalletTown_EventScript_SignLadyDone::
+ applymovement LOCALID_PALLET_SIGN_LADY, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox PalletTown_Text_RaisingMonsToo
+ release
+ end
+
+PalletTown_EventScript_SignLadyGoReadSign::
+ applymovement LOCALID_PALLET_SIGN_LADY, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox PalletTown_Text_ReadItReadIt
+ release
+ end
+
+PalletTown_EventScript_SignLadyJustShowedSign::
+ applymovement LOCALID_PALLET_SIGN_LADY, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox PalletTown_Text_SignsAreUsefulArentThey
+ release
+ end
+
+PalletTown_Movement_SignLadyMoveOutOfWayRight::
+ walk_right
+ walk_in_place_faster_left
+ step_end
+
+PalletTown_Movement_SignLadyMoveOutOfWayLeft::
+ walk_left
+ walk_in_place_faster_right
+ step_end
+
+PalletTown_EventScript_FatMan::
+ msgbox PalletTown_Text_CanStoreItemsAndMonsInPC, MSGBOX_NPC
+ end
+
+PalletTown_EventScript_OaksLabSign::
+ lockall
+ famechecker FAMECHECKER_OAK, 0
+ msgbox PalletTown_Text_OakPokemonResearchLab
+ releaseall
+ end
+
+PalletTown_EventScript_PlayersHouseSign::
+ msgbox PalletTown_Text_PlayersHouse, MSGBOX_SIGN
+ end
+
+PalletTown_EventScript_RivalsHouseSign::
+ msgbox PalletTown_Text_RivalsHouse, MSGBOX_SIGN
+ end
+
+PalletTown_EventScript_TownSign::
+ msgbox PalletTown_Text_TownSign, MSGBOX_SIGN
+ end
+
+PalletTown_EventScript_TrainerTips::
+ lockall
+ msgbox PalletTown_Text_PressStartToOpenMenu
+ setvar VAR_MAP_SCENE_PALLET_TOWN_SIGN_LADY, 1
+ releaseall
+ end
+
+PalletTown_EventScript_SignLadyTrigger::
+ lockall
+ applymovement LOCALID_PALLET_SIGN_LADY, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ call PalletTown_EventScript_SignLadyShowSign
+ releaseall
+ end
+
+PalletTown_EventScript_SignLadyShowSign::
+ textcolor NPC_TEXT_COLOR_FEMALE
+ msgbox PalletTown_Text_LookCopiedTrainerTipsSign
+ closemessage
+ delay 20
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ setflag FLAG_OPENED_START_MENU
+ setvar VAR_MAP_SCENE_PALLET_TOWN_SIGN_LADY, 1
+ setvar SIGN_LADY_READY, FALSE
+ special SetWalkingIntoSignVars
+ special DisableMsgBoxWalkaway
+ signmsg
+ msgbox PalletTown_Text_PressStartToOpenMenuCopy
+ normalmsg
+ return
+
+PalletTown_EventScript_SignLadyStartShowSign::
+ applymovement LOCALID_PALLET_SIGN_LADY, Common_Movement_FacePlayer
+ waitmovement 0
+ call PalletTown_EventScript_SignLadyShowSign
+ release
+ end
+
+PalletTown_Text_OakDontGoOut::
+ .string "OAK: Hey! Wait!\n"
+ .string "Don't go out!$"
+
+PalletTown_Text_OakGrassUnsafeNeedMon::
+ .string "OAK: It's unsafe!\n"
+ .string "Wild POKéMON live in tall grass!\p"
+ .string "You need your own POKéMON for\n"
+ .string "your protection.\p"
+ .string "I know!\n"
+ .string "Here, come with me!$"
+
+PalletTown_Text_RaisingMonsToo::
+ .string "I'm raising POKéMON, too.\p"
+ .string "When they get strong, they can\n"
+ .string "protect me.$"
+
+PalletTown_Text_CanStoreItemsAndMonsInPC::
+ .string "Technology is incredible!\p"
+ .string "You can now store and recall items\n"
+ .string "and POKéMON as data via PC.$"
+
+PalletTown_Text_OakPokemonResearchLab::
+ .string "OAK POKéMON RESEARCH LAB$"
+
+PalletTown_Text_PlayersHouse::
+ .string "{PLAYER}'s house$"
+
+PalletTown_Text_RivalsHouse::
+ .string "{RIVAL}'s house$"
+
+PalletTown_Text_TownSign::
+ .string "PALLET TOWN\n"
+ .string "Shades of your journey await!$"
+
+PalletTown_Text_OakLetMeSeePokedex::
+ .string "OAK: Ah, {PLAYER}!\n"
+ .string "You're back, are you?\p"
+ .string "How much have you filled in your\n"
+ .string "POKéDEX?\p"
+ .string "May I see it?\p"
+ .string "Let's see…$"
+
+PalletTown_Text_CaughtXPuttingInHonestEffort::
+ .string "You've caught {STR_VAR_2}…\p"
+ .string "Hm, it looks as if you're putting\n"
+ .string "in an honest effort.\p"
+ .string "When you manage to fill it some\n"
+ .string "more, come show me, please.$"
+
+PalletTown_Text_CaughtXImpressiveFollowMe::
+ .string "You've caught… {STR_VAR_2}!?\n"
+ .string "Now, this is impressive!\p"
+ .string "There's something I wanted to ask\n"
+ .string "of you, {PLAYER}.\p"
+ .string "Come.\n"
+ .string "Follow me.$"
+
+PalletTown_Text_OakYouEnjoyingTraveling::
+ .string "OAK: Ah, {PLAYER}!\n"
+ .string "You seem to be enjoying traveling.\p"
+ .string "Knowing you, {PLAYER}, I can easily\n"
+ .string "imagine you going out to even more\l"
+ .string "exotic locales.\p"
+ .string "Good for you, good for you.\n"
+ .string "Hohoho.$"
+
+@ For the NPC in Pallet Town that talks about the Trainer Tips sign
+PalletTown_Text_HmmIsThatRight::
+ .string "Hmm…\n"
+ .string "Is that right…$"
+
+PalletTown_Text_OhLookLook::
+ .string "Oh!\n"
+ .string "Look, look!$"
+
+PalletTown_Text_ReadItReadIt::
+ .string "Read it, read it!$"
+
+@ Used by sign
+PalletTown_Text_PressStartToOpenMenu::
+ .string "TRAINER TIPS\p"
+ .string "Press START to open the MENU!$"
+
+PalletTown_Text_SignsAreUsefulArentThey::
+ .string "Signs are useful, aren't they?$"
+
+PalletTown_Text_LookCopiedTrainerTipsSign::
+ .string "Look, look!\p"
+ .string "I copied what it said on one of\n"
+ .string "those TRAINER TIPS signs!$"
+
+@ Used by NPC
+PalletTown_Text_PressStartToOpenMenuCopy::
+ .string "TRAINER TIPS!\p"
+ .string "Press START to open the MENU!$"
+
+
diff --git a/data/maps/PalletTown_PlayersHouse_1F_Frlg/map.json b/data/maps/PalletTown_PlayersHouse_1F_Frlg/map.json
new file mode 100644
index 000000000000..a7310bfc8a0c
--- /dev/null
+++ b/data/maps/PalletTown_PlayersHouse_1F_Frlg/map.json
@@ -0,0 +1,76 @@
+{
+ "id": "MAP_PALLET_TOWN_PLAYERS_HOUSE_1F",
+ "name": "PalletTown_PlayersHouse_1F_Frlg",
+ "layout": "LAYOUT_PALLET_TOWN_PLAYERS_HOUSE_1F_FRLG",
+ "music": "MUS_LITTLEROOT",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_PALLET_TOWN",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_MOM",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MOM_FRLG",
+ "x": 8,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PalletTown_PlayersHouse_1F_EventScript_Mom",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_PALLET_TOWN",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 4,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_PALLET_TOWN",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_PALLET_TOWN_PLAYERS_HOUSE_2F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 3,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_PALLET_TOWN",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PalletTown_PlayersHouse_1F_EventScript_TV"
+ }
+ ]
+}
diff --git a/data/maps/PalletTown_PlayersHouse_1F_Frlg/scripts.inc b/data/maps/PalletTown_PlayersHouse_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..bead054c269d
--- /dev/null
+++ b/data/maps/PalletTown_PlayersHouse_1F_Frlg/scripts.inc
@@ -0,0 +1,92 @@
+PalletTown_PlayersHouse_1F_Frlg_MapScripts::
+ .byte 0
+
+PalletTown_PlayersHouse_1F_EventScript_Mom::
+ lock
+ faceplayer
+ goto_if_set FLAG_BEAT_RIVAL_IN_OAKS_LAB, PalletTown_PlayersHouse_1F_EventScript_MomHeal
+ checkplayergender
+ call_if_eq VAR_RESULT, MALE, PalletTown_PlayersHouse_1F_EventScript_MomOakLookingForYouMale
+ call_if_eq VAR_RESULT, FEMALE, PalletTown_PlayersHouse_1F_EventScript_MomOakLookingForYouFemale
+ closemessage
+ applymovement LOCALID_MOM, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+PalletTown_PlayersHouse_1F_EventScript_MomOakLookingForYouMale::
+ msgbox PalletTown_PlayersHouse_1F_Text_AllBoysLeaveOakLookingForYou
+ return
+
+PalletTown_PlayersHouse_1F_EventScript_MomOakLookingForYouFemale::
+ msgbox PalletTown_PlayersHouse_1F_Text_AllGirlsLeaveOakLookingForYou
+ return
+
+PalletTown_PlayersHouse_1F_EventScript_MomHeal::
+ msgbox PalletTown_PlayersHouse_1F_Text_YouShouldTakeQuickRest
+ closemessage
+ call Common_EventScript_OutOfCenterPartyHeal
+ msgbox PalletTown_PlayersHouse_1F_Text_LookingGreatTakeCare
+ release
+ end
+
+@ Displays special text if interacted with from side or back (which are normally inaccessible)
+PalletTown_PlayersHouse_1F_EventScript_TV::
+ lockall
+ goto_if_eq VAR_FACING, DIR_NORTH, PalletTown_PlayersHouse_1F_EventScript_TVScreen
+ msgbox PalletTown_PlayersHouse_1F_Text_OopsWrongSide
+ releaseall
+ end
+
+PalletTown_PlayersHouse_1F_EventScript_TVScreen::
+ checkplayergender
+ call_if_eq VAR_RESULT, MALE, PalletTown_PlayersHouse_1F_EventScript_TVScreenMale
+ call_if_eq VAR_RESULT, FEMALE, PalletTown_PlayersHouse_1F_EventScript_TVScreenFemale
+ releaseall
+ end
+
+PalletTown_PlayersHouse_1F_EventScript_TVScreenMale::
+ msgbox PalletTown_PlayersHouse_1F_Text_MovieOnTVFourBoysOnRailroad
+ return
+
+PalletTown_PlayersHouse_1F_EventScript_TVScreenFemale::
+ msgbox PalletTown_PlayersHouse_1F_Text_MovieOnTVGirlOnBrickRoad
+ return
+
+PalletTown_PlayersHouse_1F_Text_AllBoysLeaveOakLookingForYou::
+ .string "MOM: …Right.\n"
+ .string "All boys leave home someday.\l"
+ .string "It said so on TV.\p"
+ .string "Oh, yes. PROF. OAK, next door, was\n"
+ .string "looking for you.$"
+
+PalletTown_PlayersHouse_1F_Text_AllGirlsLeaveOakLookingForYou::
+ .string "MOM: …Right.\n"
+ .string "All girls dream of traveling.\l"
+ .string "It said so on TV.\p"
+ .string "Oh, yes. PROF. OAK, next door, was\n"
+ .string "looking for you.$"
+
+PalletTown_PlayersHouse_1F_Text_YouShouldTakeQuickRest::
+ .string "MOM: {PLAYER}!\n"
+ .string "You should take a quick rest.$"
+
+PalletTown_PlayersHouse_1F_Text_LookingGreatTakeCare::
+ .string "MOM: Oh, good! You and your\n"
+ .string "POKéMON are looking great.\l"
+ .string "Take care now!$"
+
+PalletTown_PlayersHouse_1F_Text_MovieOnTVFourBoysOnRailroad::
+ .string "There's a movie on TV.\n"
+ .string "Four boys are walking on railroad\l"
+ .string "tracks.\p"
+ .string "…I better go, too.$"
+
+PalletTown_PlayersHouse_1F_Text_MovieOnTVGirlOnBrickRoad::
+ .string "There's a movie on TV.\n"
+ .string "A girl with her hair in pigtails is\l"
+ .string "walking up a brick road.\p"
+ .string "…I better go, too.$"
+
+PalletTown_PlayersHouse_1F_Text_OopsWrongSide::
+ .string "Oops, wrong side…$"
diff --git a/data/maps/PalletTown_PlayersHouse_2F_Frlg/map.json b/data/maps/PalletTown_PlayersHouse_2F_Frlg/map.json
new file mode 100644
index 000000000000..6efcd06fdb6c
--- /dev/null
+++ b/data/maps/PalletTown_PlayersHouse_2F_Frlg/map.json
@@ -0,0 +1,55 @@
+{
+ "id": "MAP_PALLET_TOWN_PLAYERS_HOUSE_2F",
+ "name": "PalletTown_PlayersHouse_2F_Frlg",
+ "layout": "LAYOUT_PALLET_TOWN_PLAYERS_HOUSE_2F_FRLG",
+ "music": "MUS_LITTLEROOT",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_PALLET_TOWN",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_PALLET_TOWN_PLAYERS_HOUSE_1F",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 5,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PalletTown_PlayersHouse_2F_EventScript_NES"
+ },
+ {
+ "type": "sign",
+ "x": 1,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "EventScript_PalletTown_PlayersHouse_2F_TurnOnPC"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PalletTown_PlayersHouse_2F_EventScript_Sign"
+ }
+ ]
+}
diff --git a/data/maps/PalletTown_PlayersHouse_2F_Frlg/scripts.inc b/data/maps/PalletTown_PlayersHouse_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..152961253a5c
--- /dev/null
+++ b/data/maps/PalletTown_PlayersHouse_2F_Frlg/scripts.inc
@@ -0,0 +1,40 @@
+PalletTown_PlayersHouse_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, PalletTown_PlayersHouse_2F_OnTransition
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, PalletTown_PlayersHouse_2F_OnWarp
+ .byte 0
+
+PalletTown_PlayersHouse_2F_OnTransition::
+ call_if_eq VAR_MAP_SCENE_PALLET_TOWN_PLAYERS_HOUSE_2F, 0, PalletTown_PlayersHouse_2F_EventScript_SetRespawn
+ end
+
+PalletTown_PlayersHouse_2F_EventScript_SetRespawn::
+ setrespawn HEAL_LOCATION_PALLET_TOWN
+ return
+
+PalletTown_PlayersHouse_2F_OnWarp::
+ map_script_2 VAR_MAP_SCENE_PALLET_TOWN_PLAYERS_HOUSE_2F, 0, PalletTown_PlayersHouse_2F_FirstWarpIn
+ .2byte 0
+
+PalletTown_PlayersHouse_2F_FirstWarpIn::
+ turnobject LOCALID_PLAYER, DIR_NORTH
+ setvar VAR_MAP_SCENE_PALLET_TOWN_PLAYERS_HOUSE_2F, 1
+ end
+
+PalletTown_PlayersHouse_2F_EventScript_NES::
+ msgbox PalletTown_PlayersHouse_2F_Text_PlayedWithNES, MSGBOX_SIGN
+ end
+
+PalletTown_PlayersHouse_2F_EventScript_Sign::
+ msgbox PalletTown_PlayersHouse_2F_Text_PressLRForHelp, MSGBOX_SIGN
+ end
+
+PalletTown_PlayersHouse_2F_Text_PlayedWithNES::
+ .string "{PLAYER} played with the NES.\p"
+ .string "…Okay!\n"
+ .string "It's time to go!$"
+
+PalletTown_PlayersHouse_2F_Text_PressLRForHelp::
+ .string "It's a posted notice…\p"
+ .string "If you're confused, ask for HELP!\n"
+ .string "Press the L or R Button!$"
+
diff --git a/data/maps/PalletTown_ProfessorOaksLab_Frlg/map.json b/data/maps/PalletTown_ProfessorOaksLab_Frlg/map.json
new file mode 100644
index 000000000000..459a37f24985
--- /dev/null
+++ b/data/maps/PalletTown_ProfessorOaksLab_Frlg/map.json
@@ -0,0 +1,280 @@
+{
+ "id": "MAP_PALLET_TOWN_PROFESSOR_OAKS_LAB",
+ "name": "PalletTown_ProfessorOaksLab_Frlg",
+ "layout": "LAYOUT_PALLET_TOWN_PROFESSOR_OAKS_LAB",
+ "music": "MUS_RG_OAK_LAB",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_PALLET_TOWN",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 3,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_Aide1",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_F",
+ "x": 2,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 4,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_Aide3",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 11,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_Aide2",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_OAKS_LAB_PROF_OAK",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PROF_OAK",
+ "x": 6,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_ProfOak",
+ "flag": "FLAG_HIDE_OAK_IN_HIS_LAB"
+ },
+ {
+ "local_id": "LOCALID_BULBASAUR_BALL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 8,
+ "y": 4,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_BulbasaurBall",
+ "flag": "FLAG_HIDE_BULBASAUR_BALL"
+ },
+ {
+ "local_id": "LOCALID_SQUIRTLE_BALL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 9,
+ "y": 4,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_SquirtleBall",
+ "flag": "FLAG_HIDE_SQUIRTLE_BALL"
+ },
+ {
+ "local_id": "LOCALID_CHARMANDER_BALL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 10,
+ "y": 4,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_CharmanderBall",
+ "flag": "FLAG_HIDE_CHARMANDER_BALL"
+ },
+ {
+ "local_id": "LOCALID_OAKS_LAB_RIVAL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLUE",
+ "x": 5,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_Rival",
+ "flag": "FLAG_HIDE_RIVAL_IN_LAB"
+ },
+ {
+ "local_id": "LOCALID_POKEDEX_1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POKEDEX",
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_Pokedex",
+ "flag": "FLAG_HIDE_POKEDEX"
+ },
+ {
+ "local_id": "LOCALID_POKEDEX_2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POKEDEX",
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_Pokedex",
+ "flag": "FLAG_HIDE_POKEDEX"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_PALLET_TOWN",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 7,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_PALLET_TOWN",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 5,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_PALLET_TOWN",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB",
+ "var_value": "2",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_LeaveStarterSceneTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB",
+ "var_value": "2",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_LeaveStarterSceneTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB",
+ "var_value": "2",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_LeaveStarterSceneTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB",
+ "var_value": "3",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_RivalBattleTriggerLeft"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB",
+ "var_value": "3",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_RivalBattleTriggerMid"
+ },
+ {
+ "type": "trigger",
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB",
+ "var_value": "3",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_RivalBattleTriggerRight"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_Computer"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_Computer"
+ },
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_LeftSign"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PalletTown_ProfessorOaksLab_EventScript_RightSign"
+ }
+ ]
+}
diff --git a/data/maps/PalletTown_ProfessorOaksLab_Frlg/scripts.inc b/data/maps/PalletTown_ProfessorOaksLab_Frlg/scripts.inc
new file mode 100644
index 000000000000..3efd13cd19ba
--- /dev/null
+++ b/data/maps/PalletTown_ProfessorOaksLab_Frlg/scripts.inc
@@ -0,0 +1,1657 @@
+.equ PLAYER_STARTER_NUM, VAR_TEMP_1
+.equ PLAYER_STARTER_SPECIES, VAR_TEMP_2
+.equ RIVAL_STARTER_SPECIES, VAR_TEMP_3
+.equ RIVAL_STARTER_ID, VAR_TEMP_4
+
+.equ SHOWED_OAK_COMPLETE_DEX, FLAG_TEMP_2
+
+PalletTown_ProfessorOaksLab_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, PalletTown_ProfessorOaksLab_OnTransition
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, PalletTown_ProfessorOaksLab_OnWarp
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, PalletTown_ProfessorOaksLab_OnFrame
+ .byte 0
+
+PalletTown_ProfessorOaksLab_OnTransition::
+ setflag FLAG_VISITED_OAKS_LAB
+ call_if_eq VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 1, PalletTown_ProfessorOaksLab_EventScript_ReadyOakForStarterScene
+ call_if_eq VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 7, PalletTown_ProfessorOaksLab_EventScript_ReadyOakForNationalDexScene
+ call_if_eq VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 8, PalletTown_ProfessorOaksLab_EventScript_SetNationalDexSceneFinished
+ call_if_set FLAG_GOT_POKEBALLS_FROM_OAK_AFTER_22_RIVAL, PalletTown_ProfessorOaksLab_EventScript_SetSkipPokeBallCheck
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_SetSkipPokeBallCheck::
+ setflag FLAG_OAK_SKIP_22_RIVAL_CHECK
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_SetNationalDexSceneFinished::
+ setvar VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 9
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_ReadyOakForStarterScene::
+ setobjectxyperm LOCALID_OAKS_LAB_PROF_OAK, 6, 11
+ setobjectmovementtype LOCALID_OAKS_LAB_PROF_OAK, MOVEMENT_TYPE_FACE_UP
+ savebgm MUS_RG_OAK
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_ReadyOakForNationalDexScene::
+ setobjectxyperm LOCALID_OAKS_LAB_PROF_OAK, 6, 11
+ setobjectmovementtype LOCALID_OAKS_LAB_PROF_OAK, MOVEMENT_TYPE_FACE_UP
+ return
+
+PalletTown_ProfessorOaksLab_OnWarp::
+ map_script_2 VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 1, PalletTown_ProfessorOaksLab_EventScript_ReadyPlayerForStarterScene
+ .2byte 0
+
+PalletTown_ProfessorOaksLab_EventScript_ReadyPlayerForStarterScene::
+ turnobject LOCALID_PLAYER, DIR_NORTH
+ end
+
+PalletTown_ProfessorOaksLab_OnFrame::
+ map_script_2 VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 1, PalletTown_ProfessorOaksLab_ChooseStarterScene
+ map_script_2 VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 7, PalletTown_ProfessorOaksLab_EventScript_EnterForNationalDexScene
+ .2byte 0
+
+PalletTown_ProfessorOaksLab_EventScript_EnterForNationalDexScene:: @ 8169002
+ lockall
+ setvar VAR_FACING, DIR_NORTH
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakEnter
+ waitmovement 0
+ removeobject LOCALID_OAKS_LAB_PROF_OAK
+ setobjectxyperm LOCALID_OAKS_LAB_PROF_OAK, 6, 3
+ setobjectmovementtype LOCALID_OAKS_LAB_PROF_OAK, MOVEMENT_TYPE_FACE_DOWN
+ clearflag FLAG_HIDE_OAK_IN_HIS_LAB
+ applymovement LOCALID_PLAYER, PalletTown_ProfessorOaksLab_Movement_PlayerEnter
+ waitmovement 0
+ goto PalletTown_ProfessorOaksLab_EventScript_NationalDexScene
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_NationalDexScene::
+ msgbox PalletTown_ProfessorOaksLab_Text_OakSightingsOfRareMons
+ closemessage
+ call_if_eq VAR_FACING, DIR_NORTH, PalletTown_ProfessorOaksLab_EventScript_NationalDexSceneRivalEnterNorth
+ call_if_eq VAR_FACING, DIR_SOUTH, PalletTown_ProfessorOaksLab_EventScript_NationalDexSceneRivalEnterSouth
+ call_if_eq VAR_FACING, DIR_EAST, PalletTown_ProfessorOaksLab_EventScript_NationalDexSceneRivalEnterEastWest
+ call_if_eq VAR_FACING, DIR_WEST, PalletTown_ProfessorOaksLab_EventScript_NationalDexSceneRivalEnterEastWest
+ msgbox PalletTown_ProfessorOaksLab_Text_RivalJustLetMeHandleEverything
+ fadedefaultbgm
+ msgbox PalletTown_ProfessorOaksLab_Text_OakNeedYourHelpTooNeedToSeePokedexes
+ call_if_eq VAR_FACING, DIR_NORTH, PalletTown_ProfessorOaksLab_EventScript_PlayerFaceOakNorth
+ call_if_eq VAR_FACING, DIR_WEST, PalletTown_ProfessorOaksLab_EventScript_PlayerFaceOakWest
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PalletTown_ProfessorOaksLab_Text_OakTookBothPokedexUnits
+ closemessage
+ call EventScript_RestorePrevTextColor
+ call_if_eq VAR_FACING, DIR_NORTH, PalletTown_ProfessorOaksLab_EventScript_OakBringDexesToDeskNorth
+ call_if_eq VAR_FACING, DIR_SOUTH, PalletTown_ProfessorOaksLab_EventScript_OakBringDexesToDeskSouth
+ call_if_eq VAR_FACING, DIR_EAST, PalletTown_ProfessorOaksLab_EventScript_OakBringDexesToDeskEast
+ call_if_eq VAR_FACING, DIR_WEST, PalletTown_ProfessorOaksLab_EventScript_OakBringDexesToDeskWest
+ addobject LOCALID_POKEDEX_1
+ addobject LOCALID_POKEDEX_2
+ delay 30
+ msgbox PalletTown_ProfessorOaksLab_Text_OakNowTheseUnitsCanRecordMoreData
+ closemessage
+ removeobject LOCALID_POKEDEX_1
+ removeobject LOCALID_POKEDEX_2
+ delay 30
+ call_if_eq VAR_FACING, DIR_NORTH, PalletTown_ProfessorOaksLab_EventScript_OakBringDexesOverNorth
+ call_if_eq VAR_FACING, DIR_SOUTH, PalletTown_ProfessorOaksLab_EventScript_OakBringDexesOverSouth
+ call_if_eq VAR_FACING, DIR_EAST, PalletTown_ProfessorOaksLab_EventScript_OakBringDexesOverEast
+ call_if_eq VAR_FACING, DIR_WEST, PalletTown_ProfessorOaksLab_EventScript_OakBringDexesOverWest
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_RG_OBTAIN_KEY_ITEM
+ message PalletTown_ProfessorOaksLab_Text_PlayersPokedexWasUpgraded
+ waitmessage
+ waitfanfare
+ call EventScript_RestorePrevTextColor
+ special EnableNationalPokedex
+ msgbox PalletTown_ProfessorOaksLab_Text_OakMustReallyWorkToFillPokedex
+ msgbox PalletTown_ProfessorOaksLab_Text_RivalIllCompleteThePokedex
+ closemessage
+ playbgm MUS_RG_RIVAL_EXIT, 0
+ call_if_eq VAR_FACING, DIR_NORTH, PalletTown_ProfessorOaksLab_EventScript_RivalExitNorth
+ call_if_eq VAR_FACING, DIR_SOUTH, PalletTown_ProfessorOaksLab_EventScript_RivalExit
+ call_if_eq VAR_FACING, DIR_EAST, PalletTown_ProfessorOaksLab_EventScript_RivalExit
+ call_if_eq VAR_FACING, DIR_WEST, PalletTown_ProfessorOaksLab_EventScript_RivalExit
+ removeobject LOCALID_OAKS_LAB_RIVAL
+ fadedefaultbgm
+ setvar VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 8
+ releaseall
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_NationalDexSceneRivalEnterNorth::
+ setobjectxyperm LOCALID_OAKS_LAB_RIVAL, 5, 10
+ addobject LOCALID_OAKS_LAB_RIVAL
+ playbgm MUS_RG_ENCOUNTER_RIVAL, 0
+ applymovement LOCALID_PLAYER, PalletTown_ProfessorOaksLab_Movement_WatchRivalEnterNorth
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalEnter
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_NationalDexSceneRivalEnterEastWest::
+ setobjectxyperm LOCALID_OAKS_LAB_RIVAL, 6, 10
+ addobject LOCALID_OAKS_LAB_RIVAL
+ playbgm MUS_RG_ENCOUNTER_RIVAL, 0
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, PalletTown_ProfessorOaksLab_Movement_WatchRivalEnterEastWest
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalEnter
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_NationalDexSceneRivalEnterSouth::
+ setobjectxyperm LOCALID_OAKS_LAB_RIVAL, 6, 10
+ addobject LOCALID_OAKS_LAB_RIVAL
+ playbgm MUS_RG_ENCOUNTER_RIVAL, 0
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalEnter
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_PlayerFaceOakNorth::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_PlayerFaceOakWest::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_OakBringDexesToDeskNorth::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakBringDexesToDesk
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_OakBringDexesToDeskSouth::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakBringDexesToDeskSouth
+ applymovement LOCALID_PLAYER, PalletTown_ProfessorOaksLab_Movement_WatchOakWalkToDesk
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_WatchOakWalkToDesk
+ waitmovement LOCALID_OAKS_LAB_PROF_OAK
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_OakBringDexesToDeskEast::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakBringDexesToDesk
+ applymovement LOCALID_PLAYER, PalletTown_ProfessorOaksLab_Movement_WatchOakWalkToDeskEast
+ waitmovement LOCALID_OAKS_LAB_PROF_OAK
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_OakBringDexesToDeskWest::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakBringDexesToDesk
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_Movement_OakBringDexesToDesk::
+ walk_up
+ walk_left
+ walk_in_place_faster_up
+ delay_16
+ delay_4
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_OakBringDexesToDeskSouth::
+ walk_left
+ walk_left
+ walk_up
+ delay_16
+ delay_4
+ step_end
+
+PalletTown_ProfessorOaksLab_ChooseStarterScene::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakEnter
+ waitmovement 0
+ removeobject LOCALID_OAKS_LAB_PROF_OAK
+ setobjectxyperm LOCALID_OAKS_LAB_PROF_OAK, 6, 3
+ setobjectmovementtype LOCALID_OAKS_LAB_PROF_OAK, MOVEMENT_TYPE_FACE_DOWN
+ clearflag FLAG_HIDE_OAK_IN_HIS_LAB
+ applymovement LOCALID_PLAYER, PalletTown_ProfessorOaksLab_Movement_PlayerEnter
+ waitmovement 0
+ applymovement LOCALID_OAKS_LAB_RIVAL, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ clearflag FLAG_DONT_TRANSITION_MUSIC
+ savebgm MUS_DUMMY
+ fadedefaultbgm
+ msgbox PalletTown_ProfessorOaksLab_Text_RivalFedUpWithWaiting
+ closemessage
+ delay 60
+ msgbox PalletTown_ProfessorOaksLab_Text_OakThreeMonsChooseOne
+ closemessage
+ delay 30
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalReact
+ waitmovement 0
+ msgbox PalletTown_ProfessorOaksLab_Text_RivalNoFairWhatAboutMe
+ msgbox PalletTown_ProfessorOaksLab_Text_OakBePatientRival
+ setvar VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 2
+ releaseall
+ end
+
+PalletTown_ProfessorOaksLab_Movement_OakEnter::
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_PlayerEnter::
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_RivalReact::
+ walk_in_place_up
+ walk_in_place_up
+ step_end
+
+PalletTown_ProfessorOaksLab_EventScript_LeaveStarterSceneTrigger::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, Common_Movement_FaceDown
+ waitmovement 0
+ msgbox PalletTown_ProfessorOaksLab_Text_OakHeyDontGoAwayYet
+ closemessage
+ applymovement LOCALID_PLAYER, PalletTown_ProfessorOaksLab_Movement_PlayerWalkUp
+ waitmovement 0
+ releaseall
+ end
+
+PalletTown_ProfessorOaksLab_Movement_PlayerWalkUp::
+ walk_up
+ step_end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalBattleTriggerLeft::
+ lockall
+ setvar VAR_TEMP_2, 1
+ goto PalletTown_ProfessorOaksLab_EventScript_RivalBattle
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalBattleTriggerMid::
+ lockall
+ setvar VAR_TEMP_2, 2
+ goto PalletTown_ProfessorOaksLab_EventScript_RivalBattle
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalBattleTriggerRight::
+ lockall
+ setvar VAR_TEMP_2, 3
+ goto PalletTown_ProfessorOaksLab_EventScript_RivalBattle
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalBattle::
+ textcolor NPC_TEXT_COLOR_MALE
+ playbgm MUS_RG_ENCOUNTER_RIVAL, 0
+ applymovement LOCALID_OAKS_LAB_RIVAL, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ msgbox PalletTown_ProfessorOaksLab_Text_RivalLetsCheckOutMons
+ closemessage
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, Common_Movement_FaceDown
+ waitmovement 0
+ goto_if_eq VAR_STARTER_MON, 0, PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleCharmander
+ goto_if_eq VAR_STARTER_MON, 1, PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleBulbasaur
+ goto_if_eq VAR_STARTER_MON, 2, PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleSquirtle
+ end
+
+@ The scripts for the rival approaching the player for battle are a bit bloated because
+@ both the player and rival can be in 3 different positions, so theres 9 different approaches
+@ NOTE: Names below refer to the Rival's mon (e.g. for RivalBattleSquirtle, player has Charmander)
+
+PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleSquirtle::
+ goto_if_eq VAR_TEMP_2, 1, PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleSquirtleLeft
+ goto_if_eq VAR_TEMP_2, 2, PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleSquirtleMid
+ goto_if_eq VAR_TEMP_2, 3, PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleSquirtleRight
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleSquirtleLeft::
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalApproachForBattleSquirtleLeft
+ waitmovement 0
+ goto PalletTown_ProfessorOaksLab_EventScript_RivalBattleSquirtle
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleSquirtleMid::
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalApproachForBattleSquirtleMid
+ waitmovement 0
+ goto PalletTown_ProfessorOaksLab_EventScript_RivalBattleSquirtle
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleSquirtleRight::
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalApproachForBattleSquirtleRight
+ waitmovement 0
+ goto PalletTown_ProfessorOaksLab_EventScript_RivalBattleSquirtle
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalBattleSquirtle::
+ trainerbattle_earlyrival TRAINER_RIVAL_OAKS_LAB_SQUIRTLE, RIVAL_BATTLE_TUTORIAL, PalletTown_ProfessorOaksLab_Text_RivalDefeat, Text_RivalVictory
+ goto PalletTown_ProfessorOaksLab_EventScript_EndRivalBattle
+ end
+
+PalletTown_ProfessorOaksLab_Movement_RivalApproachForBattleSquirtleLeft::
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_RivalApproachForBattleSquirtleMid::
+ walk_left
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_RivalApproachForBattleSquirtleRight::
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ step_end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleCharmander::
+ goto_if_eq VAR_TEMP_2, 1, PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleCharmanderLeft
+ goto_if_eq VAR_TEMP_2, 2, PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleCharmanderMid
+ goto_if_eq VAR_TEMP_2, 3, PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleCharmanderRight
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleCharmanderLeft::
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_ApproachForBattleCharmanderLeft
+ waitmovement 0
+ goto PalletTown_ProfessorOaksLab_EventScript_RivalBattleCharmander
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleCharmanderMid::
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_ApproachForBattleCharmanderMid
+ waitmovement 0
+ goto PalletTown_ProfessorOaksLab_EventScript_RivalBattleCharmander
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleCharmanderRight::
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_ApproachForBattleCharmanderRight
+ waitmovement 0
+ goto PalletTown_ProfessorOaksLab_EventScript_RivalBattleCharmander
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalBattleCharmander::
+ trainerbattle_earlyrival TRAINER_RIVAL_OAKS_LAB_CHARMANDER, RIVAL_BATTLE_TUTORIAL, PalletTown_ProfessorOaksLab_Text_RivalDefeat, Text_RivalVictory
+ goto PalletTown_ProfessorOaksLab_EventScript_EndRivalBattle
+ end
+
+PalletTown_ProfessorOaksLab_Movement_ApproachForBattleCharmanderLeft::
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_ApproachForBattleCharmanderMid::
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_ApproachForBattleCharmanderRight::
+ walk_left
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ step_end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleBulbasaur::
+ goto_if_eq VAR_TEMP_2, 1, PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleBulbasaurLeft
+ goto_if_eq VAR_TEMP_2, 2, PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleBulbasaurMid
+ goto_if_eq VAR_TEMP_2, 3, PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleBulbasaurRight
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleBulbasaurLeft::
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalApproachForBattleBulbasaurLeft
+ waitmovement 0
+ goto PalletTown_ProfessorOaksLab_EventScript_RivalBattleBulbasaur
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleBulbasaurMid::
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalApproachForBattleBulbasaurMid
+ waitmovement 0
+ goto PalletTown_ProfessorOaksLab_EventScript_RivalBattleBulbasaur
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleBulbasaurRight::
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalApproachForBattleBulbasaurRight
+ waitmovement 0
+ goto PalletTown_ProfessorOaksLab_EventScript_RivalBattleBulbasaur
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalBattleBulbasaur::
+ trainerbattle_earlyrival TRAINER_RIVAL_OAKS_LAB_BULBASAUR, RIVAL_BATTLE_TUTORIAL, PalletTown_ProfessorOaksLab_Text_RivalDefeat, Text_RivalVictory
+ goto PalletTown_ProfessorOaksLab_EventScript_EndRivalBattle
+ end
+
+PalletTown_ProfessorOaksLab_Movement_RivalApproachForBattleBulbasaurLeft::
+ walk_left
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_RivalApproachForBattleBulbasaurMid::
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_RivalApproachForBattleBulbasaurRight::
+ walk_left
+ walk_down
+ walk_down
+ step_end
+
+PalletTown_ProfessorOaksLab_EventScript_EndRivalBattle::
+ special HealPlayerParty
+ msgbox PalletTown_ProfessorOaksLab_Text_RivalGoToughenMyMon
+ closemessage
+ playbgm MUS_RG_RIVAL_EXIT, 0
+ call_if_eq VAR_TEMP_2, 1, PalletTown_ProfessorOaksLab_EventScript_RivalExitAfterBattleLeft
+ call_if_eq VAR_TEMP_2, 2, PalletTown_ProfessorOaksLab_EventScript_RivalExitAfterBattleMid
+ call_if_eq VAR_TEMP_2, 3, PalletTown_ProfessorOaksLab_EventScript_RivalExitAfterBattleRight
+ removeobject LOCALID_OAKS_LAB_RIVAL
+ playse SE_EXIT
+ fadedefaultbgm
+ setvar VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 4
+ setflag FLAG_BEAT_RIVAL_IN_OAKS_LAB
+ releaseall
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalExitAfterBattleLeft::
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalExitAfterBattleLeft
+ applymovement LOCALID_PLAYER, PalletTown_ProfessorOaksLab_Movement_PlayerWatchRivalExitAfterBattle
+ waitmovement LOCALID_OAKS_LAB_RIVAL
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_RivalExitAfterBattleMid::
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalExitAfterBattleMid
+ applymovement LOCALID_PLAYER, PalletTown_ProfessorOaksLab_Movement_PlayerWatchRivalExitAfterBattle
+ waitmovement LOCALID_OAKS_LAB_RIVAL
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_RivalExitAfterBattleRight::
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalExitAfterBattleRight
+ applymovement LOCALID_PLAYER, PalletTown_ProfessorOaksLab_Movement_PlayerWatchRivalExitAfterBattleRight
+ waitmovement LOCALID_OAKS_LAB_RIVAL
+ return
+
+PalletTown_ProfessorOaksLab_Movement_RivalExitAfterBattleLeft::
+ walk_right
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ delay_8
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_RivalExitAfterBattleRight::
+ walk_left
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ delay_8
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_RivalExitAfterBattleMid::
+ walk_right
+ walk_down
+ walk_down
+ walk_down
+ walk_left
+ walk_down
+ walk_down
+ delay_8
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_PlayerWatchRivalExitAfterBattle::
+ delay_16
+ delay_8
+ walk_in_place_faster_right
+ delay_16
+ walk_in_place_faster_down
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_PlayerWatchRivalExitAfterBattleRight::
+ delay_16
+ delay_8
+ walk_in_place_faster_left
+ delay_16
+ walk_in_place_faster_down
+ step_end
+
+PalletTown_ProfessorOaksLab_EventScript_Rival::
+ lock
+ faceplayer
+ goto_if_eq VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 3, PalletTown_ProfessorOaksLab_EventScript_RivalChoseStarter
+ goto_if_eq VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 2, PalletTown_ProfessorOaksLab_EventScript_RivalWaitingForStarter
+ msgbox PalletTown_ProfessorOaksLab_Text_RivalGrampsIsntAround
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalWaitingForStarter::
+ msgbox PalletTown_ProfessorOaksLab_Text_RivalGoChoosePlayer
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalChoseStarter::
+ msgbox PalletTown_ProfessorOaksLab_Text_RivalMyMonLooksTougher
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_ProfOak::
+ lock
+ faceplayer
+ goto_if_set SHOWED_OAK_COMPLETE_DEX, PalletTown_ProfessorOaksLab_EventScript_OakJustShownCompleteDex
+ goto_if_eq VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 9, PalletTown_ProfessorOaksLab_EventScript_RatePokedex
+ goto_if_eq VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 8, PalletTown_ProfessorOaksLab_EventScript_MonsAroundWorldWait
+ goto_if_set FLAG_SYS_GAME_CLEAR, PalletTown_ProfessorOaksLab_EventScript_TryStartNationalDexScene
+ goto_if_eq VAR_MAP_SCENE_CERULEAN_CITY_RIVAL, 1, PalletTown_ProfessorOaksLab_EventScript_RatePokedex
+ goto_if_eq VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 6, PalletTown_ProfessorOaksLab_EventScript_RatePokedexOrTryGiveBalls
+ goto_if_ge VAR_MAP_SCENE_VIRIDIAN_CITY_MART, 1, PalletTown_ProfessorOaksLab_EventScript_ReceiveDexScene
+ goto_if_eq VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 4, PalletTown_ProfessorOaksLab_EventScript_OakBattleMonForItToGrow
+ goto_if_eq VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 3, PalletTown_ProfessorOaksLab_EventScript_OakCanReachNextTownWithMon
+ msgbox PalletTown_ProfessorOaksLab_Text_OakWhichOneWillYouChoose
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_OakJustShownCompleteDex::
+ msgbox PokedexRating_Text_ThankYouMadeDreamReality
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_OakCanReachNextTownWithMon::
+ msgbox PalletTown_ProfessorOaksLab_Text_OakCanReachNextTownWithMon
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_OakBattleMonForItToGrow::
+ msgbox PalletTown_ProfessorOaksLab_Text_OakBattleMonForItToGrow
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_ReceiveDexScene::
+ msgbox PalletTown_ProfessorOaksLab_Text_OakHaveSomethingForMe
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_OBTAIN_TMHM
+ message PalletTown_ProfessorOaksLab_Text_DeliveredOaksParcel
+ waitmessage
+ waitfanfare
+ call EventScript_RestorePrevTextColor
+ removeitem ITEM_OAKS_PARCEL
+ msgbox PalletTown_ProfessorOaksLab_Text_OakCustomBallIOrdered
+ playbgm MUS_RG_ENCOUNTER_RIVAL, 0
+ msgbox PalletTown_ProfessorOaksLab_Text_RivalGramps
+ closemessage
+ call_if_eq VAR_FACING, DIR_NORTH, PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalEnterNorth
+ call_if_eq VAR_FACING, DIR_SOUTH, PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalEnterSouth
+ call_if_eq VAR_FACING, DIR_EAST, PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalEnterEastWest
+ call_if_eq VAR_FACING, DIR_WEST, PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalEnterEastWest
+ fadedefaultbgm
+ msgbox PalletTown_ProfessorOaksLab_Text_RivalWhatDidYouCallMeFor
+ closemessage
+ delay 30
+ playse SE_PIN
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, Common_Movement_Delay48
+ waitmovement 0
+ call_if_eq VAR_FACING, DIR_SOUTH, PalletTown_ProfessorOaksLab_EventScript_DexSceneOakFacePlayerAndRivalSouth
+ call_if_eq VAR_FACING, DIR_EAST, PalletTown_ProfessorOaksLab_EventScript_DexSceneOakFacePlayerAndRivalEast
+ call_if_eq VAR_FACING, DIR_WEST, PalletTown_ProfessorOaksLab_EventScript_DexSceneOakFacePlayerAndRivalWest
+ call_if_eq VAR_FACING, DIR_NORTH, PalletTown_ProfessorOaksLab_EventScript_DexSceneOakFacePlayerAndRivalNorth
+ msgbox PalletTown_ProfessorOaksLab_Text_OakHaveRequestForYouTwo
+ closemessage
+ call_if_eq VAR_FACING, DIR_NORTH, PalletTown_ProfessorOaksLab_EventScript_DexSceneOakWalkToDeskNorth
+ call_if_eq VAR_FACING, DIR_SOUTH, PalletTown_ProfessorOaksLab_EventScript_DexSceneOakWalkToDeskSouth
+ call_if_eq VAR_FACING, DIR_EAST, PalletTown_ProfessorOaksLab_EventScript_DexSceneOakWalkToDeskEast
+ call_if_eq VAR_FACING, DIR_WEST, PalletTown_ProfessorOaksLab_EventScript_DexSceneOakWalkToDeskWest
+ msgbox PalletTown_ProfessorOaksLab_Text_OakPokedexOnDesk
+ closemessage
+ delay 40
+ msgbox PalletTown_ProfessorOaksLab_Text_OakTakeTheseWithYou
+ closemessage
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ removeobject LOCALID_POKEDEX_1
+ delay 10
+ removeobject LOCALID_POKEDEX_2
+ delay 25
+ call_if_eq VAR_FACING, DIR_NORTH, PalletTown_ProfessorOaksLab_EventScript_OakBringDexesOverNorth
+ call_if_eq VAR_FACING, DIR_SOUTH, PalletTown_ProfessorOaksLab_EventScript_OakBringDexesOverSouth
+ call_if_eq VAR_FACING, DIR_EAST, PalletTown_ProfessorOaksLab_EventScript_OakBringDexesOverEast
+ call_if_eq VAR_FACING, DIR_WEST, PalletTown_ProfessorOaksLab_EventScript_OakBringDexesOverWest
+ delay 10
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_RG_OBTAIN_KEY_ITEM
+ message PalletTown_ProfessorOaksLab_Text_ReceivedPokedexFromOak
+ waitmessage
+ waitfanfare
+ call EventScript_RestorePrevTextColor
+ setflag FLAG_SYS_POKEDEX_GET
+ special SetUnlockedPokedexFlags
+ setvar VAR_MAP_SCENE_POKEMON_CENTER_TEALA, 1
+ msgbox PalletTown_ProfessorOaksLab_Text_OakCatchMonsForDataTakeThese
+ giveitem_msg PalletTown_ProfessorOaksLab_Text_ReceivedFivePokeBalls, ITEM_POKE_BALL, 5
+ msgbox PalletTown_ProfessorOaksLab_Text_OakExplainCatching
+ famechecker FAMECHECKER_OAK, 1
+ msgbox PalletTown_ProfessorOaksLab_Text_OakCompleteMonGuideWasMyDream
+ msgbox PalletTown_ProfessorOaksLab_Text_RivalLeaveItToMeGramps
+ call_if_eq VAR_FACING, DIR_NORTH, PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalFacePlayerNorth
+ call_if_eq VAR_FACING, DIR_SOUTH, PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalFacePlayerSouth
+ call_if_eq VAR_FACING, DIR_EAST, PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalFacePlayerEastWest
+ call_if_eq VAR_FACING, DIR_WEST, PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalFacePlayerEastWest
+ msgbox PalletTown_ProfessorOaksLab_Text_RivalTellSisNotToGiveYouMap
+ closemessage
+ playbgm MUS_RG_RIVAL_EXIT, 0
+ call_if_eq VAR_FACING, DIR_NORTH, PalletTown_ProfessorOaksLab_EventScript_RivalExitNorth
+ call_if_eq VAR_FACING, DIR_SOUTH, PalletTown_ProfessorOaksLab_EventScript_RivalExit
+ call_if_eq VAR_FACING, DIR_EAST, PalletTown_ProfessorOaksLab_EventScript_RivalExit
+ call_if_eq VAR_FACING, DIR_WEST, PalletTown_ProfessorOaksLab_EventScript_RivalExit
+ removeobject LOCALID_OAKS_LAB_RIVAL
+ fadedefaultbgm
+ setvar VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 6
+ setvar VAR_MAP_SCENE_VIRIDIAN_CITY_MART, 2
+ setvar VAR_MAP_SCENE_VIRIDIAN_CITY_OLD_MAN, 1
+ setvar VAR_MAP_SCENE_PALLET_TOWN_RIVALS_HOUSE, 1
+ setvar VAR_MAP_SCENE_ROUTE22, 1
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_OakBringDexesOverNorth::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakBringDexesOver
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_OakBringDexesOverSouth::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakBringDexesOverSouth
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_OakBringDexesOverEast::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakBringDexesOver
+ applymovement LOCALID_PLAYER, PalletTown_ProfessorOaksLab_Movement_PlayerFaceOakForDexEast
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_OakBringDexesOverWest::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakBringDexesOver
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_Movement_PlayerFaceOakForDexEast::
+ delay_16
+ delay_8
+ walk_in_place_faster_right
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_OakBringDexesOver::
+ walk_right
+ walk_down
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_OakBringDexesOverSouth::
+ walk_down
+ walk_right
+ step_end
+
+PalletTown_ProfessorOaksLab_EventScript_DexSceneOakWalkToDeskNorth::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakWalkToDesk
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_DexSceneOakWalkToDeskSouth::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakWalkToDeskSouth
+ applymovement LOCALID_PLAYER, PalletTown_ProfessorOaksLab_Movement_WatchOakWalkToDesk
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_WatchOakWalkToDesk
+ waitmovement LOCALID_OAKS_LAB_PROF_OAK
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_DexSceneOakWalkToDeskEast::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakWalkToDesk
+ applymovement LOCALID_PLAYER, PalletTown_ProfessorOaksLab_Movement_WatchOakWalkToDeskEast
+ waitmovement LOCALID_OAKS_LAB_PROF_OAK
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_DexSceneOakWalkToDeskWest::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakWalkToDesk
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_Movement_WatchOakWalkToDeskEast::
+ delay_16
+ delay_8
+ walk_in_place_faster_up
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_WatchOakWalkToDesk::
+ delay_16
+ delay_8
+ walk_in_place_faster_left
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_OakWalkToDesk::
+ walk_up
+ walk_left
+ delay_16
+ walk_in_place_faster_down
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_OakWalkToDeskSouth::
+ walk_left
+ walk_left
+ walk_up
+ delay_16
+ walk_in_place_faster_right
+ step_end
+
+PalletTown_ProfessorOaksLab_EventScript_RatePokedexOrTryGiveBalls::
+ setvar VAR_0x8004, 0
+ specialvar VAR_RESULT, GetFrlgPokedexCount
+ copyvar VAR_0x8008, VAR_0x8005
+ copyvar VAR_0x8009, VAR_0x8006
+ buffernumberstring STR_VAR_1, VAR_0x8008
+ buffernumberstring STR_VAR_2, VAR_0x8009
+ goto_if_eq VAR_0x8009, 1, PalletTown_ProfessorOaksLab_EventScript_CheckIfPlayerNeedsBalls @ Player only has starter
+ goto PalletTown_ProfessorOaksLab_EventScript_RatePokedex
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RatePokedex::
+ call PokedexRating_EventScript_RateInPerson
+ goto_if_set FLAG_OAK_SAW_DEX_COMPLETION, PalletTown_ProfessorOaksLab_EventScript_DexCompleted
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_DexCompleted::
+ closemessage
+ delay 40
+ message PokedexRating_Text_Wroooaaarrr
+ waitmessage
+ call_if_eq VAR_FACING, DIR_NORTH, PalletTown_ProfessorOaksLab_EventScript_OakExcitedNorth
+ call_if_eq VAR_FACING, DIR_SOUTH, PalletTown_ProfessorOaksLab_EventScript_OakExcitedSouth
+ call_if_eq VAR_FACING, DIR_EAST, PalletTown_ProfessorOaksLab_EventScript_OakExcitedEast
+ call_if_eq VAR_FACING, DIR_WEST, PalletTown_ProfessorOaksLab_EventScript_OakExcitedWest
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, Common_Movement_FacePlayer
+ waitmovement 0
+ closemessage
+ delay 70
+ msgbox PokedexRating_Text_ThankYouMadeDreamReality
+ setflag SHOWED_OAK_COMPLETE_DEX
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_OakExcitedNorth::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakExcitedNorth
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_OakExcitedSouth::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakExcitedSouth
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_OakExcitedEast::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakExcitedEast
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_OakExcitedWest::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, PalletTown_ProfessorOaksLab_Movement_OakExcitedWest
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_Movement_OakExcitedNorth::
+ walk_in_place_down
+ walk_in_place_fast_down
+ walk_in_place_down
+ walk_in_place_down
+ walk_in_place_fast_down
+ walk_in_place_down
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_OakExcitedSouth::
+ walk_in_place_up
+ walk_in_place_fast_up
+ walk_in_place_up
+ walk_in_place_up
+ walk_in_place_fast_up
+ walk_in_place_up
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_OakExcitedEast::
+ walk_in_place_left
+ walk_in_place_fast_left
+ walk_in_place_left
+ walk_in_place_left
+ walk_in_place_fast_left
+ walk_in_place_left
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_OakExcitedWest::
+ walk_in_place_right
+ walk_in_place_fast_right
+ walk_in_place_right
+ walk_in_place_right
+ walk_in_place_fast_right
+ walk_in_place_right
+ step_end
+
+@ Unused
+PalletTown_ProfessorOaksLab_Movement_Search:
+ walk_left
+ walk_in_place_faster_down
+ delay_8
+ walk_in_place_faster_right
+ delay_8
+ walk_in_place_faster_up
+ delay_8
+ walk_in_place_faster_left
+ delay_8
+ walk_in_place_faster_down
+ delay_8
+ walk_right
+ walk_right
+ walk_in_place_faster_up
+ delay_8
+ walk_in_place_faster_left
+ delay_8
+ walk_in_place_faster_down
+ delay_8
+ walk_in_place_faster_right
+ delay_8
+ walk_in_place_faster_up
+ delay_8
+ walk_left
+ step_end
+
+@ Unused
+PalletTown_ProfessorOaksLab_Movement_VerticalPacing:
+ walk_up
+ walk_down
+ walk_down
+ walk_in_place_down
+ walk_up
+ delay_16
+ delay_16
+ delay_16
+ step_end
+
+PalletTown_ProfessorOaksLab_EventScript_TryStartNationalDexScene::
+ call PokedexRating_EventScript_RateInPerson
+ closemessage
+ goto_if_lt VAR_0x8009, 60, PalletTown_ProfessorOaksLab_EventScript_DontStartNationalDexScene
+ goto_if_unset FLAG_WORLD_MAP_ONE_ISLAND, PalletTown_ProfessorOaksLab_EventScript_DontStartNationalDexScene
+ delay 30
+ msgbox PalletTown_ProfessorOaksLab_Text_OakFavorToAskYouPlayer
+ goto PalletTown_ProfessorOaksLab_EventScript_NationalDexScene
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_DontStartNationalDexScene::
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_CheckIfPlayerNeedsBalls::
+ goto_if_set FLAG_OAK_SKIP_22_RIVAL_CHECK, PalletTown_ProfessorOaksLab_EventScript_MonsAroundWorldWait
+ goto_if_set FLAG_GOT_POKEBALLS_FROM_OAK_AFTER_22_RIVAL, PalletTown_ProfessorOaksLab_EventScript_PlayerAlreadyGotBalls
+ checkitem ITEM_POKE_BALL
+ goto_if_eq VAR_RESULT, FALSE, PalletTown_ProfessorOaksLab_EventScript_PlayerOutOfBalls
+ goto PalletTown_ProfessorOaksLab_EventScript_MonsAroundWorldWait
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_PlayerOutOfBalls::
+ goto_if_ge VAR_MAP_SCENE_ROUTE22, 2, PalletTown_ProfessorOaksLab_EventScript_GivePlayerMoreBalls
+ goto PalletTown_ProfessorOaksLab_EventScript_MonsAroundWorldWait
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_GivePlayerMoreBalls::
+ msgbox PalletTown_ProfessorOaksLab_Text_OakAddedNothingToPokedex
+ giveitem_msg PalletTown_ProfessorOaksLab_Text_ReceivedFivePokeBalls, ITEM_POKE_BALL, 5
+ setflag FLAG_GOT_POKEBALLS_FROM_OAK_AFTER_22_RIVAL
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_MonsAroundWorldWait::
+ msgbox PalletTown_ProfessorOaksLab_Text_OakMonsAroundWorldWait
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_PlayerAlreadyGotBalls::
+ msgbox PalletTown_ProfessorOaksLab_Text_OakComeSeeMeSometime
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalEnterNorth::
+ setobjectxyperm LOCALID_OAKS_LAB_RIVAL, 5, 10
+ addobject LOCALID_OAKS_LAB_RIVAL
+ applymovement LOCALID_PLAYER, PalletTown_ProfessorOaksLab_Movement_WatchRivalEnterNorth
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalEnter
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalEnterEastWest::
+ setobjectxyperm LOCALID_OAKS_LAB_RIVAL, 6, 10
+ addobject LOCALID_OAKS_LAB_RIVAL
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, PalletTown_ProfessorOaksLab_Movement_WatchRivalEnterEastWest
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalEnter
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalEnterSouth::
+ setobjectxyperm LOCALID_OAKS_LAB_RIVAL, 6, 10
+ addobject LOCALID_OAKS_LAB_RIVAL
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalEnter
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_DexSceneOakFacePlayerAndRivalSouth::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, Common_Movement_FacePlayer
+ waitmovement 0
+ delay 15
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_DexSceneOakFacePlayerAndRivalWest::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, Common_Movement_FacePlayer
+ waitmovement 0
+ delay 15
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_DexSceneOakFacePlayerAndRivalEast::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, Common_Movement_FacePlayer
+ waitmovement 0
+ delay 15
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalFacePlayerNorth::
+ applymovement LOCALID_OAKS_LAB_RIVAL, Common_Movement_FacePlayer
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalFacePlayerSouth::
+ applymovement LOCALID_OAKS_LAB_RIVAL, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalFacePlayerEastWest::
+ applymovement LOCALID_OAKS_LAB_RIVAL, Common_Movement_FacePlayer
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_RivalExitNorth::
+ applymovement LOCALID_PLAYER, PalletTown_ProfessorOaksLab_Movement_WatchRivalEnterEastWest
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalExit
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_RivalExit::
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalExit
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_EventScript_DexSceneOakFacePlayerAndRivalNorth::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ return
+
+PalletTown_ProfessorOaksLab_Movement_WatchRivalEnterEastWest::
+ delay_4
+ walk_in_place_faster_down
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_WatchRivalEnterNorth::
+ walk_in_place_faster_down
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_8
+ walk_in_place_faster_left
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_RivalEnter::
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_RivalExit::
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+PalletTown_ProfessorOaksLab_EventScript_BulbasaurBall::
+ lock
+ faceplayer
+ setvar PLAYER_STARTER_NUM, 0
+ setvar PLAYER_STARTER_SPECIES, SPECIES_BULBASAUR
+ setvar RIVAL_STARTER_SPECIES, SPECIES_CHARMANDER
+ setvar RIVAL_STARTER_ID, LOCALID_CHARMANDER_BALL
+ goto_if_ge VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 3, PalletTown_ProfessorOaksLab_EventScript_LastPokeBall
+ goto_if_eq VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 2, PalletTown_ProfessorOaksLab_EventScript_ConfirmStarterChoice
+ msgbox PalletTown_ProfessorOaksLab_Text_ThoseArePokeBalls
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_ConfirmStarterChoice::
+ applymovement LOCALID_OAKS_LAB_PROF_OAK, Common_Movement_FaceRight
+ waitmovement 0
+ showmonpic PLAYER_STARTER_SPECIES, 10, 3
+ textcolor NPC_TEXT_COLOR_MALE
+ goto_if_eq PLAYER_STARTER_NUM, 0, PalletTown_ProfessorOaksLab_EventScript_ConfirmBulbasaur
+ goto_if_eq PLAYER_STARTER_NUM, 1, PalletTown_ProfessorOaksLab_EventScript_ConfirmSquirtle
+ goto_if_eq PLAYER_STARTER_NUM, 2, PalletTown_ProfessorOaksLab_EventScript_ConfirmCharmander
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_ConfirmBulbasaur::
+ msgbox PalletTown_ProfessorOaksLab_Text_OakChoosingBulbasaur, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, PalletTown_ProfessorOaksLab_EventScript_ChoseStarter
+ goto_if_eq VAR_RESULT, NO, PalletTown_ProfessorOaksLab_EventScript_DeclinedStarter
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_ConfirmSquirtle::
+ msgbox PalletTown_ProfessorOaksLab_Text_OakChoosingSquirtle, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, PalletTown_ProfessorOaksLab_EventScript_ChoseStarter
+ goto_if_eq VAR_RESULT, NO, PalletTown_ProfessorOaksLab_EventScript_DeclinedStarter
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_ConfirmCharmander::
+ msgbox PalletTown_ProfessorOaksLab_Text_OakChoosingCharmander, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, PalletTown_ProfessorOaksLab_EventScript_ChoseStarter
+ goto_if_eq VAR_RESULT, NO, PalletTown_ProfessorOaksLab_EventScript_DeclinedStarter
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_DeclinedStarter::
+ hidemonpic
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_ChoseStarter::
+ hidemonpic
+ removeobject VAR_LAST_TALKED
+ msgbox PalletTown_ProfessorOaksLab_Text_OakThisMonIsEnergetic
+ call EventScript_RestorePrevTextColor
+ setflag FLAG_SYS_POKEMON_GET
+ setflag FLAG_PALLET_LADY_NOT_BLOCKING_SIGN
+ givemon PLAYER_STARTER_SPECIES, 5
+ copyvar VAR_STARTER_MON, PLAYER_STARTER_NUM
+ bufferspeciesname STR_VAR_1, PLAYER_STARTER_SPECIES
+ message PalletTown_ProfessorOaksLab_Text_ReceivedMonFromOak
+ waitmessage
+ playfanfare MUS_RG_OBTAIN_KEY_ITEM
+ waitfanfare
+ msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, EventScript_GiveNicknameToStarter
+ goto_if_eq VAR_RESULT, NO, PalletTown_ProfessorOaksLab_EventScript_RivalPicksStarter
+ end
+
+EventScript_GiveNicknameToStarter::
+ setvar VAR_0x8004, 0
+ call Common_EventScript_NameReceivedPartyMon
+ goto PalletTown_ProfessorOaksLab_EventScript_RivalPicksStarter
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalPicksStarter::
+ closemessage
+ goto_if_eq PLAYER_STARTER_NUM, 0, PalletTown_ProfessorOaksLab_EventScript_RivalWalksToCharmander
+ goto_if_eq PLAYER_STARTER_NUM, 1, PalletTown_ProfessorOaksLab_EventScript_RivalWalksToBulbasaur
+ goto_if_eq PLAYER_STARTER_NUM, 2, PalletTown_ProfessorOaksLab_EventScript_RivalWalksToSquirtle
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalWalksToCharmander::
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalWalksToCharmander
+ waitmovement 0
+ goto PalletTown_ProfessorOaksLab_EventScript_RivalTakesStarter
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalWalksToSquirtle::
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalWalksToSquirtle
+ waitmovement 0
+ goto PalletTown_ProfessorOaksLab_EventScript_RivalTakesStarter
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalWalksToBulbasaur::
+ applymovement LOCALID_OAKS_LAB_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalWalksToBulbasaur
+ waitmovement 0
+ goto PalletTown_ProfessorOaksLab_EventScript_RivalTakesStarter
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RivalTakesStarter::
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox PalletTown_ProfessorOaksLab_Text_RivalIllTakeThisOneThen
+ removeobject RIVAL_STARTER_ID
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ bufferspeciesname STR_VAR_1, RIVAL_STARTER_SPECIES
+ message PalletTown_ProfessorOaksLab_Text_RivalReceivedMonFromOak
+ waitmessage
+ playfanfare MUS_RG_OBTAIN_KEY_ITEM
+ waitfanfare
+ setvar VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 3
+ call_if_set FLAG_OPENED_START_MENU, PalletTown_ProfessorOaksLab_EventScript_ReadyEndSignLadyScene
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_ReadyEndSignLadyScene::
+ setvar VAR_MAP_SCENE_PALLET_TOWN_SIGN_LADY, 1
+ return
+
+PalletTown_ProfessorOaksLab_Movement_RivalWalksToCharmander::
+ walk_down
+ walk_down
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_up
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_RivalWalksToSquirtle::
+ walk_down
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_in_place_faster_up
+ step_end
+
+PalletTown_ProfessorOaksLab_Movement_RivalWalksToBulbasaur::
+ walk_down
+ walk_right
+ walk_right
+ walk_right
+ walk_in_place_faster_up
+ step_end
+
+PalletTown_ProfessorOaksLab_EventScript_SquirtleBall::
+ lock
+ faceplayer
+ setvar PLAYER_STARTER_NUM, 1
+ setvar PLAYER_STARTER_SPECIES, SPECIES_SQUIRTLE
+ setvar RIVAL_STARTER_SPECIES, SPECIES_BULBASAUR
+ setvar RIVAL_STARTER_ID, LOCALID_BULBASAUR_BALL
+ goto_if_ge VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 3, PalletTown_ProfessorOaksLab_EventScript_LastPokeBall
+ goto_if_eq VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 2, PalletTown_ProfessorOaksLab_EventScript_ConfirmStarterChoice
+ msgbox PalletTown_ProfessorOaksLab_Text_ThoseArePokeBalls
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_CharmanderBall::
+ lock
+ faceplayer
+ setvar PLAYER_STARTER_NUM, 2
+ setvar PLAYER_STARTER_SPECIES, SPECIES_CHARMANDER
+ setvar RIVAL_STARTER_SPECIES, SPECIES_SQUIRTLE
+ setvar RIVAL_STARTER_ID, LOCALID_SQUIRTLE_BALL
+ goto_if_ge VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 3, PalletTown_ProfessorOaksLab_EventScript_LastPokeBall
+ goto_if_eq VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 2, PalletTown_ProfessorOaksLab_EventScript_ConfirmStarterChoice
+ msgbox PalletTown_ProfessorOaksLab_Text_ThoseArePokeBalls
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_LastPokeBall::
+ msgbox PalletTown_ProfessorOaksLab_Text_OaksLastMon
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_Aide1::
+ lock
+ faceplayer
+ goto_if_set FLAG_SYS_GAME_CLEAR, PalletTown_ProfessorOaksLab_EventScript_Aide1GameClear
+ msgbox PalletTown_ProfessorOaksLab_Text_StudyAsOaksAide
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_Aide1GameClear::
+ famechecker FAMECHECKER_OAK, 5
+ msgbox PalletTown_ProfessorOaksLab_Text_OakIsGoingToHaveRadioShow
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_Aide2::
+ lock
+ faceplayer
+ goto_if_set FLAG_SYS_GAME_CLEAR, PalletTown_ProfessorOaksLab_EventScript_Aide2GameClear
+ msgbox PalletTown_ProfessorOaksLab_Text_StudyAsOaksAide
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_Aide2GameClear::
+ famechecker FAMECHECKER_DAISY, 0
+ msgbox PalletTown_ProfessorOaksLab_Text_DaisyWillGroomMons
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_Aide3::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_OAK, 2
+ msgbox PalletTown_ProfessorOaksLab_Text_OakIsAuthorityOnMons
+ release
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_Pokedex::
+ msgbox PalletTown_ProfessorOaksLab_Text_BlankEncyclopedia, MSGBOX_NPC
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_Computer::
+ msgbox PalletTown_ProfessorOaksLab_Text_EmailMessage, MSGBOX_SIGN
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_LeftSign::
+ msgbox PalletTown_ProfessorOaksLab_Text_PressStartToOpenMenu, MSGBOX_SIGN
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RightSign::
+ lockall
+ goto_if_ge VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 6, PalletTown_ProfessorOaksLab_EventScript_RightSignAlt
+ msgbox PalletTown_ProfessorOaksLab_Text_SaveOptionInMenu
+ releaseall
+ end
+
+PalletTown_ProfessorOaksLab_EventScript_RightSignAlt::
+ msgbox PalletTown_ProfessorOaksLab_Text_AllMonTypesHaveStrongAndWeakPoints
+ releaseall
+ end
+
+PalletTown_ProfessorOaksLab_Text_RivalGrampsIsntAround::
+ .string "{RIVAL}: What, it's only {PLAYER}?\n"
+ .string "Gramps isn't around.$"
+
+PalletTown_ProfessorOaksLab_Text_RivalFedUpWithWaiting::
+ .string "{RIVAL}: Gramps!\n"
+ .string "I'm fed up with waiting!$"
+
+PalletTown_ProfessorOaksLab_Text_RivalNoFairWhatAboutMe::
+ .string "{RIVAL}: Hey! Gramps! No fair!\n"
+ .string "What about me?$"
+
+PalletTown_ProfessorOaksLab_Text_RivalGoChoosePlayer::
+ .string "{RIVAL}: Heh, I don't need to be\n"
+ .string "greedy like you. I'm mature!\p"
+ .string "Go ahead and choose, {PLAYER}!$"
+
+PalletTown_ProfessorOaksLab_Text_RivalIllTakeThisOneThen::
+ .string "{RIVAL}: I'll take this one, then!$"
+
+PalletTown_ProfessorOaksLab_Text_RivalReceivedMonFromOak::
+ .string "{RIVAL} received the {STR_VAR_1}\n"
+ .string "from PROF. OAK!$"
+
+PalletTown_ProfessorOaksLab_Text_RivalMyMonLooksTougher::
+ .string "{RIVAL}: My POKéMON looks a lot\n"
+ .string "tougher than yours.$"
+
+PalletTown_ProfessorOaksLab_Text_RivalLetsCheckOutMons::
+ .string "{RIVAL}: Wait, {PLAYER}!\n"
+ .string "Let's check out our POKéMON!\p"
+ .string "Come on, I'll take you on!$"
+
+PalletTown_ProfessorOaksLab_Text_RivalDefeat::
+ .string "WHAT?\n"
+ .string "Unbelievable!\l"
+ .string "I picked the wrong POKéMON!$"
+
+@ Also used for early Route 22 battle
+Text_RivalVictory::
+ .string "{RIVAL}: Yeah!\n"
+ .string "Am I great or what?$"
+
+PalletTown_ProfessorOaksLab_Text_RivalGoToughenMyMon::
+ .string "{RIVAL}: Okay! I'll make my\n"
+ .string "POKéMON battle to toughen it up!\p"
+ .string "{PLAYER}! Gramps!\n"
+ .string "Smell you later!$"
+
+PalletTown_ProfessorOaksLab_Text_RivalGramps::
+ .string "{RIVAL}: Gramps!$"
+
+PalletTown_ProfessorOaksLab_Text_RivalWhatDidYouCallMeFor::
+ .string "{RIVAL}: I almost forgot!\n"
+ .string "What did you call me for?$"
+
+PalletTown_ProfessorOaksLab_Text_RivalLeaveItToMeGramps::
+ .string "{RIVAL}: All right, Gramps!\n"
+ .string "Leave it all to me!$"
+
+PalletTown_ProfessorOaksLab_Text_RivalTellSisNotToGiveYouMap::
+ .string "{PLAYER}, I hate to say it, but you\n"
+ .string "won't be necessary for this.\p"
+ .string "I know! I'll borrow a TOWN MAP\n"
+ .string "from my sis!\p"
+ .string "I'll tell her not to lend you one,\n"
+ .string "{PLAYER}! Hahaha!\p"
+ .string "Don't bother coming around to\n"
+ .string "my place after this!$"
+
+PalletTown_ProfessorOaksLab_Text_OakThreeMonsChooseOne::
+ .string "OAK: {RIVAL}?\n"
+ .string "Let me think…\p"
+ .string "Oh, that's right, I told you to\n"
+ .string "come! Just wait!\p"
+ .string "Here, {PLAYER}.\p"
+ .string "There are three POKéMON here.\p"
+ .string "Haha!\p"
+ .string "The POKéMON are held inside\n"
+ .string "these POKé BALLS.\p"
+ .string "When I was young, I was a serious\n"
+ .string "POKéMON TRAINER.\p"
+ .string "But now, in my old age, I have\n"
+ .string "only these three left.\p"
+ .string "You can have one.\n"
+ .string "Go on, choose!$"
+
+PalletTown_ProfessorOaksLab_Text_OakBePatientRival::
+ .string "OAK: Be patient, {RIVAL}.\n"
+ .string "You can have one, too!$"
+
+PalletTown_ProfessorOaksLab_Text_OakWhichOneWillYouChoose::
+ .string "OAK: Now, {PLAYER}.\p"
+ .string "Inside those three POKé BALLS are\n"
+ .string "POKéMON.\p"
+ .string "Which one will you choose for\n"
+ .string "yourself?$"
+
+PalletTown_ProfessorOaksLab_Text_OakHeyDontGoAwayYet::
+ .string "OAK: Hey!\n"
+ .string "Don't go away yet!$"
+
+PalletTown_ProfessorOaksLab_Text_OakChoosingCharmander::
+ .string "Ah! CHARMANDER is your choice.\n"
+ .string "You should raise it patiently.\p"
+ .string "So, {PLAYER}, you're claiming the\n"
+ .string "FIRE POKéMON CHARMANDER?$"
+
+PalletTown_ProfessorOaksLab_Text_OakChoosingSquirtle::
+ .string "Hm! SQUIRTLE is your choice.\n"
+ .string "It's one worth raising.\p"
+ .string "So, {PLAYER}, you've decided on the\n"
+ .string "WATER POKéMON SQUIRTLE?$"
+
+PalletTown_ProfessorOaksLab_Text_OakChoosingBulbasaur::
+ .string "I see! BULBASAUR is your choice.\n"
+ .string "It's very easy to raise.\p"
+ .string "So, {PLAYER}, you want to go with\n"
+ .string "the GRASS POKéMON BULBASAUR?$"
+
+PalletTown_ProfessorOaksLab_Text_OakThisMonIsEnergetic::
+ .string "This POKéMON is really quite\n"
+ .string "energetic!$"
+
+PalletTown_ProfessorOaksLab_Text_ReceivedMonFromOak::
+ .string "{PLAYER} received the {STR_VAR_1}\n"
+ .string "from PROF. OAK!$"
+
+PalletTown_ProfessorOaksLab_Text_OakCanReachNextTownWithMon::
+ .string "OAK: If a wild POKéMON appears,\n"
+ .string "your POKéMON can battle it.\p"
+ .string "With it at your side, you should be\n"
+ .string "able to reach the next town.$"
+
+PalletTown_ProfessorOaksLab_Text_OakBattleMonForItToGrow::
+ .string "OAK: {PLAYER}, raise your young\n"
+ .string "POKéMON by making it battle.\p"
+ .string "It has to battle for it to grow.$"
+
+PalletTown_ProfessorOaksLab_Text_OakHaveSomethingForMe::
+ .string "OAK: Oh, {PLAYER}!\n"
+ .string "How is my old POKéMON?\p"
+ .string "Well, it seems to be growing more\n"
+ .string "attached to you.\p"
+ .string "You must be talented as a POKéMON\n"
+ .string "TRAINER.\p"
+ .string "What's that?\n"
+ .string "You have something for me?$"
+
+PalletTown_ProfessorOaksLab_Text_DeliveredOaksParcel::
+ .string "{PLAYER} delivered OAK'S PARCEL.$"
+
+PalletTown_ProfessorOaksLab_Text_OakCustomBallIOrdered::
+ .string "Ah! \n"
+ .string "It's the custom POKé BALL!\p"
+ .string "I had it on order.\n"
+ .string "Thank you!$"
+
+PalletTown_ProfessorOaksLab_Text_OakHaveRequestForYouTwo::
+ .string "OAK: Oh, right!\n"
+ .string "I have a request for you two.$"
+
+PalletTown_ProfessorOaksLab_Text_OakPokedexOnDesk::
+ .string "On the desk there is my invention,\n"
+ .string "the POKéDEX!\p"
+ .string "It automatically records data on\n"
+ .string "POKéMON you've seen or caught.\p"
+ .string "It's a high-tech encyclopedia!$"
+
+PalletTown_ProfessorOaksLab_Text_OakTakeTheseWithYou::
+ .string "OAK: {PLAYER} and {RIVAL}.\n"
+ .string "Take these with you.$"
+
+PalletTown_ProfessorOaksLab_Text_ReceivedPokedexFromOak::
+ .string "{PLAYER} received the POKéDEX\n"
+ .string "from PROF. OAK.$"
+
+PalletTown_ProfessorOaksLab_Text_OakCatchMonsForDataTakeThese::
+ .string "OAK: You can't get detailed data\n"
+ .string "on POKéMON by just seeing them.\p"
+ .string "You must catch them to obtain\n"
+ .string "complete data.\p"
+ .string "So, here are some tools for\n"
+ .string "catching wild POKéMON.$"
+
+PalletTown_ProfessorOaksLab_Text_ReceivedFivePokeBalls::
+ .string "{PLAYER} received five POKé BALLS.$"
+
+PalletTown_ProfessorOaksLab_Text_OakExplainCatching::
+ .string "When a wild POKéMON appears,\n"
+ .string "it's fair game.\p"
+ .string "Just throw a POKé BALL at it and\n"
+ .string "try to catch it!\p"
+ .string "This won't always work, however.\p"
+ .string "A healthy POKéMON can escape.\n"
+ .string "You have to be lucky!$"
+
+PalletTown_ProfessorOaksLab_Text_OakCompleteMonGuideWasMyDream::
+ .string "To make a complete guide on all\n"
+ .string "the POKéMON in the world…\p"
+ .string "That was my dream!\p"
+ .string "But, I'm too old.\n"
+ .string "I can't get the job done.\p"
+ .string "So, I want you two to fulfill my\n"
+ .string "dream for me.\p"
+ .string "Get moving, you two.\p"
+ .string "This is a great undertaking in\n"
+ .string "POKéMON history!$"
+
+PalletTown_ProfessorOaksLab_Text_OakMonsAroundWorldWait::
+ .string "POKéMON around the world wait for\n"
+ .string "you, {PLAYER}!$"
+
+PalletTown_ProfessorOaksLab_Text_OakAddedNothingToPokedex::
+ .string "Ah, {PLAYER}!\n"
+ .string "How is your POKéDEX shaping up?\p"
+ .string "{RIVAL} has already caught some\n"
+ .string "POKéMON and added to the data.\p"
+ .string "So, {PLAYER}, let's have a look at\n"
+ .string "your POKéDEX.\p"
+ .string "…What's the matter?\n"
+ .string "You've added no new data at all.\p"
+ .string "I'll give you these, so do try a\n"
+ .string "little harder.$"
+
+PalletTown_ProfessorOaksLab_Text_OakComeSeeMeSometime::
+ .string "OAK: Come see me sometime.\p"
+ .string "After all, I want to know how your\n"
+ .string "POKéDEX is coming along.$"
+
+PalletTown_ProfessorOaksLab_Text_BlankEncyclopedia::
+ .string "It's like an encyclopedia, but the\n"
+ .string "pages are blank.$"
+
+PalletTown_ProfessorOaksLab_Text_ThoseArePokeBalls::
+ .string "Those are POKé BALLS.\n"
+ .string "They contain POKéMON!$"
+
+PalletTown_ProfessorOaksLab_Text_OaksLastMon::
+ .string "That's PROF. OAK's last POKéMON.$"
+
+PalletTown_ProfessorOaksLab_Text_PressStartToOpenMenu::
+ .string "Press START to open the MENU!$"
+
+PalletTown_ProfessorOaksLab_Text_SaveOptionInMenu::
+ .string "The SAVE option is on the MENU.\n"
+ .string "Use it regularly.$"
+
+PalletTown_ProfessorOaksLab_Text_AllMonTypesHaveStrongAndWeakPoints::
+ .string "All POKéMON types have strong and\n"
+ .string "weak points against others.$"
+
+PalletTown_ProfessorOaksLab_Text_EmailMessage::
+ .string "There's an e-mail message here.\p"
+ .string "…\p"
+ .string "Finally!\n"
+ .string "The ultimate TRAINERS of the\l"
+ .string "POKéMON LEAGUE are ready to\l"
+ .string "take on all comers!\p"
+ .string "Bring your best POKéMON and see\n"
+ .string "how you rate as a TRAINER!\p"
+ .string "POKéMON LEAGUE HQ\n"
+ .string "INDIGO PLATEAU\p"
+ .string "PROF. OAK, please visit us!\n"
+ .string "…$"
+
+PalletTown_ProfessorOaksLab_Text_StudyAsOaksAide::
+ .string "I study POKéMON as PROF. OAK's\n"
+ .string "AIDE.$"
+
+PalletTown_ProfessorOaksLab_Text_DaisyWillGroomMons::
+ .string "Hi, {PLAYER}. I bet you've become\n"
+ .string "good friends with your POKéMON.\p"
+ .string "By the way, did you know about\n"
+ .string "DAISY?\p"
+ .string "If you show DAISY your POKéMON,\n"
+ .string "she can tell how much it likes you.\p"
+ .string "Occasionally, she will even groom\n"
+ .string "a POKéMON for you.\p"
+ .string "This is a secret, so please don't\n"
+ .string "tell anyone.$"
+
+PalletTown_ProfessorOaksLab_Text_OakIsGoingToHaveRadioShow::
+ .string "PROF. OAK is going to have his own\n"
+ .string "radio show soon.\p"
+ .string "The program will be called PROF.\n"
+ .string "OAK's POKéMON SEMINAR.$"
+
+PalletTown_ProfessorOaksLab_Text_OakIsAuthorityOnMons::
+ .string "PROF. OAK may not look like much,\n"
+ .string "but he's the authority on POKéMON.\p"
+ .string "Many POKéMON TRAINERS hold him in\n"
+ .string "high regard.$"
+
+PalletTown_ProfessorOaksLab_Text_OakFavorToAskYouPlayer::
+ .string "Ah, now this is excellent!\p"
+ .string "{PLAYER}, I have another important\n"
+ .string "favor to ask of you.\p"
+ .string "I need you to listen closely.$"
+
+PalletTown_ProfessorOaksLab_Text_OakSightingsOfRareMons::
+ .string "Recently, there have been sightings\n"
+ .string "of many rare POKéMON species.\p"
+ .string "I'm talking about POKéMON that\n"
+ .string "have never been seen in KANTO.\p"
+ .string "I would love to go see things for\n"
+ .string "myself, but I'm much too old.\p"
+ .string "Since I can't do it, {PLAYER}, I'd\n"
+ .string "like you to go in my place.$"
+
+PalletTown_ProfessorOaksLab_Text_RivalJustLetMeHandleEverything::
+ .string "{RIVAL}: Hey, I heard that!\p"
+ .string "Gramps, what's with favoring\n"
+ .string "{PLAYER} over me all the time?\p"
+ .string "I went and collected more POKéMON,\n"
+ .string "and faster, too.\p"
+ .string "You should just let me handle\n"
+ .string "everything.$"
+
+PalletTown_ProfessorOaksLab_Text_OakNeedYourHelpTooNeedToSeePokedexes::
+ .string "OAK: I know, I know.\n"
+ .string "Of course I need your help, too.\p"
+ .string "Now, I need to see both your\n"
+ .string "POKéDEXES.$"
+
+PalletTown_ProfessorOaksLab_Text_OakTookBothPokedexUnits::
+ .string "PROF. OAK took both POKéDEX\n"
+ .string "units.$"
+
+PalletTown_ProfessorOaksLab_Text_OakNowTheseUnitsCanRecordMoreData::
+ .string "… … … … … …\p"
+ .string "… … … … … …\p"
+ .string "…And that's done!\p"
+ .string "Now these units can record data on\n"
+ .string "a lot more POKéMON.$"
+
+PalletTown_ProfessorOaksLab_Text_PlayersPokedexWasUpgraded::
+ .string "{PLAYER}'s POKéDEX was upgraded!$"
+
+PalletTown_ProfessorOaksLab_Text_OakMustReallyWorkToFillPokedex::
+ .string "Now, {PLAYER} and {RIVAL}!\p"
+ .string "This time, you really must work\n"
+ .string "towards filling your POKéDEXES.\p"
+ .string "I urge you to make them the best\n"
+ .string "and the most complete of all time!\p"
+ .string "Truly, this is a monumentally great\n"
+ .string "undertaking in POKéMON history!$"
+
+PalletTown_ProfessorOaksLab_Text_RivalIllCompleteThePokedex::
+ .string "{RIVAL}: Gramps, calm down.\n"
+ .string "Don't get so excited.\p"
+ .string "I'll get the POKéDEX completed,\n"
+ .string "don't you worry about a thing.\p"
+ .string "I think I'll try looking around\n"
+ .string "ONE ISLAND first…\p"
+ .string "Anyways, I'm outta here!$"
+
diff --git a/data/maps/PalletTown_RivalsHouse_Frlg/map.json b/data/maps/PalletTown_RivalsHouse_Frlg/map.json
new file mode 100644
index 000000000000..e48d07c77c92
--- /dev/null
+++ b/data/maps/PalletTown_RivalsHouse_Frlg/map.json
@@ -0,0 +1,100 @@
+{
+ "id": "MAP_PALLET_TOWN_RIVALS_HOUSE",
+ "name": "PalletTown_RivalsHouse_Frlg",
+ "layout": "LAYOUT_PALLET_TOWN_RIVALS_HOUSE",
+ "music": "MUS_RG_PALLET",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_PALLET_TOWN",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_DAISY",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_DAISY",
+ "x": 10,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 3,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PalletTown_RivalsHouse_EventScript_Daisy",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_TOWN_MAP",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_TOWN_MAP",
+ "x": 6,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PalletTown_RivalsHouse_EventScript_TownMap",
+ "flag": "FLAG_HIDE_TOWN_MAP"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_PALLET_TOWN",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_PALLET_TOWN",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 3,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_PALLET_TOWN",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PalletTown_RivalsHouse_EventScript_Bookshelf"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PalletTown_RivalsHouse_EventScript_Bookshelf"
+ },
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PalletTown_RivalsHouse_EventScript_Picture"
+ }
+ ]
+}
diff --git a/data/maps/PalletTown_RivalsHouse_Frlg/scripts.inc b/data/maps/PalletTown_RivalsHouse_Frlg/scripts.inc
new file mode 100644
index 000000000000..fe7fa5e2f25e
--- /dev/null
+++ b/data/maps/PalletTown_RivalsHouse_Frlg/scripts.inc
@@ -0,0 +1,293 @@
+.equ RECEIVED_TOWN_MAP, VAR_TEMP_1
+
+PalletTown_RivalsHouse_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, PalletTown_RivalsHouse_OnTransition
+ .byte 0
+
+PalletTown_RivalsHouse_OnTransition::
+ call_if_lt VAR_MAP_SCENE_PALLET_TOWN_RIVALS_HOUSE, 2, PalletTown_RivalsHouse_EventScript_MoveDaisyToTable
+ call_if_ge VAR_MAP_SCENE_PALLET_TOWN_RIVALS_HOUSE, 2, PalletTown_RivalsHouse_EventScript_AlreadyReceivedTownMap
+ end
+
+PalletTown_RivalsHouse_EventScript_MoveDaisyToTable::
+ setobjectmovementtype LOCALID_DAISY, MOVEMENT_TYPE_FACE_RIGHT
+ setobjectxyperm LOCALID_DAISY, 5, 4
+ return
+
+PalletTown_RivalsHouse_EventScript_AlreadyReceivedTownMap::
+ setvar RECEIVED_TOWN_MAP, TRUE
+ return
+
+PalletTown_RivalsHouse_EventScript_Daisy::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_DAISY, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
+ goto_if_set FLAG_SYS_GAME_CLEAR, PalletTown_RivalsHouse_EventScript_GroomMon
+ goto_if_eq RECEIVED_TOWN_MAP, TRUE, PalletTown_RivalsHouse_EventScript_PleaseGiveMonsRest
+ goto_if_eq VAR_MAP_SCENE_PALLET_TOWN_RIVALS_HOUSE, 2, PalletTown_RivalsHouse_EventScript_ExplainTownMap
+ goto_if_eq VAR_MAP_SCENE_PALLET_TOWN_RIVALS_HOUSE, 1, PalletTown_RivalsHouse_EventScript_GiveTownMap
+ goto_if_ge VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 1, PalletTown_RivalsHouse_EventScript_HeardBattledRival
+ msgbox PalletTown_RivalsHouse_Text_HiBrothersAtLab
+ closemessage
+ applymovement LOCALID_DAISY, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+PalletTown_RivalsHouse_EventScript_HeardBattledRival::
+ msgbox PalletTown_RivalsHouse_Text_HeardYouBattledRival
+ release
+ end
+
+PalletTown_RivalsHouse_EventScript_GroomMon::
+ goto_if_lt VAR_MASSAGE_COOLDOWN_STEP_COUNTER, 500, PalletTown_RivalsHouse_EventScript_RateMonFriendship
+ msgbox PalletTown_RivalsHouse_Text_LikeMeToGroomMon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, PalletTown_RivalsHouse_EventScript_DeclineGrooming
+ msgbox PalletTown_RivalsHouse_Text_GroomWhichOne
+ special ChoosePartyMon
+ waitstate
+ lock
+ faceplayer
+ goto_if_ge VAR_0x8004, PARTY_SIZE, PalletTown_RivalsHouse_EventScript_DeclineGrooming
+ specialvar VAR_RESULT, ScriptGetPartyMonSpecies
+ goto_if_eq VAR_RESULT, SPECIES_EGG, PalletTown_RivalsHouse_EventScript_CantGroomEgg
+ msgbox PalletTown_RivalsHouse_Text_LookingNiceInNoTime
+ closemessage
+ fadescreen FADE_TO_BLACK
+ playfanfare MUS_HEAL
+ waitfanfare
+ special DaisyMassageServices
+ fadescreen FADE_FROM_BLACK
+ special BufferMonNickname
+ msgbox PalletTown_RivalsHouse_Text_ThereYouGoAllDone
+ release
+ end
+
+PalletTown_RivalsHouse_EventScript_CantGroomEgg::
+ msgbox PalletTown_RivalsHouse_Text_CantGroomAnEgg
+ release
+ end
+
+PalletTown_RivalsHouse_EventScript_DeclineGrooming::
+ msgbox PalletTown_RivalsHouse_Text_DontNeedAnyGrooming
+ release
+ end
+
+PalletTown_RivalsHouse_EventScript_RateMonFriendship::
+ msgbox PalletTown_RivalsHouse_Text_MayISeeFirstMon
+ specialvar VAR_RESULT, GetLeadMonFriendship
+ switch VAR_RESULT
+ case 0, PalletTown_RivalsHouse_EventScript_MonFriendshipLowest
+ case 1, PalletTown_RivalsHouse_EventScript_MonFriendshipLower
+ case 2, PalletTown_RivalsHouse_EventScript_MonFriendshipLow
+ case 3, PalletTown_RivalsHouse_EventScript_MonFriendshipMid
+ case 4, PalletTown_RivalsHouse_EventScript_MonFriendshipHigh
+ case 5, PalletTown_RivalsHouse_EventScript_MonFriendshipHigher
+ case 6, PalletTown_RivalsHouse_EventScript_MonFriendshipHighest
+ end
+
+PalletTown_RivalsHouse_EventScript_MonFriendshipLowest::
+ msgbox PalletTown_RivalsHouse_Text_WhyWouldMonHateYouSoMuch
+ release
+ end
+
+PalletTown_RivalsHouse_EventScript_MonFriendshipLower::
+ msgbox PalletTown_RivalsHouse_Text_DontLikeWayItGlaresAtYou
+ release
+ end
+
+PalletTown_RivalsHouse_EventScript_MonFriendshipLow::
+ msgbox PalletTown_RivalsHouse_Text_NotFamiliarWithYouYet
+ release
+ end
+
+PalletTown_RivalsHouse_EventScript_MonFriendshipMid::
+ msgbox PalletTown_RivalsHouse_Text_ItsWarmingUpToYou
+ release
+ end
+
+PalletTown_RivalsHouse_EventScript_MonFriendshipHigh::
+ msgbox PalletTown_RivalsHouse_Text_ItsQuiteFriendly
+ release
+ end
+
+PalletTown_RivalsHouse_EventScript_MonFriendshipHigher::
+ msgbox PalletTown_RivalsHouse_Text_ItLooksVeryHappy
+ release
+ end
+
+PalletTown_RivalsHouse_EventScript_MonFriendshipHighest::
+ msgbox PalletTown_RivalsHouse_Text_CouldntLoveYouMore
+ release
+ end
+
+PalletTown_RivalsHouse_EventScript_PleaseGiveMonsRest::
+ msgbox PalletTown_RivalsHouse_Text_PleaseGiveMonsRest
+ release
+ end
+
+PalletTown_RivalsHouse_EventScript_GiveTownMap::
+ msgbox PalletTown_RivalsHouse_Text_ErrandForGrandpaThisWillHelp
+ closemessage
+ checkitemspace ITEM_TOWN_MAP
+ goto_if_eq VAR_RESULT, FALSE, PalletTown_RivalsHouse_EventScript_NoRoomForTownMap
+ applymovement LOCALID_DAISY, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ removeobject LOCALID_TOWN_MAP
+ setvar VAR_MAP_SCENE_PALLET_TOWN_RIVALS_HOUSE, 2
+ delay 15
+ applymovement LOCALID_DAISY, Common_Movement_FacePlayer
+ waitmovement 0
+ delay 12
+ giveitem_msg PalletTown_RivalsHouse_Text_ReceivedTownMapFromDaisy, ITEM_TOWN_MAP, 1, MUS_RG_OBTAIN_KEY_ITEM
+ release
+ end
+
+PalletTown_RivalsHouse_EventScript_NoRoomForTownMap::
+ msgbox PalletTown_RivalsHouse_Text_DontHaveSpaceForThis
+ release
+ end
+
+PalletTown_RivalsHouse_EventScript_ExplainTownMap::
+ msgbox PalletTown_RivalsHouse_Text_ExplainTownMap
+ release
+ end
+
+PalletTown_RivalsHouse_EventScript_TownMap::
+ msgbox PalletTown_RivalsHouse_Text_ItsBigMapOfKanto, MSGBOX_NPC
+ end
+
+PalletTown_RivalsHouse_EventScript_Bookshelf::
+ msgbox PalletTown_RivalsHouse_Text_ShelvesCrammedFullOfBooks, MSGBOX_SIGN
+ end
+
+PalletTown_RivalsHouse_EventScript_Picture::
+ msgbox PalletTown_RivalsHouse_Text_LovelyAndSweetClefairy, MSGBOX_SIGN
+ end
+
+PalletTown_RivalsHouse_Text_HiBrothersAtLab::
+ .string "DAISY: Hi, {PLAYER}!\p"
+ .string "My brother, {RIVAL}, is out at\n"
+ .string "Grandpa's LAB.$"
+
+PalletTown_RivalsHouse_Text_HeardYouBattledRival::
+ .string "DAISY: {PLAYER}, I heard you had\n"
+ .string "a battle against {RIVAL}.\p"
+ .string "I wish I'd seen that!$"
+
+PalletTown_RivalsHouse_Text_ErrandForGrandpaThisWillHelp::
+ .string "Grandpa asked you to run an\n"
+ .string "errand?\p"
+ .string "Gee, that's lazy of him.\n"
+ .string "Here, this will help you.$"
+
+PalletTown_RivalsHouse_Text_ReceivedTownMapFromDaisy::
+ .string "{PLAYER} received a TOWN MAP\n"
+ .string "from DAISY.$"
+
+PalletTown_RivalsHouse_Text_DontHaveSpaceForThis::
+ .string "You don't have space for this in\n"
+ .string "your BAG.$"
+
+PalletTown_RivalsHouse_Text_ExplainTownMap::
+ .string "You can use the TOWN MAP to find\n"
+ .string "out where you are, or check the\l"
+ .string "names of places.$"
+
+PalletTown_RivalsHouse_Text_PleaseGiveMonsRest::
+ .string "DAISY: Just like people, POKéMON\n"
+ .string "are living things.\p"
+ .string "When they get tired, please give\n"
+ .string "them a rest.$"
+
+PalletTown_RivalsHouse_Text_ItsBigMapOfKanto::
+ .string "It's a big map of the KANTO region.\n"
+ .string "Now this would be useful!$"
+
+PalletTown_RivalsHouse_Text_ShelvesCrammedFullOfBooks::
+ .string "The shelves are crammed full of\n"
+ .string "books on POKéMON.$"
+
+PalletTown_RivalsHouse_Text_LikeMeToGroomMon::
+ .string "DAISY: Hi, {PLAYER}!\n"
+ .string "Good timing.\p"
+ .string "I'm about to have some tea.\n"
+ .string "Would you like to join me?\p"
+ .string "Oh, but look.\n"
+ .string "Your POKéMON are a little dirty.\p"
+ .string "Would you like me to groom one?$"
+
+PalletTown_RivalsHouse_Text_DontNeedAnyGrooming::
+ .string "You don't need any grooming done?\n"
+ .string "Okay, we'll just have tea.$"
+
+PalletTown_RivalsHouse_Text_GroomWhichOne::
+ .string "Which one should I groom?$"
+
+PalletTown_RivalsHouse_Text_LookingNiceInNoTime::
+ .string "DAISY: Okay, I'll get it looking\n"
+ .string "nice in no time.$"
+
+PalletTown_RivalsHouse_Text_ThereYouGoAllDone::
+#ifdef BUGFIX @ The localizers missed what should be a textcolor change in the localizations.
+ .string "{COLOR DARK_GRAY}{STR_VAR_1} looks dreamily content…\p"
+ .string "{COLOR RED}DAISY: There you go! All done.\n"
+#else @ In the JP games, gender-based text used a different font instead of different colors.
+ .string "{FONT_NORMAL}{STR_VAR_1} looks dreamily content…\p"
+ .string "{FONT_FEMALE}DAISY: There you go! All done.\n"
+#endif
+ .string "See? Doesn't it look nice?\p"
+ .string "Giggle…\n"
+ .string "It's such a cute POKéMON.$"
+
+PalletTown_RivalsHouse_Text_CantGroomAnEgg::
+ .string "Oh, sorry. I honestly can't\n"
+ .string "groom an EGG.$"
+
+PalletTown_RivalsHouse_Text_MayISeeFirstMon::
+ .string "DAISY: Your POKéMON grow to love\n"
+ .string "you if you raise them with love.\p"
+ .string "For example, {PLAYER}, may I see\n"
+ .string "your first POKéMON?$"
+
+PalletTown_RivalsHouse_Text_CouldntLoveYouMore::
+ .string "It couldn't possibly love you\n"
+ .string "any more than it does now.\p"
+ .string "Your POKéMON is happy beyond\n"
+ .string "words.$"
+
+PalletTown_RivalsHouse_Text_ItLooksVeryHappy::
+ .string "It looks very happy.\p"
+ .string "I wish {RIVAL} could see this and\n"
+ .string "learn something from it.$"
+
+PalletTown_RivalsHouse_Text_ItsQuiteFriendly::
+ .string "It's quite friendly with you.\n"
+ .string "Keep being good to it!$"
+
+PalletTown_RivalsHouse_Text_ItsWarmingUpToYou::
+ .string "It's warming up to you.\n"
+ .string "Trust must be growing between you.$"
+
+PalletTown_RivalsHouse_Text_NotFamiliarWithYouYet::
+ .string "It's not quite familiar with you\n"
+ .string "yet.\p"
+ .string "POKéMON are all quite wary when\n"
+ .string "you first get them.$"
+
+PalletTown_RivalsHouse_Text_DontLikeWayItGlaresAtYou::
+ .string "{PLAYER}, I don't like the way it\n"
+ .string "glares at you.\p"
+ .string "Could you try being a little nicer\n"
+ .string "to it?$"
+
+PalletTown_RivalsHouse_Text_WhyWouldMonHateYouSoMuch::
+ .string "…Um, it's not easy for me to say\n"
+ .string "this, but…\p"
+ .string "Is there some reason why your\n"
+ .string "POKéMON would hate you so much?$"
+
+PalletTown_RivalsHouse_Text_LovelyAndSweetClefairy::
+ .string "“The lovely and sweet\n"
+ .string "CLEFAIRY”$"
+
diff --git a/data/maps/PetalburgCity_Gym/scripts.inc b/data/maps/PetalburgCity_Gym/scripts.inc
index 53a6d8feb8e6..1fc42611d489 100644
--- a/data/maps/PetalburgCity_Gym/scripts.inc
+++ b/data/maps/PetalburgCity_Gym/scripts.inc
@@ -100,6 +100,7 @@ PetalburgCity_Gym_Movement_WallyExitGym:
step_end
PetalburgCity_Gym_EventScript_Norman::
+ vsseeker_rematchid TRAINER_NORMAN_1
lock
faceplayer
switch VAR_PETALBURG_GYM_STATE
diff --git a/data/maps/PewterCity_Frlg/map.json b/data/maps/PewterCity_Frlg/map.json
new file mode 100644
index 000000000000..749bc9402a75
--- /dev/null
+++ b/data/maps/PewterCity_Frlg/map.json
@@ -0,0 +1,300 @@
+{
+ "id": "MAP_PEWTER_CITY",
+ "name": "PewterCity_Frlg",
+ "layout": "LAYOUT_PEWTER_CITY",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_PEWTER_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE2",
+ "offset": 12,
+ "direction": "down"
+ },
+ {
+ "map": "MAP_ROUTE3",
+ "offset": 10,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 6,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_EventScript_Lass",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_PEWTER_MUSEUM_GUIDE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 33,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_EventScript_MuseumGuide",
+ "flag": "FLAG_HIDE_PEWTER_MUSEUM_GUIDE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FAT_MAN_FRLG",
+ "x": 21,
+ "y": 28,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_EventScript_FatMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 33,
+ "y": 27,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_EventScript_BugCatcher",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_PEWTER_GYM_GUIDE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 42,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_EventScript_GymGuide",
+ "flag": "FLAG_HIDE_PEWTER_CITY_GYM_GUIDE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 30,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "local_id": "LOCALID_PEWTER_AIDE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 46,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_EventScript_RunningShoesAide",
+ "flag": "FLAG_HIDE_PEWTER_CITY_RUNNING_SHOES_GUY"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 17,
+ "y": 6,
+ "elevation": 0,
+ "dest_map": "MAP_PEWTER_CITY_MUSEUM_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 25,
+ "y": 4,
+ "elevation": 0,
+ "dest_map": "MAP_PEWTER_CITY_MUSEUM_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 15,
+ "y": 16,
+ "elevation": 0,
+ "dest_map": "MAP_PEWTER_CITY_GYM",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 28,
+ "y": 18,
+ "elevation": 0,
+ "dest_map": "MAP_PEWTER_CITY_MART",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 33,
+ "y": 11,
+ "elevation": 0,
+ "dest_map": "MAP_PEWTER_CITY_HOUSE1",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 17,
+ "y": 25,
+ "elevation": 0,
+ "dest_map": "MAP_PEWTER_CITY_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 9,
+ "y": 30,
+ "elevation": 0,
+ "dest_map": "MAP_PEWTER_CITY_HOUSE2",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 42,
+ "y": 21,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PEWTER_CITY",
+ "var_value": "0",
+ "script": "PewterCity_EventScript_GymGuideTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 42,
+ "y": 22,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PEWTER_CITY",
+ "var_value": "0",
+ "script": "PewterCity_EventScript_GymGuideTriggerMid"
+ },
+ {
+ "type": "trigger",
+ "x": 42,
+ "y": 23,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PEWTER_CITY",
+ "var_value": "0",
+ "script": "PewterCity_EventScript_GymGuideTriggerBottom"
+ },
+ {
+ "type": "trigger",
+ "x": 43,
+ "y": 23,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PEWTER_CITY",
+ "var_value": "0",
+ "script": "PewterCity_EventScript_GymGuideTriggerRight"
+ },
+ {
+ "type": "trigger",
+ "x": 46,
+ "y": 21,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PEWTER_CITY",
+ "var_value": "1",
+ "script": "PewterCity_EventScript_RunningShoesAideTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 46,
+ "y": 22,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PEWTER_CITY",
+ "var_value": "1",
+ "script": "PewterCity_EventScript_RunningShoesAideTriggerMid"
+ },
+ {
+ "type": "trigger",
+ "x": 46,
+ "y": 23,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PEWTER_CITY",
+ "var_value": "1",
+ "script": "PewterCity_EventScript_RunningShoesAideTriggerBottom"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 19,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PewterCity_EventScript_MuseumSign"
+ },
+ {
+ "type": "sign",
+ "x": 39,
+ "y": 19,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PewterCity_EventScript_PoliceNotice"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 16,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PewterCity_EventScript_GymSign"
+ },
+ {
+ "type": "sign",
+ "x": 20,
+ "y": 30,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PewterCity_EventScript_TrainerTips"
+ },
+ {
+ "type": "sign",
+ "x": 31,
+ "y": 25,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PewterCity_EventScript_CitySign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 6,
+ "y": 3,
+ "elevation": 3,
+ "item": "ITEM_POKE_BALL",
+ "flag": "FLAG_HIDDEN_ITEM_PEWTER_CITY_POKE_BALL",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/PewterCity_Frlg/scripts.inc b/data/maps/PewterCity_Frlg/scripts.inc
new file mode 100644
index 000000000000..866f360ad373
--- /dev/null
+++ b/data/maps/PewterCity_Frlg/scripts.inc
@@ -0,0 +1,976 @@
+PewterCity_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, PewterCity_OnTransition
+ .byte 0
+
+PewterCity_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_PEWTER_CITY
+ setvar VAR_MAP_SCENE_PEWTER_CITY_MUSEUM_1F, 0
+ end
+
+@ Impossible to speak to this NPC from a facing dir != DIR_EAST normally, so they arent checked
+@ Additionally, no movement script exists for facing DIR_SOUTH, which would necessitate walking out of bounds
+PewterCity_EventScript_GymGuide::
+ lock
+ faceplayer
+ msgbox PewterCity_Text_BrocksLookingForChallengersFollowMe
+ closemessage
+ playbgm MUS_FOLLOW_ME, 0
+ call_if_eq VAR_FACING, DIR_EAST, PewterCity_EventScript_WalkToGymEast
+ msgbox PewterCity_Text_GoTakeOnBrock
+ closemessage
+ applymovement LOCALID_PEWTER_GYM_GUIDE, PewterCity_Movement_GymGuideExit
+ waitmovement 0
+ fadedefaultbgm
+ removeobject LOCALID_PEWTER_GYM_GUIDE
+ clearflag FLAG_HIDE_PEWTER_CITY_GYM_GUIDE
+ release
+ end
+
+PewterCity_EventScript_WalkToGymEast::
+ applymovement LOCALID_PLAYER, PewterCity_Movement_PlayerWaitForGuideEast
+ applymovement LOCALID_PEWTER_GYM_GUIDE, PewterCity_Movement_GuideMoveToLeadEast
+ waitmovement 0
+ applymovement LOCALID_PLAYER, PewterCity_Movement_PlayerWalkToGymEast
+ applymovement LOCALID_PEWTER_GYM_GUIDE, PewterCity_Movement_GuideWalkToGymEast
+ waitmovement 0
+ return
+
+@ Unused
+PewterCity_EventScript_WalkToGymWest::
+ applymovement LOCALID_PLAYER, PewterCity_Movement_PlayerWaitForGuideWest
+ applymovement LOCALID_PEWTER_GYM_GUIDE, PewterCity_Movement_GuideMoveToLeadWest
+ waitmovement 0
+ applymovement LOCALID_PLAYER, PewterCity_Movement_PlayerWalkToGymWest
+ applymovement LOCALID_PEWTER_GYM_GUIDE, PewterCity_Movement_GuideWalkToGymWest
+ waitmovement 0
+ return
+
+@ Unused
+PewterCity_EventScript_WalkToGymNorth::
+ applymovement LOCALID_PLAYER, PewterCity_Movement_PlayerWaitForGuideNorth
+ applymovement LOCALID_PEWTER_GYM_GUIDE, PewterCity_Movement_GuideMoveToLeadNorth
+ waitmovement 0
+ applymovement LOCALID_PLAYER, PewterCity_Movement_PlayerWalkToGymNorth
+ applymovement LOCALID_PEWTER_GYM_GUIDE, PewterCity_Movement_GuideWalkToGymNorth
+ waitmovement 0
+ return
+
+.macro walk_to_gym
+ walk_left
+ walk_left
+ walk_left
+ walk_up
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+.endm
+
+.macro walk_to_gym_alt
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_right
+.endm
+
+PewterCity_Movement_PlayerWaitForGuideEast::
+ delay_16
+ delay_16
+ delay_4
+ walk_in_place_faster_down
+ step_end
+
+PewterCity_Movement_PlayerWalkToGymEast::
+ walk_down
+ walk_to_gym
+ step_end
+
+PewterCity_Movement_PlayerWaitForGuideWest::
+ delay_16
+ step_end
+
+PewterCity_Movement_PlayerWalkToGymWest::
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_to_gym_alt
+ step_end
+
+PewterCity_Movement_PlayerWaitForGuideNorth::
+ delay_16
+ step_end
+
+PewterCity_Movement_PlayerWalkToGymNorth::
+ walk_up
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_to_gym_alt
+ step_end
+
+PewterCity_Movement_GuideMoveToLeadEast::
+ walk_down
+ walk_left
+ walk_in_place_faster_up
+ walk_in_place_up
+ step_end
+
+PewterCity_Movement_GuideWalkToGymEast::
+ walk_to_gym
+ walk_right
+ walk_in_place_faster_left
+ step_end
+
+PewterCity_Movement_GuideMoveToLeadWest::
+ walk_in_place_right
+ step_end
+
+PewterCity_Movement_GuideWalkToGymWest::
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_to_gym_alt
+ walk_right
+ walk_in_place_faster_left
+ step_end
+
+PewterCity_Movement_GuideMoveToLeadNorth::
+ walk_in_place_down
+ step_end
+
+PewterCity_Movement_GuideWalkToGymNorth::
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_to_gym_alt
+ walk_right
+ walk_in_place_faster_left
+ step_end
+
+PewterCity_Movement_GymGuideExit::
+ walk_down
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ step_end
+
+PewterCity_EventScript_GymGuideTriggerTop::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto PewterCity_EventScript_GymGuideTrigger
+ end
+
+PewterCity_EventScript_GymGuideTriggerMid::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto PewterCity_EventScript_GymGuideTrigger
+ end
+
+PewterCity_EventScript_GymGuideTriggerBottom::
+ lockall
+ setvar VAR_TEMP_1, 2
+ goto PewterCity_EventScript_GymGuideTrigger
+ end
+
+@ This trigger is inaccessible and its corresponding movement script isnt linked
+PewterCity_EventScript_GymGuideTriggerRight::
+ lockall
+ setvar VAR_TEMP_1, 3
+ goto PewterCity_EventScript_GymGuideTrigger
+ end
+
+PewterCity_EventScript_GymGuideTrigger::
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox PewterCity_Text_BrocksLookingForChallengersFollowMe
+ closemessage
+ playbgm MUS_FOLLOW_ME, 0
+ call_if_eq VAR_TEMP_1, 0, PewterCity_EventScript_WalkToGymTop
+ call_if_eq VAR_TEMP_1, 1, PewterCity_EventScript_WalkToGymMid
+ call_if_eq VAR_TEMP_1, 2, PewterCity_EventScript_WalkToGymBottom
+ msgbox PewterCity_Text_GoTakeOnBrock
+ closemessage
+ applymovement LOCALID_PEWTER_GYM_GUIDE, PewterCity_Movement_GymGuideExit
+ waitmovement 0
+ fadedefaultbgm
+ removeobject LOCALID_PEWTER_GYM_GUIDE
+ clearflag FLAG_HIDE_PEWTER_CITY_GYM_GUIDE
+ releaseall
+ end
+
+PewterCity_EventScript_WalkToGymTop::
+ applymovement LOCALID_PEWTER_GYM_GUIDE, PewterCity_Movement_GuideMoveToLeadTop
+ waitmovement 0
+ applymovement LOCALID_PLAYER, PewterCity_Movement_PlayerWalkToGymTop
+ applymovement LOCALID_PEWTER_GYM_GUIDE, PewterCity_Movement_GuideWalkToGymTop
+ waitmovement 0
+ return
+
+PewterCity_EventScript_WalkToGymMid::
+ applymovement LOCALID_PEWTER_GYM_GUIDE, PewterCity_Movement_GuideMoveToLeadMid
+ waitmovement 0
+ applymovement LOCALID_PLAYER, PewterCity_Movement_PlayerWalkToGymMid
+ applymovement LOCALID_PEWTER_GYM_GUIDE, PewterCity_Movement_GuideWalkToGymMid
+ waitmovement 0
+ return
+
+PewterCity_EventScript_WalkToGymBottom::
+ applymovement LOCALID_PEWTER_GYM_GUIDE, PewterCity_Movement_GuideMoveToLeadBottom
+ waitmovement 0
+ applymovement LOCALID_PLAYER, PewterCity_Movement_PlayerWalkToGymBottom
+ applymovement LOCALID_PEWTER_GYM_GUIDE, PewterCity_Movement_GuideWalkToGymBottom
+ waitmovement 0
+ return
+
+@ Unused
+PewterCity_EventScript_WalkToGymRight::
+ applymovement LOCALID_PEWTER_GYM_GUIDE, PewterCity_Movement_GuideApproachPlayerRight
+ waitmovement 0
+ applymovement LOCALID_PLAYER, PewterCity_Movement_PlayerWalkToGymRight
+ applymovement LOCALID_PEWTER_GYM_GUIDE, PewterCity_Movement_GuideWalkToGymRight
+ waitmovement 0
+ return
+
+PewterCity_Movement_PlayerWalkToGymTop::
+ walk_left
+ walk_to_gym
+ step_end
+
+PewterCity_Movement_PlayerWalkToGymMid::
+ walk_up
+ walk_left
+ walk_to_gym
+ step_end
+
+PewterCity_Movement_PlayerWalkToGymBottom::
+ walk_up
+ walk_up
+ walk_left
+ walk_to_gym
+ step_end
+
+PewterCity_Movement_PlayerWalkToGymRight::
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_up
+ walk_left
+ walk_left
+ walk_left
+ walk_up
+ walk_up
+ walk_to_gym_alt
+ step_end
+
+PewterCity_Movement_GuideMoveToLeadTop::
+ walk_left
+ walk_down
+ walk_in_place_faster_right
+ walk_in_place_right
+ step_end
+
+PewterCity_Movement_GuideMoveToLeadMid::
+ walk_down
+ walk_in_place_down
+ step_end
+
+PewterCity_Movement_GuideMoveToLeadBottom::
+ walk_down
+ walk_down
+ walk_in_place_down
+ step_end
+
+PewterCity_Movement_GuideApproachPlayerRight::
+ walk_down
+ walk_down
+ walk_right
+ walk_down
+ walk_right
+ walk_in_place_right
+ step_end
+
+PewterCity_Movement_GuideWalkToGymTop::
+ walk_to_gym
+ walk_right
+ walk_in_place_faster_left
+ step_end
+
+PewterCity_Movement_GuideWalkToGymMid::
+ walk_left
+ walk_to_gym
+ walk_right
+ walk_in_place_faster_left
+ step_end
+
+PewterCity_Movement_GuideWalkToGymBottom::
+ walk_up
+ walk_left
+ walk_to_gym
+ walk_right
+ walk_in_place_faster_left
+ step_end
+
+PewterCity_Movement_GuideWalkToGymRight::
+ walk_left
+ walk_left
+ walk_left
+ walk_up
+ walk_left
+ walk_left
+ walk_left
+ walk_up
+ walk_up
+ walk_to_gym_alt
+ walk_right
+ walk_in_place_faster_left
+ step_end
+
+PewterCity_EventScript_Lass::
+ msgbox PewterCity_Text_ClefairyCameFromMoon, MSGBOX_NPC
+ end
+
+PewterCity_EventScript_MuseumGuide::
+ lock
+ faceplayer
+ msgbox PewterCity_Text_DidYouCheckOutMuseum, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, PewterCity_EventScript_CheckedOutMuseum
+ msgbox PewterCity_Text_ReallyYouHaveToGo
+ closemessage
+ delay 10
+ playbgm MUS_FOLLOW_ME, 0
+ call_if_eq VAR_FACING, DIR_NORTH, PewterCity_EventScript_LeadToMuseumNorth
+ call_if_eq VAR_FACING, DIR_SOUTH, PewterCity_EventScript_LeadToMuseumSouth
+ call_if_eq VAR_FACING, DIR_WEST, PewterCity_EventScript_LeadToMuseumWest
+ call_if_eq VAR_FACING, DIR_EAST, PewterCity_EventScript_LeadToMuseumEast
+ msgbox PewterCity_Text_ThisIsTheMuseum
+ closemessage
+ delay 10
+ applymovement LOCALID_PEWTER_MUSEUM_GUIDE, PewterCity_Movement_MuseumGuideExit
+ waitmovement 0
+ fadedefaultbgm
+ removeobject LOCALID_PEWTER_MUSEUM_GUIDE
+ clearflag FLAG_HIDE_PEWTER_MUSEUM_GUIDE
+ release
+ end
+
+PewterCity_EventScript_LeadToMuseumNorth::
+ applymovement LOCALID_PEWTER_MUSEUM_GUIDE, PewterCity_Movement_GuideWalkToMuseumNorth
+ applymovement LOCALID_PLAYER, PewterCity_Movement_PlayerWalkToMuseumNorth
+ waitmovement 0
+ return
+
+PewterCity_EventScript_LeadToMuseumSouth::
+ applymovement LOCALID_PEWTER_MUSEUM_GUIDE, PewterCity_Movement_GuideWalkToMuseumSouth
+ applymovement LOCALID_PLAYER, PewterCity_Movement_PlayerWalkToMuseumSouth
+ waitmovement 0
+ return
+
+PewterCity_EventScript_LeadToMuseumWest::
+ applymovement LOCALID_PEWTER_MUSEUM_GUIDE, PewterCity_Movement_GuideWalkToMuseumWest
+ applymovement LOCALID_PLAYER, PewterCity_Movement_PlayerWalkToMuseumWest
+ waitmovement 0
+ return
+
+PewterCity_EventScript_LeadToMuseumEast::
+ applymovement LOCALID_PEWTER_MUSEUM_GUIDE, PewterCity_Movement_GuideWalkToMuseumEast
+ applymovement LOCALID_PLAYER, PewterCity_Movement_PlayerWalkToMuseumEast
+ waitmovement 0
+ return
+
+PewterCity_EventScript_CheckedOutMuseum::
+ msgbox PewterCity_Text_WerentThoseFossilsAmazing
+ release
+ end
+
+.macro walk_to_museum
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+.endm
+
+.macro walk_to_museum_south
+ walk_up
+ walk_up
+ walk_up
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+.endm
+
+PewterCity_Movement_PlayerWalkToMuseumNorth::
+ walk_up
+ walk_to_museum
+ delay_8
+ walk_in_place_faster_up
+ step_end
+
+PewterCity_Movement_GuideWalkToMuseumNorth::
+ walk_to_museum
+ walk_left
+ walk_in_place_faster_up
+ step_end
+
+PewterCity_Movement_PlayerWalkToMuseumSouth::
+ delay_16
+ delay_16
+ walk_left
+ walk_to_museum_south
+ delay_8
+ walk_in_place_faster_up
+ step_end
+
+PewterCity_Movement_GuideWalkToMuseumSouth::
+ walk_left
+ walk_up
+ walk_to_museum_south
+ walk_left
+ walk_in_place_faster_up
+ step_end
+
+PewterCity_Movement_PlayerWalkToMuseumWest::
+ walk_left
+ walk_to_museum
+ delay_8
+ walk_in_place_faster_up
+ step_end
+
+PewterCity_Movement_GuideWalkToMuseumWest::
+ walk_to_museum
+ walk_left
+ walk_in_place_faster_up
+ step_end
+
+PewterCity_Movement_PlayerWalkToMuseumEast::
+ walk_right
+ walk_to_museum
+ delay_8
+ walk_in_place_faster_up
+ step_end
+
+PewterCity_Movement_GuideWalkToMuseumEast::
+ walk_to_museum
+ walk_left
+ walk_in_place_faster_up
+ step_end
+
+PewterCity_Movement_MuseumGuideExit::
+ walk_down
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_down
+ walk_down
+ walk_down
+ walk_right
+ walk_right
+ walk_right
+ step_end
+
+PewterCity_EventScript_FatMan::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_BROCK, 2
+ msgbox PewterCity_Text_BrockOnlySeriousTrainerHere
+ release
+ end
+
+PewterCity_EventScript_BugCatcher::
+ lock
+ faceplayer
+ msgbox PewterCity_Text_DoYouKnowWhatImDoing, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, PewterCity_EventScript_KnowWhatTheyreDoing
+ msgbox PewterCity_Text_SprayingRepelToKeepWildMonsOut
+ release
+ end
+
+PewterCity_EventScript_KnowWhatTheyreDoing::
+ msgbox PewterCity_Text_ThatsRightItsHardWork
+ release
+ end
+
+PewterCity_EventScript_TrainerTips::
+ msgbox PewterCity_Text_TrainerTipsEarningEXP, MSGBOX_SIGN
+ end
+
+PewterCity_EventScript_PoliceNotice::
+ msgbox PewterCity_Text_CallPoliceIfInfoOnThieves, MSGBOX_SIGN
+ end
+
+PewterCity_EventScript_MuseumSign::
+ msgbox PewterCity_Text_MuseumOfScience, MSGBOX_SIGN
+ end
+
+PewterCity_EventScript_GymSign::
+ lockall
+ famechecker FAMECHECKER_BROCK, 0
+ msgbox PewterCity_Text_GymSign
+ releaseall
+ end
+
+PewterCity_EventScript_CitySign::
+ msgbox PewterCity_Text_CitySign, MSGBOX_SIGN
+ end
+
+PewterCity_EventScript_RunningShoesAide::
+ lock
+ faceplayer
+ setvar VAR_TEMP_1, 0
+ call PewterCity_EventScript_AideGiveRunningShoes
+ release
+ end
+
+PewterCity_EventScript_RunningShoesAideTriggerTop::
+ lockall
+ setvar VAR_TEMP_1, 1
+ call PewterCity_EventScript_AideGiveRunningShoes
+ releaseall
+ end
+
+PewterCity_EventScript_RunningShoesAideTriggerMid::
+ lockall
+ setvar VAR_TEMP_1, 2
+ call PewterCity_EventScript_AideGiveRunningShoes
+ releaseall
+ end
+
+PewterCity_EventScript_RunningShoesAideTriggerBottom::
+ lockall
+ setvar VAR_TEMP_1, 3
+ call PewterCity_EventScript_AideGiveRunningShoes
+ releaseall
+ end
+
+PewterCity_EventScript_AideGiveRunningShoes::
+ textcolor NPC_TEXT_COLOR_MALE
+ call_if_eq VAR_TEMP_1, 1, PewterCity_EventScript_AideNoticePlayer
+ call_if_eq VAR_TEMP_1, 2, PewterCity_EventScript_AideNoticePlayer
+ call_if_eq VAR_TEMP_1, 3, PewterCity_EventScript_AideNoticePlayer
+ waitse
+ playse SE_PIN
+ applymovement LOCALID_PEWTER_AIDE, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_PEWTER_AIDE, Common_Movement_Delay48
+ waitmovement 0
+ msgbox PewterCity_Text_OhPlayer
+ call_if_eq VAR_TEMP_1, 0, PewterCity_EventScript_AideApproachPlayer0
+ call_if_eq VAR_TEMP_1, 1, PewterCity_EventScript_AideApproachPlayer1
+ call_if_eq VAR_TEMP_1, 2, PewterCity_EventScript_AideApproachPlayer2
+ call_if_eq VAR_TEMP_1, 3, PewterCity_EventScript_AideApproachPlayer3
+ msgbox PewterCity_Text_AskedToDeliverThis
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_RG_OBTAIN_KEY_ITEM
+ message PewterCity_Text_ReceivedRunningShoesFromAide
+ waitmessage
+ waitfanfare
+ msgbox PewterCity_Text_SwitchedShoesWithRunningShoes
+ special DisableMsgBoxWalkaway
+ signmsg
+ msgbox PewterCity_Text_ExplainRunningShoes
+ normalmsg
+ call EventScript_RestorePrevTextColor
+ msgbox PewterCity_Text_MustBeGoingBackToLab
+ closemessage
+ call_if_eq VAR_TEMP_1, 0, PewterCity_EventScript_AideExit0
+ call_if_eq VAR_TEMP_1, 1, PewterCity_EventScript_AideExit1
+ call_if_eq VAR_TEMP_1, 2, PewterCity_EventScript_AideExit2
+ call_if_eq VAR_TEMP_1, 3, PewterCity_EventScript_AideExit3
+ delay 30
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PewterCity_Text_RunningShoesLetterFromMom
+ closemessage
+ removeobject LOCALID_PEWTER_AIDE
+ setflag FLAG_SYS_B_DASH
+ setvar VAR_MAP_SCENE_PEWTER_CITY, 2
+ return
+
+PewterCity_EventScript_AideNoticePlayer::
+ applymovement LOCALID_PEWTER_AIDE, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ return
+
+@ Aide already at player
+PewterCity_EventScript_AideApproachPlayer0::
+ closemessage
+ delay 20
+ return
+
+PewterCity_EventScript_AideApproachPlayer1::
+ closemessage
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ return
+
+PewterCity_EventScript_AideApproachPlayer2::
+ closemessage
+ applymovement LOCALID_PEWTER_AIDE, PewterCity_Movement_AideApproachPlayerMid
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ return
+
+PewterCity_EventScript_AideApproachPlayer3::
+ closemessage
+ applymovement LOCALID_PEWTER_AIDE, PewterCity_Movement_AideApproachPlayerBottom
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ return
+
+PewterCity_EventScript_AideExit0::
+ applymovement LOCALID_PEWTER_AIDE, PewterCity_Movement_AideExit0
+ waitmovement 0
+ return
+
+PewterCity_EventScript_AideExit1::
+ applymovement LOCALID_PEWTER_AIDE, PewterCity_Movement_AideExit1
+ waitmovement 0
+ return
+
+PewterCity_EventScript_AideExit2::
+ applymovement LOCALID_PEWTER_AIDE, PewterCity_Movement_AideExit2
+ waitmovement 0
+ return
+
+PewterCity_EventScript_AideExit3::
+ applymovement LOCALID_PEWTER_AIDE, PewterCity_Movement_AideExit3
+ waitmovement 0
+ return
+
+PewterCity_Movement_AideApproachPlayerMid::
+ delay_4
+ walk_down
+ step_end
+
+PewterCity_Movement_AideApproachPlayerBottom::
+ delay_4
+ walk_down
+ walk_down
+ step_end
+
+PewterCity_Movement_AideExit0::
+ walk_down
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ step_end
+
+PewterCity_Movement_AideExit1::
+ walk_left
+ walk_down
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ step_end
+
+PewterCity_Movement_AideExit2::
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ step_end
+
+PewterCity_Movement_AideExit3::
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ step_end
+
+@ Unused
+PewterCity_Movement_WalkInPlaceLeft::
+ walk_in_place_left
+ step_end
+
+Text_DreamEaterTeach::
+ .string "Yawn!\n"
+ .string "I must have dozed off in the sun.\p"
+ .string "I had this weird dream about\n"
+ .string "a DROWZEE eating my dream.\p"
+ .string "And…\n"
+ .string "I learned how to eat dreams…\p"
+ .string "Oogh, this is too spooky!\p"
+ .string "Let me teach it to a POKéMON so\n"
+ .string "I can forget about it!$"
+
+Text_DreamEaterDeclined::
+ .string "…Snore…$"
+
+Text_DreamEaterWhichMon::
+ .string "Which POKéMON wants to learn\n"
+ .string "DREAM EATER?$"
+
+Text_DreamEaterTaught::
+ .string "…ZZZ…\n"
+ .string "I…can't eat…anymore…$"
+
+PewterCity_Text_ClefairyCameFromMoon::
+ .string "CLEFAIRY came from the moon.\n"
+ .string "That's what the rumor is.\p"
+ .string "They appeared after MOON STONES\n"
+ .string "fell on MT. MOON.$"
+
+PewterCity_Text_BrockOnlySeriousTrainerHere::
+ .string "There aren't many serious POKéMON\n"
+ .string "TRAINERS here.\p"
+ .string "They're all like BUG CATCHERS,\n"
+ .string "you know, just hobbyists.\p"
+ .string "But PEWTER GYM's BROCK isn't like\n"
+ .string "that, not one bit.$"
+
+PewterCity_Text_DidYouCheckOutMuseum::
+ .string "Did you check out the MUSEUM?$"
+
+PewterCity_Text_WerentThoseFossilsAmazing::
+ .string "Weren't those fossils from MT. MOON\n"
+ .string "amazing?$"
+
+PewterCity_Text_ReallyYouHaveToGo::
+ .string "Really?\n"
+ .string "You absolutely have to go!$"
+
+PewterCity_Text_ThisIsTheMuseum::
+ .string "This is it, the MUSEUM.\p"
+ .string "You have to pay to get in, but it's\n"
+ .string "worth it. See you around!$"
+
+PewterCity_Text_DoYouKnowWhatImDoing::
+ .string "Psssst!\n"
+ .string "Do you know what I'm doing?$"
+
+PewterCity_Text_ThatsRightItsHardWork::
+ .string "That's right!\n"
+ .string "It's hard work!$"
+
+PewterCity_Text_SprayingRepelToKeepWildMonsOut::
+ .string "I'm spraying REPEL to keep wild\n"
+ .string "POKéMON out of my garden!$"
+
+PewterCity_Text_BrocksLookingForChallengersFollowMe::
+ .string "You're a TRAINER, right?\p"
+ .string "BROCK's looking for new\n"
+ .string "challengers. Follow me!$"
+
+PewterCity_Text_GoTakeOnBrock::
+ .string "If you have the right stuff,\n"
+ .string "go take on BROCK!$"
+
+PewterCity_Text_TrainerTipsEarningEXP::
+ .string "TRAINER TIPS\p"
+ .string "All POKéMON that appear in battle,\n"
+ .string "however briefly, earn EXP Points.$"
+
+PewterCity_Text_CallPoliceIfInfoOnThieves::
+ .string "NOTICE!\p"
+ .string "Thieves have been stealing POKéMON\n"
+ .string "fossils from MT. MOON.\p"
+ .string "Please call the PEWTER POLICE if\n"
+ .string "you have any information.$"
+
+PewterCity_Text_MuseumOfScience::
+ .string "PEWTER MUSEUM OF SCIENCE$"
+
+PewterCity_Text_GymSign::
+ .string "PEWTER CITY POKéMON GYM\n"
+ .string "LEADER: BROCK\l"
+ .string "The Rock-Solid POKéMON TRAINER!$"
+
+PewterCity_Text_CitySign::
+ .string "PEWTER CITY\n"
+ .string "A Stone Gray City$"
+
+PewterCity_Text_OhPlayer::
+ .string "Oh, {PLAYER}{KUN}!$"
+
+PewterCity_Text_AskedToDeliverThis::
+ .string "I'm glad I caught up to you.\n"
+ .string "I'm PROF. OAK's AIDE.\p"
+ .string "I've been asked to deliver this,\n"
+ .string "so here you go.$"
+
+PewterCity_Text_ReceivedRunningShoesFromAide::
+ .string "{PLAYER} received the\n"
+ .string "RUNNING SHOES from the AIDE.$"
+
+PewterCity_Text_SwitchedShoesWithRunningShoes::
+ .string "{PLAYER} switched shoes with the\n"
+ .string "RUNNING SHOES.$"
+
+PewterCity_Text_ExplainRunningShoes::
+ .string "Press the B Button to run.\n"
+ .string "But only where there's room to run!$"
+
+PewterCity_Text_MustBeGoingBackToLab::
+ .string "Well, I must be going back to\n"
+ .string "the LAB.\p"
+ .string "Bye-bye!$"
+
+PewterCity_Text_RunningShoesLetterFromMom::
+ .string "There's a letter attached…\p"
+ .string "Dear {PLAYER},\p"
+ .string "Here is a pair of RUNNING SHOES\n"
+ .string "for my beloved challenger.\p"
+ .string "Remember, I'll always cheer for\n"
+ .string "you! Don't ever give up!\p"
+ .string "From Mom$"
+
diff --git a/data/maps/PewterCity_Gym_Frlg/map.json b/data/maps/PewterCity_Gym_Frlg/map.json
new file mode 100644
index 000000000000..3c1d9a9f3493
--- /dev/null
+++ b/data/maps/PewterCity_Gym_Frlg/map.json
@@ -0,0 +1,104 @@
+{
+ "id": "MAP_PEWTER_CITY_GYM",
+ "name": "PewterCity_Gym_Frlg",
+ "layout": "LAYOUT_PEWTER_CITY_GYM",
+ "music": "MUS_GYM",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_PEWTER_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_GYM",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BROCK",
+ "x": 6,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_Gym_EventScript_Brock",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CAMPER_FRLG",
+ "x": 3,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "PewterCity_Gym_EventScript_Liam",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GYM_GUY",
+ "x": 7,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_Gym_EventScript_GymGuy",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 6,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 7,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PewterCity_Gym_EventScript_GymStatue"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PewterCity_Gym_EventScript_GymStatue"
+ }
+ ]
+}
diff --git a/data/maps/PewterCity_Gym_Frlg/scripts.inc b/data/maps/PewterCity_Gym_Frlg/scripts.inc
new file mode 100644
index 000000000000..b656d9b23696
--- /dev/null
+++ b/data/maps/PewterCity_Gym_Frlg/scripts.inc
@@ -0,0 +1,202 @@
+PewterCity_Gym_Frlg_MapScripts::
+ .byte 0
+
+PewterCity_Gym_EventScript_Brock::
+ famechecker FAMECHECKER_BROCK, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
+ trainerbattle_single TRAINER_LEADER_BROCK, PewterCity_Gym_Text_BrockIntro, PewterCity_Gym_Text_BrockDefeat, PewterCity_Gym_EventScript_DefeatedBrock, NO_MUSIC
+ goto_if_unset FLAG_GOT_TM39_FROM_BROCK, PewterCity_Gym_EventScript_GiveTM39
+ msgbox PewterCity_Gym_Text_BrockPostBattle
+ release
+ end
+
+PewterCity_Gym_EventScript_DefeatedBrock::
+ famechecker FAMECHECKER_BROCK, 1
+ setflag FLAG_DEFEATED_BROCK
+ setflag FLAG_BADGE01_GET
+ setvar VAR_MAP_SCENE_PEWTER_CITY, 1
+ setflag FLAG_HIDE_PEWTER_CITY_GYM_GUIDE
+ clearflag FLAG_HIDE_PEWTER_CITY_RUNNING_SHOES_GUY
+ set_gym_trainers_frlg 1
+ goto PewterCity_Gym_EventScript_GiveTM39
+ end
+
+PewterCity_Gym_EventScript_GiveTM39::
+ msgbox PewterCity_Gym_Text_TakeThisWithYou
+ checkitemspace ITEM_TM39
+ goto_if_eq VAR_RESULT, FALSE, PewterCity_Gym_EventScript_NoRoomForTM39
+ giveitem_msg PewterCity_Gym_Text_ReceivedTM39FromBrock, ITEM_TM39
+ setflag FLAG_GOT_TM39_FROM_BROCK
+ msgbox PewterCity_Gym_Text_ExplainTM39
+ release
+ end
+
+PewterCity_Gym_EventScript_NoRoomForTM39::
+ msgbox PewterCity_Gym_Text_DontHaveRoomForThis
+ release
+ end
+
+PewterCity_Gym_EventScript_Liam::
+ trainerbattle_single TRAINER_CAMPER_LIAM, PewterCity_Gym_Text_LiamIntro, PewterCity_Gym_Text_LiamDefeat
+ msgbox PewterCity_Gym_Text_LiamPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PewterCity_Gym_EventScript_GymGuy::
+ lock
+ faceplayer
+ goto_if_set FLAG_DEFEATED_BROCK, PewterCity_Gym_EventScript_GymGuyPostVictory
+ msgbox PewterCity_Gym_Text_LetMeTakeYouToTheTop, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, PewterCity_Gym_EventScript_GymGuyTakeMeToTop
+ goto_if_eq VAR_RESULT, NO, PewterCity_Gym_EventScript_GymGuyDontTakeMeToTop
+ end
+
+PewterCity_Gym_EventScript_GymGuyPostVictory::
+ msgbox PewterCity_Gym_Text_YoureChampMaterial
+ release
+ end
+
+PewterCity_Gym_EventScript_GymGuyTakeMeToTop::
+ msgbox PewterCity_Gym_Text_LetsGetHappening
+ goto PewterCity_Gym_EventScript_GymGuyAdvice
+ end
+
+PewterCity_Gym_EventScript_GymGuyDontTakeMeToTop::
+ msgbox PewterCity_Gym_Text_ItsFreeLetsGetHappening
+ goto PewterCity_Gym_EventScript_GymGuyAdvice
+ end
+
+PewterCity_Gym_EventScript_GymGuyAdvice::
+ msgbox PewterCity_Gym_Text_TryDifferentPartyOrders
+ release
+ end
+
+PewterCity_Gym_EventScript_GymStatue::
+ lockall
+ goto_if_set FLAG_BADGE01_GET, PewterCity_Gym_EventScript_GymStatuePostVictory
+ msgbox PewterCity_Gym_Text_GymStatue
+ releaseall
+ end
+
+PewterCity_Gym_EventScript_GymStatuePostVictory::
+ msgbox PewterCity_Gym_Text_GymStatuePlayerWon
+ releaseall
+ end
+
+PewterCity_Gym_Text_BrockIntro::
+ .string "So, you're here. I'm BROCK.\n"
+ .string "I'm PEWTER's GYM LEADER.\p"
+ .string "My rock-hard willpower is evident\n"
+ .string "even in my POKéMON.\p"
+ .string "My POKéMON are all rock hard, and\n"
+ .string "have true-grit determination.\p"
+ .string "That's right - my POKéMON are all\n"
+ .string "the ROCK type!\p"
+ .string "Fuhaha! You're going to challenge\n"
+ .string "me knowing that you'll lose?\p"
+ .string "That's the TRAINER's honor that\n"
+ .string "compels you to challenge me.\p"
+ .string "Fine, then!\n"
+ .string "Show me your best!{PLAY_BGM}{MUS_RG_ENCOUNTER_GYM_LEADER}$"
+
+PewterCity_Gym_Text_BrockDefeat::
+ .string "I took you for granted, and so\n"
+ .string "I lost.\p"
+ .string "As proof of your victory, I confer\n"
+ .string "on you this…the official POKéMON\l"
+ .string "LEAGUE BOULDERBADGE.\p"
+ .string "{FONT_NORMAL}{PLAYER} received the BOULDERBADGE\n"
+ .string "from BROCK!{PAUSE_MUSIC}{PLAY_BGM}{MUS_OBTAIN_BADGE}{PAUSE 0xFE}{PAUSE 0x56}{RESUME_MUSIC}\p"
+ .string "{FONT_MALE}Just having the BOULDERBADGE makes\n"
+ .string "your POKéMON more powerful.\p"
+ .string "It also enables the use of the\n"
+ .string "move FLASH outside of battle.\p"
+ .string "Of course, a POKéMON must know the\n"
+ .string "move FLASH to use it.$"
+
+PewterCity_Gym_Text_TakeThisWithYou::
+ .string "Wait!\n"
+ .string "Take this with you.$"
+
+PewterCity_Gym_Text_ReceivedTM39FromBrock::
+ .string "{PLAYER} received TM39\n"
+ .string "from BROCK.$"
+
+PewterCity_Gym_Text_ExplainTM39::
+ .string "A TM, Technical Machine, contains a\n"
+ .string "technique for POKéMON.\p"
+ .string "Using a TM teaches the move it\n"
+ .string "contains to a POKéMON.\p"
+ .string "A TM is good for only one use.\p"
+ .string "So, when you use one, pick the\n"
+ .string "POKéMON carefully.\p"
+ .string "Anyways…\n"
+ .string "TM39 contains ROCK TOMB.\p"
+ .string "It hurls boulders at the foe and\n"
+ .string "lowers its SPEED.$"
+
+PewterCity_Gym_Text_BrockPostBattle::
+ .string "There are all kinds of TRAINERS in\n"
+ .string "this huge world of ours.\p"
+ .string "You appear to be very gifted as a\n"
+ .string "POKéMON TRAINER.\p"
+ .string "So let me make a suggestion.\p"
+ .string "Go to the GYM in CERULEAN and test\n"
+ .string "your abilities.$"
+
+PewterCity_Gym_Text_DontHaveRoomForThis::
+ .string "You don't have room for this.$"
+
+PewterCity_Gym_Text_LiamIntro::
+ .string "Stop right there, kid!\p"
+ .string "You're ten thousand light-years \n"
+ .string "from facing BROCK!$"
+
+PewterCity_Gym_Text_LiamDefeat::
+ .string "Darn!\p"
+ .string "Light-years isn't time…\n"
+ .string "It measures distance!$"
+
+PewterCity_Gym_Text_LiamPostBattle::
+ .string "You're pretty hot.\n"
+ .string "…But not as hot as BROCK!$"
+
+PewterCity_Gym_Text_LetMeTakeYouToTheTop::
+ .string "Hiya!\n"
+ .string "Do you want to dream big?\p"
+ .string "Do you dare to dream of becoming\n"
+ .string "the POKéMON champ?\p"
+ .string "I'm no TRAINER, but I can advise\n"
+ .string "you on how to win.\p"
+ .string "Let me take you to the top!$"
+
+PewterCity_Gym_Text_LetsGetHappening::
+ .string "All right!\n"
+ .string "Let's get happening!$"
+
+PewterCity_Gym_Text_TryDifferentPartyOrders::
+ .string "The first POKéMON out in a match is\n"
+ .string "at the left of the POKéMON LIST.\p"
+ .string "By changing the order of POKéMON,\n"
+ .string "you may gain an advantage.\p"
+ .string "Try different orders to suit your\n"
+ .string "opponent's party.$"
+
+PewterCity_Gym_Text_ItsFreeLetsGetHappening::
+ .string "It's a free service!\n"
+ .string "Let's get happening!$"
+
+PewterCity_Gym_Text_YoureChampMaterial::
+ .string "Just as I thought!\n"
+ .string "You're POKéMON champ material!$"
+
+PewterCity_Gym_Text_GymStatue::
+ .string "PEWTER POKéMON GYM\n"
+ .string "LEADER: BROCK\p"
+ .string "WINNING TRAINERS:\n"
+ .string "{RIVAL}$"
+
+PewterCity_Gym_Text_GymStatuePlayerWon::
+ .string "PEWTER POKéMON GYM\n"
+ .string "LEADER: BROCK\p"
+ .string "WINNING TRAINERS:\n"
+ .string "{RIVAL}, {PLAYER}$"
+
diff --git a/data/maps/PewterCity_House1_Frlg/map.json b/data/maps/PewterCity_House1_Frlg/map.json
new file mode 100644
index 000000000000..c8b4fca506fd
--- /dev/null
+++ b/data/maps/PewterCity_House1_Frlg/map.json
@@ -0,0 +1,88 @@
+{
+ "id": "MAP_PEWTER_CITY_HOUSE1",
+ "name": "PewterCity_House1_Frlg",
+ "layout": "LAYOUT_HOUSE2_FRLG",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_PEWTER_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_House1_EventScript_BaldingMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_BOY_FRLG",
+ "x": 5,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_House1_EventScript_LittleBoy",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_PEWTER_HOUSE_NIDORAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NIDORAN_M",
+ "x": 6,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_House1_EventScript_Nidoran",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/PewterCity_House1_Frlg/scripts.inc b/data/maps/PewterCity_House1_Frlg/scripts.inc
new file mode 100644
index 000000000000..c83439961247
--- /dev/null
+++ b/data/maps/PewterCity_House1_Frlg/scripts.inc
@@ -0,0 +1,47 @@
+PewterCity_House1_Frlg_MapScripts::
+ .byte 0
+
+PewterCity_House1_EventScript_BaldingMan::
+ msgbox PewterCity_House1_Text_TradeMonsAreFinicky, MSGBOX_NPC
+ end
+
+PewterCity_House1_EventScript_LittleBoy::
+ lock
+ msgbox PewterCity_House1_Text_NidoranSit
+ call PewterCity_House1_EventScript_DoNidoranCry
+ release
+ end
+
+PewterCity_House1_EventScript_Nidoran::
+ lock
+ faceplayer
+ call PewterCity_House1_EventScript_DoNidoranCry
+ applymovement LOCALID_PEWTER_HOUSE_NIDORAN, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+PewterCity_House1_EventScript_DoNidoranCry::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ waitse
+ playmoncry SPECIES_NIDORAN_M, CRY_MODE_NORMAL
+ msgbox PewterCity_House1_Text_Nidoran
+ waitmoncry
+ call EventScript_RestorePrevTextColor
+ return
+
+PewterCity_House1_Text_Nidoran::
+ .string "NIDORAN♂: Bowbow!$"
+
+PewterCity_House1_Text_NidoranSit::
+ .string "NIDORAN, sit!$"
+
+PewterCity_House1_Text_TradeMonsAreFinicky::
+ .string "Our POKéMON's an outsider, so it's\n"
+ .string "finicky and hard to handle.\p"
+ .string "An outsider is a POKéMON that you\n"
+ .string "get in a trade.\p"
+ .string "It grows fast, but it may ignore an\n"
+ .string "unskilled TRAINER in battle.\p"
+ .string "If only we had some BADGES…$"
+
diff --git a/data/maps/PewterCity_House2_Frlg/map.json b/data/maps/PewterCity_House2_Frlg/map.json
new file mode 100644
index 000000000000..374e9589598b
--- /dev/null
+++ b/data/maps/PewterCity_House2_Frlg/map.json
@@ -0,0 +1,73 @@
+{
+ "id": "MAP_PEWTER_CITY_HOUSE2",
+ "name": "PewterCity_House2_Frlg",
+ "layout": "LAYOUT_HOUSE2_FRLG",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_PEWTER_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 3,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_House2_EventScript_OldMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_BOY_FRLG",
+ "x": 5,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_House2_EventScript_LittleBoy",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "6"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/PewterCity_House2_Frlg/scripts.inc b/data/maps/PewterCity_House2_Frlg/scripts.inc
new file mode 100644
index 000000000000..dc1a88233531
--- /dev/null
+++ b/data/maps/PewterCity_House2_Frlg/scripts.inc
@@ -0,0 +1,25 @@
+PewterCity_House2_Frlg_MapScripts::
+ .byte 0
+
+PewterCity_House2_EventScript_OldMan::
+ msgbox PewterCity_House2_Text_MonsLearnTechniquesAsTheyGrow, MSGBOX_NPC
+ end
+
+PewterCity_House2_EventScript_LittleBoy::
+ msgbox PewterCity_House2_Text_MonsEasierCatchIfStatused, MSGBOX_NPC
+ end
+
+PewterCity_House2_Text_MonsLearnTechniquesAsTheyGrow::
+ .string "POKéMON learn new techniques as\n"
+ .string "they grow.\p"
+ .string "But some moves must be taught to\n"
+ .string "them by people.$"
+
+PewterCity_House2_Text_MonsEasierCatchIfStatused::
+ .string "A POKéMON becomes easier to \n"
+ .string "catch if it has a status problem.\p"
+ .string "Sleep, poison, burn, or paralysis…\n"
+ .string "Those are all effective.\p"
+ .string "But catching POKéMON is never\n"
+ .string "a sure thing!$"
+
diff --git a/data/maps/PewterCity_Mart_Frlg/map.json b/data/maps/PewterCity_Mart_Frlg/map.json
new file mode 100644
index 000000000000..7bc6b699f11c
--- /dev/null
+++ b/data/maps/PewterCity_Mart_Frlg/map.json
@@ -0,0 +1,87 @@
+{
+ "id": "MAP_PEWTER_CITY_MART",
+ "name": "PewterCity_Mart_Frlg",
+ "layout": "LAYOUT_MART_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_PEWTER_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 8,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_Mart_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 6,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_Mart_EventScript_Boy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 2,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_Mart_EventScript_Clerk",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/PewterCity_Mart_Frlg/scripts.inc b/data/maps/PewterCity_Mart_Frlg/scripts.inc
new file mode 100644
index 000000000000..2fa94240bf53
--- /dev/null
+++ b/data/maps/PewterCity_Mart_Frlg/scripts.inc
@@ -0,0 +1,46 @@
+PewterCity_Mart_Frlg_MapScripts::
+ .byte 0
+
+PewterCity_Mart_EventScript_Youngster::
+ msgbox PewterCity_Mart_Text_BoughtWeirdFishFromShadyGuy, MSGBOX_NPC
+ end
+
+PewterCity_Mart_EventScript_Boy::
+ msgbox PewterCity_Mart_Text_GoodThingsIfRaiseMonsDiligently, MSGBOX_NPC
+ end
+
+PewterCity_Mart_EventScript_Clerk::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart PewterCity_Mart_Items
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+PewterCity_Mart_Items::
+ .2byte ITEM_POKE_BALL
+ .2byte ITEM_POTION
+ .2byte ITEM_ANTIDOTE
+ .2byte ITEM_PARALYZE_HEAL
+ .2byte ITEM_AWAKENING
+ .2byte ITEM_BURN_HEAL
+ .2byte ITEM_ESCAPE_ROPE
+ .2byte ITEM_REPEL
+ .2byte ITEM_NONE
+ release
+ end
+
+PewterCity_Mart_Text_BoughtWeirdFishFromShadyGuy::
+ .string "A shady old guy sucked me into\n"
+ .string "buying this weird fish POKéMON!\p"
+ .string "It's totally weak and it cost ¥500!$"
+
+PewterCity_Mart_Text_GoodThingsIfRaiseMonsDiligently::
+ .string "Good things can happen if you raise\n"
+ .string "POKéMON diligently.\p"
+ .string "Even the weak ones can surprise\n"
+ .string "you if you don't give up on them.$"
+
diff --git a/data/maps/PewterCity_Museum_1F_Frlg/map.json b/data/maps/PewterCity_Museum_1F_Frlg/map.json
new file mode 100644
index 000000000000..ed298b58c426
--- /dev/null
+++ b/data/maps/PewterCity_Museum_1F_Frlg/map.json
@@ -0,0 +1,213 @@
+{
+ "id": "MAP_PEWTER_CITY_MUSEUM_1F",
+ "name": "PewterCity_Museum_1F_Frlg",
+ "layout": "LAYOUT_PEWTER_CITY_MUSEUM_1F",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_PEWTER_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_MUSEUM_SCIENTIST1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 16,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_Museum_1F_EventScript_Scientist1",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 2,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_Museum_1F_EventScript_OldMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 21,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_Museum_1F_EventScript_OldAmberScientist",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_OLD_AMBER",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_AMBER",
+ "x": 22,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_Museum_1F_EventScript_OldAmber",
+ "flag": "FLAG_HIDE_OLD_AMBER"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 26,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_Museum_1F_EventScript_Scientist2",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 26,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_Museum_1F_EventScript_SeismicTossTutor",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 13,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 14,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 15,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 21,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 22,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 8,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_PEWTER_CITY_MUSEUM_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 12,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PEWTER_CITY_MUSEUM_1F",
+ "var_value": "0",
+ "script": "PewterCity_Museum_1F_EventScript_EntranceTriggerLeft"
+ },
+ {
+ "type": "trigger",
+ "x": 13,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PEWTER_CITY_MUSEUM_1F",
+ "var_value": "0",
+ "script": "PewterCity_Museum_1F_EventScript_EntranceTriggerMid"
+ },
+ {
+ "type": "trigger",
+ "x": 14,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_PEWTER_CITY_MUSEUM_1F",
+ "var_value": "0",
+ "script": "PewterCity_Museum_1F_EventScript_EntranceTriggerRight"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PewterCity_Museum_1F_EventScript_AerodactylFossil"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PewterCity_Museum_1F_EventScript_KabutopsFossil"
+ },
+ {
+ "type": "sign",
+ "x": 27,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "PewterCity_Museum_1F_EventScript_PokemonJournalBrock"
+ },
+ {
+ "type": "sign",
+ "x": 26,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "PewterCity_Museum_1F_EventScript_PokemonJournalBrock"
+ }
+ ]
+}
diff --git a/data/maps/PewterCity_Museum_1F_Frlg/scripts.inc b/data/maps/PewterCity_Museum_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..a30b96ac99b5
--- /dev/null
+++ b/data/maps/PewterCity_Museum_1F_Frlg/scripts.inc
@@ -0,0 +1,277 @@
+PewterCity_Museum_1F_Frlg_MapScripts::
+ .byte 0
+
+PewterCity_Museum_1F_EventScript_Scientist1::
+ lock
+ faceplayer
+ goto_if_eq VAR_FACING, DIR_WEST, PewterCity_Museum_1F_EventScript_Scientist1BehindCounter
+ goto_if_eq VAR_FACING, DIR_SOUTH, PewterCity_Museum_1F_EventScript_Scientist1BehindCounter
+ goto_if_eq VAR_FACING, DIR_NORTH, PewterCity_Museum_1F_EventScript_Scientist1BehindCounter
+ msgbox PewterCity_Museum_1F_Text_PleaseEnjoyYourself
+ release
+ end
+
+PewterCity_Museum_1F_EventScript_Scientist1BehindCounter::
+ msgbox PewterCity_Museum_1F_Text_DoYouKnowWhatAmberIs, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, PewterCity_Museum_1F_EventScript_AmberHasGeneticMatter
+ goto_if_eq VAR_RESULT, NO, PewterCity_Museum_1F_EventScript_ExplainAmber
+ end
+
+PewterCity_Museum_1F_EventScript_AmberHasGeneticMatter::
+ msgbox PewterCity_Museum_1F_Text_AmberContainsGeneticMatter
+ applymovement LOCALID_MUSEUM_SCIENTIST1, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+PewterCity_Museum_1F_EventScript_ExplainAmber::
+ msgbox PewterCity_Museum_1F_Text_AmberIsFossilizedSap
+ applymovement LOCALID_MUSEUM_SCIENTIST1, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+PewterCity_Museum_1F_EventScript_EntranceTriggerLeft::
+ lockall
+ setvar VAR_TEMP_1, 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ goto PewterCity_Museum_1F_EventScript_EntranceTrigger
+ end
+
+PewterCity_Museum_1F_EventScript_EntranceTriggerMid::
+ lockall
+ setvar VAR_TEMP_1, 1
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ goto PewterCity_Museum_1F_EventScript_EntranceTrigger
+ end
+
+PewterCity_Museum_1F_EventScript_EntranceTriggerRight::
+ lockall
+ setvar VAR_TEMP_1, 2
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ goto PewterCity_Museum_1F_EventScript_EntranceTrigger
+ end
+
+PewterCity_Museum_1F_EventScript_EntranceTrigger::
+ textcolor NPC_TEXT_COLOR_MALE
+ showmoneybox 0, 0
+ msgbox PewterCity_Museum_1F_Text_Its50YForChildsTicket, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, PewterCity_Museum_1F_EventScript_TryPayForTicket
+ msgbox PewterCity_Museum_1F_Text_ComeAgain
+ closemessage
+ hidemoneybox
+ applymovement LOCALID_PLAYER, PewterCity_Museum_1F_Movement_ForcePlayerExit
+ waitmovement 0
+ releaseall
+ end
+
+PewterCity_Museum_1F_EventScript_TryPayForTicket::
+ checkmoney 50
+ goto_if_eq VAR_RESULT, FALSE, PewterCity_Museum_1F_EventScript_NotEnoughMoney
+ closemessage
+ call_if_eq VAR_TEMP_1, 0, PewterCity_Museum_1F_EventScript_PlayerApproachCounterLeft
+ call_if_eq VAR_TEMP_1, 1, PewterCity_Museum_1F_EventScript_PlayerApproachCounterMid
+ call_if_eq VAR_TEMP_1, 2, PewterCity_Museum_1F_EventScript_PlayerApproachCounterRight
+ playse SE_SHOP
+ removemoney 50
+ updatemoneybox
+ waitse
+ msgbox PewterCity_Museum_1F_Text_Right50YThankYou
+ setvar VAR_MAP_SCENE_PEWTER_CITY_MUSEUM_1F, 1
+ hidemoneybox
+ releaseall
+ end
+
+PewterCity_Museum_1F_EventScript_PlayerApproachCounterLeft::
+ applymovement LOCALID_PLAYER, PewterCity_Museum_1F_Movement_ApproachCounterLeft
+ waitmovement 0
+ return
+
+PewterCity_Museum_1F_EventScript_PlayerApproachCounterMid::
+ applymovement LOCALID_PLAYER, PewterCity_Museum_1F_Movement_ApproachCounterMid
+ waitmovement 0
+ return
+
+PewterCity_Museum_1F_EventScript_PlayerApproachCounterRight::
+ applymovement LOCALID_PLAYER, PewterCity_Museum_1F_Movement_ApproachCounterRight
+ waitmovement 0
+ return
+
+PewterCity_Museum_1F_EventScript_NotEnoughMoney::
+ msgbox PewterCity_Museum_1F_Text_DontHaveEnoughMoney
+ closemessage
+ hidemoneybox
+ applymovement LOCALID_PLAYER, PewterCity_Museum_1F_Movement_ForcePlayerExit
+ waitmovement 0
+ releaseall
+ end
+
+PewterCity_Museum_1F_Movement_ForcePlayerExit::
+ walk_down
+ step_end
+
+PewterCity_Museum_1F_Movement_ApproachCounterLeft::
+ walk_right
+ walk_right
+ delay_8
+ walk_in_place_right
+ step_end
+
+PewterCity_Museum_1F_Movement_ApproachCounterMid::
+ walk_right
+ delay_8
+ walk_in_place_right
+ step_end
+
+PewterCity_Museum_1F_Movement_ApproachCounterRight::
+ delay_8
+ walk_in_place_right
+ step_end
+
+PewterCity_Museum_1F_EventScript_Scientist2::
+ msgbox PewterCity_Museum_1F_Text_WeHaveTwoFossilsOnExhibit, MSGBOX_NPC
+ end
+
+PewterCity_Museum_1F_EventScript_OldMan::
+ msgbox PewterCity_Museum_1F_Text_ShouldBeGratefulForLongLife, MSGBOX_NPC
+ end
+
+PewterCity_Museum_1F_EventScript_OldAmberScientist::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_OLD_AMBER, PewterCity_Museum_1F_EventScript_AlreadyGotOldAmber
+ msgbox PewterCity_Museum_1F_Text_WantYouToGetAmberExamined
+ checkitemspace ITEM_OLD_AMBER
+ goto_if_eq VAR_RESULT, FALSE, PewterCity_Museum_1F_EventScript_NoRoomForOldAmber
+ setflag FLAG_GOT_OLD_AMBER
+ removeobject LOCALID_OLD_AMBER
+ giveitem_msg PewterCity_Museum_1F_Text_ReceivedOldAmberFromMan, ITEM_OLD_AMBER, 1, MUS_RG_OBTAIN_KEY_ITEM
+ release
+ end
+
+PewterCity_Museum_1F_EventScript_NoRoomForOldAmber::
+ msgbox PewterCity_Museum_1F_Text_DontHaveSpaceForThis
+ release
+ end
+
+PewterCity_Museum_1F_EventScript_AlreadyGotOldAmber::
+ msgbox PewterCity_Museum_1F_Text_GetOldAmberChecked
+ release
+ end
+
+PewterCity_Museum_1F_EventScript_OldAmber::
+ msgbox PewterCity_Museum_1F_Text_BeautifulPieceOfAmber, MSGBOX_NPC
+ end
+
+PewterCity_Museum_1F_EventScript_AerodactylFossil::
+ lockall
+ setvar VAR_0x8004, SPECIES_AERODACTYL
+ setvar VAR_0x8005, 10
+ setvar VAR_0x8006, 3
+ special OpenMuseumFossilPic
+ msgbox PewterCity_Museum_1F_Text_AerodactylFossil
+ special CloseMuseumFossilPic
+ releaseall
+ end
+
+PewterCity_Museum_1F_EventScript_KabutopsFossil::
+ lockall
+ setvar VAR_0x8004, SPECIES_KABUTOPS
+ setvar VAR_0x8005, 10
+ setvar VAR_0x8006, 3
+ special OpenMuseumFossilPic
+ msgbox PewterCity_Museum_1F_Text_KabutopsFossil
+ special CloseMuseumFossilPic
+ releaseall
+ end
+
+PewterCity_Museum_1F_Text_Its50YForChildsTicket::
+ .string "Yes, yes.\n"
+ .string "It's ¥50 for a child's ticket.\p"
+ .string "Would you like to come in?$"
+
+PewterCity_Museum_1F_Text_ComeAgain::
+ .string "Come again!$"
+
+PewterCity_Museum_1F_Text_Right50YThankYou::
+ .string "Right, ¥50!\n"
+ .string "Thank you!$"
+
+PewterCity_Museum_1F_Text_DontHaveEnoughMoney::
+ .string "You don't have enough money.$"
+
+PewterCity_Museum_1F_Text_PleaseEnjoyYourself::
+ .string "Please enjoy yourself.$"
+
+PewterCity_Museum_1F_Text_DoYouKnowWhatAmberIs::
+ .string "You can't sneak in the back way!\n"
+ .string "Nice try, kid, but no.\p"
+ .string "Oh, whatever!\n"
+ .string "Do you know what AMBER is?$"
+
+PewterCity_Museum_1F_Text_AmberContainsGeneticMatter::
+ .string "AMBER contains the genetic matter\n"
+ .string "of ancient POKéMON.\p"
+ .string "There's a LAB somewhere trying to\n"
+ .string "resurrect POKéMON from AMBER.$"
+
+PewterCity_Museum_1F_Text_AmberIsFossilizedSap::
+ .string "AMBER is actually sap, that gooey\n"
+ .string "stuff that oozes from trees.\p"
+ .string "The ancient sap fossilized over\n"
+ .string "time to become rock-hard AMBER.$"
+
+@ Unused
+PewterCity_Museum_1F_Text_PleaseGoAround::
+ .string "あちらへ おまわりください$"
+
+PewterCity_Museum_1F_Text_ShouldBeGratefulForLongLife::
+ .string "I should be grateful for my long\n"
+ .string "life.\p"
+ .string "Never did I think I would get to\n"
+ .string "see the bones of a dragon!$"
+
+PewterCity_Museum_1F_Text_WantYouToGetAmberExamined::
+ .string "Ssh! Listen, I need to share a\n"
+ .string "secret with someone.\p"
+ .string "I think that this chunk of AMBER\n"
+ .string "contains POKéMON DNA!\p"
+ .string "It would be a shattering scientific\n"
+ .string "breakthrough if POKéMON could be\l"
+ .string "resurrected from it.\p"
+ .string "But, my colleagues just ignore\n"
+ .string "what I have to say.\p"
+ .string "So, I have a favor to ask!\p"
+ .string "I want you to get this examined at\n"
+ .string "a POKéMON LAB somewhere.$"
+
+PewterCity_Museum_1F_Text_ReceivedOldAmberFromMan::
+ .string "{PLAYER} received the OLD AMBER\n"
+ .string "from the man.$"
+
+PewterCity_Museum_1F_Text_GetOldAmberChecked::
+ .string "Ssh!\n"
+ .string "Get the OLD AMBER checked!$"
+
+PewterCity_Museum_1F_Text_DontHaveSpaceForThis::
+ .string "You don't have space for this.$"
+
+PewterCity_Museum_1F_Text_WeHaveTwoFossilsOnExhibit::
+ .string "We have two fossils of rare,\n"
+ .string "prehistoric POKéMON on exhibit.$"
+
+PewterCity_Museum_1F_Text_BeautifulPieceOfAmber::
+ .string "There is a beautiful piece of\n"
+ .string "AMBER in a clear gold color.$"
+
+PewterCity_Museum_1F_Text_AerodactylFossil::
+ .string "AERODACTYL Fossil\n"
+ .string "A primitive and rare POKéMON.$"
+
+PewterCity_Museum_1F_Text_KabutopsFossil::
+ .string "KABUTOPS Fossil\n"
+ .string "A primitive and rare POKéMON.$"
+
diff --git a/data/maps/PewterCity_Museum_2F_Frlg/map.json b/data/maps/PewterCity_Museum_2F_Frlg/map.json
new file mode 100644
index 000000000000..7c24c2a8c806
--- /dev/null
+++ b/data/maps/PewterCity_Museum_2F_Frlg/map.json
@@ -0,0 +1,166 @@
+{
+ "id": "MAP_PEWTER_CITY_MUSEUM_2F",
+ "name": "PewterCity_Museum_2F_Frlg",
+ "layout": "LAYOUT_PEWTER_CITY_MUSEUM_2F",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_PEWTER_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 10,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_Museum_2F_EventScript_Scientist",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 4,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 3,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_Museum_2F_EventScript_Man",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_2",
+ "x": 0,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 3,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_Museum_2F_EventScript_OldMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 15,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_Museum_2F_EventScript_LittleGirl",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 16,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_Museum_2F_EventScript_BaldingMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_PEWTER_CITY_MUSEUM_1F",
+ "dest_warp_id": "5"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 6,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PewterCity_Museum_2F_EventScript_MoonStone"
+ },
+ {
+ "type": "sign",
+ "x": 15,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PewterCity_Museum_2F_EventScript_SpaceShuttle"
+ },
+ {
+ "type": "sign",
+ "x": 14,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PewterCity_Museum_2F_EventScript_SpaceShuttle"
+ },
+ {
+ "type": "sign",
+ "x": 16,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PewterCity_Museum_2F_EventScript_SpaceShuttle"
+ },
+ {
+ "type": "sign",
+ "x": 14,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PewterCity_Museum_2F_EventScript_SpaceShuttle"
+ },
+ {
+ "type": "sign",
+ "x": 15,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PewterCity_Museum_2F_EventScript_SpaceShuttle"
+ },
+ {
+ "type": "sign",
+ "x": 16,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PewterCity_Museum_2F_EventScript_SpaceShuttle"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PewterCity_Museum_2F_EventScript_MoonStone"
+ }
+ ]
+}
diff --git a/data/maps/PewterCity_Museum_2F_Frlg/scripts.inc b/data/maps/PewterCity_Museum_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..65ed5bdc4838
--- /dev/null
+++ b/data/maps/PewterCity_Museum_2F_Frlg/scripts.inc
@@ -0,0 +1,85 @@
+PewterCity_Museum_2F_Frlg_MapScripts::
+ .byte 0
+
+PewterCity_Museum_2F_EventScript_Man::
+ msgbox PewterCity_Museum_1F_Text_WhatsSpecialAboutMoonStone, MSGBOX_NPC
+ end
+
+PewterCity_Museum_2F_EventScript_OldMan::
+ msgbox PewterCity_Museum_1F_Text_BoughtColorTVForMoonLanding, MSGBOX_NPC
+ end
+
+PewterCity_Museum_2F_EventScript_Scientist::
+ msgbox PewterCity_Museum_1F_Text_RunningSpaceExhibitThisMonth, MSGBOX_NPC
+ end
+
+PewterCity_Museum_2F_EventScript_LittleGirl::
+ msgbox PewterCity_Museum_1F_Text_AskedDaddyToCatchPikachu, MSGBOX_NPC
+ end
+
+PewterCity_Museum_2F_EventScript_BaldingMan::
+ msgbox PewterCity_Museum_1F_Text_PikachuSoonIPromise, MSGBOX_NPC
+ end
+
+PewterCity_Museum_2F_EventScript_SpaceShuttle::
+ msgbox PewterCity_Museum_1F_Text_SpaceShuttle, MSGBOX_SIGN
+ end
+
+PewterCity_Museum_2F_EventScript_MoonStone::
+ msgbox PewterCity_Museum_1F_Text_MeteoriteThatFellOnMtMoon, MSGBOX_SIGN
+ end
+
+Text_SeismicTossTeach::
+ .string "The secrets of space…\n"
+ .string "The mysteries of earth…\p"
+ .string "There are so many things about\n"
+ .string "which we know so little.\p"
+ .string "But that should spur us to study\n"
+ .string "harder, not toss in the towel.\p"
+ .string "The only thing you should toss…\p"
+ .string "Well, how about SEISMIC TOSS?\n"
+ .string "Should I teach that to a POKéMON?$"
+
+Text_SeismicTossDeclined::
+ .string "Is that so?\n"
+ .string "I'm sure you'll be back for it.$"
+
+Text_SeismicTossWhichMon::
+ .string "Which POKéMON wants to learn\n"
+ .string "SEISMIC TOSS?$"
+
+Text_SeismicTossTaught::
+ .string "I hope you won't toss in the towel.\n"
+ .string "Keep it up.$"
+
+PewterCity_Museum_1F_Text_WhatsSpecialAboutMoonStone::
+ .string "MOON STONE, huh?\p"
+ .string "What's so special about it?\n"
+ .string "Looks like an ordinary rock to me.$"
+
+PewterCity_Museum_1F_Text_BoughtColorTVForMoonLanding::
+ .string "July 20, 1969!\p"
+ .string "Humankind first set foot on the\n"
+ .string "moon that day.\p"
+ .string "I bought a color TV just so I\n"
+ .string "could watch that news.$"
+
+PewterCity_Museum_1F_Text_RunningSpaceExhibitThisMonth::
+ .string "This month, we're running a space\n"
+ .string "exhibit.$"
+
+PewterCity_Museum_1F_Text_AskedDaddyToCatchPikachu::
+ .string "I want a PIKACHU!\n"
+ .string "It's so cute!\p"
+ .string "I asked my daddy to catch me one!$"
+
+PewterCity_Museum_1F_Text_PikachuSoonIPromise::
+ .string "Yeah, a PIKACHU soon, I promise!$"
+
+PewterCity_Museum_1F_Text_SpaceShuttle::
+ .string "Space Shuttle$"
+
+PewterCity_Museum_1F_Text_MeteoriteThatFellOnMtMoon::
+ .string "A meteorite that fell on MT. MOON.\n"
+ .string "It is thought to be a MOON STONE.$"
+
diff --git a/data/maps/PewterCity_PokemonCenter_1F_Frlg/map.json b/data/maps/PewterCity_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..bf5ca43fbef6
--- /dev/null
+++ b/data/maps/PewterCity_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,151 @@
+{
+ "id": "MAP_PEWTER_CITY_POKEMON_CENTER_1F",
+ "name": "PewterCity_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_PEWTER_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_JIGGLYPUFF",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_PokemonCenter_1F_EventScript_Jigglypuff",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 4,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_PokemonCenter_1F_EventScript_Gentleman",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_PEWTER_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_PokemonCenter_1F_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 13,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "MysteryEventClub_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GBA_KID",
+ "x": 10,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_PokemonCenter_1F_EventScript_GBAKid1",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GBA_KID",
+ "x": 14,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PewterCity_PokemonCenter_1F_EventScript_GBAKid2",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 0,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 8,
+ "y": 8,
+ "elevation": 0,
+ "dest_map": "MAP_PEWTER_CITY",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_PEWTER_CITY_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/PewterCity_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/PewterCity_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..d4a7e9ef7894
--- /dev/null
+++ b/data/maps/PewterCity_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,73 @@
+PewterCity_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, PewterCity_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ .byte 0
+
+PewterCity_PokemonCenter_1F_OnTransition::
+ setrespawn HEAL_LOCATION_PEWTER_CITY
+ end
+
+PewterCity_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+PewterCity_PokemonCenter_1F_EventScript_Gentleman::
+ msgbox PewterCity_PokemonCenter_1F_Text_TeamRocketMtMoonImOnPhone, MSGBOX_NPC
+ end
+
+PewterCity_PokemonCenter_1F_EventScript_Jigglypuff::
+ lock
+ faceplayer
+ fadeoutbgm 0
+ playbgm MUS_RG_JIGGLYPUFF, 0
+ message PewterCity_PokemonCenter_1F_Text_Jigglypuff
+ waitmessage
+ delay 455
+ playbgm MUS_POKE_CENTER, 1
+ release
+ end
+
+PewterCity_PokemonCenter_1F_EventScript_Youngster::
+ msgbox PewterCity_PokemonCenter_1F_Text_WhenJiggylypuffSingsMonsGetDrowsy, MSGBOX_NPC
+ end
+
+PewterCity_PokemonCenter_1F_EventScript_GBAKid1::
+ lock
+ msgbox PewterCity_PokemonCenter_1F_Text_TradingMyClefairyForPikachu
+ release
+ end
+
+PewterCity_PokemonCenter_1F_EventScript_GBAKid2::
+ msgbox PewterCity_PokemonCenter_1F_Text_TradingPikachuWithKid, MSGBOX_NPC
+ end
+
+PewterCity_PokemonCenter_1F_Text_TeamRocketMtMoonImOnPhone::
+ .string "What!?\p"
+ .string "TEAM ROCKET is at MT. MOON?\n"
+ .string "Huh?\p"
+ .string "I'm on the phone!\n"
+ .string "Scram!$"
+
+PewterCity_PokemonCenter_1F_Text_Jigglypuff::
+ .string "JIGGLYPUFF: Puu pupuu!$"
+
+PewterCity_PokemonCenter_1F_Text_WhenJiggylypuffSingsMonsGetDrowsy::
+ .string "Yawn!\p"
+ .string "When JIGGLYPUFF sings, POKéMON get\n"
+ .string "drowsy…\p"
+ .string "…Me, too…\n"
+ .string "Snore…$"
+
+PewterCity_PokemonCenter_1F_Text_TradingMyClefairyForPikachu::
+ .string "I really want a PIKACHU, so I'm\n"
+ .string "trading my CLEFAIRY for one.$"
+
+PewterCity_PokemonCenter_1F_Text_TradingPikachuWithKid::
+ .string "I'm trading POKéMON with that kid\n"
+ .string "there.\p"
+ .string "I had two PIKACHU, so I figured\n"
+ .string "I might as well trade one.$"
+
diff --git a/data/maps/PewterCity_PokemonCenter_2F_Frlg/map.json b/data/maps/PewterCity_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..61a3b9412717
--- /dev/null
+++ b/data/maps/PewterCity_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_PEWTER_CITY_POKEMON_CENTER_2F",
+ "name": "PewterCity_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_PEWTER_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_PEWTER_CITY_POKEMON_CENTER_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/PewterCity_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/PewterCity_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..5748ea29a629
--- /dev/null
+++ b/data/maps/PewterCity_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+PewterCity_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+PewterCity_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+PewterCity_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+PewterCity_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/PokemonLeague_AgathasRoom_Frlg/map.json b/data/maps/PokemonLeague_AgathasRoom_Frlg/map.json
new file mode 100644
index 000000000000..1f9e74f9f868
--- /dev/null
+++ b/data/maps/PokemonLeague_AgathasRoom_Frlg/map.json
@@ -0,0 +1,52 @@
+{
+ "id": "MAP_POKEMON_LEAGUE_AGATHAS_ROOM",
+ "name": "PokemonLeague_AgathasRoom_Frlg",
+ "layout": "LAYOUT_POKEMON_LEAGUE_AGATHAS_ROOM",
+ "music": "MUS_RG_POKE_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POKEMON_LEAGUE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_AGATHA",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_AGATHA",
+ "x": 6,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonLeague_AgathasRoom_EventScript_Agatha",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 12,
+ "elevation": 0,
+ "dest_map": "MAP_POKEMON_LEAGUE_BRUNOS_ROOM",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 6,
+ "y": 2,
+ "elevation": 0,
+ "dest_map": "MAP_POKEMON_LEAGUE_LANCES_ROOM",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/PokemonLeague_AgathasRoom_Frlg/scripts.inc b/data/maps/PokemonLeague_AgathasRoom_Frlg/scripts.inc
new file mode 100644
index 000000000000..f3fe48d1738c
--- /dev/null
+++ b/data/maps/PokemonLeague_AgathasRoom_Frlg/scripts.inc
@@ -0,0 +1,131 @@
+PokemonLeague_AgathasRoom_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, PokemonLeague_AgathasRoom_OnResume
+ map_script MAP_SCRIPT_ON_LOAD, PokemonLeague_AgathasRoom_OnLoad
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, PokemonLeague_AgathasRoom_OnWarp
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, PokemonLeague_AgathasRoom_OnFrame
+ .byte 0
+
+PokemonLeague_AgathasRoom_OnResume::
+ setvar VAR_0x8004, 2
+ call PokemonLeague_EventScript_DoLightingEffect
+ end
+
+PokemonLeague_AgathasRoom_OnLoad::
+ call_if_set FLAG_DEFEATED_AGATHA, PokemonLeague_AgathasRoom_EventScript_SetDoorOpen
+ call_if_eq VAR_MAP_SCENE_POKEMON_LEAGUE, 3, PokemonLeague_AgathasRoom_EventScript_CloseEntry
+ end
+
+PokemonLeague_AgathasRoom_EventScript_CloseEntry::
+ call PokemonLeague_EventScript_CloseEntry
+ return
+
+PokemonLeague_AgathasRoom_EventScript_SetDoorOpen::
+ call PokemonLeague_EventScript_SetDoorOpen
+ return
+
+PokemonLeague_AgathasRoom_OnWarp::
+ map_script_2 VAR_TEMP_1, 0, PokemonLeague_AgathasRoom_EventScript_TurnPlayerNorth
+ .2byte 0
+
+PokemonLeague_AgathasRoom_EventScript_TurnPlayerNorth::
+ turnobject LOCALID_PLAYER, DIR_NORTH
+ end
+
+PokemonLeague_AgathasRoom_OnFrame::
+ map_script_2 VAR_MAP_SCENE_POKEMON_LEAGUE, 2, PokemonLeague_AgathasRoom_EventScript_EnterRoom
+ .2byte 0
+
+PokemonLeague_AgathasRoom_EventScript_EnterRoom::
+ lockall
+ call PokemonLeague_EventScript_EnterRoom
+ setvar VAR_MAP_SCENE_POKEMON_LEAGUE, 3
+ releaseall
+ end
+
+PokemonLeague_AgathasRoom_EventScript_Agatha::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_AGATHA, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
+ goto_if_set FLAG_DEFEATED_AGATHA, PokemonLeague_AgathasRoom_EventScript_PostBattle
+ famechecker FAMECHECKER_AGATHA, 0
+ famechecker FAMECHECKER_AGATHA, 4
+ famechecker FAMECHECKER_OAK, 4
+ call_if_unset FLAG_SYS_GAME_CLEAR, PokemonLeague_AgathasRoom_EventScript_Intro
+ call_if_set FLAG_SYS_GAME_CLEAR, PokemonLeague_AgathasRoom_EventScript_RematchIntro
+ setflag FLAG_TEMP_3
+ setflag FLAG_TEMP_5
+ call_if_unset FLAG_IS_CHAMPION, PokemonLeague_AgathasRoom_EventScript_Battle
+ call_if_set FLAG_IS_CHAMPION, PokemonLeague_AgathasRoom_EventScript_Rematch
+ clearflag FLAG_TEMP_5
+ goto PokemonLeague_AgathasRoom_EventScript_DefeatedAgatha
+ end
+
+PokemonLeague_AgathasRoom_EventScript_Intro::
+ msgbox PokemonLeague_AgathasRoom_Text_Intro
+ return
+
+PokemonLeague_AgathasRoom_EventScript_RematchIntro::
+ msgbox PokemonLeague_AgathasRoom_Text_RematchIntro
+ return
+
+PokemonLeague_AgathasRoom_EventScript_Battle::
+ trainerbattle_no_intro TRAINER_ELITE_FOUR_AGATHA, PokemonLeague_AgathasRoom_Text_Defeat
+ return
+
+PokemonLeague_AgathasRoom_EventScript_Rematch::
+ trainerbattle_no_intro TRAINER_ELITE_FOUR_AGATHA_2, PokemonLeague_AgathasRoom_Text_Defeat
+ return
+
+PokemonLeague_AgathasRoom_EventScript_PostBattle::
+ msgbox PokemonLeague_AgathasRoom_Text_PostBattle
+ release
+ end
+
+PokemonLeague_AgathasRoom_EventScript_DefeatedAgatha::
+ setflag FLAG_DEFEATED_AGATHA
+ call PokemonLeague_EventScript_OpenDoor
+ msgbox PokemonLeague_AgathasRoom_Text_PostBattle
+ release
+ end
+
+PokemonLeague_AgathasRoom_Text_Intro::
+ .string "I am AGATHA of the ELITE FOUR.\p"
+ .string "I hear OAK's taken a lot of\n"
+ .string "interest in you, child.\p"
+ .string "That old duff was once tough and\n"
+ .string "handsome.\p"
+ .string "But that was decades ago.\n"
+ .string "He's a shadow of his former self.\p"
+ .string "Now he just wants to fiddle with\n"
+ .string "his POKéDEX.\p"
+ .string "He's wrong.\n"
+ .string "POKéMON are for battling!\p"
+ .string "{PLAYER}! I'll show you how a real\n"
+ .string "TRAINER battles!{PLAY_BGM}{MUS_RG_ENCOUNTER_GYM_LEADER}$"
+
+PokemonLeague_AgathasRoom_Text_RematchIntro::
+ .string "I am AGATHA of the ELITE FOUR.\p"
+ .string "You're the child that OAK's taken\n"
+ .string "under his wing, aren't you?\p"
+ .string "That old duff was once tough and\n"
+ .string "handsome.\p"
+ .string "But that was decades ago.\n"
+ .string "He's a shadow of his former self.\p"
+ .string "Now he just wants to fiddle with\n"
+ .string "his POKéDEX.\p"
+ .string "He's wrong.\n"
+ .string "POKéMON are for battling!\p"
+ .string "{PLAYER}! I'll show you how a real\n"
+ .string "TRAINER battles!{PLAY_BGM}{MUS_RG_ENCOUNTER_GYM_LEADER}$"
+
+PokemonLeague_AgathasRoom_Text_Defeat::
+ .string "Oh, my!\n"
+ .string "You're something special, child!$"
+
+PokemonLeague_AgathasRoom_Text_PostBattle::
+ .string "You win!\p"
+ .string "I see what the old duff sees in\n"
+ .string "you now.\p"
+ .string "I have nothing else to say.\n"
+ .string "Run along now, child!$"
+
diff --git a/data/maps/PokemonLeague_BrunosRoom_Frlg/map.json b/data/maps/PokemonLeague_BrunosRoom_Frlg/map.json
new file mode 100644
index 000000000000..cf35349ef177
--- /dev/null
+++ b/data/maps/PokemonLeague_BrunosRoom_Frlg/map.json
@@ -0,0 +1,53 @@
+{
+ "id": "MAP_POKEMON_LEAGUE_BRUNOS_ROOM",
+ "name": "PokemonLeague_BrunosRoom_Frlg",
+ "layout": "LAYOUT_POKEMON_LEAGUE_BRUNOS_ROOM",
+ "music": "MUS_RG_ROCKET_HIDEOUT",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POKEMON_LEAGUE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_BRUNO",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_BRUNO",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BRUNO",
+ "x": 6,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonLeague_BrunosRoom_EventScript_Bruno",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 12,
+ "elevation": 0,
+ "dest_map": "MAP_POKEMON_LEAGUE_LORELEIS_ROOM",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 6,
+ "y": 2,
+ "elevation": 0,
+ "dest_map": "MAP_POKEMON_LEAGUE_AGATHAS_ROOM",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/PokemonLeague_BrunosRoom_Frlg/scripts.inc b/data/maps/PokemonLeague_BrunosRoom_Frlg/scripts.inc
new file mode 100644
index 000000000000..c74eda1ea9d1
--- /dev/null
+++ b/data/maps/PokemonLeague_BrunosRoom_Frlg/scripts.inc
@@ -0,0 +1,148 @@
+PokemonLeague_BrunosRoom_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, PokemonLeague_BrunosRoom_OnResume
+ map_script MAP_SCRIPT_ON_LOAD, PokemonLeague_BrunosRoom_OnLoad
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, PokemonLeague_BrunosRoom_OnWarp
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, PokemonLeague_BrunosRoom_OnFrame
+ .byte 0
+
+PokemonLeague_BrunosRoom_OnResume::
+ setvar VAR_0x8004, 1
+ call PokemonLeague_EventScript_DoLightingEffect
+ end
+
+PokemonLeague_BrunosRoom_OnLoad::
+ call_if_set FLAG_DEFEATED_BRUNO, PokemonLeague_BrunosRoom_EventScript_SetDoorOpen
+ call_if_eq VAR_MAP_SCENE_POKEMON_LEAGUE, 2, PokemonLeague_BrunosRoom_EventScript_CloseEntry
+ end
+
+PokemonLeague_BrunosRoom_EventScript_CloseEntry::
+ call PokemonLeague_EventScript_CloseEntry
+ return
+
+PokemonLeague_BrunosRoom_EventScript_SetDoorOpen::
+ call PokemonLeague_EventScript_SetDoorOpen
+ return
+
+PokemonLeague_BrunosRoom_OnWarp::
+ map_script_2 VAR_TEMP_1, 0, PokemonLeague_BrunosRoom_EventScript_TurnPlayerNorth
+ .2byte 0
+
+PokemonLeague_BrunosRoom_EventScript_TurnPlayerNorth::
+ turnobject LOCALID_PLAYER, DIR_NORTH
+ end
+
+PokemonLeague_BrunosRoom_OnFrame::
+ map_script_2 VAR_MAP_SCENE_POKEMON_LEAGUE, 1, PokemonLeague_BrunosRoom_EventScript_EnterRoom
+ .2byte 0
+
+PokemonLeague_BrunosRoom_EventScript_EnterRoom::
+ lockall
+ call PokemonLeague_EventScript_EnterRoom
+ setvar VAR_MAP_SCENE_POKEMON_LEAGUE, 2
+ releaseall
+ end
+
+PokemonLeague_BrunosRoom_EventScript_Bruno::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_BRUNO, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
+ goto_if_set FLAG_DEFEATED_BRUNO, PokemonLeague_BrunosRoom_EventScript_PostBattle
+ famechecker FAMECHECKER_BRUNO, 0
+ famechecker FAMECHECKER_BRUNO, 1
+ call_if_unset FLAG_SYS_GAME_CLEAR, PokemonLeague_BrunosRoom_EventScript_Intro
+ call_if_set FLAG_SYS_GAME_CLEAR, PokemonLeague_BrunosRoom_EventScript_RematchIntro
+ setflag FLAG_TEMP_3
+ setflag FLAG_TEMP_5
+ call_if_unset FLAG_IS_CHAMPION, PokemonLeague_BrunosRoom_EventScript_Battle
+ call_if_set FLAG_IS_CHAMPION, PokemonLeague_BrunosRoom_EventScript_Rematch
+ clearflag FLAG_TEMP_5
+ goto PokemonLeague_BrunosRoom_EventScript_DefeatedBruno
+ end
+
+PokemonLeague_BrunosRoom_EventScript_Intro::
+ msgbox PokemonLeague_BrunosRoom_Text_Intro
+ return
+
+PokemonLeague_BrunosRoom_EventScript_RematchIntro::
+ msgbox PokemonLeague_BrunosRoom_Text_RematchIntro
+ return
+
+PokemonLeague_BrunosRoom_EventScript_Battle::
+ trainerbattle_no_intro TRAINER_ELITE_FOUR_BRUNO, PokemonLeague_BrunosRoom_Text_Defeat
+ return
+
+PokemonLeague_BrunosRoom_EventScript_Rematch::
+ trainerbattle_no_intro TRAINER_ELITE_FOUR_BRUNO_2, PokemonLeague_BrunosRoom_Text_Defeat
+ return
+
+PokemonLeague_BrunosRoom_EventScript_PostBattle::
+ msgbox PokemonLeague_BrunosRoom_Text_PostBattle
+ closemessage
+ call_if_eq VAR_FACING, DIR_NORTH, PokemonLeague_BrunosRoom_EventScript_BrunoLookAwayRight
+ call_if_eq VAR_FACING, DIR_SOUTH, PokemonLeague_BrunosRoom_EventScript_BrunoLookAwayLeft
+ call_if_eq VAR_FACING, DIR_WEST, PokemonLeague_BrunosRoom_EventScript_BrunoLookAwayDown
+ call_if_eq VAR_FACING, DIR_EAST, PokemonLeague_BrunosRoom_EventScript_BrunoLookAwayDown
+ release
+ end
+
+PokemonLeague_BrunosRoom_EventScript_DefeatedBruno::
+ setflag FLAG_DEFEATED_BRUNO
+ call PokemonLeague_EventScript_OpenDoor
+ msgbox PokemonLeague_BrunosRoom_Text_PostBattle
+ closemessage
+ call_if_eq VAR_FACING, DIR_NORTH, PokemonLeague_BrunosRoom_EventScript_BrunoLookAwayRight
+ call_if_eq VAR_FACING, DIR_SOUTH, PokemonLeague_BrunosRoom_EventScript_BrunoLookAwayLeft
+ call_if_eq VAR_FACING, DIR_WEST, PokemonLeague_BrunosRoom_EventScript_BrunoLookAwayDown
+ call_if_eq VAR_FACING, DIR_EAST, PokemonLeague_BrunosRoom_EventScript_BrunoLookAwayDown
+ release
+ end
+
+PokemonLeague_BrunosRoom_EventScript_BrunoLookAwayLeft::
+ applymovement LOCALID_BRUNO, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ return
+
+PokemonLeague_BrunosRoom_EventScript_BrunoLookAwayRight::
+ applymovement LOCALID_BRUNO, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ return
+
+PokemonLeague_BrunosRoom_EventScript_BrunoLookAwayDown::
+ applymovement LOCALID_BRUNO, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ return
+
+PokemonLeague_BrunosRoom_Text_Intro::
+ .string "I am BRUNO of the ELITE FOUR!\p"
+ .string "Through rigorous training, people\n"
+ .string "and POKéMON can become stronger\l"
+ .string "without limit.\p"
+ .string "I've lived and trained with my\n"
+ .string "fighting POKéMON!\l"
+ .string "And that will never change!\p"
+ .string "{PLAYER}!\p"
+ .string "We will grind you down with our\n"
+ .string "superior power!\p"
+ .string "Hoo hah!{PLAY_BGM}{MUS_RG_ENCOUNTER_GYM_LEADER}$"
+
+PokemonLeague_BrunosRoom_Text_RematchIntro::
+ .string "I am BRUNO of the ELITE FOUR!\p"
+ .string "Through rigorous training, people\n"
+ .string "and POKéMON can become stronger\l"
+ .string "without limit.\p"
+ .string "I've lived and trained with my\n"
+ .string "fighting POKéMON!\l"
+ .string "And that will never change!\p"
+ .string "{PLAYER}!\p"
+ .string "We will grind you down with our\n"
+ .string "superior power!\p"
+ .string "Hoo hah!{PLAY_BGM}{MUS_RG_ENCOUNTER_GYM_LEADER}$"
+
+PokemonLeague_BrunosRoom_Text_Defeat::
+ .string "Why?\n"
+ .string "How could I lose?$"
+
+PokemonLeague_BrunosRoom_Text_PostBattle::
+ .string "My job is done.\n"
+ .string "Go face your next challenge.$"
+
diff --git a/data/maps/PokemonLeague_ChampionsRoom_Frlg/map.json b/data/maps/PokemonLeague_ChampionsRoom_Frlg/map.json
new file mode 100644
index 000000000000..68bcd9e6cf46
--- /dev/null
+++ b/data/maps/PokemonLeague_ChampionsRoom_Frlg/map.json
@@ -0,0 +1,68 @@
+{
+ "id": "MAP_POKEMON_LEAGUE_CHAMPIONS_ROOM",
+ "name": "PokemonLeague_ChampionsRoom_Frlg",
+ "layout": "LAYOUT_POKEMON_LEAGUE_CHAMPIONS_ROOM",
+ "music": "MUS_VICTORY_ROAD",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POKEMON_LEAGUE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_KANTO_CHAMPIONS_ROOM_RIVAL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLUE",
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_CHAMPIONS_ROOM_PROF_OAK",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PROF_OAK",
+ "x": 6,
+ "y": 15,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_OAK_IN_CHAMP_ROOM"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 19,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_LEAGUE_LANCES_ROOM",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_LEAGUE_HALL_OF_FAME",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/PokemonLeague_ChampionsRoom_Frlg/scripts.inc b/data/maps/PokemonLeague_ChampionsRoom_Frlg/scripts.inc
new file mode 100644
index 000000000000..9b66bc9b8e0b
--- /dev/null
+++ b/data/maps/PokemonLeague_ChampionsRoom_Frlg/scripts.inc
@@ -0,0 +1,327 @@
+PokemonLeague_ChampionsRoom_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, PokemonLeague_ChampionsRoom_OnWarp
+ map_script MAP_SCRIPT_ON_RESUME, PokemonLeague_ChampionsRoom_OnResume
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, PokemonLeague_ChampionsRoom_OnFrame
+ .byte 0
+
+PokemonLeague_ChampionsRoom_OnResume::
+ setvar VAR_0x8004, 4
+ call PokemonLeague_EventScript_DoLightingEffect
+ call_if_eq VAR_STARTER_MON, 2, PokemonLeague_ChampionsRoom_EventScript_CheckStopTriggerSquirtle
+ call_if_eq VAR_STARTER_MON, 1, PokemonLeague_ChampionsRoom_EventScript_CheckStopTriggerBulbasaur
+ call_if_eq VAR_STARTER_MON, 0, PokemonLeague_ChampionsRoom_EventScript_CheckStopTriggerCharmander
+ end
+
+PokemonLeague_ChampionsRoom_EventScript_CheckStopTriggerSquirtle::
+ goto_if_defeated TRAINER_CHAMPION_FIRST_SQUIRTLE, PokemonLeague_ChampionsRoom_EventScript_StopSceneTrigger
+ goto_if_defeated TRAINER_CHAMPION_REMATCH_SQUIRTLE, PokemonLeague_ChampionsRoom_EventScript_StopSceneTrigger
+ return
+
+PokemonLeague_ChampionsRoom_EventScript_CheckStopTriggerBulbasaur::
+ goto_if_defeated TRAINER_CHAMPION_FIRST_BULBASAUR, PokemonLeague_ChampionsRoom_EventScript_StopSceneTrigger
+ goto_if_defeated TRAINER_CHAMPION_REMATCH_BULBASAUR, PokemonLeague_ChampionsRoom_EventScript_StopSceneTrigger
+ return
+
+PokemonLeague_ChampionsRoom_EventScript_CheckStopTriggerCharmander::
+ goto_if_defeated TRAINER_CHAMPION_FIRST_CHARMANDER, PokemonLeague_ChampionsRoom_EventScript_StopSceneTrigger
+ goto_if_defeated TRAINER_CHAMPION_REMATCH_CHARMANDER, PokemonLeague_ChampionsRoom_EventScript_StopSceneTrigger
+ return
+
+PokemonLeague_ChampionsRoom_EventScript_StopSceneTrigger::
+ setvar VAR_TEMP_1, 1
+ return
+
+PokemonLeague_ChampionsRoom_OnWarp::
+ map_script_2 VAR_TEMP_1, 0, PokemonLeague_ChampionsRoom_EventScript_TurnPlayerNorth
+ .2byte 0
+
+PokemonLeague_ChampionsRoom_EventScript_TurnPlayerNorth::
+ turnobject LOCALID_PLAYER, DIR_NORTH
+ end
+
+PokemonLeague_ChampionsRoom_OnFrame::
+ map_script_2 VAR_TEMP_1, 0, PokemonLeague_ChampionsRoom_EventScript_EnterRoom
+ .2byte 0
+
+PokemonLeague_ChampionsRoom_EventScript_EnterRoom::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ setflag FLAG_TEMP_2
+ applymovement LOCALID_PLAYER, PokemonLeague_ChampionsRoom_Movement_PlayerEnter
+ waitmovement 0
+ delay 20
+ call_if_unset FLAG_SYS_GAME_CLEAR, PokemonLeague_ChampionsRoom_EventScript_Intro
+ call_if_set FLAG_SYS_GAME_CLEAR, PokemonLeague_ChampionsRoom_EventScript_RematchIntro
+ setflag FLAG_TEMP_3
+ setflag FLAG_TEMP_5
+ savebgm MUS_VICTORY_GYM_LEADER
+ call_if_unset FLAG_IS_CHAMPION, PokemonLeague_ChampionsRoom_EventScript_Battle
+ call_if_set FLAG_IS_CHAMPION, PokemonLeague_ChampionsRoom_EventScript_Rematch
+ setflag FLAG_TEMP_4
+ clearflag FLAG_TEMP_5
+ setflag FLAG_DEFEATED_CHAMP
+ setflag FLAG_TEMP_4
+ msgbox PokemonLeague_ChampionsRoom_Text_PostBattle
+ playbgm MUS_RG_SLOW_PALLET, 0
+ addobject LOCALID_CHAMPIONS_ROOM_PROF_OAK
+ msgbox PokemonLeague_ChampionsRoom_Text_OakPlayer
+ closemessage
+ applymovement LOCALID_PLAYER, PokemonLeague_ChampionsRoom_Movement_PlayerWatchOakEnter
+ applymovement LOCALID_KANTO_CHAMPIONS_ROOM_RIVAL, PokemonLeague_ChampionsRoom_Movement_RivalWatchOakEnter
+ applymovement LOCALID_CHAMPIONS_ROOM_PROF_OAK, PokemonLeague_ChampionsRoom_Movement_OakEnter
+ waitmovement 0
+ delay 25
+ specialvar VAR_RESULT, GetStarterPokemon
+ bufferspeciesname STR_VAR_1, VAR_RESULT
+ msgbox PokemonLeague_ChampionsRoom_Text_OakCongratulations
+ applymovement LOCALID_CHAMPIONS_ROOM_PROF_OAK, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_KANTO_CHAMPIONS_ROOM_RIVAL, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ msgbox PokemonLeague_ChampionsRoom_Text_OakImDisappointedRival
+ closemessage
+ applymovement LOCALID_CHAMPIONS_ROOM_PROF_OAK, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ delay 20
+ msgbox PokemonLeague_ChampionsRoom_Text_OakPlayerComeWithMe
+ closemessage
+ delay 13
+ applymovement LOCALID_CHAMPIONS_ROOM_PROF_OAK, PokemonLeague_ChampionsRoom_Movement_OakExit
+ applymovement LOCALID_PLAYER, PokemonLeague_ChampionsRoom_Movement_PlayerExit
+ waitmovement 0
+ setvar VAR_TEMP_1, 1
+ warp MAP_POKEMON_LEAGUE_HALL_OF_FAME, 5, 12
+ waitstate
+ releaseall
+ end
+
+PokemonLeague_ChampionsRoom_EventScript_QuestLogEnd::
+ call PokemonLeague_ChampionsRoom_EventScript_StopSceneTrigger
+ releaseall
+ end
+
+PokemonLeague_ChampionsRoom_EventScript_Battle::
+ call_if_eq VAR_STARTER_MON, 2, PokemonLeague_ChampionsRoom_EventScript_BattleSquirtle
+ call_if_eq VAR_STARTER_MON, 1, PokemonLeague_ChampionsRoom_EventScript_BattleBulbasaur
+ call_if_eq VAR_STARTER_MON, 0, PokemonLeague_ChampionsRoom_EventScript_BattleCharmander
+ return
+
+PokemonLeague_ChampionsRoom_EventScript_Rematch::
+ call_if_eq VAR_STARTER_MON, 2, PokemonLeague_ChampionsRoom_EventScript_RematchSquirtle
+ call_if_eq VAR_STARTER_MON, 1, PokemonLeague_ChampionsRoom_EventScript_RematchBulbasaur
+ call_if_eq VAR_STARTER_MON, 0, PokemonLeague_ChampionsRoom_EventScript_RematchCharmander
+ return
+
+PokemonLeague_ChampionsRoom_EventScript_Intro::
+ msgbox PokemonLeague_ChampionsRoom_Text_Intro
+ return
+
+PokemonLeague_ChampionsRoom_EventScript_RematchIntro::
+ msgbox PokemonLeague_ChampionsRoom_Text_RematchIntro
+ return
+
+PokemonLeague_ChampionsRoom_EventScript_BattleSquirtle::
+ trainerbattle_no_intro TRAINER_CHAMPION_FIRST_SQUIRTLE, PokemonLeague_ChampionsRoom_Text_Defeat
+ return
+
+PokemonLeague_ChampionsRoom_EventScript_BattleBulbasaur::
+ trainerbattle_no_intro TRAINER_CHAMPION_FIRST_BULBASAUR, PokemonLeague_ChampionsRoom_Text_Defeat
+ return
+
+PokemonLeague_ChampionsRoom_EventScript_BattleCharmander::
+ trainerbattle_no_intro TRAINER_CHAMPION_FIRST_CHARMANDER, PokemonLeague_ChampionsRoom_Text_Defeat
+ return
+
+PokemonLeague_ChampionsRoom_EventScript_RematchSquirtle::
+ trainerbattle_no_intro TRAINER_CHAMPION_REMATCH_SQUIRTLE, PokemonLeague_ChampionsRoom_Text_Defeat
+ return
+
+PokemonLeague_ChampionsRoom_EventScript_RematchBulbasaur::
+ trainerbattle_no_intro TRAINER_CHAMPION_REMATCH_BULBASAUR, PokemonLeague_ChampionsRoom_Text_Defeat
+ return
+
+PokemonLeague_ChampionsRoom_EventScript_RematchCharmander::
+ trainerbattle_no_intro TRAINER_CHAMPION_REMATCH_CHARMANDER, PokemonLeague_ChampionsRoom_Text_Defeat
+ return
+
+PokemonLeague_ChampionsRoom_Movement_PlayerEnter::
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+PokemonLeague_ChampionsRoom_Movement_PlayerExit::
+ delay_16
+ walk_left
+ walk_up
+ walk_up
+ walk_up
+ walk_right
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ delay_8
+ set_invisible
+ step_end
+
+PokemonLeague_ChampionsRoom_Movement_PlayerWatchOakEnter::
+ delay_8
+ walk_in_place_faster_down
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ walk_in_place_faster_left
+ step_end
+
+PokemonLeague_ChampionsRoom_Movement_OakEnter::
+ delay_16
+ delay_16
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_left
+ walk_up
+ walk_up
+ walk_in_place_faster_down
+ delay_16
+ step_end
+
+PokemonLeague_ChampionsRoom_Movement_OakExit::
+ walk_up
+ walk_up
+ walk_right
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ delay_8
+ set_invisible
+ step_end
+
+PokemonLeague_ChampionsRoom_Movement_RivalWatchOakEnter::
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ walk_in_place_faster_left
+ step_end
+
+PokemonLeague_ChampionsRoom_Text_Intro::
+ .string "{RIVAL}: Hey, {PLAYER}!\p"
+ .string "I was looking forward to seeing\n"
+ .string "you, {PLAYER}.\p"
+ .string "My rival should be strong to keep\n"
+ .string "me sharp.\p"
+ .string "While working on my POKéDEX, I\n"
+ .string "looked all over for POKéMON.\p"
+ .string "Not only that, I assembled teams\n"
+ .string "that would beat any POKéMON type.\p"
+ .string "And now…\p"
+ .string "I'm the POKéMON LEAGUE CHAMPION!\p"
+ .string "{PLAYER}!\n"
+ .string "Do you know what that means?\p"
+ .string "I'll tell you.\p"
+ .string "I am the most powerful TRAINER in\n"
+ .string "the world!$"
+
+PokemonLeague_ChampionsRoom_Text_RematchIntro::
+ .string "{RIVAL}: Hey, {PLAYER}!\p"
+ .string "You came back, {PLAYER}!\n"
+ .string "Hahah, that is so great!\p"
+ .string "My rival should be strong to keep\n"
+ .string "me sharp.\p"
+ .string "While working on my POKéDEX, I\n"
+ .string "looked all over for POKéMON.\p"
+ .string "Not only that, I assembled teams\n"
+ .string "that would beat any POKéMON type.\p"
+ .string "And now…\p"
+ .string "I'm the POKéMON LEAGUE CHAMPION!\p"
+ .string "{PLAYER}!\n"
+ .string "Do you know what that means?\p"
+ .string "I'll tell you.\p"
+ .string "I am the most powerful TRAINER in\n"
+ .string "the world!$"
+
+PokemonLeague_ChampionsRoom_Text_Defeat::
+ .string "NO!\n"
+ .string "That can't be!\l"
+ .string "You beat me at my best!\p"
+ .string "After all that work to become\n"
+ .string "the LEAGUE CHAMP?\p"
+ .string "My reign is over already?\n"
+ .string "It's not fair!$"
+
+PokemonLeague_ChampionsRoom_Text_Victory::
+ .string "はーはッ!\n"
+ .string "かった! かった! かった!\p"
+ .string "{PLAYER}に まける ような\n"
+ .string "おれさま では なーい!\p"
+ .string "ま! ポケモンの\n"
+ .string "てんさい {RIVAL}さま あいてに\l"
+ .string "ここまで よく がんばった!\p"
+ .string "ほめて つかわす!\n"
+ .string "はーッ! はーはッはッ!$"
+
+PokemonLeague_ChampionsRoom_Text_PostBattle::
+ .string "Why?\n"
+ .string "Why did I lose?\p"
+ .string "I never made any mistakes raising\n"
+ .string "my POKéMON…\p"
+ .string "Darn it! You're the new POKéMON\n"
+ .string "LEAGUE CHAMPION!\p"
+ .string "Although I don't like to admit it…$"
+
+PokemonLeague_ChampionsRoom_Text_OakPlayer::
+ .string "OAK: {PLAYER}!$"
+
+PokemonLeague_ChampionsRoom_Text_OakCongratulations::
+ .string "OAK: So, you've won!\n"
+ .string "Sincerely, congratulations!\p"
+ .string "You're the new POKéMON LEAGUE\n"
+ .string "CHAMPION!\p"
+ .string "You've grown up so much since you\n"
+ .string "first left with {STR_VAR_1} to work\l"
+ .string "on the POKéDEX.\p"
+ .string "{PLAYER}, you have come of age!$"
+
+PokemonLeague_ChampionsRoom_Text_OakImDisappointedRival::
+ .string "OAK: {RIVAL}…\n"
+ .string "I'm disappointed in you.\p"
+ .string "I came when I heard you'd beaten\n"
+ .string "the ELITE FOUR.\p"
+ .string "But, when I got here, you had\n"
+ .string "already lost!\p"
+ .string "{RIVAL}, do you understand why\n"
+ .string "you lost?\p"
+ .string "You have forgotten to treat your\n"
+ .string "POKéMON with love and trust.\p"
+ .string "Without them, you will never\n"
+ .string "become a CHAMP again!$"
+
+PokemonLeague_ChampionsRoom_Text_OakPlayerComeWithMe::
+ .string "OAK: {PLAYER}.\p"
+ .string "You understand that your victory\n"
+ .string "was not just your own doing.\p"
+ .string "The bond you share with your\n"
+ .string "POKéMON is marvelous.\p"
+ .string "{PLAYER}!\n"
+ .string "Come with me!$"
+
diff --git a/data/maps/PokemonLeague_HallOfFame_Frlg/map.json b/data/maps/PokemonLeague_HallOfFame_Frlg/map.json
new file mode 100644
index 000000000000..202ad1b8fe85
--- /dev/null
+++ b/data/maps/PokemonLeague_HallOfFame_Frlg/map.json
@@ -0,0 +1,46 @@
+{
+ "id": "MAP_POKEMON_LEAGUE_HALL_OF_FAME",
+ "name": "PokemonLeague_HallOfFame_Frlg",
+ "layout": "LAYOUT_POKEMON_LEAGUE_HALL_OF_FAME",
+ "music": "MUS_RG_SLOW_PALLET",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POKEMON_LEAGUE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_HALL_OF_FAME_PROF_OAK",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PROF_OAK",
+ "x": 6,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_LEAGUE_CHAMPIONS_ROOM",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/PokemonLeague_HallOfFame_Frlg/scripts.inc b/data/maps/PokemonLeague_HallOfFame_Frlg/scripts.inc
new file mode 100644
index 000000000000..71734550fbf8
--- /dev/null
+++ b/data/maps/PokemonLeague_HallOfFame_Frlg/scripts.inc
@@ -0,0 +1,70 @@
+PokemonLeague_HallOfFame_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, PokemonLeague_HallOfFame_OnFrame
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, PokemonLeague_HallOfFame_OnWarp
+ .byte 0
+
+PokemonLeague_HallOfFame_OnWarp::
+ map_script_2 VAR_TEMP_1, 0, PokemonLeague_HallOfFame_EventScript_TurnPlayerNorth
+ .2byte 0
+
+PokemonLeague_HallOfFame_EventScript_TurnPlayerNorth::
+ turnobject LOCALID_PLAYER, DIR_NORTH
+ end
+
+PokemonLeague_HallOfFame_OnFrame::
+ map_script_2 VAR_TEMP_1, 0, PokemonLeague_HallOfFame_EventScript_EnterRoom
+ .2byte 0
+
+PokemonLeague_HallOfFame_EventScript_EnterRoom::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_PLAYER, PokemonLeague_HallOfFame_Movement_EnterRoom
+ waitmovement 0
+ applymovement LOCALID_HALL_OF_FAME_PROF_OAK, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ delay 18
+ msgbox PokemonLeague_HallOfFame_Text_OakCongratulations
+ closemessage
+ applymovement LOCALID_HALL_OF_FAME_PROF_OAK, Common_Movement_WalkInPlaceFasterUp
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ delay 20
+ dofieldeffect FLDEFF_HALL_OF_FAME_RECORD_FRLG
+ waitfieldeffect FLDEFF_HALL_OF_FAME_RECORD_FRLG
+ delay 40
+ setvar VAR_TEMP_1, 1
+ call EventScript_SetDefeatedEliteFourFlagsVars
+ setrespawn HEAL_LOCATION_PALLET_TOWN
+ fadescreenspeed FADE_TO_BLACK, 24
+ special EnterHallOfFame
+ waitstate
+ releaseall
+ end
+
+PokemonLeague_HallOfFame_Movement_EnterRoom::
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+PokemonLeague_HallOfFame_Text_OakCongratulations::
+ .string "OAK: Er-hem!\n"
+ .string "Congratulations, {PLAYER}!\p"
+ .string "This floor is the POKéMON HALL OF\n"
+ .string "FAME.\p"
+ .string "POKéMON LEAGUE CHAMPIONS are\n"
+ .string "honored for their exploits here.\p"
+ .string "Their POKéMON are also recorded in\n"
+ .string "the HALL OF FAME.\p"
+ .string "{PLAYER}!\p"
+ .string "You have worked hard to become\n"
+ .string "the new LEAGUE CHAMPION.\p"
+ .string "Congratulations, {PLAYER}, you and\n"
+ .string "your POKéMON are HALL OF FAMERS!$"
+
diff --git a/data/maps/PokemonLeague_LancesRoom_Frlg/map.json b/data/maps/PokemonLeague_LancesRoom_Frlg/map.json
new file mode 100644
index 000000000000..f57bb46707be
--- /dev/null
+++ b/data/maps/PokemonLeague_LancesRoom_Frlg/map.json
@@ -0,0 +1,53 @@
+{
+ "id": "MAP_POKEMON_LEAGUE_LANCES_ROOM",
+ "name": "PokemonLeague_LancesRoom_Frlg",
+ "layout": "LAYOUT_POKEMON_LEAGUE_LANCES_ROOM",
+ "music": "MUS_VICTORY_ROAD",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POKEMON_LEAGUE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_LANCE",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_LANCE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LANCE",
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonLeague_LancesRoom_EventScript_Lance",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 23,
+ "y": 13,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_LEAGUE_AGATHAS_ROOM",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 6,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_POKEMON_LEAGUE_CHAMPIONS_ROOM",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/PokemonLeague_LancesRoom_Frlg/scripts.inc b/data/maps/PokemonLeague_LancesRoom_Frlg/scripts.inc
new file mode 100644
index 000000000000..d83e3c6ddc0c
--- /dev/null
+++ b/data/maps/PokemonLeague_LancesRoom_Frlg/scripts.inc
@@ -0,0 +1,218 @@
+PokemonLeague_LancesRoom_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, PokemonLeague_LancesRoom_OnResume
+ map_script MAP_SCRIPT_ON_LOAD, PokemonLeague_LancesRoom_OnLoad
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, PokemonLeague_LancesRoom_OnWarp
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, PokemonLeague_LancesRoom_OnFrame
+ .byte 0
+
+PokemonLeague_LancesRoom_OnResume::
+ setvar VAR_0x8004, 3
+ call PokemonLeague_EventScript_DoLightingEffect
+ end
+
+PokemonLeague_LancesRoom_OnLoad::
+ call_if_eq VAR_MAP_SCENE_POKEMON_LEAGUE, 4, PokemonLeague_LancesRoom_EventScript_CloseEntry
+ call_if_set FLAG_DEFEATED_LANCE, PokemonLeague_LancesRoom_EventScript_SetDoorOpen
+ end
+
+PokemonLeague_LancesRoom_EventScript_CloseEntry::
+ call PokemonLeague_LancesRoom_EventScript_SetEntryClosed
+ return
+
+PokemonLeague_LancesRoom_EventScript_SetDoorOpen::
+ call PokemonLeague_EventScript_SetDoorOpenLance
+ return
+
+PokemonLeague_LancesRoom_OnWarp::
+ map_script_2 VAR_TEMP_1, 0, PokemonLeague_LancesRoom_EventScript_TurnPlayerNorth
+ .2byte 0
+
+PokemonLeague_LancesRoom_EventScript_TurnPlayerNorth::
+ turnobject LOCALID_PLAYER, DIR_NORTH
+ end
+
+PokemonLeague_LancesRoom_OnFrame::
+ map_script_2 VAR_MAP_SCENE_POKEMON_LEAGUE, 3, PokemonLeague_LancesRoom_EventScript_EnterRoom
+ .2byte 0
+
+PokemonLeague_LancesRoom_EventScript_EnterRoom::
+ lockall
+ applymovement LOCALID_PLAYER, PokemonLeague_LancesRoom_Movement_WalkThroughCorridor
+ waitmovement 0
+ setflag FLAG_TEMP_2
+ call PokemonLeague_LancesRoom_EventScript_SetEntryClosed
+ playse SE_UNLOCK
+ special DrawWholeMapView
+ waitse
+ setvar VAR_MAP_SCENE_POKEMON_LEAGUE, 4
+ releaseall
+ end
+
+PokemonLeague_LancesRoom_EventScript_SetEntryClosed::
+ setmetatile 5, 14, METATILE_PokemonLeague_Entry_TopLeft_Closed, 1
+ setmetatile 6, 14, METATILE_PokemonLeague_Entry_TopMid_Closed, 1
+ setmetatile 7, 14, METATILE_PokemonLeague_Entry_TopRight_Closed, 1
+ setmetatile 5, 15, METATILE_PokemonLeague_Entry_BottomLeft_Closed, 1
+ setmetatile 6, 15, METATILE_PokemonLeague_Entry_BottomMid_Closed, 1
+ setmetatile 7, 15, METATILE_PokemonLeague_Entry_BottomRight_Closed, 1
+ setmetatile 6, 16, METATILE_PokemonLeague_Floor_ShadeFull_Lance, 0
+ setmetatile 7, 16, METATILE_PokemonLeague_Floor_ShadeFull_Lance, 0
+ return
+
+PokemonLeague_LancesRoom_Movement_WalkThroughCorridor::
+ walk_up
+ walk_up
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+PokemonLeague_LancesRoom_EventScript_Lance::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_LANCE, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
+ goto_if_set FLAG_DEFEATED_LANCE, PokemonLeague_LancesRoom_EventScript_PostBattle
+ famechecker FAMECHECKER_LANCE, 0
+ famechecker FAMECHECKER_LANCE, 1
+ call_if_unset FLAG_SYS_GAME_CLEAR, PokemonLeague_LancesRoom_EventScript_Intro
+ call_if_set FLAG_SYS_GAME_CLEAR, PokemonLeague_LancesRoom_EventScript_RematchIntro
+ setflag FLAG_TEMP_3
+ setflag FLAG_TEMP_5
+ call_if_unset FLAG_IS_CHAMPION, PokemonLeague_LancesRoom_EventScript_Battle
+ call_if_set FLAG_IS_CHAMPION, PokemonLeague_LancesRoom_EventScript_Rematch
+ clearflag FLAG_TEMP_5
+ goto PokemonLeague_LancesRoom_EventScript_DefeatedLance
+ end
+
+PokemonLeague_LancesRoom_EventScript_Intro::
+ msgbox PokemonLeague_LancesRoom_Text_Intro
+ return
+
+PokemonLeague_LancesRoom_EventScript_RematchIntro::
+ msgbox PokemonLeague_LancesRoom_Text_RematchIntro
+ return
+
+PokemonLeague_LancesRoom_EventScript_Battle::
+ trainerbattle_no_intro TRAINER_ELITE_FOUR_LANCE, PokemonLeague_LancesRoom_Text_Defeat
+ return
+
+PokemonLeague_LancesRoom_EventScript_Rematch::
+ trainerbattle_no_intro TRAINER_ELITE_FOUR_LANCE_2, PokemonLeague_LancesRoom_Text_Defeat
+ return
+
+PokemonLeague_LancesRoom_EventScript_PostBattle::
+ msgbox PokemonLeague_LancesRoom_Text_PostBattle
+ release
+ end
+
+PokemonLeague_LancesRoom_EventScript_DefeatedLance::
+ setvar VAR_0x8004, 0
+ special Script_TryGainNewFanFromCounterFrlg
+ setflag FLAG_DEFEATED_LANCE
+ call PokemonLeague_EventScript_OpenDoorLance
+ msgbox PokemonLeague_LancesRoom_Text_PostBattle
+ closemessage
+ release
+ end
+
+PokemonLeague_LancesRoom_EventScript_LanceMoveOutOfWayLeft::
+ applymovement LOCALID_LANCE, PokemonLeague_LancesRoom_Movement_LanceMoveOutOfWayLeft
+ waitmovement 0
+ return
+
+PokemonLeague_LancesRoom_EventScript_LanceMoveOutOfWayRight::
+ applymovement LOCALID_LANCE, PokemonLeague_LancesRoom_Movement_LanceMoveOutOfWayRight
+ waitmovement 0
+ return
+
+PokemonLeague_LancesRoom_Movement_LanceMoveOutOfWayLeft::
+ walk_left
+ walk_in_place_faster_right
+ step_end
+
+PokemonLeague_LancesRoom_Movement_LanceMoveOutOfWayRight::
+ walk_right
+ walk_in_place_faster_left
+ step_end
+
+PokemonLeague_LancesRoom_Text_Intro::
+ .string "Ah! I've heard about you,\n"
+ .string "{PLAYER}!\p"
+ .string "I lead the ELITE FOUR.\p"
+ .string "You can call me LANCE the dragon\n"
+ .string "TRAINER.\p"
+ .string "You know that dragons are\n"
+ .string "mythical POKéMON.\p"
+ .string "They're hard to catch and raise,\n"
+ .string "but their powers are superior.\p"
+ .string "They're virtually indestructible.\n"
+ .string "There's no being clever with them.\p"
+ .string "Well, are you ready to lose?\p"
+ .string "Your LEAGUE challenge ends with\n"
+ .string "me, {PLAYER}!{PLAY_BGM}{MUS_RG_ENCOUNTER_GYM_LEADER}$"
+
+PokemonLeague_LancesRoom_Text_RematchIntro::
+ .string "Ah!\n"
+ .string "So, you've returned, {PLAYER}!\p"
+ .string "I lead the ELITE FOUR.\p"
+ .string "You can call me LANCE the dragon\n"
+ .string "TRAINER.\p"
+ .string "You know that dragons are\n"
+ .string "mythical POKéMON.\p"
+ .string "They're hard to catch and raise,\n"
+ .string "but their powers are superior.\p"
+ .string "They're virtually indestructible.\n"
+ .string "There's no being clever with them.\p"
+ .string "Well, are you ready to lose?\p"
+ .string "Your LEAGUE challenge ends with\n"
+ .string "me, {PLAYER}!{PLAY_BGM}{MUS_RG_ENCOUNTER_GYM_LEADER}$"
+
+PokemonLeague_LancesRoom_Text_Defeat::
+ .string "That's it!\p"
+ .string "I hate to admit it, but you are a\n"
+ .string "POKéMON master!$"
+
+PokemonLeague_LancesRoom_Text_PostBattle::
+ .string "I still can't believe my dragons\n"
+ .string "lost to you, {PLAYER}.\p"
+ .string "You are now the POKéMON LEAGUE\n"
+ .string "CHAMPION!\p"
+ .string "…Or, you would have been, but\n"
+ .string "you have one more challenge left.\p"
+ .string "There is one more TRAINER to face!\n"
+ .string "His name is…\p"
+ .string "{RIVAL}!\p"
+ .string "He beat the ELITE FOUR before\n"
+ .string "you.\p"
+ .string "He is the real POKéMON LEAGUE\n"
+ .string "CHAMPION.$"
+
diff --git a/data/maps/PokemonLeague_LoreleisRoom_Frlg/map.json b/data/maps/PokemonLeague_LoreleisRoom_Frlg/map.json
new file mode 100644
index 000000000000..98da4e804d8e
--- /dev/null
+++ b/data/maps/PokemonLeague_LoreleisRoom_Frlg/map.json
@@ -0,0 +1,56 @@
+{
+ "id": "MAP_POKEMON_LEAGUE_LORELEIS_ROOM",
+ "name": "PokemonLeague_LoreleisRoom_Frlg",
+ "layout": "LAYOUT_POKEMON_LEAGUE_LORELEIS_ROOM",
+ "music": "MUS_GYM",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POKEMON_LEAGUE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_LORELEI",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LORELEI",
+ "x": 6,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonLeague_LoreleisRoom_EventScript_Lorelei",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 12,
+ "elevation": 0,
+ "dest_map": "MAP_INDIGO_PLATEAU_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 6,
+ "y": 2,
+ "elevation": 0,
+ "dest_map": "MAP_POKEMON_LEAGUE_BRUNOS_ROOM",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/PokemonLeague_LoreleisRoom_Frlg/scripts.inc b/data/maps/PokemonLeague_LoreleisRoom_Frlg/scripts.inc
new file mode 100644
index 000000000000..979343bedd94
--- /dev/null
+++ b/data/maps/PokemonLeague_LoreleisRoom_Frlg/scripts.inc
@@ -0,0 +1,127 @@
+PokemonLeague_LoreleisRoom_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, PokemonLeague_LoreleisRoom_OnResume
+ map_script MAP_SCRIPT_ON_LOAD, PokemonLeague_LoreleisRoom_OnLoad
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonLeague_LoreleisRoom_OnTransition
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, PokemonLeague_LoreleisRoom_OnWarp
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, PokemonLeague_LoreleisRoom_OnFrame
+ .byte 0
+
+PokemonLeague_LoreleisRoom_OnResume::
+ setvar VAR_0x8004, 0
+ call PokemonLeague_EventScript_DoLightingEffect
+ end
+
+PokemonLeague_LoreleisRoom_OnLoad::
+ call_if_set FLAG_DEFEATED_LORELEI, PokemonLeague_LoreleisRoom_EventScript_SetDoorOpen
+ call_if_eq VAR_MAP_SCENE_POKEMON_LEAGUE, 1, PokemonLeague_LoreleisRoom_EventScript_CloseEntry
+ end
+
+PokemonLeague_LoreleisRoom_EventScript_CloseEntry::
+ call PokemonLeague_EventScript_CloseEntry
+ return
+
+PokemonLeague_LoreleisRoom_EventScript_SetDoorOpen::
+ call PokemonLeague_EventScript_SetDoorOpen
+ return
+
+PokemonLeague_LoreleisRoom_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_POKEMON_LEAGUE_LORELEIS_ROOM
+ end
+
+PokemonLeague_LoreleisRoom_OnWarp::
+ map_script_2 VAR_TEMP_1, 0, PokemonLeague_LoreleisRoom_EventScript_TurnPlayerNorth
+ .2byte 0
+
+PokemonLeague_LoreleisRoom_EventScript_TurnPlayerNorth::
+ turnobject LOCALID_PLAYER, DIR_NORTH
+ end
+
+PokemonLeague_LoreleisRoom_OnFrame::
+ map_script_2 VAR_MAP_SCENE_POKEMON_LEAGUE, 0, PokemonLeague_LoreleisRoom_EventScript_EnterRoom
+ .2byte 0
+
+PokemonLeague_LoreleisRoom_EventScript_EnterRoom::
+ lockall
+ call PokemonLeague_EventScript_EnterRoom
+ setvar VAR_MAP_SCENE_POKEMON_LEAGUE, 1
+ releaseall
+ end
+
+PokemonLeague_LoreleisRoom_EventScript_Lorelei::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_LORELEI, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
+ goto_if_set FLAG_DEFEATED_LORELEI, PokemonLeague_LoreleisRoom_EventScript_PostBattle
+ famechecker FAMECHECKER_LORELEI, 0
+ famechecker FAMECHECKER_LORELEI, 1
+ call_if_unset FLAG_IS_CHAMPION, PokemonLeague_LoreleisRoom_EventScript_Intro
+ call_if_set FLAG_IS_CHAMPION, PokemonLeague_LoreleisRoom_EventScript_RematchIntro
+ setflag FLAG_TEMP_3
+ setflag FLAG_TEMP_5
+ call_if_unset FLAG_IS_CHAMPION, PokemonLeague_LoreleisRoom_EventScript_Battle
+ call_if_set FLAG_IS_CHAMPION, PokemonLeague_LoreleisRoom_EventScript_Rematch
+ clearflag FLAG_TEMP_5
+ goto PokemonLeague_LoreleisRoom_EventScript_DefeatedLorelei
+ end
+
+PokemonLeague_LoreleisRoom_EventScript_Intro::
+ msgbox PokemonLeague_LoreleisRoom_Text_Intro
+ return
+
+PokemonLeague_LoreleisRoom_EventScript_RematchIntro::
+ msgbox PokemonLeague_LoreleisRoom_Text_RematchIntro
+ return
+
+PokemonLeague_LoreleisRoom_EventScript_Battle::
+ trainerbattle_no_intro TRAINER_ELITE_FOUR_LORELEI, PokemonLeague_LoreleisRoom_Text_Defeat
+ return
+
+PokemonLeague_LoreleisRoom_EventScript_Rematch::
+ trainerbattle_no_intro TRAINER_ELITE_FOUR_LORELEI_2, PokemonLeague_LoreleisRoom_Text_Defeat
+ return
+
+PokemonLeague_LoreleisRoom_EventScript_PostBattle::
+ msgbox PokemonLeague_LoreleisRoom_Text_PostBattle
+ release
+ end
+
+PokemonLeague_LoreleisRoom_EventScript_DefeatedLorelei::
+ setflag FLAG_DEFEATED_LORELEI
+ call PokemonLeague_EventScript_OpenDoor
+ msgbox PokemonLeague_LoreleisRoom_Text_PostBattle
+ release
+ end
+
+PokemonLeague_LoreleisRoom_Text_Intro::
+ .string "Welcome to the POKéMON LEAGUE.\p"
+ .string "I am LORELEI of the ELITE FOUR.\p"
+ .string "No one can best me when it comes\n"
+ .string "to icy POKéMON.\p"
+ .string "Freezing moves are powerful.\p"
+ .string "Your POKéMON will be at my mercy\n"
+ .string "when they are frozen solid.\p"
+ .string "Hahaha!\n"
+ .string "Are you ready?{PLAY_BGM}{MUS_RG_ENCOUNTER_GYM_LEADER}$"
+
+PokemonLeague_LoreleisRoom_Text_RematchIntro::
+ .string "Welcome to the POKéMON LEAGUE.\p"
+ .string "I, LORELEI of the ELITE FOUR,\n"
+ .string "have returned!\p"
+ .string "You know how it goes.\n"
+ .string "No one can best me when it comes\l"
+ .string "to icy POKéMON.\p"
+ .string "Freezing moves are powerful.\p"
+ .string "Your POKéMON will be at my mercy\n"
+ .string "when they are frozen solid.\p"
+ .string "Hahaha!\n"
+ .string "Are you ready?{PLAY_BGM}{MUS_RG_ENCOUNTER_GYM_LEADER}$"
+
+PokemonLeague_LoreleisRoom_Text_Defeat::
+ .string "…Things shouldn't be this way!$"
+
+PokemonLeague_LoreleisRoom_Text_PostBattle::
+ .string "You're better than I thought.\n"
+ .string "Go on ahead.\p"
+ .string "You only got a taste of the\n"
+ .string "POKéMON LEAGUE's power.$"
+
diff --git a/data/maps/PokemonMansion_1F_Frlg/map.json b/data/maps/PokemonMansion_1F_Frlg/map.json
new file mode 100644
index 000000000000..f1370efadcb6
--- /dev/null
+++ b/data/maps/PokemonMansion_1F_Frlg/map.json
@@ -0,0 +1,185 @@
+{
+ "id": "MAP_POKEMON_MANSION_1F",
+ "name": "PokemonMansion_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_MANSION_1F",
+ "music": "MUS_RG_POKE_MANSION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POKEMON_MANSION",
+ "requires_flash": false,
+ "weather": "WEATHER_SHADE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_2",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 22,
+ "y": 24,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "PokemonMansion_1F_EventScript_Ted",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 29,
+ "y": 32,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonMansion_1F_EventScript_ItemCarbos",
+ "flag": "FLAG_HIDE_POKEMON_MANSION_1F_CARBOS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 22,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonMansion_1F_EventScript_ItemEscapeRope",
+ "flag": "FLAG_HIDE_POKEMON_MANSION_1F_ESCAPE_ROPE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 27,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonMansion_1F_EventScript_ItemProtein",
+ "flag": "FLAG_HIDE_POKEMON_MANSION_1F_PROTEIN"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 8,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "PokemonMansion_1F_EventScript_Johnson",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 33,
+ "elevation": 3,
+ "dest_map": "MAP_CINNABAR_ISLAND",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 8,
+ "y": 33,
+ "elevation": 3,
+ "dest_map": "MAP_CINNABAR_ISLAND",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 33,
+ "elevation": 3,
+ "dest_map": "MAP_CINNABAR_ISLAND",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 10,
+ "y": 13,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_2F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 25,
+ "y": 27,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_B1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 34,
+ "y": 33,
+ "elevation": 3,
+ "dest_map": "MAP_CINNABAR_ISLAND",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 35,
+ "y": 34,
+ "elevation": 0,
+ "dest_map": "MAP_CINNABAR_ISLAND",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 19,
+ "y": 22,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_3F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 20,
+ "y": 22,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_3F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 11,
+ "y": 13,
+ "elevation": 0,
+ "dest_map": "MAP_POKEMON_MANSION_2F",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "PokemonMansion_1F_EventScript_Statue"
+ },
+ {
+ "type": "hidden_item",
+ "x": 2,
+ "y": 21,
+ "elevation": 0,
+ "item": "ITEM_MOON_STONE",
+ "flag": "FLAG_HIDDEN_ITEM_POKEMON_MANSION_1F_MOON_STONE",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/PokemonMansion_1F_Frlg/scripts.inc b/data/maps/PokemonMansion_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..09c722d20dcc
--- /dev/null
+++ b/data/maps/PokemonMansion_1F_Frlg/scripts.inc
@@ -0,0 +1,57 @@
+PokemonMansion_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, PokemonMansion_1F_OnLoad
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonMansion_1F_OnTransition
+ .byte 0
+
+PokemonMansion_1F_OnLoad::
+ call_if_set FLAG_POKEMON_MANSION_SWITCH_STATE, PokemonMansion_EventScript_PressSwitch_1F
+ end
+
+PokemonMansion_1F_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_POKEMON_MANSION_1F
+ end
+
+PokemonMansion_1F_EventScript_Statue::
+ lockall
+ setvar VAR_0x8004, 0
+ call PokemonMansion_EventScript_SecretSwitch
+ playse SE_UNLOCK
+ special DrawWholeMapView
+ waitse
+ releaseall
+ end
+
+PokemonMansion_1F_EventScript_Ted::
+ trainerbattle_single TRAINER_SCIENTIST_TED, PokemonMansion_1F_Text_TedIntro, PokemonMansion_1F_Text_TedDefeat
+ msgbox PokemonMansion_1F_Text_TedPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonMansion_1F_EventScript_Johnson::
+ trainerbattle_single TRAINER_YOUNGSTER_JOHNSON, PokemonMansion_1F_Text_JohnsonIntro, PokemonMansion_1F_Text_JohnsonDefeat
+ msgbox PokemonMansion_1F_Text_JohnsonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonMansion_1F_Text_TedIntro::
+ .string "Who are you?\n"
+ .string "There shouldn't be anyone here.$"
+
+PokemonMansion_1F_Text_TedDefeat::
+ .string "Ouch!$"
+
+PokemonMansion_1F_Text_TedPostBattle::
+ .string "A key? I don't know what you're\n"
+ .string "talking about.$"
+
+PokemonMansion_1F_Text_JohnsonIntro::
+ .string "W-w-waah! You startled me!\n"
+ .string "I thought you were a ghost.$"
+
+PokemonMansion_1F_Text_JohnsonDefeat::
+ .string "Tch!\n"
+ .string "I can't get any wins.$"
+
+PokemonMansion_1F_Text_JohnsonPostBattle::
+ .string "I was exploring here by myself,\n"
+ .string "but I feel spooked.\p"
+ .string "I ought to go soon.$"
+
diff --git a/data/maps/PokemonMansion_2F_Frlg/map.json b/data/maps/PokemonMansion_2F_Frlg/map.json
new file mode 100644
index 000000000000..d28a3ca6fcc7
--- /dev/null
+++ b/data/maps/PokemonMansion_2F_Frlg/map.json
@@ -0,0 +1,142 @@
+{
+ "id": "MAP_POKEMON_MANSION_2F",
+ "name": "PokemonMansion_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_MANSION_2F",
+ "music": "MUS_RG_POKE_MANSION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POKEMON_MANSION",
+ "requires_flash": false,
+ "weather": "WEATHER_SHADE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_2",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SUPER_NERD",
+ "x": 5,
+ "y": 23,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "PokemonMansion_2F_EventScript_Arnie",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 36,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonMansion_2F_EventScript_ItemCalcium",
+ "flag": "FLAG_HIDE_POKEMON_MANSION_2F_CALCIUM"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 18,
+ "y": 23,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonMansion_2F_EventScript_ItemZinc",
+ "flag": "FLAG_HIDE_POKEMON_MANSION_2F_ZINC"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 35,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonMansion_2F_EventScript_ItemHPUp",
+ "flag": "FLAG_HIDE_POKEMON_MANSION_2F_HP_UP"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 9,
+ "y": 3,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_3F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 34,
+ "y": 22,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_3F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 6,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 9,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_3F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 27,
+ "y": 17,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_3F",
+ "dest_warp_id": "5"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 16,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "PokemonMansion_2F_EventScript_Statue"
+ },
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 31,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PokemonMansion_2F_EventScript_DiaryJuly10th"
+ },
+ {
+ "type": "sign",
+ "x": 25,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PokemonMansion_2F_EventScript_DiaryJuly5th"
+ }
+ ]
+}
diff --git a/data/maps/PokemonMansion_2F_Frlg/scripts.inc b/data/maps/PokemonMansion_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..168649c8092e
--- /dev/null
+++ b/data/maps/PokemonMansion_2F_Frlg/scripts.inc
@@ -0,0 +1,64 @@
+PokemonMansion_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, PokemonMansion_2F_OnLoad
+ .byte 0
+
+PokemonMansion_2F_OnLoad::
+ call_if_set FLAG_POKEMON_MANSION_SWITCH_STATE, PokemonMansion_EventScript_PressSwitch_2F
+ end
+
+PokemonMansion_2F_EventScript_Statue::
+ lockall
+ setvar VAR_0x8004, 1
+ call PokemonMansion_EventScript_SecretSwitch
+ playse SE_UNLOCK
+ special DrawWholeMapView
+ waitse
+ releaseall
+ end
+
+PokemonMansion_2F_EventScript_DiaryJuly5th::
+ msgbox PokemonMansion_1F_Text_NewMonDiscoveredInGuyanaJungle, MSGBOX_SIGN
+ end
+
+PokemonMansion_2F_EventScript_DiaryJuly10th::
+ msgbox PokemonMansion_1F_Text_ChristenedDiscoveredMonMew, MSGBOX_SIGN
+ end
+
+PokemonMansion_2F_EventScript_Arnie::
+ trainerbattle_single TRAINER_BURGLAR_ARNIE, PokemonMansion_1F_Text_ArnieIntro, PokemonMansion_1F_Text_ArnieDefeat
+ msgbox PokemonMansion_1F_Text_ArniePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonMansion_Text_PressSecretSwitch::
+ .string "A secret switch!\p"
+ .string "Press it?$"
+
+PokemonMansion_Text_WhoWouldnt::
+ .string "Who wouldn't?$"
+
+PokemonMansion_Text_NotQuiteYet::
+ .string "Not quite yet!$"
+
+PokemonMansion_1F_Text_ArnieIntro::
+ .string "I can't get out!\n"
+ .string "This old place is one big puzzle.$"
+
+PokemonMansion_1F_Text_ArnieDefeat::
+ .string "Oh, no!\n"
+ .string "My bag of loot!$"
+
+PokemonMansion_1F_Text_ArniePostBattle::
+ .string "The switches here open and close\n"
+ .string "alternating sets of doors.$"
+
+PokemonMansion_1F_Text_NewMonDiscoveredInGuyanaJungle::
+ .string "Diary: July 5\n"
+ .string "Guyana, South America\p"
+ .string "A new POKéMON was discovered deep\n"
+ .string "in the jungle.$"
+
+PokemonMansion_1F_Text_ChristenedDiscoveredMonMew::
+ .string "Diary: July 10\n"
+ .string "We christened the newly discovered\l"
+ .string "POKéMON, MEW.$"
+
diff --git a/data/maps/PokemonMansion_3F_Frlg/map.json b/data/maps/PokemonMansion_3F_Frlg/map.json
new file mode 100644
index 000000000000..e57464a9d9b1
--- /dev/null
+++ b/data/maps/PokemonMansion_3F_Frlg/map.json
@@ -0,0 +1,163 @@
+{
+ "id": "MAP_POKEMON_MANSION_3F",
+ "name": "PokemonMansion_3F_Frlg",
+ "layout": "LAYOUT_POKEMON_MANSION_3F",
+ "music": "MUS_RG_POKE_MANSION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POKEMON_MANSION",
+ "requires_flash": false,
+ "weather": "WEATHER_SHADE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_2",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SUPER_NERD",
+ "x": 7,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "PokemonMansion_3F_EventScript_Simon",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 22,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "PokemonMansion_3F_EventScript_Braydon",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 9,
+ "y": 19,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonMansion_3F_EventScript_ItemMaxPotion",
+ "flag": "FLAG_HIDE_POKEMON_MANSION_3F_MAX_POTION"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 32,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonMansion_3F_EventScript_ItemIron",
+ "flag": "FLAG_HIDE_POKEMON_MANSION_3F_IRON"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 3,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_2F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 34,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_2F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 11,
+ "y": 11,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_2F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 18,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_1F",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 19,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_1F",
+ "dest_warp_id": "8"
+ },
+ {
+ "x": 23,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_2F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 20,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_1F",
+ "dest_warp_id": "8"
+ },
+ {
+ "x": 24,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_2F",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 16,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PokemonMansion_3F_EventScript_DiaryFeb6th"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "PokemonMansion_3F_EventScript_Statue"
+ },
+ {
+ "type": "hidden_item",
+ "x": 36,
+ "y": 13,
+ "elevation": 3,
+ "item": "ITEM_RARE_CANDY",
+ "flag": "FLAG_HIDDEN_ITEM_POKEMON_MANSION_3F_RARE_CANDY",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/PokemonMansion_3F_Frlg/scripts.inc b/data/maps/PokemonMansion_3F_Frlg/scripts.inc
new file mode 100644
index 000000000000..8954af009641
--- /dev/null
+++ b/data/maps/PokemonMansion_3F_Frlg/scripts.inc
@@ -0,0 +1,57 @@
+PokemonMansion_3F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, PokemonMansion_3F_OnLoad
+ .byte 0
+
+PokemonMansion_3F_OnLoad::
+ call_if_set FLAG_POKEMON_MANSION_SWITCH_STATE, PokemonMansion_EventScript_PressSwitch_3F
+ end
+
+PokemonMansion_3F_EventScript_Statue::
+ lockall
+ setvar VAR_0x8004, 2
+ call PokemonMansion_EventScript_SecretSwitch
+ playse SE_UNLOCK
+ special DrawWholeMapView
+ waitse
+ releaseall
+ end
+
+PokemonMansion_3F_EventScript_DiaryFeb6th::
+ msgbox PokemonMansion_1F_Text_MewGaveBirthToMewtwo, MSGBOX_SIGN
+ end
+
+PokemonMansion_3F_EventScript_Simon::
+ trainerbattle_single TRAINER_BURGLAR_SIMON, PokemonMansion_1F_Text_SimonIntro, PokemonMansion_1F_Text_SimonDefeat
+ msgbox PokemonMansion_1F_Text_SimonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonMansion_3F_EventScript_Braydon::
+ trainerbattle_single TRAINER_SCIENTIST_BRAYDON, PokemonMansion_1F_Text_BraydonIntro, PokemonMansion_1F_Text_BraydonDefeat
+ msgbox PokemonMansion_1F_Text_BraydonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonMansion_1F_Text_SimonIntro::
+ .string "This place is, like, huge!$"
+
+PokemonMansion_1F_Text_SimonDefeat::
+ .string "Ayah!$"
+
+PokemonMansion_1F_Text_SimonPostBattle::
+ .string "I wonder where my partner went.$"
+
+PokemonMansion_1F_Text_BraydonIntro::
+ .string "My mentor once lived here.$"
+
+PokemonMansion_1F_Text_BraydonDefeat::
+ .string "Whew!\n"
+ .string "Overwhelming!$"
+
+PokemonMansion_1F_Text_BraydonPostBattle::
+ .string "So, you're stuck?\n"
+ .string "Try jumping off over there!$"
+
+PokemonMansion_1F_Text_MewGaveBirthToMewtwo::
+ .string "Diary: Feb. 6\n"
+ .string "MEW gave birth.\p"
+ .string "We named the newborn MEWTWO.$"
+
diff --git a/data/maps/PokemonMansion_B1F_Frlg/map.json b/data/maps/PokemonMansion_B1F_Frlg/map.json
new file mode 100644
index 000000000000..f24914429896
--- /dev/null
+++ b/data/maps/PokemonMansion_B1F_Frlg/map.json
@@ -0,0 +1,150 @@
+{
+ "id": "MAP_POKEMON_MANSION_B1F",
+ "name": "PokemonMansion_B1F_Frlg",
+ "layout": "LAYOUT_POKEMON_MANSION_B1F",
+ "music": "MUS_RG_POKE_MANSION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POKEMON_MANSION",
+ "requires_flash": false,
+ "weather": "WEATHER_SHADE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_2",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 6,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonMansion_B1F_EventScript_ItemTM22",
+ "flag": "FLAG_HIDE_POKEMON_MANSION_B1F_TM22"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SUPER_NERD",
+ "x": 20,
+ "y": 25,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "PokemonMansion_B1F_EventScript_Lewis",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 34,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "6",
+ "script": "PokemonMansion_B1F_EventScript_Ivan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 23,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonMansion_B1F_EventScript_ItemTM14",
+ "flag": "FLAG_HIDE_POKEMON_MANSION_B1F_TM14"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 2,
+ "y": 29,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonMansion_B1F_EventScript_ItemFullRestore",
+ "flag": "FLAG_HIDE_POKEMON_MANSION_B1F_FULL_RESTORE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonMansion_B1F_EventScript_ItemSecretKey",
+ "flag": "FLAG_HIDE_POKEMON_MANSION_B1F_SECRET_KEY"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 34,
+ "y": 29,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_MANSION_1F",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 21,
+ "y": 27,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "PokemonMansion_B1F_EventScript_DiarySep1st"
+ },
+ {
+ "type": "sign",
+ "x": 24,
+ "y": 29,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "PokemonMansion_B1F_EventScript_Statue"
+ },
+ {
+ "type": "sign",
+ "x": 27,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "PokemonMansion_B1F_EventScript_Statue"
+ },
+ {
+ "type": "hidden_item",
+ "x": 35,
+ "y": 5,
+ "elevation": 3,
+ "item": "ITEM_ELIXIR",
+ "flag": "FLAG_HIDDEN_ITEM_POKEMON_MANSION_B1F_ELIXIR",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/PokemonMansion_B1F_Frlg/scripts.inc b/data/maps/PokemonMansion_B1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..d33d3be37756
--- /dev/null
+++ b/data/maps/PokemonMansion_B1F_Frlg/scripts.inc
@@ -0,0 +1,60 @@
+PokemonMansion_B1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, PokemonMansion_B1F_OnLoad
+ .byte 0
+
+PokemonMansion_B1F_OnLoad::
+ call_if_set FLAG_POKEMON_MANSION_SWITCH_STATE, PokemonMansion_EventScript_PressSwitch_B1F
+ end
+
+PokemonMansion_B1F_EventScript_Statue::
+ lockall
+ setvar VAR_0x8004, 3
+ call PokemonMansion_EventScript_SecretSwitch
+ playse SE_UNLOCK
+ special DrawWholeMapView
+ waitse
+ releaseall
+ end
+
+PokemonMansion_B1F_EventScript_DiarySep1st::
+ msgbox PokemonMansion_B1F_Text_MewtwoIsFarTooPowerful, MSGBOX_SIGN
+ end
+
+PokemonMansion_B1F_EventScript_Lewis::
+ trainerbattle_single TRAINER_BURGLAR_LEWIS, PokemonMansion_B1F_Text_LewisIntro, PokemonMansion_B1F_Text_LewisDefeat
+ msgbox PokemonMansion_B1F_Text_LewisPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonMansion_B1F_EventScript_Ivan::
+ trainerbattle_single TRAINER_SCIENTIST_IVAN, PokemonMansion_B1F_Text_IvanIntro, PokemonMansion_B1F_Text_IvanDefeat
+ msgbox PokemonMansion_B1F_Text_IvanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonMansion_B1F_Text_LewisIntro::
+ .string "Uh-oh…\n"
+ .string "Where am I now?$"
+
+PokemonMansion_B1F_Text_LewisDefeat::
+ .string "Awooh!$"
+
+PokemonMansion_B1F_Text_LewisPostBattle::
+ .string "You can find stuff lying around.\n"
+ .string "The residents must've left them.$"
+
+PokemonMansion_B1F_Text_IvanIntro::
+ .string "This place is ideal for a lab.\n"
+ .string "Look at all this space.$"
+
+PokemonMansion_B1F_Text_IvanDefeat::
+ .string "What was that for?$"
+
+PokemonMansion_B1F_Text_IvanPostBattle::
+ .string "I like it here.\n"
+ .string "It's conducive to my studies.$"
+
+PokemonMansion_B1F_Text_MewtwoIsFarTooPowerful::
+ .string "Diary: Sept. 1\n"
+ .string "MEWTWO is far too powerful.\p"
+ .string "We have failed to curb its vicious\n"
+ .string "tendencies…$"
+
diff --git a/data/maps/PokemonTower_1F_Frlg/map.json b/data/maps/PokemonTower_1F_Frlg/map.json
new file mode 100644
index 000000000000..f56f29320ae7
--- /dev/null
+++ b/data/maps/PokemonTower_1F_Frlg/map.json
@@ -0,0 +1,122 @@
+{
+ "id": "MAP_POKEMON_TOWER_1F",
+ "name": "PokemonTower_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_TOWER_1F",
+ "music": "MUS_RG_POKE_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POKEMON_TOWER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": false,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_1",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_F",
+ "x": 18,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonTower_1F_EventScript_WorkerF",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 18,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonTower_1F_EventScript_Channeler",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 15,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonTower_1F_EventScript_Woman1",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_3_FRLG",
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonTower_1F_EventScript_Woman2",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 8,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonTower_1F_EventScript_BaldingMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 10,
+ "y": 19,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 11,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 12,
+ "y": 19,
+ "elevation": 3,
+ "dest_map": "MAP_LAVENDER_TOWN",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 18,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_TOWER_2F",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/PokemonTower_1F_Frlg/scripts.inc b/data/maps/PokemonTower_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..4dc173f21db4
--- /dev/null
+++ b/data/maps/PokemonTower_1F_Frlg/scripts.inc
@@ -0,0 +1,67 @@
+PokemonTower_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, PokemonTower_1F_OnTransition
+ .byte 0
+
+PokemonTower_1F_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_POKEMON_TOWER_1F
+ end
+
+PokemonTower_1F_EventScript_Channeler::
+ msgbox PokemonTower_1F_Text_SenseSpiritsUpToMischief, MSGBOX_NPC
+ end
+
+PokemonTower_1F_EventScript_Woman1::
+ msgbox PokemonTower_1F_Text_GrowlitheWhyDidYouDie, MSGBOX_NPC
+ end
+
+PokemonTower_1F_EventScript_BaldingMan::
+ msgbox PokemonTower_1F_Text_CameToPrayForDepartedClefairy, MSGBOX_NPC
+ end
+
+PokemonTower_1F_EventScript_Woman2::
+ lock
+ faceplayer
+ checkplayergender
+ goto_if_eq VAR_RESULT, MALE, PokemonTower_1F_EventScript_Woman2MalePlayer
+ msgbox PokemonTower_1F_Text_ComeToPayRespectsGirl
+ release
+ end
+
+PokemonTower_1F_EventScript_Woman2MalePlayer::
+ msgbox PokemonTower_1F_Text_ComeToPayRespectsSon
+ release
+ end
+
+PokemonTower_1F_EventScript_WorkerF::
+ msgbox PokemonTower_1F_Text_ErectedInMemoryOfDeadMons, MSGBOX_NPC
+ end
+
+PokemonTower_1F_Text_ErectedInMemoryOfDeadMons::
+ .string "POKéMON TOWER was erected in the\n"
+ .string "memory of POKéMON that died.$"
+
+PokemonTower_1F_Text_ComeToPayRespectsSon::
+ .string "Did you come to pay respects?\p"
+ .string "Bless your POKéMON-loving heart,\n"
+ .string "son.$"
+
+PokemonTower_1F_Text_ComeToPayRespectsGirl::
+ .string "Did you come to pay respects?\p"
+ .string "Bless your POKéMON-loving heart,\n"
+ .string "girl.$"
+
+PokemonTower_1F_Text_CameToPrayForDepartedClefairy::
+ .string "I came to pray for my dearly\n"
+ .string "departed CLEFAIRY.\p"
+ .string "Sniff!\n"
+ .string "I'm awash in tears…$"
+
+PokemonTower_1F_Text_GrowlitheWhyDidYouDie::
+ .string "My GROWLITHE…\n"
+ .string "Why did you die?$"
+
+PokemonTower_1F_Text_SenseSpiritsUpToMischief::
+ .string "I am a CHANNELER.\p"
+ .string "There are spirits up to mischief.\n"
+ .string "I sense them high in the TOWER.$"
+
diff --git a/data/maps/PokemonTower_2F_Frlg/map.json b/data/maps/PokemonTower_2F_Frlg/map.json
new file mode 100644
index 000000000000..1fff164c7f8c
--- /dev/null
+++ b/data/maps/PokemonTower_2F_Frlg/map.json
@@ -0,0 +1,86 @@
+{
+ "id": "MAP_POKEMON_TOWER_2F",
+ "name": "PokemonTower_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_TOWER_2F",
+ "music": "MUS_RG_POKE_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POKEMON_TOWER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": false,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_1",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_POKEMON_TOWER_RIVAL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLUE",
+ "x": 16,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_TOWER_RIVAL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 3,
+ "y": 7,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonTower_2F_EventScript_Channeler",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_TOWER_3F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 18,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_TOWER_1F",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 17,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_POKEMON_TOWER_2F",
+ "var_value": "0",
+ "script": "PokemonTower_2F_EventScript_RivalTriggerRight"
+ },
+ {
+ "type": "trigger",
+ "x": 16,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_POKEMON_TOWER_2F",
+ "var_value": "0",
+ "script": "PokemonTower_2F_EventScript_RivalTriggerDown"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/PokemonTower_2F_Frlg/scripts.inc b/data/maps/PokemonTower_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..5c0d880b555d
--- /dev/null
+++ b/data/maps/PokemonTower_2F_Frlg/scripts.inc
@@ -0,0 +1,132 @@
+PokemonTower_2F_Frlg_MapScripts::
+ .byte 0
+
+PokemonTower_2F_EventScript_Channeler::
+ msgbox PokemonTower_2F_Text_SilphScopeCouldUnmaskGhosts, MSGBOX_NPC
+ end
+
+PokemonTower_2F_EventScript_RivalTriggerRight::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto PokemonTower_2F_EventScript_Rival
+ end
+
+PokemonTower_2F_EventScript_RivalTriggerDown::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto PokemonTower_2F_EventScript_Rival
+ end
+
+PokemonTower_2F_EventScript_Rival::
+ textcolor NPC_TEXT_COLOR_MALE
+ playbgm MUS_RG_ENCOUNTER_RIVAL, 0
+ call_if_eq VAR_TEMP_1, 0, PokemonTower_2F_EventScript_RivalFacePlayerRight
+ call_if_eq VAR_TEMP_1, 1, PokemonTower_2F_EventScript_RivalFacePlayerDown
+ applymovement LOCALID_POKEMON_TOWER_RIVAL, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_POKEMON_TOWER_RIVAL, Common_Movement_Delay48
+ waitmovement 0
+ msgbox PokemonTower_2F_Text_RivalIntro
+ setvar VAR_LAST_TALKED, LOCALID_POKEMON_TOWER_RIVAL
+ call_if_eq VAR_STARTER_MON, 2, PokemonTower_2F_EventScript_RivalSquirtle
+ call_if_eq VAR_STARTER_MON, 1, PokemonTower_2F_EventScript_RivalBulbasaur
+ call_if_eq VAR_STARTER_MON, 0, PokemonTower_2F_EventScript_RivalCharmander
+ msgbox PokemonTower_2F_Text_RivalPostBattle
+ closemessage
+ playbgm MUS_RG_RIVAL_EXIT, 0
+ call_if_eq VAR_TEMP_1, 0, PokemonTower_2F_EventScript_RivalExitRight
+ call_if_eq VAR_TEMP_1, 1, PokemonTower_2F_EventScript_RivalExitDown
+ playse SE_EXIT
+ delay 25
+ fadedefaultbgm
+ removeobject LOCALID_POKEMON_TOWER_RIVAL
+ setvar VAR_MAP_SCENE_POKEMON_TOWER_2F, 1
+ releaseall
+ end
+
+PokemonTower_2F_EventScript_RivalFacePlayerRight::
+ applymovement LOCALID_POKEMON_TOWER_RIVAL, Common_Movement_WalkInPlaceFasterRight
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ return
+
+PokemonTower_2F_EventScript_RivalFacePlayerDown::
+ applymovement LOCALID_POKEMON_TOWER_RIVAL, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ return
+
+PokemonTower_2F_EventScript_RivalSquirtle::
+ trainerbattle_no_intro TRAINER_RIVAL_POKEMON_TOWER_SQUIRTLE, PokemonTower_2F_Text_RivalDefeat
+ return
+
+PokemonTower_2F_EventScript_RivalBulbasaur::
+ trainerbattle_no_intro TRAINER_RIVAL_POKEMON_TOWER_BULBASAUR, PokemonTower_2F_Text_RivalDefeat
+ return
+
+PokemonTower_2F_EventScript_RivalCharmander::
+ trainerbattle_no_intro TRAINER_RIVAL_POKEMON_TOWER_CHARMANDER, PokemonTower_2F_Text_RivalDefeat
+ return
+
+PokemonTower_2F_EventScript_RivalExitRight::
+ applymovement LOCALID_POKEMON_TOWER_RIVAL, PokemonTower_2F_Movement_RivalExitRight
+ waitmovement 0
+ return
+
+PokemonTower_2F_EventScript_RivalExitDown::
+ applymovement LOCALID_POKEMON_TOWER_RIVAL, PokemonTower_2F_Movement_RivalExitDown
+ waitmovement 0
+ return
+
+PokemonTower_2F_Movement_RivalExitRight::
+ walk_down
+ walk_right
+ walk_right
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_in_place_faster_right
+ step_end
+
+PokemonTower_2F_Movement_RivalExitDown::
+ walk_right
+ walk_right
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_in_place_faster_right
+ step_end
+
+PokemonTower_2F_Text_RivalIntro::
+ .string "{RIVAL}: Hey, {PLAYER}!\n"
+ .string "What brings you here?\l"
+ .string "Is your POKéMON dead?\p"
+ .string "Hey! It's alive!\p"
+ .string "I can at least make them faint!\n"
+ .string "Let's go!$"
+
+PokemonTower_2F_Text_RivalDefeat::
+ .string "What?\n"
+ .string "You stinker!\p"
+ .string "I took it easy on you, too!$"
+
+PokemonTower_2F_Text_RivalPostBattle::
+ .string "How's your POKéDEX coming?\n"
+ .string "I just caught a CUBONE!\p"
+ .string "I can't find the bigger MAROWAK.\n"
+ .string "Where could they be?\p"
+ .string "I bet there aren't any left!\p"
+ .string "Well, I better get going.\n"
+ .string "I've got a lot to accomplish,\l"
+ .string "unlike you.\p"
+ .string "Smell ya later!$"
+
+PokemonTower_2F_Text_SilphScopeCouldUnmaskGhosts::
+ .string "Even we could not identify the\n"
+ .string "wayward ghosts.\p"
+ .string "A SILPH SCOPE might be able to\n"
+ .string "unmask them.$"
+
diff --git a/data/maps/PokemonTower_3F_Frlg/map.json b/data/maps/PokemonTower_3F_Frlg/map.json
new file mode 100644
index 000000000000..2bbcbecb759c
--- /dev/null
+++ b/data/maps/PokemonTower_3F_Frlg/map.json
@@ -0,0 +1,94 @@
+{
+ "id": "MAP_POKEMON_TOWER_3F",
+ "name": "PokemonTower_3F_Frlg",
+ "layout": "LAYOUT_POKEMON_TOWER_3F",
+ "music": "MUS_RG_POKE_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POKEMON_TOWER",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": false,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_1",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 10,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "PokemonTower_3F_EventScript_Patricia",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 9,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "PokemonTower_3F_EventScript_Carly",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 12,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "PokemonTower_3F_EventScript_Hope",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 13,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonTower_3F_EventScript_ItemEscapeRope",
+ "flag": "FLAG_HIDE_POKEMON_TOWER_3F_ESCAPE_ROPE"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_TOWER_2F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 18,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_TOWER_4F",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/PokemonTower_3F_Frlg/scripts.inc b/data/maps/PokemonTower_3F_Frlg/scripts.inc
new file mode 100644
index 000000000000..9cf60615c995
--- /dev/null
+++ b/data/maps/PokemonTower_3F_Frlg/scripts.inc
@@ -0,0 +1,54 @@
+PokemonTower_3F_Frlg_MapScripts::
+ .byte 0
+
+PokemonTower_3F_EventScript_Patricia::
+ trainerbattle_single TRAINER_CHANNELER_PATRICIA, PokemonTower_3F_Text_PatriciaIntro, PokemonTower_3F_Text_PatriciaDefeat
+ msgbox PokemonTower_3F_Text_PatriciaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonTower_3F_EventScript_Carly::
+ trainerbattle_single TRAINER_CHANNELER_CARLY, PokemonTower_3F_Text_CarlyIntro, PokemonTower_3F_Text_CarlyDefeat
+ msgbox PokemonTower_3F_Text_CarlyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonTower_3F_EventScript_Hope::
+ trainerbattle_single TRAINER_CHANNELER_HOPE, PokemonTower_3F_Text_HopeIntro, PokemonTower_3F_Text_HopeDefeat
+ msgbox PokemonTower_3F_Text_HopePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonTower_3F_Text_HopeIntro::
+ .string "Urrg… Awaa…\n"
+ .string "Huhu… Graa…$"
+
+PokemonTower_3F_Text_HopeDefeat::
+ .string "Hwa!\n"
+ .string "I'm saved!$"
+
+PokemonTower_3F_Text_HopePostBattle::
+ .string "The ghosts can be identified by\n"
+ .string "the SILPH SCOPE.$"
+
+PokemonTower_3F_Text_CarlyIntro::
+ .string "Kekeke…\n"
+ .string "Kwaaah!$"
+
+PokemonTower_3F_Text_CarlyDefeat::
+ .string "Hmm?\n"
+ .string "What am I doing?$"
+
+PokemonTower_3F_Text_CarlyPostBattle::
+ .string "Sorry!\n"
+ .string "I was possessed!$"
+
+PokemonTower_3F_Text_PatriciaIntro::
+ .string "Be gone!\n"
+ .string "Malevolent spirit!$"
+
+PokemonTower_3F_Text_PatriciaDefeat::
+ .string "Whew!\n"
+ .string "The spirit left!$"
+
+PokemonTower_3F_Text_PatriciaPostBattle::
+ .string "The others above…\n"
+ .string "They must have been possessed.$"
+
diff --git a/data/maps/PokemonTower_4F_Frlg/map.json b/data/maps/PokemonTower_4F_Frlg/map.json
new file mode 100644
index 000000000000..fdf3ea80ff93
--- /dev/null
+++ b/data/maps/PokemonTower_4F_Frlg/map.json
@@ -0,0 +1,122 @@
+{
+ "id": "MAP_POKEMON_TOWER_4F",
+ "name": "PokemonTower_4F_Frlg",
+ "layout": "LAYOUT_POKEMON_TOWER_4F",
+ "music": "MUS_RG_POKE_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POKEMON_TOWER",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": false,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_1",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 17,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "PokemonTower_4F_EventScript_Laurel",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 15,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "PokemonTower_4F_EventScript_Jody",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 4,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "PokemonTower_4F_EventScript_Paula",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 12,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonTower_4F_EventScript_ItemElixir",
+ "flag": "FLAG_HIDE_POKEMON_TOWER_4F_ELIXIR"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 8,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonTower_4F_EventScript_ItemAwakening",
+ "flag": "FLAG_HIDE_POKEMON_TOWER_4F_AWAKENING"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 11,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonTower_4F_EventScript_ItemGreatBall",
+ "flag": "FLAG_HIDE_POKEMON_TOWER_4F_GREAT_BALL"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_TOWER_5F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 18,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_TOWER_3F",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/PokemonTower_4F_Frlg/scripts.inc b/data/maps/PokemonTower_4F_Frlg/scripts.inc
new file mode 100644
index 000000000000..195f9d7dc197
--- /dev/null
+++ b/data/maps/PokemonTower_4F_Frlg/scripts.inc
@@ -0,0 +1,51 @@
+PokemonTower_4F_Frlg_MapScripts::
+ .byte 0
+
+PokemonTower_4F_EventScript_Paula::
+ trainerbattle_single TRAINER_CHANNELER_PAULA, PokemonTower_4F_Text_PaulaIntro, PokemonTower_4F_Text_PaulaDefeat
+ msgbox PokemonTower_4F_Text_PaulaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonTower_4F_EventScript_Laurel::
+ trainerbattle_single TRAINER_CHANNELER_LAUREL, PokemonTower_4F_Text_LaurelIntro, PokemonTower_4F_Text_LaurelDefeat
+ msgbox PokemonTower_4F_Text_LaurelPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonTower_4F_EventScript_Jody::
+ trainerbattle_single TRAINER_CHANNELER_JODY, PokemonTower_4F_Text_JodyIntro, PokemonTower_4F_Text_JodyDefeat
+ msgbox PokemonTower_4F_Text_JodyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonTower_4F_Text_PaulaIntro::
+ .string "Ghost! No!\n"
+ .string "Kwaaah!$"
+
+PokemonTower_4F_Text_PaulaDefeat::
+ .string "Where is the ghost?$"
+
+PokemonTower_4F_Text_PaulaPostBattle::
+ .string "I must have been dreaming…$"
+
+PokemonTower_4F_Text_LaurelIntro::
+ .string "Be cursed with me!\n"
+ .string "Kwaaah!$"
+
+PokemonTower_4F_Text_LaurelDefeat::
+ .string "What!$"
+
+PokemonTower_4F_Text_LaurelPostBattle::
+ .string "We can't determine the identity of\n"
+ .string "the ghosts…$"
+
+PokemonTower_4F_Text_JodyIntro::
+ .string "Huhuhu…\n"
+ .string "Beat me not!$"
+
+PokemonTower_4F_Text_JodyDefeat::
+ .string "Huh?\n"
+ .string "Who? What?$"
+
+PokemonTower_4F_Text_JodyPostBattle::
+ .string "May the departed POKéMON rest in\n"
+ .string "peace…$"
+
diff --git a/data/maps/PokemonTower_5F_Frlg/map.json b/data/maps/PokemonTower_5F_Frlg/map.json
new file mode 100644
index 000000000000..86b4c6416113
--- /dev/null
+++ b/data/maps/PokemonTower_5F_Frlg/map.json
@@ -0,0 +1,301 @@
+{
+ "id": "MAP_POKEMON_TOWER_5F",
+ "name": "PokemonTower_5F_Frlg",
+ "layout": "LAYOUT_POKEMON_TOWER_5F",
+ "music": "MUS_RG_POKE_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POKEMON_TOWER",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": false,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_1",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 11,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "PokemonTower_5F_EventScript_Ruth",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 19,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "PokemonTower_5F_EventScript_Tammy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 7,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "PokemonTower_5F_EventScript_Karina",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 11,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "PokemonTower_5F_EventScript_Janae",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 12,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonTower_5F_EventScript_Channeler",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 6,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonTower_5F_EventScript_ItemNugget",
+ "flag": "FLAG_HIDE_POKEMON_TOWER_5F_NUGGET"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 11,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonTower_5F_EventScript_ItemCleanseTag",
+ "flag": "FLAG_HIDE_POKEMON_TOWER_5F_CLEANSE_TAG"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_TOWER_4F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 18,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_TOWER_6F",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 8,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "PokemonTower_5F_EventScript_PurifiedZone"
+ },
+ {
+ "type": "trigger",
+ "x": 11,
+ "y": 8,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "PokemonTower_5F_EventScript_PurifiedZone"
+ },
+ {
+ "type": "trigger",
+ "x": 12,
+ "y": 8,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "PokemonTower_5F_EventScript_PurifiedZone"
+ },
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 9,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "PokemonTower_5F_EventScript_PurifiedZone"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 8,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "1",
+ "script": "PokemonTower_5F_EventScript_ExitPurifiedZone"
+ },
+ {
+ "type": "trigger",
+ "x": 12,
+ "y": 9,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "PokemonTower_5F_EventScript_PurifiedZone"
+ },
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 10,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "PokemonTower_5F_EventScript_PurifiedZone"
+ },
+ {
+ "type": "trigger",
+ "x": 11,
+ "y": 10,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "PokemonTower_5F_EventScript_PurifiedZone"
+ },
+ {
+ "type": "trigger",
+ "x": 12,
+ "y": 10,
+ "elevation": 0,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "PokemonTower_5F_EventScript_PurifiedZone"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 9,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "1",
+ "script": "PokemonTower_5F_EventScript_ExitPurifiedZone"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 10,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "1",
+ "script": "PokemonTower_5F_EventScript_ExitPurifiedZone"
+ },
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 11,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "1",
+ "script": "PokemonTower_5F_EventScript_ExitPurifiedZone"
+ },
+ {
+ "type": "trigger",
+ "x": 11,
+ "y": 11,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "1",
+ "script": "PokemonTower_5F_EventScript_ExitPurifiedZone"
+ },
+ {
+ "type": "trigger",
+ "x": 12,
+ "y": 11,
+ "elevation": 0,
+ "var": "VAR_TEMP_1",
+ "var_value": "1",
+ "script": "PokemonTower_5F_EventScript_ExitPurifiedZone"
+ },
+ {
+ "type": "trigger",
+ "x": 13,
+ "y": 8,
+ "elevation": 0,
+ "var": "VAR_TEMP_1",
+ "var_value": "1",
+ "script": "PokemonTower_5F_EventScript_ExitPurifiedZone"
+ },
+ {
+ "type": "trigger",
+ "x": 13,
+ "y": 9,
+ "elevation": 0,
+ "var": "VAR_TEMP_1",
+ "var_value": "1",
+ "script": "PokemonTower_5F_EventScript_ExitPurifiedZone"
+ },
+ {
+ "type": "trigger",
+ "x": 13,
+ "y": 10,
+ "elevation": 0,
+ "var": "VAR_TEMP_1",
+ "var_value": "1",
+ "script": "PokemonTower_5F_EventScript_ExitPurifiedZone"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 7,
+ "y": 3,
+ "elevation": 3,
+ "item": "ITEM_BIG_MUSHROOM",
+ "flag": "FLAG_HIDDEN_ITEM_POKEMON_TOWER_5F_BIG_MUSHROOM",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/PokemonTower_5F_Frlg/scripts.inc b/data/maps/PokemonTower_5F_Frlg/scripts.inc
new file mode 100644
index 000000000000..13cd61b9c3a0
--- /dev/null
+++ b/data/maps/PokemonTower_5F_Frlg/scripts.inc
@@ -0,0 +1,94 @@
+PokemonTower_5F_Frlg_MapScripts::
+ .byte 0
+
+PokemonTower_5F_EventScript_Channeler::
+ msgbox PokemonTower_5F_Text_RestHereInPurifiedSpace, MSGBOX_NPC
+ end
+
+PokemonTower_5F_EventScript_PurifiedZone::
+ lockall
+ fadescreen FADE_TO_WHITE
+ special HealPlayerParty
+ fadescreen FADE_FROM_WHITE
+ msgbox PokemonTower_5F_Text_PurifiedZoneMonsFullyHealed
+ setvar VAR_TEMP_1, 1
+ releaseall
+ end
+
+PokemonTower_5F_EventScript_ExitPurifiedZone::
+ lockall
+ setvar VAR_TEMP_1, 0
+ releaseall
+ end
+
+PokemonTower_5F_EventScript_Tammy::
+ trainerbattle_single TRAINER_CHANNELER_TAMMY, PokemonTower_5F_Text_TammyIntro, PokemonTower_5F_Text_TammyDefeat
+ msgbox PokemonTower_5F_Text_TammyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonTower_5F_EventScript_Ruth::
+ trainerbattle_single TRAINER_CHANNELER_RUTH, PokemonTower_5F_Text_RuthIntro, PokemonTower_5F_Text_RuthDefeat
+ msgbox PokemonTower_5F_Text_RuthPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonTower_5F_EventScript_Karina::
+ trainerbattle_single TRAINER_CHANNELER_KARINA, PokemonTower_5F_Text_KarinaIntro, PokemonTower_5F_Text_KarinaDefeat
+ msgbox PokemonTower_5F_Text_KarinaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonTower_5F_EventScript_Janae::
+ trainerbattle_single TRAINER_CHANNELER_JANAE, PokemonTower_5F_Text_JanaeIntro, PokemonTower_5F_Text_JanaeDefeat
+ msgbox PokemonTower_5F_Text_JanaePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonTower_5F_Text_RestHereInPurifiedSpace::
+ .string "Come, child!\n"
+ .string "I have purified this space.\l"
+ .string "You can rest here.$"
+
+PokemonTower_5F_Text_TammyIntro::
+ .string "Give…me…\n"
+ .string "your…all…$"
+
+PokemonTower_5F_Text_TammyDefeat::
+ .string "Gasp!$"
+
+PokemonTower_5F_Text_TammyPostBattle::
+ .string "I was under possession.$"
+
+PokemonTower_5F_Text_RuthIntro::
+ .string "You…shall…\n"
+ .string "join…us…$"
+
+PokemonTower_5F_Text_RuthDefeat::
+ .string "What a nightmare!$"
+
+PokemonTower_5F_Text_RuthPostBattle::
+ .string "I was possessed.$"
+
+PokemonTower_5F_Text_KarinaIntro::
+ .string "Zombies!$"
+
+PokemonTower_5F_Text_KarinaDefeat::
+ .string "Ha?$"
+
+PokemonTower_5F_Text_KarinaPostBattle::
+ .string "I regained my senses.$"
+
+PokemonTower_5F_Text_JanaeIntro::
+ .string "Urgah…\n"
+ .string "Urff…$"
+
+PokemonTower_5F_Text_JanaeDefeat::
+ .string "Whoo!$"
+
+PokemonTower_5F_Text_JanaePostBattle::
+ .string "I fell to evil spirits despite my\n"
+ .string "training in the mountains…$"
+
+PokemonTower_5F_Text_PurifiedZoneMonsFullyHealed::
+ .string "Entered the purified and protected\n"
+ .string "zone.\p"
+ .string "{PLAYER}'s POKéMON were fully\n"
+ .string "healed.$"
+
diff --git a/data/maps/PokemonTower_6F_Frlg/map.json b/data/maps/PokemonTower_6F_Frlg/map.json
new file mode 100644
index 000000000000..18bfcdc0fbfd
--- /dev/null
+++ b/data/maps/PokemonTower_6F_Frlg/map.json
@@ -0,0 +1,127 @@
+{
+ "id": "MAP_POKEMON_TOWER_6F",
+ "name": "PokemonTower_6F_Frlg",
+ "layout": "LAYOUT_POKEMON_TOWER_6F",
+ "music": "MUS_RG_POKE_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POKEMON_TOWER",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": false,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_1",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 13,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "PokemonTower_6F_EventScript_Angelica",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 18,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "PokemonTower_6F_EventScript_Jennifer",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 9,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "PokemonTower_6F_EventScript_Emilia",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 5,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonTower_6F_EventScript_ItemRareCandy",
+ "flag": "FLAG_HIDE_POKEMON_TOWER_6F_RARE_CANDY"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 15,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonTower_6F_EventScript_ItemXAccuracy",
+ "flag": "FLAG_HIDE_POKEMON_TOWER_6F_X_ACCURACY"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 16,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_TOWER_7F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 18,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_TOWER_5F",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 11,
+ "y": 15,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_POKEMON_TOWER_6F",
+ "var_value": "0",
+ "script": "PokemonTower_6F_EventScript_MarowakGhost"
+ },
+ {
+ "type": "trigger",
+ "x": 12,
+ "y": 16,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_POKEMON_TOWER_6F",
+ "var_value": "0",
+ "script": "PokemonTower_6F_EventScript_MarowakGhost"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/PokemonTower_6F_Frlg/scripts.inc b/data/maps/PokemonTower_6F_Frlg/scripts.inc
new file mode 100644
index 000000000000..86db6561e65d
--- /dev/null
+++ b/data/maps/PokemonTower_6F_Frlg/scripts.inc
@@ -0,0 +1,90 @@
+PokemonTower_6F_Frlg_MapScripts::
+ .byte 0
+
+PokemonTower_6F_EventScript_MarowakGhost::
+ lockall
+ textcolor NPC_TEXT_COLOR_MON
+ msgbox PokemonTower_6F_Text_BeGoneIntruders
+ setwildbattle SPECIES_MAROWAK, 30
+ special StartMarowakBattle
+ waitstate
+ goto_if_eq VAR_RESULT, FALSE, PokemonTower_6F_EventScript_DefeatedMarowakGhost @ VAR_RESULT set by CB2_EndMarowakBattle
+ applymovement LOCALID_PLAYER, PokemonTower_6F_Movement_ForcePlayerUp
+ waitmovement 0
+ releaseall
+ end
+
+PokemonTower_6F_EventScript_DefeatedMarowakGhost::
+ message PokemonTower_6F_Text_GhostWasCubonesMother
+ waitmessage
+ waitse
+ playmoncry SPECIES_MAROWAK, CRY_MODE_NORMAL
+ waitbuttonpress
+ waitmoncry
+ msgbox PokemonTower_6F_Text_MothersSpiritWasCalmed
+ setvar VAR_MAP_SCENE_POKEMON_TOWER_6F, 1
+ releaseall
+ end
+
+PokemonTower_6F_Movement_ForcePlayerUp::
+ walk_up
+ step_end
+
+PokemonTower_6F_EventScript_Angelica::
+ trainerbattle_single TRAINER_CHANNELER_ANGELICA, PokemonTower_6F_Text_AngelicaIntro, PokemonTower_6F_Text_AngelicaDefeat
+ msgbox PokemonTower_6F_Text_AngelicaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonTower_6F_EventScript_Emilia::
+ trainerbattle_single TRAINER_CHANNELER_EMILIA, PokemonTower_6F_Text_EmiliaIntro, PokemonTower_6F_Text_EmiliaDefeat
+ msgbox PokemonTower_6F_Text_EmiliaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonTower_6F_EventScript_Jennifer::
+ trainerbattle_single TRAINER_CHANNELER_JENNIFER, PokemonTower_6F_Text_JenniferIntro, PokemonTower_6F_Text_JenniferDefeat
+ msgbox PokemonTower_6F_Text_JenniferPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonTower_6F_Text_AngelicaIntro::
+ .string "Give…me…\n"
+ .string "blood…$"
+
+PokemonTower_6F_Text_AngelicaDefeat::
+ .string "Groan!$"
+
+PokemonTower_6F_Text_AngelicaPostBattle::
+ .string "I feel anemic and weak…$"
+
+PokemonTower_6F_Text_EmiliaIntro::
+ .string "Urff…\n"
+ .string "Kwaah!$"
+
+PokemonTower_6F_Text_EmiliaDefeat::
+ .string "Something fell out!$"
+
+PokemonTower_6F_Text_EmiliaPostBattle::
+ .string "My hair didn't fall out!\n"
+ .string "It was a malevolent spirit!$"
+
+PokemonTower_6F_Text_JenniferIntro::
+ .string "Ke…ke…ke…\n"
+ .string "ke…ke…ke!$"
+
+PokemonTower_6F_Text_JenniferDefeat::
+ .string "Keee!$"
+
+PokemonTower_6F_Text_JenniferPostBattle::
+ .string "What's going on here?$"
+
+PokemonTower_6F_Text_BeGoneIntruders::
+ .string "Be gone…\n"
+ .string "Intruders…$"
+
+PokemonTower_6F_Text_GhostWasCubonesMother::
+ .string "The ghost was the restless spirit\n"
+ .string "of CUBONE's mother!$"
+
+PokemonTower_6F_Text_MothersSpiritWasCalmed::
+ .string "The mother's spirit was calmed.\p"
+ .string "It departed to the afterlife…$"
+
diff --git a/data/maps/PokemonTower_7F_Frlg/map.json b/data/maps/PokemonTower_7F_Frlg/map.json
new file mode 100644
index 000000000000..a5d3647d1e0b
--- /dev/null
+++ b/data/maps/PokemonTower_7F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_POKEMON_TOWER_7F",
+ "name": "PokemonTower_7F_Frlg",
+ "layout": "LAYOUT_POKEMON_TOWER_7F",
+ "music": "MUS_RG_POKE_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POKEMON_TOWER",
+ "requires_flash": false,
+ "weather": "WEATHER_FOG_HORIZONTAL",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": false,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_1",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MR_FUJI",
+ "x": 11,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PokemonTower_7F_EventScript_MrFuji",
+ "flag": "FLAG_HIDE_TOWER_FUJI"
+ },
+ {
+ "local_id": "LOCALID_POKEMON_TOWER_GRUNT1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 9,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "PokemonTower_7F_EventScript_Grunt1",
+ "flag": "FLAG_HIDE_TOWER_ROCKET_1"
+ },
+ {
+ "local_id": "LOCALID_POKEMON_TOWER_GRUNT2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 13,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "PokemonTower_7F_EventScript_Grunt2",
+ "flag": "FLAG_HIDE_TOWER_ROCKET_2"
+ },
+ {
+ "local_id": "LOCALID_POKEMON_TOWER_GRUNT3",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 9,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "PokemonTower_7F_EventScript_Grunt3",
+ "flag": "FLAG_HIDE_TOWER_ROCKET_3"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 16,
+ "elevation": 3,
+ "dest_map": "MAP_POKEMON_TOWER_6F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 11,
+ "y": 4,
+ "elevation": 3,
+ "item": "ITEM_SOOTHE_BELL",
+ "flag": "FLAG_HIDDEN_ITEM_POKEMON_TOWER_7F_SOOTHE_BELL",
+ "quantity": 1,
+ "underfoot": true
+ }
+ ]
+}
diff --git a/data/maps/PokemonTower_7F_Frlg/scripts.inc b/data/maps/PokemonTower_7F_Frlg/scripts.inc
new file mode 100644
index 000000000000..8a2087d77fa5
--- /dev/null
+++ b/data/maps/PokemonTower_7F_Frlg/scripts.inc
@@ -0,0 +1,282 @@
+PokemonTower_7F_Frlg_MapScripts::
+ .byte 0
+
+PokemonTower_7F_EventScript_MrFuji::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_MRFUJI, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
+ setflag FLAG_HIDE_TOWER_FUJI
+ clearflag FLAG_HIDE_POKEHOUSE_FUJI
+ setflag FLAG_RESCUED_MR_FUJI
+ msgbox PokemonTower_7F_Text_MrFujiThankYouFollowMe
+ closemessage
+ warp MAP_LAVENDER_TOWN_VOLUNTEER_POKEMON_HOUSE, 4, 7
+ waitstate
+ release
+ end
+
+PokemonTower_7F_EventScript_Grunt1::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_19, PokemonTower_7F_Text_Grunt1Intro, PokemonTower_7F_Text_Grunt1Defeat, PokemonTower_7F_EventScript_DefeatedGrunt1
+ msgbox PokemonTower_7F_Text_Grunt1PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonTower_7F_EventScript_DefeatedGrunt1::
+ msgbox PokemonTower_7F_Text_Grunt1PostBattle
+ closemessage
+ getplayerxy VAR_0x8004, VAR_0x8005
+ goto_if_eq VAR_0x8004, 10, PokemonTower_7F_EventScript_Grunt1ExitMid
+ goto_if_eq VAR_0x8004, 11, PokemonTower_7F_EventScript_Grunt1ExitRight
+ goto_if_eq VAR_0x8004, 9, PokemonTower_7F_EventScript_Grunt1ExitLeft
+ applymovement LOCALID_POKEMON_TOWER_GRUNT1, PokemonTower_7F_Movement_Grunt1Exit
+ waitmovement 0
+ goto PokemonTower_7F_EventScript_RemoveGrunt1
+ end
+
+PokemonTower_7F_EventScript_Grunt1ExitMid::
+ applymovement LOCALID_POKEMON_TOWER_GRUNT1, PokemonTower_7F_Movement_Grunt1ExitMid
+ waitmovement 0
+ goto PokemonTower_7F_EventScript_RemoveGrunt1
+ end
+
+PokemonTower_7F_EventScript_Grunt1ExitRight::
+ applymovement LOCALID_POKEMON_TOWER_GRUNT1, PokemonTower_7F_Movement_Grunt1ExitRight
+ waitmovement 0
+ goto PokemonTower_7F_EventScript_RemoveGrunt1
+ end
+
+PokemonTower_7F_EventScript_Grunt1ExitLeft::
+ applymovement LOCALID_POKEMON_TOWER_GRUNT1, PokemonTower_7F_Movement_Grunt1ExitLeft
+ waitmovement 0
+ playse SE_EXIT
+ delay 25
+ goto PokemonTower_7F_EventScript_RemoveGrunt1
+ end
+
+PokemonTower_7F_EventScript_RemoveGrunt1::
+ removeobject LOCALID_POKEMON_TOWER_GRUNT1
+ release
+ end
+
+PokemonTower_7F_Movement_Grunt1ExitMid::
+ walk_down
+ walk_right
+ walk_down
+ walk_down
+ walk_down
+ walk_right
+ walk_down
+ walk_down
+ step_end
+
+PokemonTower_7F_Movement_Grunt1ExitRight::
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_right
+ walk_down
+ walk_down
+ step_end
+
+PokemonTower_7F_Movement_Grunt1Exit::
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+PokemonTower_7F_Movement_Grunt1ExitLeft::
+ walk_right
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_right
+ walk_down
+ walk_down
+ walk_in_place_faster_left
+ step_end
+
+PokemonTower_7F_EventScript_Grunt2::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_20, PokemonTower_7F_Text_Grunt2Intro, PokemonTower_7F_Text_Grunt2Defeat, PokemonTower_7F_EventScript_DefeatedGrunt2
+ msgbox PokemonTower_7F_Text_Grunt2PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonTower_7F_EventScript_DefeatedGrunt2::
+ famechecker FAMECHECKER_MRFUJI, 1
+ msgbox PokemonTower_7F_Text_Grunt2PostBattle
+ closemessage
+ getplayerxy VAR_0x8004, VAR_0x8005
+ goto_if_eq VAR_0x8004, 12, PokemonTower_7F_EventScript_Grunt2ExitLeft
+ goto_if_eq VAR_0x8004, 13, PokemonTower_7F_EventScript_Grunt2ExitRight
+ applymovement LOCALID_POKEMON_TOWER_GRUNT2, PokemonTower_7F_Movement_Grunt2Exit
+ waitmovement 0
+ goto PokemonTower_7F_EventScript_RemoveGrunt2
+ end
+
+PokemonTower_7F_EventScript_Grunt2ExitLeft::
+ applymovement LOCALID_POKEMON_TOWER_GRUNT2, PokemonTower_7F_Movement_Grunt2ExitLeft
+ waitmovement 0
+ goto PokemonTower_7F_EventScript_RemoveGrunt2
+ end
+
+PokemonTower_7F_EventScript_Grunt2ExitRight::
+ applymovement LOCALID_POKEMON_TOWER_GRUNT2, PokemonTower_7F_Movement_Grunt2ExitRight
+ waitmovement 0
+ goto PokemonTower_7F_EventScript_RemoveGrunt2
+ end
+
+PokemonTower_7F_EventScript_RemoveGrunt2::
+ removeobject LOCALID_POKEMON_TOWER_GRUNT2
+ release
+ end
+
+PokemonTower_7F_Movement_Grunt2ExitLeft::
+ walk_down
+ walk_down
+ walk_down
+ walk_left
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+PokemonTower_7F_Movement_Grunt2Exit::
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+PokemonTower_7F_Movement_Grunt2ExitRight::
+ walk_left
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+PokemonTower_7F_EventScript_Grunt3::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_21, PokemonTower_7F_Text_Grunt3Intro, PokemonTower_7F_Text_Grunt3Defeat, PokemonTower_7F_EventScript_DefeatedGrunt3
+ msgbox PokemonTower_7F_Text_Grunt3PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+PokemonTower_7F_EventScript_DefeatedGrunt3::
+ msgbox PokemonTower_7F_Text_Grunt3PostBattle
+ closemessage
+ getplayerxy VAR_0x8004, VAR_0x8005
+ goto_if_eq VAR_0x8004, 10, PokemonTower_7F_EventScript_Grunt3ExitRight
+ goto_if_eq VAR_0x8004, 9, PokemonTower_7F_EventScript_Grunt3ExitLeft
+ applymovement LOCALID_POKEMON_TOWER_GRUNT3, PokemonTower_7F_Movement_Grunt3Exit
+ waitmovement 0
+ goto PokemonTower_7F_EventScript_RemoveGrunt3
+ end
+
+PokemonTower_7F_EventScript_Grunt3ExitRight::
+ applymovement LOCALID_POKEMON_TOWER_GRUNT3, PokemonTower_7F_Movement_Grunt3ExitRight
+ waitmovement 0
+ goto PokemonTower_7F_EventScript_RemoveGrunt3
+ end
+
+PokemonTower_7F_EventScript_Grunt3ExitLeft::
+ applymovement LOCALID_POKEMON_TOWER_GRUNT3, PokemonTower_7F_Movement_Grunt3ExitLeft
+ waitmovement 0
+ goto PokemonTower_7F_EventScript_RemoveGrunt3
+ end
+
+PokemonTower_7F_EventScript_RemoveGrunt3::
+ removeobject LOCALID_POKEMON_TOWER_GRUNT3
+ release
+ end
+
+PokemonTower_7F_EventScript_Unused::
+ release
+ end
+
+PokemonTower_7F_Movement_Grunt3ExitRight::
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_right
+ walk_down
+ step_end
+
+PokemonTower_7F_Movement_Grunt3Exit::
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+PokemonTower_7F_Movement_Grunt3ExitLeft::
+ walk_right
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+PokemonTower_7F_Text_Grunt1Intro::
+ .string "What do you want?\n"
+ .string "Why are you here?$"
+
+PokemonTower_7F_Text_Grunt1Defeat::
+ .string "I give up!$"
+
+PokemonTower_7F_Text_Grunt1PostBattle::
+ .string "I'm not going to forget this!$"
+
+PokemonTower_7F_Text_Grunt2Intro::
+ .string "This old guy marched right up to\n"
+ .string "our HIDEOUT.\p"
+ .string "Then, he starts ranting about how\n"
+ .string "TEAM ROCKET's abusing POKéMON.\p"
+ .string "So, we're just talking it over as\n"
+ .string "adults.$"
+
+PokemonTower_7F_Text_Grunt2Defeat::
+ .string "Please!\n"
+ .string "No more!$"
+
+PokemonTower_7F_Text_Grunt2PostBattle::
+ .string "POKéMON are only good for making\n"
+ .string "money. Why not use them?\p"
+ .string "You stay out of our business!$"
+
+PokemonTower_7F_Text_Grunt3Intro::
+ .string "You're not saving anyone, kid!$"
+
+PokemonTower_7F_Text_Grunt3Defeat::
+ .string "Don't fight us ROCKETS!$"
+
+PokemonTower_7F_Text_Grunt3PostBattle::
+ .string "You're not getting away with this!$"
+
+PokemonTower_7F_Text_MrFujiThankYouFollowMe::
+ .string "MR. FUJI: Heh?\n"
+ .string "You came to save me?\p"
+ .string "Thank you. But, I came here of my\n"
+ .string "own free will.\p"
+ .string "I came to calm the spirit of\n"
+ .string "CUBONE's mother.\p"
+ .string "I think MAROWAK's spirit has\n"
+ .string "finally left us.\p"
+ .string "I must thank you for your kind\n"
+ .string "concern.\p"
+ .string "Follow me to my home, POKéMON\n"
+ .string "HOUSE, at the foot of this tower.$"
+
diff --git a/data/maps/PowerPlant_Frlg/map.json b/data/maps/PowerPlant_Frlg/map.json
new file mode 100644
index 000000000000..e59ed523ac50
--- /dev/null
+++ b/data/maps/PowerPlant_Frlg/map.json
@@ -0,0 +1,194 @@
+{
+ "id": "MAP_POWER_PLANT",
+ "name": "PowerPlant_Frlg",
+ "layout": "LAYOUT_POWER_PLANT",
+ "music": "MUS_RG_POKE_MANSION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_POWER_PLANT",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_2",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 7,
+ "y": 27,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PowerPlant_EventScript_ItemMaxPotion",
+ "flag": "FLAG_HIDE_POWER_PLANT_MAX_POTION"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 40,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PowerPlant_EventScript_ItemTM17",
+ "flag": "FLAG_HIDE_POWER_PLANT_TM17"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 46,
+ "y": 37,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PowerPlant_EventScript_ItemTM25",
+ "flag": "FLAG_HIDE_POWER_PLANT_TM25"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 45,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PowerPlant_EventScript_ItemThunderStone",
+ "flag": "FLAG_HIDE_POWER_PLANT_THUNDER_STONE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 26,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PowerPlant_EventScript_ItemElixir",
+ "flag": "FLAG_HIDE_POWER_PLANT_ELIXIR"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ZAPDOS",
+ "x": 5,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PowerPlant_EventScript_Zapdos",
+ "flag": "FLAG_HIDE_ZAPDOS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 36,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PowerPlant_EventScript_Electrode2",
+ "flag": "FLAG_HIDE_POWER_PLANT_ELECTRODE_2"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 30,
+ "y": 38,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "PowerPlant_EventScript_Electrode1",
+ "flag": "FLAG_HIDE_POWER_PLANT_ELECTRODE_1"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 39,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE10",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 5,
+ "y": 38,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE10",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 6,
+ "y": 39,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE10",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 1,
+ "y": 11,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE10",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 0,
+ "y": 13,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE10",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 29,
+ "y": 16,
+ "elevation": 3,
+ "item": "ITEM_MAX_ELIXIR",
+ "flag": "FLAG_HIDDEN_ITEM_POWER_PLANT_MAX_ELIXIR",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 8,
+ "y": 12,
+ "elevation": 3,
+ "item": "ITEM_THUNDER_STONE",
+ "flag": "FLAG_HIDDEN_ITEM_POWER_PLANT_THUNDER_STONE",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/PowerPlant_Frlg/scripts.inc b/data/maps/PowerPlant_Frlg/scripts.inc
new file mode 100644
index 000000000000..3a11d69d1b7d
--- /dev/null
+++ b/data/maps/PowerPlant_Frlg/scripts.inc
@@ -0,0 +1,115 @@
+PowerPlant_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, PowerPlant_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, PowerPlant_OnTransition
+ .byte 0
+
+PowerPlant_OnResume::
+ call_if_set FLAG_SYS_CTRL_OBJ_DELETE, PowerPlant_EventScript_TryRemoveStaticMon
+ end
+
+PowerPlant_EventScript_TryRemoveStaticMon::
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_ne VAR_RESULT, B_OUTCOME_CAUGHT, Common_EventScript_NopReturn
+ removeobject VAR_LAST_TALKED
+ return
+
+PowerPlant_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_POWER_PLANT
+ call_if_unset FLAG_FOUGHT_ZAPDOS, PowerPlant_EventScript_ShowZapdos
+ call_if_unset FLAG_FOUGHT_POWER_PLANT_ELECTRODE_1, PowerPlant_EventScript_ShowElectrode1
+ call_if_unset FLAG_FOUGHT_POWER_PLANT_ELECTRODE_2, PowerPlant_EventScript_ShowElectrode2
+ end
+
+PowerPlant_EventScript_ShowZapdos::
+ clearflag FLAG_HIDE_ZAPDOS
+ return
+
+PowerPlant_EventScript_ShowElectrode1::
+ clearflag FLAG_HIDE_POWER_PLANT_ELECTRODE_1
+ return
+
+PowerPlant_EventScript_ShowElectrode2::
+ clearflag FLAG_HIDE_POWER_PLANT_ELECTRODE_2
+ return
+
+PowerPlant_EventScript_Zapdos::
+ lock
+ faceplayer
+ setwildbattle SPECIES_ZAPDOS, 50
+ waitse
+ playmoncry SPECIES_ZAPDOS, CRY_MODE_ENCOUNTER
+ message Text_Gyaoo
+ waitmessage
+ waitmoncry
+ delay 10
+ playbgm MUS_RG_ENCOUNTER_GYM_LEADER, 0
+ waitbuttonpress
+ setflag FLAG_SYS_CTRL_OBJ_DELETE
+ special BattleSetup_StartLegendaryBattle
+ waitstate
+ clearflag FLAG_SYS_CTRL_OBJ_DELETE
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_eq VAR_RESULT, B_OUTCOME_WON, PowerPlant_EventScript_DefeatedZapdos
+ goto_if_eq VAR_RESULT, B_OUTCOME_RAN, PowerPlant_EventScript_RanFromZapdos
+ goto_if_eq VAR_RESULT, B_OUTCOME_PLAYER_TELEPORTED, PowerPlant_EventScript_RanFromZapdos
+ setflag FLAG_FOUGHT_ZAPDOS
+ release
+ end
+
+PowerPlant_EventScript_DefeatedZapdos::
+ setflag FLAG_FOUGHT_ZAPDOS
+ goto EventScript_RemoveStaticMon
+ end
+
+PowerPlant_EventScript_RanFromZapdos::
+ setvar VAR_0x8004, SPECIES_ZAPDOS
+ goto EventScript_MonFlewAway
+ end
+
+PowerPlant_EventScript_Electrode1::
+ lock
+ faceplayer
+ setwildbattle SPECIES_ELECTRODE, 34
+ waitse
+ playmoncry SPECIES_ELECTRODE, CRY_MODE_ENCOUNTER
+ delay 40
+ waitmoncry
+ setflag FLAG_SYS_CTRL_OBJ_DELETE
+ dowildbattle
+ clearflag FLAG_SYS_CTRL_OBJ_DELETE
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_eq VAR_RESULT, B_OUTCOME_WON, PowerPlant_EventScript_FoughtElectrode1
+ goto_if_eq VAR_RESULT, B_OUTCOME_RAN, PowerPlant_EventScript_FoughtElectrode1
+ goto_if_eq VAR_RESULT, B_OUTCOME_PLAYER_TELEPORTED, PowerPlant_EventScript_FoughtElectrode1
+ setflag FLAG_FOUGHT_POWER_PLANT_ELECTRODE_1
+ release
+ end
+
+PowerPlant_EventScript_FoughtElectrode1::
+ setflag FLAG_FOUGHT_POWER_PLANT_ELECTRODE_1
+ goto EventScript_RemoveStaticMon
+ end
+
+PowerPlant_EventScript_Electrode2::
+ lock
+ faceplayer
+ setwildbattle SPECIES_ELECTRODE, 34
+ waitse
+ playmoncry SPECIES_ELECTRODE, CRY_MODE_ENCOUNTER
+ delay 40
+ waitmoncry
+ setflag FLAG_SYS_CTRL_OBJ_DELETE
+ dowildbattle
+ clearflag FLAG_SYS_CTRL_OBJ_DELETE
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_eq VAR_RESULT, B_OUTCOME_WON, PowerPlant_EventScript_FoughtElectrode2
+ goto_if_eq VAR_RESULT, B_OUTCOME_RAN, PowerPlant_EventScript_FoughtElectrode2
+ goto_if_eq VAR_RESULT, B_OUTCOME_PLAYER_TELEPORTED, PowerPlant_EventScript_FoughtElectrode2
+ setflag FLAG_FOUGHT_POWER_PLANT_ELECTRODE_2
+ release
+ end
+
+PowerPlant_EventScript_FoughtElectrode2::
+ setflag FLAG_FOUGHT_POWER_PLANT_ELECTRODE_2
+ goto EventScript_RemoveStaticMon
+ end
diff --git a/data/maps/RecordCorner_Frlg/map.json b/data/maps/RecordCorner_Frlg/map.json
new file mode 100644
index 000000000000..c7253ba78483
--- /dev/null
+++ b/data/maps/RecordCorner_Frlg/map.json
@@ -0,0 +1,103 @@
+{
+ "id": "MAP_RECORD_CORNER_FRLG",
+ "name": "RecordCorner_Frlg",
+ "layout": "LAYOUT_RECORD_CORNER_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SPECIAL_AREA",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_UNION_ROOM_RECEPTIONIST",
+ "x": 10,
+ "y": 5,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RecordCorner_EventScript_Attendant_Frlg",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ },
+ {
+ "x": 9,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ },
+ {
+ "x": 11,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ },
+ {
+ "x": 10,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 4,
+ "elevation": 3,
+ "var": "VAR_TEMP_0",
+ "var_value": "0",
+ "script": "RecordCorner_EventScript_Spot0"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_TEMP_0",
+ "var_value": "0",
+ "script": "RecordCorner_EventScript_Spot1"
+ },
+ {
+ "type": "trigger",
+ "x": 13,
+ "y": 4,
+ "elevation": 3,
+ "var": "VAR_TEMP_0",
+ "var_value": "0",
+ "script": "RecordCorner_EventScript_Spot2"
+ },
+ {
+ "type": "trigger",
+ "x": 13,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_TEMP_0",
+ "var_value": "0",
+ "script": "RecordCorner_EventScript_Spot3"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/RecordCorner_Frlg/scripts.inc b/data/maps/RecordCorner_Frlg/scripts.inc
new file mode 100644
index 000000000000..6416ec19277b
--- /dev/null
+++ b/data/maps/RecordCorner_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+RecordCorner_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/RockTunnel_1F_Frlg/map.json b/data/maps/RockTunnel_1F_Frlg/map.json
new file mode 100644
index 000000000000..309ca1fd4452
--- /dev/null
+++ b/data/maps/RockTunnel_1F_Frlg/map.json
@@ -0,0 +1,215 @@
+{
+ "id": "MAP_ROCK_TUNNEL_1F",
+ "name": "RockTunnel_1F_Frlg",
+ "layout": "LAYOUT_ROCK_TUNNEL_1F",
+ "music": "MUS_RG_MT_MOON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROCK_TUNNEL",
+ "requires_flash": true,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 26,
+ "y": 28,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "RockTunnel_1F_EventScript_Dana",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 39,
+ "y": 27,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "RockTunnel_1F_EventScript_Ariana",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 45,
+ "y": 24,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "RockTunnel_1F_EventScript_Leah",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 20,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "RockTunnel_1F_EventScript_Lucas",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 5,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "RockTunnel_1F_EventScript_Oliver",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 7,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "RockTunnel_1F_EventScript_Lenny",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SUPER_NERD",
+ "x": 27,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "RockTunnel_1F_EventScript_Ashton",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 37,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RockTunnel_1F_EventScript_ItemRepel",
+ "flag": "FLAG_HIDE_ROCK_TUNNEL_1F_REPEL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 33,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RockTunnel_1F_EventScript_ItemPearl",
+ "flag": "FLAG_HIDE_ROCK_TUNNEL_1F_PEARL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 22,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RockTunnel_1F_EventScript_ItemEscapeRope",
+ "flag": "FLAG_HIDE_ROCK_TUNNEL_1F_ESCAPE_ROPE"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 17,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE10",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 45,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_ROCK_TUNNEL_B1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_ROCK_TUNNEL_B1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 20,
+ "y": 13,
+ "elevation": 3,
+ "dest_map": "MAP_ROCK_TUNNEL_B1F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 45,
+ "y": 21,
+ "elevation": 3,
+ "dest_map": "MAP_ROCK_TUNNEL_B1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 18,
+ "y": 37,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE10",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 14,
+ "y": 33,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "RockTunnel_1F_EventScript_RouteSign"
+ }
+ ]
+}
diff --git a/data/maps/RockTunnel_1F_Frlg/scripts.inc b/data/maps/RockTunnel_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..84fafd001d29
--- /dev/null
+++ b/data/maps/RockTunnel_1F_Frlg/scripts.inc
@@ -0,0 +1,130 @@
+RockTunnel_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, RockTunnel_1F_OnTransition
+ .byte 0
+
+RockTunnel_1F_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_ROCK_TUNNEL_1F
+ end
+
+RockTunnel_1F_EventScript_RouteSign::
+ msgbox RockTunnel_1F_Text_RouteSign, MSGBOX_SIGN
+ end
+
+RockTunnel_1F_EventScript_Lenny::
+ trainerbattle_single TRAINER_HIKER_LENNY, RockTunnel_1F_Text_LennyIntro, RockTunnel_1F_Text_LennyDefeat
+ msgbox RockTunnel_1F_Text_LennyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RockTunnel_1F_EventScript_Oliver::
+ trainerbattle_single TRAINER_HIKER_OLIVER, RockTunnel_1F_Text_OliverIntro, RockTunnel_1F_Text_OliverDefeat
+ msgbox RockTunnel_1F_Text_OliverPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RockTunnel_1F_EventScript_Lucas::
+ trainerbattle_single TRAINER_HIKER_LUCAS, RockTunnel_1F_Text_LucasIntro, RockTunnel_1F_Text_LucasDefeat
+ msgbox RockTunnel_1F_Text_LucasPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RockTunnel_1F_EventScript_Ashton::
+ trainerbattle_single TRAINER_POKEMANIAC_ASHTON, RockTunnel_1F_Text_AshtonIntro, RockTunnel_1F_Text_AshtonDefeat
+ msgbox RockTunnel_1F_Text_AshtonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RockTunnel_1F_EventScript_Leah::
+ trainerbattle_single TRAINER_PICNICKER_LEAH, RockTunnel_1F_Text_LeahIntro, RockTunnel_1F_Text_LeahDefeat
+ msgbox RockTunnel_1F_Text_LeahPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RockTunnel_1F_EventScript_Ariana::
+ trainerbattle_single TRAINER_PICNICKER_ARIANA, RockTunnel_1F_Text_ArianaIntro, RockTunnel_1F_Text_ArianaDefeat
+ msgbox RockTunnel_1F_Text_ArianaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RockTunnel_1F_EventScript_Dana::
+ trainerbattle_single TRAINER_PICNICKER_DANA, RockTunnel_1F_Text_DanaIntro, RockTunnel_1F_Text_DanaDefeat
+ msgbox RockTunnel_1F_Text_DanaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RockTunnel_1F_Text_LennyIntro::
+ .string "This tunnel goes a long way, kid!$"
+
+RockTunnel_1F_Text_LennyDefeat::
+ .string "Doh!\n"
+ .string "You win!$"
+
+RockTunnel_1F_Text_LennyPostBattle::
+ .string "Watch for ONIX.\n"
+ .string "They appear only occasionally.\p"
+ .string "High-level ones can put the\n"
+ .string "squeeze on you!$"
+
+RockTunnel_1F_Text_OliverIntro::
+ .string "Hmm.\n"
+ .string "Maybe I'm lost in here…$"
+
+RockTunnel_1F_Text_OliverDefeat::
+ .string "Ease up!\n"
+ .string "What am I doing?\l"
+ .string "Which way is out?$"
+
+RockTunnel_1F_Text_OliverPostBattle::
+ .string "That sleeping POKéMON on ROUTE 12\n"
+ .string "forced me to take this detour.$"
+
+RockTunnel_1F_Text_LucasIntro::
+ .string "Outsiders like you need to show me\n"
+ .string "some respect!$"
+
+RockTunnel_1F_Text_LucasDefeat::
+ .string "I give!$"
+
+RockTunnel_1F_Text_LucasPostBattle::
+ .string "You're talented enough to hike!$"
+
+RockTunnel_1F_Text_AshtonIntro::
+ .string "POKéMON fight!\n"
+ .string "Ready, go!$"
+
+RockTunnel_1F_Text_AshtonDefeat::
+ .string "Game over!$"
+
+RockTunnel_1F_Text_AshtonPostBattle::
+ .string "Oh well, I'll get a ZUBAT as I go!$"
+
+RockTunnel_1F_Text_LeahIntro::
+ .string "Eek!\p"
+ .string "Don't try anything funny in the\n"
+ .string "dark!$"
+
+RockTunnel_1F_Text_LeahDefeat::
+ .string "It was too dark…$"
+
+RockTunnel_1F_Text_LeahPostBattle::
+ .string "I saw a MACHOP in this tunnel.$"
+
+RockTunnel_1F_Text_DanaIntro::
+ .string "I came this far looking for wild\n"
+ .string "POKéMON.$"
+
+RockTunnel_1F_Text_DanaDefeat::
+ .string "I'm out of POKéMON!$"
+
+RockTunnel_1F_Text_DanaPostBattle::
+ .string "You looked cute and harmless.\n"
+ .string "Was I ever wrong!$"
+
+RockTunnel_1F_Text_ArianaIntro::
+ .string "You have POKéMON!\n"
+ .string "Let's start!$"
+
+RockTunnel_1F_Text_ArianaDefeat::
+ .string "You play hard!$"
+
+RockTunnel_1F_Text_ArianaPostBattle::
+ .string "Whew!\n"
+ .string "I'm all sweaty now.$"
+
+RockTunnel_1F_Text_RouteSign::
+ .string "ROCK TUNNEL\n"
+ .string "CERULEAN CITY - LAVENDER TOWN$"
+
diff --git a/data/maps/RockTunnel_B1F_Frlg/map.json b/data/maps/RockTunnel_B1F_Frlg/map.json
new file mode 100644
index 000000000000..eadaa2515d3a
--- /dev/null
+++ b/data/maps/RockTunnel_B1F_Frlg/map.json
@@ -0,0 +1,416 @@
+{
+ "id": "MAP_ROCK_TUNNEL_B1F",
+ "name": "RockTunnel_B1F_Frlg",
+ "layout": "LAYOUT_ROCK_TUNNEL_B1F",
+ "music": "MUS_RG_MT_MOON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROCK_TUNNEL",
+ "requires_flash": true,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SUPER_NERD",
+ "x": 2,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "RockTunnel_B1F_EventScript_Cooper",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 5,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "RockTunnel_B1F_EventScript_Dudley",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 11,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "RockTunnel_B1F_EventScript_Sofia",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 36,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "RockTunnel_B1F_EventScript_Allen",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 41,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "RockTunnel_B1F_EventScript_Eric",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SUPER_NERD",
+ "x": 23,
+ "y": 23,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "RockTunnel_B1F_EventScript_Steve",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 15,
+ "y": 33,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "RockTunnel_B1F_EventScript_Martha",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SUPER_NERD",
+ "x": 29,
+ "y": 35,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "RockTunnel_B1F_EventScript_Winston",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 2,
+ "y": 29,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RockTunnel_B1F_EventScript_RockSlideTutor",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 2,
+ "y": 37,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RockTunnel_B1F_EventScript_ItemRevive",
+ "flag": "FLAG_HIDE_ROCK_TUNNEL_B1F_REVIVE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 9,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RockTunnel_B1F_EventScript_ItemMaxEther",
+ "flag": "FLAG_HIDE_ROCK_TUNNEL_B1F_MAX_ETHER"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 1,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 1,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 4,
+ "y": 23,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_14"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 2,
+ "y": 23,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_15"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 39,
+ "y": 26,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_16"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 42,
+ "y": 26,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_17"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 43,
+ "y": 28,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_18"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 45,
+ "y": 30,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_19"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 45,
+ "y": 33,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_1A"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 25,
+ "y": 1,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_1B"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 27,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_1C"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 23,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_1D"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 26,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_1E"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 24,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_1F"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 27,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_11"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 38,
+ "y": 28,
+ "elevation": 3,
+ "dest_map": "MAP_ROCK_TUNNEL_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 33,
+ "y": 3,
+ "elevation": 3,
+ "dest_map": "MAP_ROCK_TUNNEL_1F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 27,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_ROCK_TUNNEL_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 2,
+ "y": 3,
+ "elevation": 3,
+ "dest_map": "MAP_ROCK_TUNNEL_1F",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/RockTunnel_B1F_Frlg/scripts.inc b/data/maps/RockTunnel_B1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..265bf5cc2b5a
--- /dev/null
+++ b/data/maps/RockTunnel_B1F_Frlg/scripts.inc
@@ -0,0 +1,138 @@
+RockTunnel_B1F_Frlg_MapScripts::
+ .byte 0
+
+RockTunnel_B1F_EventScript_Sofia::
+ trainerbattle_single TRAINER_PICNICKER_SOFIA, RockTunnel_B1F_Text_SofiaIntro, RockTunnel_B1F_Text_SofiaDefeat
+ msgbox RockTunnel_B1F_Text_SofiaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RockTunnel_B1F_EventScript_Martha::
+ trainerbattle_single TRAINER_PICNICKER_MARTHA, RockTunnel_B1F_Text_MarthaIntro, RockTunnel_B1F_Text_MarthaDefeat
+ msgbox RockTunnel_B1F_Text_MarthaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RockTunnel_B1F_EventScript_Dudley::
+ trainerbattle_single TRAINER_HIKER_DUDLEY, RockTunnel_B1F_Text_DudleyIntro, RockTunnel_B1F_Text_DudleyDefeat
+ msgbox RockTunnel_B1F_Text_DudleyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RockTunnel_B1F_EventScript_Allen::
+ trainerbattle_single TRAINER_HIKER_ALLEN, RockTunnel_B1F_Text_AllenIntro, RockTunnel_B1F_Text_AllenDefeat
+ msgbox RockTunnel_B1F_Text_AllenPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RockTunnel_B1F_EventScript_Eric::
+ trainerbattle_single TRAINER_HIKER_ERIC, RockTunnel_B1F_Text_EricIntro, RockTunnel_B1F_Text_EricDefeat
+ msgbox RockTunnel_B1F_Text_EricPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RockTunnel_B1F_EventScript_Cooper::
+ trainerbattle_single TRAINER_POKEMANIAC_COOPER, RockTunnel_B1F_Text_CooperIntro, RockTunnel_B1F_Text_CooperDefeat
+ msgbox RockTunnel_B1F_Text_CooperPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RockTunnel_B1F_EventScript_Steve::
+ trainerbattle_single TRAINER_POKEMANIAC_STEVE, RockTunnel_B1F_Text_SteveIntro, RockTunnel_B1F_Text_SteveDefeat
+ msgbox RockTunnel_B1F_Text_StevePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RockTunnel_B1F_EventScript_Winston::
+ trainerbattle_single TRAINER_POKEMANIAC_WINSTON, RockTunnel_B1F_Text_WinstonIntro, RockTunnel_B1F_Text_WinstonDefeat
+ msgbox RockTunnel_B1F_Text_WinstonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RockTunnel_B1F_Text_SofiaIntro::
+ .string "Do you know how you can avoid\n"
+ .string "getting lost in the mountains?\p"
+ .string "You can bend twigs as trail\n"
+ .string "markers.$"
+
+RockTunnel_B1F_Text_SofiaDefeat::
+ .string "Ohhh!\n"
+ .string "I did my best!$"
+
+RockTunnel_B1F_Text_SofiaPostBattle::
+ .string "I want to go home!$"
+
+RockTunnel_B1F_Text_DudleyIntro::
+ .string "Hahaha!\n"
+ .string "Can you beat my power?$"
+
+RockTunnel_B1F_Text_DudleyDefeat::
+ .string "Oops!\n"
+ .string "Outmuscled!$"
+
+RockTunnel_B1F_Text_DudleyPostBattle::
+ .string "I go for power because I hate\n"
+ .string "thinking.$"
+
+RockTunnel_B1F_Text_CooperIntro::
+ .string "You have a POKéDEX?\n"
+ .string "I want one, too.$"
+
+RockTunnel_B1F_Text_CooperDefeat::
+ .string "Shoot!\n"
+ .string "I am so jealous!$"
+
+RockTunnel_B1F_Text_CooperPostBattle::
+ .string "When you finish your POKéDEX,\n"
+ .string "can I have it?$"
+
+RockTunnel_B1F_Text_SteveIntro::
+ .string "Um… Do you know about POKéMON\n"
+ .string "cosplay?$"
+
+RockTunnel_B1F_Text_SteveDefeat::
+ .string "Well, that's that.$"
+
+RockTunnel_B1F_Text_StevePostBattle::
+ .string "POKéMON cosplay is dressing up as\n"
+ .string "POKéMON for fun.\p"
+ .string "CLEFAIRY is a favorite.$"
+
+RockTunnel_B1F_Text_AllenIntro::
+ .string "My POKéMON techniques will leave\n"
+ .string "you crying!$"
+
+RockTunnel_B1F_Text_AllenDefeat::
+ .string "I give!\n"
+ .string "You're a better technician!$"
+
+RockTunnel_B1F_Text_AllenPostBattle::
+ .string "In mountains, you'll often find\n"
+ .string "ROCK-type POKéMON.$"
+
+RockTunnel_B1F_Text_MarthaIntro::
+ .string "I don't often come here, but I will\n"
+ .string "battle you.$"
+
+RockTunnel_B1F_Text_MarthaDefeat::
+ .string "Oh!\n"
+ .string "I lost!$"
+
+RockTunnel_B1F_Text_MarthaPostBattle::
+ .string "I like tiny POKéMON.\n"
+ .string "Big ones are too scary!$"
+
+RockTunnel_B1F_Text_EricIntro::
+ .string "Hit me with your best shot!$"
+
+RockTunnel_B1F_Text_EricDefeat::
+ .string "Fired away!$"
+
+RockTunnel_B1F_Text_EricPostBattle::
+ .string "I'll raise my POKéMON to beat\n"
+ .string "yours, kid.$"
+
+RockTunnel_B1F_Text_WinstonIntro::
+ .string "I draw illustrations of POKéMON\n"
+ .string "when I'm home.$"
+
+RockTunnel_B1F_Text_WinstonDefeat::
+ .string "Whew…\n"
+ .string "I'm exhausted…$"
+
+RockTunnel_B1F_Text_WinstonPostBattle::
+ .string "I'm an artist, not a fighter.\n"
+ .string "I'll go home to draw.$"
+
diff --git a/data/maps/RocketHideout_B1F_Frlg/map.json b/data/maps/RocketHideout_B1F_Frlg/map.json
new file mode 100644
index 000000000000..a6f1cd07e89a
--- /dev/null
+++ b/data/maps/RocketHideout_B1F_Frlg/map.json
@@ -0,0 +1,177 @@
+{
+ "id": "MAP_ROCKET_HIDEOUT_B1F",
+ "name": "RocketHideout_B1F_Frlg",
+ "layout": "LAYOUT_ROCKET_HIDEOUT_B1F",
+ "music": "MUS_RG_ROCKET_HIDEOUT",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROCKET_HIDEOUT",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": -1,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_2",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 4,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "RocketHideout_B1F_EventScript_Grunt2",
+ "flag": "FLAG_HIDE_MISC_KANTO_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 24,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "RocketHideout_B1F_EventScript_Grunt1",
+ "flag": "FLAG_HIDE_MISC_KANTO_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 6,
+ "y": 32,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "RocketHideout_B1F_EventScript_Grunt4",
+ "flag": "FLAG_HIDE_MISC_KANTO_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 10,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "RocketHideout_B1F_EventScript_Grunt3",
+ "flag": "FLAG_HIDE_MISC_KANTO_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 21,
+ "y": 27,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "RocketHideout_B1F_EventScript_Grunt5",
+ "flag": "FLAG_HIDE_MISC_KANTO_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 5,
+ "y": 16,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RocketHideout_B1F_EventScript_ItemEscapeRope",
+ "flag": "FLAG_HIDE_ROCKET_HIDEOUT_B1F_ESCAPE_ROPE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 1,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RocketHideout_B1F_EventScript_ItemHyperPotion",
+ "flag": "FLAG_HIDE_ROCKET_HIDEOUT_B1F_HYPER_POTION"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 12,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_CELADON_CITY_GAME_CORNER",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 17,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_ROCKET_HIDEOUT_B2F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 15,
+ "y": 30,
+ "elevation": 3,
+ "dest_map": "MAP_ROCKET_HIDEOUT_B2F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 23,
+ "y": 25,
+ "elevation": 0,
+ "dest_map": "MAP_ROCKET_HIDEOUT_ELEVATOR",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 24,
+ "y": 25,
+ "elevation": 0,
+ "dest_map": "MAP_ROCKET_HIDEOUT_ELEVATOR",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 25,
+ "y": 25,
+ "elevation": 0,
+ "dest_map": "MAP_ROCKET_HIDEOUT_ELEVATOR",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 16,
+ "y": 17,
+ "elevation": 0,
+ "item": "ITEM_PP_UP",
+ "flag": "FLAG_HIDDEN_ITEM_ROCKET_HIDEOUT_B1F_PP_UP",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/RocketHideout_B1F_Frlg/scripts.inc b/data/maps/RocketHideout_B1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..d01ada0d4416
--- /dev/null
+++ b/data/maps/RocketHideout_B1F_Frlg/scripts.inc
@@ -0,0 +1,117 @@
+RocketHideout_B1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, RocketHideout_B1F_OnLoad
+ map_script MAP_SCRIPT_ON_TRANSITION, RocketHideout_B1F_OnTransition
+ .byte 0
+
+RocketHideout_B1F_OnLoad::
+ call_if_not_defeated TRAINER_TEAM_ROCKET_GRUNT_12 RocketHideout_B1F_EventScript_SetBarrier
+ end
+
+RocketHideout_B1F_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_ROCKET_HIDEOUT_B1F
+ end
+
+RocketHideout_B1F_EventScript_Grunt1::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_8, RocketHideout_B1F_Text_Grunt1Intro, RocketHideout_B1F_Text_Grunt1Defeat
+ msgbox RocketHideout_B1F_Text_Grunt1PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RocketHideout_B1F_EventScript_Grunt2::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_9, RocketHideout_B1F_Text_Grunt2Intro, RocketHideout_B1F_Text_Grunt2Defeat
+ msgbox RocketHideout_B1F_Text_Grunt2PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RocketHideout_B1F_EventScript_Grunt3::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_10, RocketHideout_B1F_Text_Grunt3Intro, RocketHideout_B1F_Text_Grunt3Defeat
+ msgbox RocketHideout_B1F_Text_Grunt3PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RocketHideout_B1F_EventScript_Grunt4::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_11, RocketHideout_B1F_Text_Grunt4Intro, RocketHideout_B1F_Text_Grunt4Defeat
+ msgbox RocketHideout_B1F_Text_Grunt4PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RocketHideout_B1F_EventScript_Grunt5::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_12, RocketHideout_B1F_Text_Grunt5Intro, RocketHideout_B1F_Text_Grunt5Defeat, RocketHideout_B1F_EventScript_DefeatedGrunt5
+ msgbox RocketHideout_B1F_Text_Grunt5PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RocketHideout_B1F_EventScript_DefeatedGrunt5::
+ call RocketHideout_B1F_EventScript_RemoveBarrier
+ playse SE_UNLOCK
+ special DrawWholeMapView
+ waitse
+ release
+ end
+
+RocketHideout_B1F_EventScript_SetBarrier::
+ setmetatile 20, 19, METATILE_SilphCo_HideoutBarrier_TopLeft_Floor, 1
+ setmetatile 21, 19, METATILE_SilphCo_HideoutBarrier_TopRight_Floor, 1
+ setmetatile 20, 20, METATILE_SilphCo_HideoutBarrier_BottomLeft, 1
+ setmetatile 21, 20, METATILE_SilphCo_HideoutBarrier_BottomRight, 1
+ setmetatile 20, 21, METATILE_SilphCo_HideoutFloor_ShadeFull, 0
+ setmetatile 21, 21, METATILE_SilphCo_HideoutFloor_ShadeFull, 0
+ return
+
+RocketHideout_B1F_EventScript_RemoveBarrier::
+ setmetatile 20, 19, METATILE_SilphCo_HideoutFloor_ShadeFull, 0
+ setmetatile 21, 19, METATILE_SilphCo_HideoutFloor, 0
+ setmetatile 20, 20, METATILE_SilphCo_HideoutFloor_ShadeFull, 0
+ setmetatile 21, 20, METATILE_SilphCo_HideoutFloor, 0
+ setmetatile 20, 21, METATILE_SilphCo_HideoutFloor_ShadeFull, 0
+ setmetatile 21, 21, METATILE_SilphCo_HideoutFloor, 0
+ return
+
+RocketHideout_B1F_Text_Grunt1Intro::
+ .string "Who are you?\n"
+ .string "How did you get here?$"
+
+RocketHideout_B1F_Text_Grunt1Defeat::
+ .string "Oww!\n"
+ .string "Beaten!$"
+
+RocketHideout_B1F_Text_Grunt1PostBattle::
+ .string "Blast it… You're dissing TEAM\n"
+ .string "ROCKET, aren't you?$"
+
+RocketHideout_B1F_Text_Grunt2Intro::
+ .string "You broke into TEAM ROCKET's\n"
+ .string "operation? What nerve!$"
+
+RocketHideout_B1F_Text_Grunt2Defeat::
+ .string "Boom!$"
+
+RocketHideout_B1F_Text_Grunt2PostBattle::
+ .string "You're not going to get away with\n"
+ .string "this, brat!$"
+
+RocketHideout_B1F_Text_Grunt3Intro::
+ .string "Intruder alert!$"
+
+RocketHideout_B1F_Text_Grunt3Defeat::
+ .string "I can't do it!$"
+
+RocketHideout_B1F_Text_Grunt3PostBattle::
+ .string "SILPH SCOPE? Humph!\n"
+ .string "I don't know where it is.$"
+
+RocketHideout_B1F_Text_Grunt4Intro::
+ .string "Why did you come here?$"
+
+RocketHideout_B1F_Text_Grunt4Defeat::
+ .string "This won't do!$"
+
+RocketHideout_B1F_Text_Grunt4PostBattle::
+ .string "Okay, I'll talk…\n"
+ .string "Take the elevator to see my BOSS.$"
+
+RocketHideout_B1F_Text_Grunt5Intro::
+ .string "Are you lost, you little mouse?$"
+
+RocketHideout_B1F_Text_Grunt5Defeat::
+ .string "Why…?$"
+
+RocketHideout_B1F_Text_Grunt5PostBattle::
+ .string "Uh-oh, that ruckus somehow opened\n"
+ .string "the door!$"
+
diff --git a/data/maps/RocketHideout_B2F_Frlg/map.json b/data/maps/RocketHideout_B2F_Frlg/map.json
new file mode 100644
index 000000000000..de0de4e1c29d
--- /dev/null
+++ b/data/maps/RocketHideout_B2F_Frlg/map.json
@@ -0,0 +1,129 @@
+{
+ "id": "MAP_ROCKET_HIDEOUT_B2F",
+ "name": "RocketHideout_B2F_Frlg",
+ "layout": "LAYOUT_ROCKET_HIDEOUT_B2F",
+ "music": "MUS_RG_ROCKET_HIDEOUT",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROCKET_HIDEOUT",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": -2,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_2",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 20,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "RocketHideout_B2F_EventScript_Grunt",
+ "flag": "FLAG_HIDE_MISC_KANTO_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 15,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RocketHideout_B2F_EventScript_ItemXSpeed",
+ "flag": "FLAG_HIDE_ROCKET_HIDEOUT_B2F_X_SPEED"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RocketHideout_B2F_EventScript_ItemMoonStone",
+ "flag": "FLAG_HIDE_ROCKET_HIDEOUT_B2F_MOON_STONE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RocketHideout_B2F_EventScript_ItemTM12",
+ "flag": "FLAG_HIDE_ROCKET_HIDEOUT_B2F_TM12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 0,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RocketHideout_B2F_EventScript_ItemSuperPotion",
+ "flag": "FLAG_HIDE_ROCKET_HIDEOUT_B2F_SUPER_POTION"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 21,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_ROCKET_HIDEOUT_B3F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 28,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_ROCKET_HIDEOUT_B1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 23,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_ROCKET_HIDEOUT_B1F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 28,
+ "y": 16,
+ "elevation": 0,
+ "dest_map": "MAP_ROCKET_HIDEOUT_ELEVATOR",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 29,
+ "y": 16,
+ "elevation": 0,
+ "dest_map": "MAP_ROCKET_HIDEOUT_ELEVATOR",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/RocketHideout_B2F_Frlg/scripts.inc b/data/maps/RocketHideout_B2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..b0ff38a69d6c
--- /dev/null
+++ b/data/maps/RocketHideout_B2F_Frlg/scripts.inc
@@ -0,0 +1,20 @@
+RocketHideout_B2F_Frlg_MapScripts::
+ .byte 0
+
+RocketHideout_B2F_EventScript_Grunt::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_13, RocketHideout_B2F_Text_GruntIntro, RocketHideout_B2F_Text_GruntDefeat
+ msgbox RocketHideout_B2F_Text_GruntPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RocketHideout_B2F_Text_GruntIntro::
+ .string "BOSS said you can see ghosts with\n"
+ .string "the SILPH SCOPE.$"
+
+RocketHideout_B2F_Text_GruntDefeat::
+ .string "I surrender!$"
+
+RocketHideout_B2F_Text_GruntPostBattle::
+ .string "The TEAM ROCKET HQ has four\n"
+ .string "underground floors.\p"
+ .string "Think you can reach the BOSS?$"
+
diff --git a/data/maps/RocketHideout_B3F_Frlg/map.json b/data/maps/RocketHideout_B3F_Frlg/map.json
new file mode 100644
index 000000000000..25a6d7f2ab34
--- /dev/null
+++ b/data/maps/RocketHideout_B3F_Frlg/map.json
@@ -0,0 +1,119 @@
+{
+ "id": "MAP_ROCKET_HIDEOUT_B3F",
+ "name": "RocketHideout_B3F_Frlg",
+ "layout": "LAYOUT_ROCKET_HIDEOUT_B3F",
+ "music": "MUS_RG_ROCKET_HIDEOUT",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROCKET_HIDEOUT",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": -3,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_2",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 19,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "RocketHideout_B3F_EventScript_Grunt2",
+ "flag": "FLAG_HIDE_MISC_KANTO_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 2,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "RocketHideout_B3F_EventScript_Grunt1",
+ "flag": "FLAG_HIDE_MISC_KANTO_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 12,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RocketHideout_B3F_EventScript_ItemRareCandy",
+ "flag": "FLAG_HIDE_ROCKET_HIDEOUT_B3F_RARE_CANDY"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 19,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RocketHideout_B3F_EventScript_ItemTM21",
+ "flag": "FLAG_HIDE_ROCKET_HIDEOUT_B3F_TM21"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 14,
+ "y": 24,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RocketHideout_B3F_EventScript_ItemBlackGlasses",
+ "flag": "FLAG_HIDE_ROCKET_HIDEOUT_B3F_BLACK_GLASSES"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 18,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_ROCKET_HIDEOUT_B2F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 15,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_ROCKET_HIDEOUT_B4F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 1,
+ "y": 3,
+ "elevation": 3,
+ "item": "ITEM_NUGGET",
+ "flag": "FLAG_HIDDEN_ITEM_ROCKET_HIDEOUT_B3F_NUGGET",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/RocketHideout_B3F_Frlg/scripts.inc b/data/maps/RocketHideout_B3F_Frlg/scripts.inc
new file mode 100644
index 000000000000..b08d750e847c
--- /dev/null
+++ b/data/maps/RocketHideout_B3F_Frlg/scripts.inc
@@ -0,0 +1,39 @@
+RocketHideout_B3F_Frlg_MapScripts::
+ .byte 0
+
+RocketHideout_B3F_EventScript_Grunt1::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_14, RocketHideout_B3F_Text_Grunt1Intro, RocketHideout_B3F_Text_Grunt1Defeat
+ msgbox RocketHideout_B3F_Text_Grunt1PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RocketHideout_B3F_EventScript_Grunt2::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_15, RocketHideout_B3F_Text_Grunt2Intro, RocketHideout_B3F_Text_Grunt2Defeat
+ msgbox RocketHideout_B3F_Text_Grunt2PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RocketHideout_B3F_Text_Grunt1Intro::
+ .string "Stop meddling in TEAM ROCKET's\n"
+ .string "affairs or else!$"
+
+RocketHideout_B3F_Text_Grunt1Defeat::
+ .string "Oof!\n"
+ .string "Taken down!$"
+
+RocketHideout_B3F_Text_Grunt1PostBattle::
+ .string "SILPH SCOPE?\n"
+ .string "Oh, that machine the BOSS stole.\p"
+ .string "It's here somewhere.$"
+
+RocketHideout_B3F_Text_Grunt2Intro::
+ .string "We got word from upstairs that you\n"
+ .string "were coming!$"
+
+RocketHideout_B3F_Text_Grunt2Defeat::
+ .string "What?\n"
+ .string "I lost? No!$"
+
+RocketHideout_B3F_Text_Grunt2PostBattle::
+ .string "Go ahead and go!\p"
+ .string "But you can't run the elevator\n"
+ .string "without the LIFT KEY.$"
+
diff --git a/data/maps/RocketHideout_B4F_Frlg/map.json b/data/maps/RocketHideout_B4F_Frlg/map.json
new file mode 100644
index 000000000000..321ae089499c
--- /dev/null
+++ b/data/maps/RocketHideout_B4F_Frlg/map.json
@@ -0,0 +1,195 @@
+{
+ "id": "MAP_ROCKET_HIDEOUT_B4F",
+ "name": "RocketHideout_B4F_Frlg",
+ "layout": "LAYOUT_ROCKET_HIDEOUT_B4F",
+ "music": "MUS_RG_ROCKET_HIDEOUT",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROCKET_HIDEOUT",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": -4,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_2",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_HIDEOUT_GIOVANNI",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GIOVANNI",
+ "x": 19,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RocketHideout_B4F_EventScript_Giovanni",
+ "flag": "FLAG_HIDE_HIDEOUT_GIOVANNI"
+ },
+ {
+ "local_id": "LOCALID_SILPH_SCOPE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 20,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RocketHideout_B4F_EventScript_SilphScope",
+ "flag": "FLAG_HIDE_SILPH_SCOPE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "RocketHideout_B4F_EventScript_Grunt1",
+ "flag": "FLAG_HIDE_MISC_KANTO_ROCKETS"
+ },
+ {
+ "local_id": "LOCALID_LIFT_KEY",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 3,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RocketHideout_B4F_EventScript_LiftKey",
+ "flag": "FLAG_HIDE_LIFT_KEY"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 19,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RocketHideout_B4F_EventScript_Grunt3",
+ "flag": "FLAG_HIDE_MISC_KANTO_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 16,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RocketHideout_B4F_EventScript_Grunt2",
+ "flag": "FLAG_HIDE_MISC_KANTO_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 1,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RocketHideout_B4F_EventScript_ItemTM49",
+ "flag": "FLAG_HIDE_ROCKET_HIDEOUT_B4F_TM49"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 4,
+ "y": 14,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RocketHideout_B4F_EventScript_ItemMaxEther",
+ "flag": "FLAG_HIDE_ROCKET_HIDEOUT_B4F_MAX_ETHER"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 6,
+ "y": 23,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "RocketHideout_B4F_EventScript_ItemCalcium",
+ "flag": "FLAG_HIDE_ROCKET_HIDEOUT_B4F_CALCIUM"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_ROCKET_HIDEOUT_B3F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 20,
+ "y": 23,
+ "elevation": 0,
+ "dest_map": "MAP_ROCKET_HIDEOUT_ELEVATOR",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 21,
+ "y": 23,
+ "elevation": 0,
+ "dest_map": "MAP_ROCKET_HIDEOUT_ELEVATOR",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 22,
+ "y": 6,
+ "elevation": 3,
+ "item": "ITEM_NEST_BALL",
+ "flag": "FLAG_HIDDEN_ITEM_ROCKET_HIDEOUT_B4F_NEST_BALL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 16,
+ "y": 6,
+ "elevation": 3,
+ "item": "ITEM_NET_BALL",
+ "flag": "FLAG_HIDDEN_ITEM_ROCKET_HIDEOUT_B4F_NET_BALL",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/RocketHideout_B4F_Frlg/scripts.inc b/data/maps/RocketHideout_B4F_Frlg/scripts.inc
new file mode 100644
index 000000000000..091c65d8ed24
--- /dev/null
+++ b/data/maps/RocketHideout_B4F_Frlg/scripts.inc
@@ -0,0 +1,178 @@
+.equ NUM_DOOR_GRUNTS_DEFEATED, VAR_TEMP_1
+
+RocketHideout_B4F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, RocketHideout_B4F_OnLoad
+ .byte 0
+
+RocketHideout_B4F_OnLoad::
+ setvar NUM_DOOR_GRUNTS_DEFEATED, 0
+ call_if_defeated TRAINER_TEAM_ROCKET_GRUNT_16, RocketHideout_B4F_EventScript_CountGruntDefeated
+ call_if_defeated TRAINER_TEAM_ROCKET_GRUNT_17, RocketHideout_B4F_EventScript_CountGruntDefeated
+ call_if_ne NUM_DOOR_GRUNTS_DEFEATED, 2, RocketHideout_B4F_EventScript_SetBarrier
+ end
+
+RocketHideout_B4F_EventScript_CountGruntDefeated::
+ addvar NUM_DOOR_GRUNTS_DEFEATED, 1
+ return
+
+RocketHideout_B4F_EventScript_Giovanni::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_GIOVANNI, 0
+ message RocketHideout_B4F_Text_GiovanniIntro
+ waitmessage
+ playbgm MUS_RG_ENCOUNTER_ROCKET, 0
+ waitbuttonpress
+ trainerbattle_no_intro TRAINER_BOSS_GIOVANNI, RocketHideout_B4F_Text_GiovanniDefeat
+ msgbox RocketHideout_B4F_Text_GiovanniPostBattle
+ fadescreen FADE_TO_BLACK
+ closemessage
+ removeobject LOCALID_HIDEOUT_GIOVANNI
+ addobject LOCALID_SILPH_SCOPE
+ clearflag FLAG_HIDE_SILPH_SCOPE
+ setflag FLAG_HIDE_CELADON_ROCKETS
+ famechecker FAMECHECKER_GIOVANNI, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
+ fadescreen FADE_FROM_BLACK
+ release
+ end
+
+RocketHideout_B4F_EventScript_SilphScope::
+ lock
+ faceplayer
+ removeobject LOCALID_SILPH_SCOPE
+ giveitem ITEM_SILPH_SCOPE
+ goto_if_eq VAR_RESULT, FALSE, EventScript_BagIsFull
+ release
+ end
+
+RocketHideout_B4F_EventScript_Grunt1::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_18, RocketHideout_B4F_Text_Grunt1Intro, RocketHideout_B4F_Text_Grunt1Defeat, RocketHideout_B4F_EventScript_DefeatedGrunt1
+ msgbox RocketHideout_B4F_Text_Grunt1PostBattle
+ release
+ end
+
+RocketHideout_B4F_EventScript_DefeatedGrunt1::
+ msgbox RocketHideout_B4F_Text_Grunt1PostBattle
+ addobject LOCALID_LIFT_KEY
+ clearflag FLAG_HIDE_LIFT_KEY
+ release
+ end
+
+RocketHideout_B4F_EventScript_LiftKey::
+ lock
+ faceplayer
+ setflag FLAG_CAN_USE_ROCKET_HIDEOUT_LIFT
+ removeobject LOCALID_LIFT_KEY
+ giveitem ITEM_LIFT_KEY
+ goto_if_eq VAR_RESULT, FALSE, EventScript_BagIsFull
+ release
+ end
+
+RocketHideout_B4F_EventScript_Grunt2::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_16, RocketHideout_B4F_Text_Grunt2Intro, RocketHideout_B4F_Text_Grunt2Defeat, RocketHideout_B4F_EventScript_DefeatedGrunt2
+ msgbox RocketHideout_B4F_Text_Grunt2PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RocketHideout_B4F_EventScript_DefeatedGrunt2::
+ setvar NUM_DOOR_GRUNTS_DEFEATED, 0
+ call_if_defeated TRAINER_TEAM_ROCKET_GRUNT_16, RocketHideout_B4F_EventScript_CountGruntDefeated
+ call_if_defeated TRAINER_TEAM_ROCKET_GRUNT_17, RocketHideout_B4F_EventScript_CountGruntDefeated
+ call_if_eq NUM_DOOR_GRUNTS_DEFEATED, 2, RocketHideout_B4F_EventScript_RemoveBarrier
+ call_if_eq NUM_DOOR_GRUNTS_DEFEATED, 2, RocketHideout_B4F_EventScript_DrawMapForBarrierRemoval
+ release
+ end
+
+RocketHideout_B4F_EventScript_Grunt3::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_17, RocketHideout_B4F_Text_Grunt3Intro, RocketHideout_B4F_Text_Grunt3Defeat, RocketHideout_B4F_EventScript_DefeatedGrunt3
+ msgbox RocketHideout_B4F_Text_Grunt3PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+RocketHideout_B4F_EventScript_DefeatedGrunt3::
+ setvar NUM_DOOR_GRUNTS_DEFEATED, 0
+ call_if_defeated TRAINER_TEAM_ROCKET_GRUNT_16, RocketHideout_B4F_EventScript_CountGruntDefeated
+ call_if_defeated TRAINER_TEAM_ROCKET_GRUNT_17, RocketHideout_B4F_EventScript_CountGruntDefeated
+ call_if_eq NUM_DOOR_GRUNTS_DEFEATED, 2, RocketHideout_B4F_EventScript_RemoveBarrier
+ call_if_eq NUM_DOOR_GRUNTS_DEFEATED, 2, RocketHideout_B4F_EventScript_DrawMapForBarrierRemoval
+ release
+ end
+
+RocketHideout_B4F_EventScript_DrawMapForBarrierRemoval::
+ playse SE_UNLOCK
+ special DrawWholeMapView
+ waitse
+ return
+
+RocketHideout_B4F_EventScript_SetBarrier::
+ setmetatile 17, 12, METATILE_SilphCo_HideoutBarrier_TopLeft_Floor, 1
+ setmetatile 18, 12, METATILE_SilphCo_HideoutBarrier_TopRight_Floor, 1
+ setmetatile 17, 13, METATILE_SilphCo_HideoutBarrier_BottomLeft, 1
+ setmetatile 18, 13, METATILE_SilphCo_HideoutBarrier_BottomRight, 1
+ setmetatile 17, 14, METATILE_SilphCo_HideoutFloor_ShadeFull, 0
+ setmetatile 18, 14, METATILE_SilphCo_HideoutFloor_ShadeFull, 0
+ return
+
+RocketHideout_B4F_EventScript_RemoveBarrier::
+ setmetatile 17, 12, METATILE_SilphCo_HideoutFloor_ShadeFull, 0
+ setmetatile 18, 12, METATILE_SilphCo_HideoutFloor, 0
+ setmetatile 17, 13, METATILE_SilphCo_HideoutFloor_ShadeFull, 0
+ setmetatile 18, 13, METATILE_SilphCo_HideoutFloor, 0
+ setmetatile 17, 14, METATILE_SilphCo_HideoutFloor_ShadeFull, 0
+ setmetatile 18, 14, METATILE_SilphCo_HideoutFloor, 0
+ return
+
+RocketHideout_B4F_Text_GiovanniIntro::
+ .string "So! I must say, I am impressed you\n"
+ .string "got here.\p"
+ .string "TEAM ROCKET captures POKéMON from\n"
+ .string "around the world.\p"
+ .string "They're important tools for keeping\n"
+ .string "our criminal enterprise going.\p"
+ .string "I am the leader, GIOVANNI!\p"
+ .string "For your insolence, you will feel a\n"
+ .string "world of pain!$"
+
+RocketHideout_B4F_Text_GiovanniDefeat::
+ .string "WHAT!\n"
+ .string "This can't be!$"
+
+RocketHideout_B4F_Text_GiovanniPostBattle::
+ .string "I see that you raise POKéMON with\n"
+ .string "utmost care.\p"
+ .string "A child like you would never\n"
+ .string "understand what I hope to achieve.\p"
+ .string "I shall step aside this time!\p"
+ .string "I hope we meet again…$"
+
+RocketHideout_B4F_Text_Grunt2Intro::
+ .string "I know you!\n"
+ .string "You ruined our plans at MT. MOON!$"
+
+RocketHideout_B4F_Text_Grunt2Defeat::
+ .string "Burned again!$"
+
+RocketHideout_B4F_Text_Grunt2PostBattle::
+ .string "Do you have something against TEAM\n"
+ .string "ROCKET?$"
+
+RocketHideout_B4F_Text_Grunt3Intro::
+ .string "How can you not see the beauty of\n"
+ .string "our evil?$"
+
+RocketHideout_B4F_Text_Grunt3Defeat::
+ .string "Ayaya!$"
+
+RocketHideout_B4F_Text_Grunt3PostBattle::
+ .string "BOSS!\n"
+ .string "I'm sorry I failed you!$"
+
+RocketHideout_B4F_Text_Grunt1Intro::
+ .string "The elevator doesn't work?\n"
+ .string "Who has the LIFT KEY?$"
+
+RocketHideout_B4F_Text_Grunt1Defeat::
+ .string "No!$"
+
+RocketHideout_B4F_Text_Grunt1PostBattle::
+ .string "Oh, no!\n"
+ .string "I dropped the LIFT KEY!$"
+
diff --git a/data/maps/RocketHideout_Elevator_Frlg/map.json b/data/maps/RocketHideout_Elevator_Frlg/map.json
new file mode 100644
index 000000000000..d01cfda16ea8
--- /dev/null
+++ b/data/maps/RocketHideout_Elevator_Frlg/map.json
@@ -0,0 +1,46 @@
+{
+ "id": "MAP_ROCKET_HIDEOUT_ELEVATOR",
+ "name": "RocketHideout_Elevator_Frlg",
+ "layout": "LAYOUT_ROCKET_HIDEOUT_ELEVATOR",
+ "music": "MUS_RG_ROCKET_HIDEOUT",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROCKET_HIDEOUT",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_2",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ },
+ {
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 0,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "RocketHideout_Elevator_EventScript_FloorSelect"
+ }
+ ]
+}
diff --git a/data/maps/RocketHideout_Elevator_Frlg/scripts.inc b/data/maps/RocketHideout_Elevator_Frlg/scripts.inc
new file mode 100644
index 000000000000..8d698855fbf1
--- /dev/null
+++ b/data/maps/RocketHideout_Elevator_Frlg/scripts.inc
@@ -0,0 +1,93 @@
+RocketHideout_Elevator_Frlg_MapScripts::
+ .byte 0
+
+RocketHideout_Elevator_EventScript_FloorSelect::
+ lockall
+ goto_if_unset FLAG_CAN_USE_ROCKET_HIDEOUT_LIFT, RocketHideout_Elevator_EventScript_NeedKey
+ setvar VAR_0x8004, 2
+ call_if_unset FLAG_TEMP_2, EventScript_GetElevatorFloor
+ copyvar VAR_0x8005, VAR_ELEVATOR_FLOOR
+ special DrawElevatorCurrentFloorWindow
+ message gText_WantWhichFloor
+ waitmessage
+ setvar VAR_0x8004, 2
+ specialvar VAR_RESULT, InitElevatorFloorSelectMenuPos
+ switch VAR_RESULT
+ case 0, RocketHideout_Elevator_EventScript_FloorSelectFromB1F
+ case 1, RocketHideout_Elevator_EventScript_FloorSelectFromB2F
+ case 2, RocketHideout_Elevator_EventScript_FloorSelectFromB4F
+ end
+
+RocketHideout_Elevator_EventScript_FloorSelectFromB1F::
+ multichoicedefault 0, 0, MULTI_ROCKET_HIDEOUT_ELEVATOR, 0, FALSE
+ goto RocketHideout_Elevator_EventScript_ChooseFloor
+ end
+
+RocketHideout_Elevator_EventScript_FloorSelectFromB2F::
+ multichoicedefault 0, 0, MULTI_ROCKET_HIDEOUT_ELEVATOR, 1, FALSE
+ goto RocketHideout_Elevator_EventScript_ChooseFloor
+ end
+
+RocketHideout_Elevator_EventScript_FloorSelectFromB4F::
+ multichoicedefault 0, 0, MULTI_ROCKET_HIDEOUT_ELEVATOR, 2, FALSE
+ goto RocketHideout_Elevator_EventScript_ChooseFloor
+ end
+
+RocketHideout_Elevator_EventScript_ChooseFloor::
+ switch VAR_RESULT
+ case 0, RocketHideout_Elevator_EventScript_ToB1F
+ case 1, RocketHideout_Elevator_EventScript_ToB2F
+ case 2, RocketHideout_Elevator_EventScript_ToB4F
+ case 3, RocketHideout_Elevator_EventScript_ExitFloorSelect
+ case 127, RocketHideout_Elevator_EventScript_ExitFloorSelect
+ end
+
+RocketHideout_Elevator_EventScript_ToB1F::
+ setvar VAR_0x8006, 3
+ setdynamicwarp MAP_ROCKET_HIDEOUT_B1F, 255, 24, 25
+ goto_if_eq VAR_ELEVATOR_FLOOR, 3, RocketHideout_Elevator_EventScript_ExitFloorSelect
+ call RocketHideout_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 3
+ goto RocketHideout_Elevator_EventScript_ExitFloorSelect
+ end
+
+RocketHideout_Elevator_EventScript_ToB2F::
+ setvar VAR_0x8006, 2
+ setdynamicwarp MAP_ROCKET_HIDEOUT_B2F, 255, 28, 16
+ goto_if_eq VAR_ELEVATOR_FLOOR, 2, RocketHideout_Elevator_EventScript_ExitFloorSelect
+ call RocketHideout_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 2
+ goto RocketHideout_Elevator_EventScript_ExitFloorSelect
+ end
+
+RocketHideout_Elevator_EventScript_ToB4F::
+ setvar VAR_0x8006, 0
+ setdynamicwarp MAP_ROCKET_HIDEOUT_B4F, 255, 20, 23
+ goto_if_eq VAR_ELEVATOR_FLOOR, 0, RocketHideout_Elevator_EventScript_ExitFloorSelect
+ call RocketHideout_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 0
+ goto RocketHideout_Elevator_EventScript_ExitFloorSelect
+ end
+
+RocketHideout_Elevator_EventScript_ExitFloorSelect::
+ special CloseElevatorCurrentFloorWindow
+ releaseall
+ end
+
+RocketHideout_Elevator_EventScript_MoveElevator::
+ special CloseElevatorCurrentFloorWindow
+ closemessage
+ waitse
+ special AnimateElevator
+ waitstate
+ setflag FLAG_TEMP_2
+ return
+
+RocketHideout_Elevator_EventScript_NeedKey::
+ msgbox RocketHideout_Elevator_Text_AppearsToNeedAKey
+ releaseall
+ end
+
+RocketHideout_Elevator_Text_AppearsToNeedAKey::
+ .string "It appears to need a key.$"
+
diff --git a/data/maps/Route10_Frlg/map.json b/data/maps/Route10_Frlg/map.json
new file mode 100644
index 000000000000..3a9da3fe2657
--- /dev/null
+++ b/data/maps/Route10_Frlg/map.json
@@ -0,0 +1,287 @@
+{
+ "id": "MAP_ROUTE10",
+ "name": "Route10_Frlg",
+ "layout": "LAYOUT_ROUTE10",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_10",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_LAVENDER_TOWN",
+ "offset": 0,
+ "direction": "down"
+ },
+ {
+ "map": "MAP_ROUTE9",
+ "offset": 0,
+ "direction": "left"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 7,
+ "y": 60,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route10_EventScript_Carol",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 4,
+ "y": 62,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route10_EventScript_Clark",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SUPER_NERD",
+ "x": 15,
+ "y": 70,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route10_EventScript_Herman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 4,
+ "y": 68,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route10_EventScript_Trent",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SUPER_NERD",
+ "x": 13,
+ "y": 44,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "Route10_EventScript_Mark",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 9,
+ "y": 27,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route10_EventScript_Heidi",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 10,
+ "y": 20,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 10,
+ "y": 22,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 10,
+ "y": 24,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_14"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 10,
+ "y": 26,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_15"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 19,
+ "elevation": 3,
+ "dest_map": "MAP_ROCK_TUNNEL_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 8,
+ "y": 57,
+ "elevation": 3,
+ "dest_map": "MAP_ROCK_TUNNEL_1F",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 7,
+ "y": 40,
+ "elevation": 3,
+ "dest_map": "MAP_POWER_PLANT",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 13,
+ "y": 20,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE10_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 37,
+ "elevation": 3,
+ "dest_map": "MAP_POWER_PLANT",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 15,
+ "y": 59,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route10_EventScript_SouthRockTunnelSign"
+ },
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 42,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route10_EventScript_PowerPlantSign"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 21,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route10_EventScript_NorthRockTunnelSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 10,
+ "y": 19,
+ "elevation": 0,
+ "item": "ITEM_SUPER_POTION",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE10_SUPER_POTION",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 12,
+ "y": 40,
+ "elevation": 3,
+ "item": "ITEM_MAX_ETHER",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE10_MAX_ETHER",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 6,
+ "y": 26,
+ "elevation": 3,
+ "item": "ITEM_CHERI_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE10_CHERI_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 17,
+ "y": 29,
+ "elevation": 3,
+ "item": "ITEM_PERSIM_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE10_PERSIM_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 20,
+ "y": 57,
+ "elevation": 3,
+ "item": "ITEM_NANAB_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE10_NANAB_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/Route10_Frlg/scripts.inc b/data/maps/Route10_Frlg/scripts.inc
new file mode 100644
index 000000000000..faa53ca9adbb
--- /dev/null
+++ b/data/maps/Route10_Frlg/scripts.inc
@@ -0,0 +1,104 @@
+Route10_Frlg_MapScripts::
+ .byte 0
+
+Route10_EventScript_Unused::
+ end
+
+Route10_EventScript_NorthRockTunnelSign::
+ msgbox Route10_Text_RockTunnelDetourToLavender, MSGBOX_SIGN
+ end
+
+Route10_EventScript_SouthRockTunnelSign::
+ msgbox Route10_Text_RockTunnel, MSGBOX_SIGN
+ end
+
+Route10_EventScript_PowerPlantSign::
+ msgbox Route10_Text_PowerPlant, MSGBOX_SIGN
+ end
+
+Route10_Text_MarkIntro::
+ .string "Wow, you came all the way here?\n"
+ .string "Maybe you're a POKéMANIAC, too?\l"
+ .string "Want to see my collection?$"
+
+Route10_Text_MarkDefeat::
+ .string "Humph.\n"
+ .string "I'm not angry!$"
+
+Route10_Text_MarkPostBattle::
+ .string "I have more rare POKéMON at home!$"
+
+Route10_Text_ClarkIntro::
+ .string "Ha-hahah-ah-ha!$"
+
+Route10_Text_ClarkDefeat::
+ .string "Ha-haha!\n"
+ .string "Not laughing!\l"
+ .string "Ha-hay fever! Haha-ha-choo!$"
+
+Route10_Text_ClarkPostBattle::
+ .string "Haha-ha-choo!\n"
+ .string "Ha-choo!\l"
+ .string "Snort! Snivel!$"
+
+Route10_Text_HermanIntro::
+ .string "Hi, kid!\n"
+ .string "Want to see my POKéMON?$"
+
+Route10_Text_HermanDefeat::
+ .string "Oh, no!\n"
+ .string "My POKéMON!$"
+
+Route10_Text_HermanPostBattle::
+ .string "I don't like you.\n"
+ .string "I don't like anyone better than me!$"
+
+Route10_Text_HeidiIntro::
+ .string "I've been out at a POKéMON GYM\n"
+ .string "a few times.\p"
+ .string "…But I always lose.$"
+
+Route10_Text_HeidiDefeat::
+ .string "Ohh!\n"
+ .string "After all my training!$"
+
+Route10_Text_HeidiPostBattle::
+ .string "I noticed some POKéMANIACS\n"
+ .string "prowling around.\p"
+ .string "Can you imagine? Them?\n"
+ .string "Up here in the mountains?$"
+
+Route10_Text_TrentIntro::
+ .string "Ah!\n"
+ .string "This mountain air is delicious!$"
+
+Route10_Text_TrentDefeat::
+ .string "That cleared my head!$"
+
+Route10_Text_TrentPostBattle::
+ .string "I feel bloated on mountain air!$"
+
+Route10_Text_CarolIntro::
+ .string "I'm feeling a bit faint.\n"
+ .string "I haven't hiked in some time.$"
+
+Route10_Text_CarolDefeat::
+ .string "I'm too tired.\n"
+ .string "I wasn't up for it.$"
+
+Route10_Text_CarolPostBattle::
+ .string "The POKéMON here in the mountains\n"
+ .string "are so chunky…\p"
+ .string "I wish there were pink POKéMON\n"
+ .string "with a floral pattern!$"
+
+Route10_Text_RockTunnelDetourToLavender::
+ .string "ROCK TUNNEL\n"
+ .string "Detour to LAVENDER TOWN$"
+
+Route10_Text_RockTunnel::
+ .string "ROCK TUNNEL$"
+
+Route10_Text_PowerPlant::
+ .string "POWER PLANT$"
+
diff --git a/data/maps/Route10_PokemonCenter_1F_Frlg/map.json b/data/maps/Route10_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..a793e98ca47a
--- /dev/null
+++ b/data/maps/Route10_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,123 @@
+{
+ "id": "MAP_ROUTE10_POKEMON_CENTER_1F",
+ "name": "Route10_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_10",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_ROUTE10_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route10_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 9,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route10_PokemonCenter_1F_EventScript_Gentleman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FAT_MAN_FRLG",
+ "x": 2,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route10_PokemonCenter_1F_EventScript_FatMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 14,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route10_PokemonCenter_1F_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 12,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route10_PokemonCenter_1F_EventScript_Aide",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE10",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE10",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 8,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE10",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_ROUTE10_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/Route10_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/Route10_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..4e9d19d21cb5
--- /dev/null
+++ b/data/maps/Route10_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,110 @@
+.equ REQUIRED_OWNED_MONS, 20
+
+Route10_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, Route10_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ .byte 0
+
+Route10_PokemonCenter_1F_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_ROUTE10_POKEMON_CENTER_1F
+ setrespawn HEAL_LOCATION_ROUTE10
+ end
+
+Route10_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+Route10_PokemonCenter_1F_EventScript_FatMan::
+ msgbox Route10_PokemonCenter_1F_Text_NuggetUselessSoldFor5000, MSGBOX_NPC
+ end
+
+Route10_PokemonCenter_1F_EventScript_Gentleman::
+ msgbox Route10_PokemonCenter_1F_Text_EveryTypeStrongerThanOthers, MSGBOX_NPC
+ end
+
+Route10_PokemonCenter_1F_EventScript_Youngster::
+ msgbox Route10_PokemonCenter_1F_Text_HeardGhostsHauntLavender, MSGBOX_NPC
+ end
+
+Route10_PokemonCenter_1F_EventScript_Aide::
+ lock
+ faceplayer
+ call Route10_PokemonCenter_1F_EventScript_GetAideRequestInfo
+ goto_if_set FLAG_GOT_EVERSTONE_FROM_OAKS_AIDE, Route10_PokemonCenter_1F_EventScript_AlreadyGotEverstone
+ msgbox Route10_PokemonCenter_1F_Text_GiveEverstoneIfCaught20Mons, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, Aide_EventScript_DeclineCheckMons
+ setvar VAR_0x8004, 0
+ specialvar VAR_RESULT, GetFrlgPokedexCount
+ buffernumberstring STR_VAR_3, VAR_0x8006
+ call Route10_PokemonCenter_1F_EventScript_GetAideRequestInfo
+ goto_if_lt VAR_0x8006, REQUIRED_OWNED_MONS, Aide_EventScript_HaventCaughtEnough
+ msgbox Route10_PokemonCenter_1F_Text_GreatHereYouGo
+ checkitemspace ITEM_EVERSTONE
+ goto_if_eq VAR_RESULT, FALSE, Aide_EventScript_NoRoomForItem
+ giveitem_msg Route10_PokemonCenter_1F_Text_ReceivedEverstoneFromAide, ITEM_EVERSTONE
+ setflag FLAG_GOT_EVERSTONE_FROM_OAKS_AIDE
+ msgbox Route10_PokemonCenter_1F_Text_ExplainEverstone
+ release
+ end
+
+Route10_PokemonCenter_1F_EventScript_AlreadyGotEverstone::
+ msgbox Route10_PokemonCenter_1F_Text_ExplainEverstone
+ release
+ end
+
+Route10_PokemonCenter_1F_EventScript_GetAideRequestInfo::
+ buffernumberstring STR_VAR_1, REQUIRED_OWNED_MONS
+ bufferitemname STR_VAR_2, ITEM_EVERSTONE
+ return
+
+Route10_PokemonCenter_1F_Text_EveryTypeStrongerThanOthers::
+ .string "The types of POKéMON match up\n"
+ .string "differently with each other.\p"
+ .string "Every type is stronger than some\n"
+ .string "types and weaker than others.$"
+
+Route10_PokemonCenter_1F_Text_NuggetUselessSoldFor5000::
+ .string "A NUGGET is totally useless.\n"
+ .string "So I sold it for ¥5000.$"
+
+Route10_PokemonCenter_1F_Text_HeardGhostsHauntLavender::
+ .string "I heard that ghosts haunt\n"
+ .string "LAVENDER TOWN.$"
+
+Route10_PokemonCenter_1F_Text_GiveEverstoneIfCaught20Mons::
+ .string "Oh… {PLAYER}!\n"
+ .string "I've been looking for you!\p"
+ .string "It's me, one of the ever-present\n"
+ .string "AIDES to PROF. OAK.\p"
+ .string "If your POKéDEX has complete data\n"
+ .string "on twenty species, I'm supposed to\l"
+ .string "give you a reward from PROF. OAK.\p"
+ .string "He entrusted me with this\n"
+ .string "EVERSTONE.\p"
+ .string "So, {PLAYER}, let me ask you.\p"
+ .string "Have you gathered data on at least\n"
+ .string "twenty kinds of POKéMON?$"
+
+Route10_PokemonCenter_1F_Text_GreatHereYouGo::
+ .string "Great! You have caught or owned\n"
+ .string "{STR_VAR_3} kinds of POKéMON!\p"
+ .string "Congratulations!\n"
+ .string "Here you go!$"
+
+Route10_PokemonCenter_1F_Text_ReceivedEverstoneFromAide::
+ .string "{PLAYER} received the EVERSTONE\n"
+ .string "from the AIDE.$"
+
+Route10_PokemonCenter_1F_Text_ExplainEverstone::
+ .string "Making POKéMON evolve certainly\n"
+ .string "can add to the POKéDEX.\p"
+ .string "However, at times, you may not\n"
+ .string "want a certain POKéMON to evolve.\p"
+ .string "In that case, give the EVERSTONE\n"
+ .string "to that POKéMON.\p"
+ .string "It will prevent evolution according\n"
+ .string "to the PROFESSOR.$"
+
diff --git a/data/maps/Route10_PokemonCenter_2F_Frlg/map.json b/data/maps/Route10_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..3db9e074400e
--- /dev/null
+++ b/data/maps/Route10_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_ROUTE10_POKEMON_CENTER_2F",
+ "name": "Route10_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_10",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_ROUTE10_POKEMON_CENTER_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/Route10_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/Route10_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..0c7a74326227
--- /dev/null
+++ b/data/maps/Route10_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+Route10_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+Route10_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+Route10_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+Route10_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/Route11_EastEntrance_1F_Frlg/map.json b/data/maps/Route11_EastEntrance_1F_Frlg/map.json
new file mode 100644
index 000000000000..addb1f19dfaf
--- /dev/null
+++ b/data/maps/Route11_EastEntrance_1F_Frlg/map.json
@@ -0,0 +1,87 @@
+{
+ "id": "MAP_ROUTE11_EAST_ENTRANCE_1F",
+ "name": "Route11_EastEntrance_1F_Frlg",
+ "layout": "LAYOUT_ENTRANCE_1F",
+ "music": "MUS_RG_VERMILLION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_11",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route11_EastEntrance_1F_EventScript_TopGuard",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 4,
+ "y": 10,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route11_EastEntrance_1F_EventScript_BottomGuard",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE11",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 1,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE11",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 11,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE11",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 11,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE11",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 9,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE11_EAST_ENTRANCE_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/Route11_EastEntrance_1F_Frlg/scripts.inc b/data/maps/Route11_EastEntrance_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..b94be6931f9d
--- /dev/null
+++ b/data/maps/Route11_EastEntrance_1F_Frlg/scripts.inc
@@ -0,0 +1,32 @@
+Route11_EastEntrance_1F_Frlg_MapScripts::
+ .byte 0
+
+Route11_EastEntrance_1F_EventScript_TopGuard::
+ msgbox Route11_EastEntrance_1F_Text_ManInLavenderRatesNames, MSGBOX_NPC
+ end
+
+Route11_EastEntrance_1F_EventScript_BottomGuard::
+ msgbox Route11_EastEntrance_1F_Text_RockTunnelToReachLavender, MSGBOX_NPC
+ end
+
+@ Unclear where this is originally from
+Route11_EastEntrance_1F_Text_BagIsFull::
+ .string "{PLAYER}{KUN}の バッグ\n"
+ .string "いっぱい みたい だね$"
+
+Route11_EastEntrance_1F_Text_ManInLavenderRatesNames::
+ .string "Don't you think it's hard to think\n"
+ .string "up good names for POKéMON?\p"
+ .string "Especially if you've caught a\n"
+ .string "whole bunch?\p"
+ .string "In LAVENDER TOWN, there's a man\n"
+ .string "who rates POKéMON nicknames.\p"
+ .string "He can even help you rename your\n"
+ .string "POKéMON, too.$"
+
+Route11_EastEntrance_1F_Text_RockTunnelToReachLavender::
+ .string "If you're aiming to reach LAVENDER\n"
+ .string "TOWN, take ROCK TUNNEL.\p"
+ .string "You can get to ROCK TUNNEL from\n"
+ .string "CERULEAN CITY.$"
+
diff --git a/data/maps/Route11_EastEntrance_2F_Frlg/map.json b/data/maps/Route11_EastEntrance_2F_Frlg/map.json
new file mode 100644
index 000000000000..bcd6a8671dff
--- /dev/null
+++ b/data/maps/Route11_EastEntrance_2F_Frlg/map.json
@@ -0,0 +1,76 @@
+{
+ "id": "MAP_ROUTE11_EAST_ENTRANCE_2F",
+ "name": "Route11_EastEntrance_2F_Frlg",
+ "layout": "LAYOUT_ENTRANCE_2F",
+ "music": "MUS_RG_VERMILLION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_11",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 7,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route11_EastEntrance_2F_EventScript_Turner",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 2,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route11_EastEntrance_2F_EventScript_Aide",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 10,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE11_EAST_ENTRANCE_1F",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route11_EastEntrance_2F_EventScript_LeftBinoculars"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route11_EastEntrance_2F_EventScript_RightBinoculars"
+ }
+ ]
+}
diff --git a/data/maps/Route11_EastEntrance_2F_Frlg/scripts.inc b/data/maps/Route11_EastEntrance_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..f4e526865a99
--- /dev/null
+++ b/data/maps/Route11_EastEntrance_2F_Frlg/scripts.inc
@@ -0,0 +1,138 @@
+.equ REQUIRED_CAUGHT_MONS, 30
+
+Route11_EastEntrance_2F_Frlg_MapScripts::
+ .byte 0
+
+Route11_EastEntrance_2F_EventScript_LeftBinoculars::
+ lockall
+ goto_if_set FLAG_WOKE_UP_ROUTE_12_SNORLAX, Route11_EastEntrance_2F_EventScript_LeftBinocularsSnorlaxGone
+ msgbox Route11_EastEntrance_2F_Text_BigMonAsleepOnRoad
+ releaseall
+ end
+
+Route11_EastEntrance_2F_EventScript_LeftBinocularsSnorlaxGone::
+ msgbox Route11_EastEntrance_2F_Text_WhatABreathtakingView
+ releaseall
+ end
+
+Route11_EastEntrance_2F_EventScript_RightBinoculars::
+ msgbox Route11_EastEntrance_2F_Text_RockTunnelGoodRouteToLavender, MSGBOX_SIGN
+ end
+
+Route11_EastEntrance_2F_EventScript_Turner::
+ lock
+ faceplayer
+ setvar VAR_0x8008, INGAME_TRADE_NIDORINOA
+ call EventScript_GetInGameTradeSpeciesInfo
+ goto_if_set FLAG_DID_NINA_TRADE, Route11_EastEntrance_2F_EventScript_AlreadyTraded
+ msgbox Trade_Text_LookingForMonWannaTradeForMon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, Route11_EastEntrance_2F_EventScript_DeclineTrade
+ call EventScript_ChooseMonForInGameTrade
+ goto_if_ge VAR_0x8004, PARTY_SIZE, Route11_EastEntrance_2F_EventScript_DeclineTrade
+ call EventScript_GetInGameTradeSpecies
+ goto_if_ne VAR_RESULT, VAR_0x8009, Route11_EastEntrance_2F_EventScript_NotRequestedMon
+ call EventScript_DoInGameTrade
+ msgbox Trade_Text_HeyThanks
+ setflag FLAG_DID_NINA_TRADE
+ release
+ end
+
+Route11_EastEntrance_2F_EventScript_DeclineTrade::
+ msgbox Trade_Text_AwwOhWell
+ release
+ end
+
+Route11_EastEntrance_2F_EventScript_NotRequestedMon::
+ bufferspeciesname STR_VAR_1, VAR_0x8009
+ msgbox Trade_Text_WhatThatsNoMon
+ release
+ end
+
+Route11_EastEntrance_2F_EventScript_AlreadyTraded::
+ msgbox Trade_Text_IsntMyOldMonGreat
+ release
+ end
+
+Route11_EastEntrance_2F_EventScript_Aide::
+ lock
+ faceplayer
+ call Route11_EastEntrance_2F_EventScript_GetAideRequestInfo
+ goto_if_set FLAG_GOT_ITEMFINDER, Route11_EastEntrance_2F_EventScript_AlreadyGotItemfinder
+ msgbox Route11_EastEntrance_2F_Text_GiveItemfinderIfCaught30, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, Aide_EventScript_DeclineCheckMons
+ setvar VAR_0x8004, 0
+ specialvar VAR_RESULT, GetFrlgPokedexCount
+ buffernumberstring STR_VAR_3, VAR_0x8006
+ call Route11_EastEntrance_2F_EventScript_GetAideRequestInfo
+ goto_if_lt VAR_0x8006, REQUIRED_CAUGHT_MONS, Aide_EventScript_HaventCaughtEnough
+ msgbox Route11_EastEntrance_2F_Text_GreatHereYouGo
+ checkitemspace ITEM_ITEMFINDER
+ goto_if_eq VAR_RESULT, FALSE, Aide_EventScript_NoRoomForItem
+ giveitem_msg Route11_EastEntrance_2F_Text_ReceivedItemfinderFromAide, ITEM_ITEMFINDER
+ setflag FLAG_GOT_ITEMFINDER
+ msgbox Route11_EastEntrance_2F_Text_ExplainItemfinder
+ release
+ end
+
+Route11_EastEntrance_2F_EventScript_AlreadyGotItemfinder::
+ msgbox Route11_EastEntrance_2F_Text_ExplainItemfinder
+ release
+ end
+
+Route11_EastEntrance_2F_EventScript_GetAideRequestInfo::
+ buffernumberstring STR_VAR_1, REQUIRED_CAUGHT_MONS
+ bufferitemname STR_VAR_2, ITEM_ITEMFINDER
+ return
+
+Route11_EastEntrance_2F_Text_GiveItemfinderIfCaught30::
+ .string "Hi! Remember me?\n"
+ .string "I'm one of PROF. OAK's AIDES.\p"
+ .string "If your POKéDEX has complete data\n"
+ .string "on {STR_VAR_1} species, I'm supposed to\l"
+ .string "give you a reward.\p"
+ .string "PROF. OAK entrusted me with the\n"
+ .string "{STR_VAR_2} for you.\p"
+ .string "So, {PLAYER}, let me ask you.\p"
+ .string "Have you gathered data on at least\n"
+ .string "{STR_VAR_1} kinds of POKéMON?$"
+
+Route11_EastEntrance_2F_Text_GreatHereYouGo::
+ .string "Great! You have caught or owned\n"
+ .string "{STR_VAR_3} kinds of POKéMON!\p"
+ .string "Congratulations!\n"
+ .string "Here you go!$"
+
+Route11_EastEntrance_2F_Text_ReceivedItemfinderFromAide::
+ .string "{PLAYER} received the {STR_VAR_2}\n"
+ .string "from the AIDE.$"
+
+Route11_EastEntrance_2F_Text_ExplainItemfinder::
+ .string "There are items on the ground that\n"
+ .string "may be hidden from view.\p"
+ .string "Use the ITEMFINDER to detect any\n"
+ .string "hidden items close to you.\p"
+ .string "The machine is a bit limited.\n"
+ .string "It can't pinpoint item locations.\p"
+ .string "What it does is show the direction\n"
+ .string "where the item is.\p"
+ .string "Use it to get your bearings, then\n"
+ .string "search the suspect area by hand.$"
+
+Route11_EastEntrance_2F_Text_BigMonAsleepOnRoad::
+ .string "Let's see what the binoculars have\n"
+ .string "to show…\p"
+ .string "A big POKéMON is asleep on a road!$"
+
+Route11_EastEntrance_2F_Text_WhatABreathtakingView::
+ .string "Let's see what the binoculars have\n"
+ .string "to show…\p"
+ .string "What a breathtaking view!$"
+
+Route11_EastEntrance_2F_Text_RockTunnelGoodRouteToLavender::
+ .string "Let's see what the binoculars have\n"
+ .string "to show…\p"
+ .string "To get to LAVENDER TOWN from\n"
+ .string "CERULEAN CITY…\p"
+ .string "ROCK TUNNEL appears to be a good\n"
+ .string "route to take.$"
+
diff --git a/data/maps/Route11_Frlg/map.json b/data/maps/Route11_Frlg/map.json
new file mode 100644
index 000000000000..92ffb436e917
--- /dev/null
+++ b/data/maps/Route11_Frlg/map.json
@@ -0,0 +1,257 @@
+{
+ "id": "MAP_ROUTE11",
+ "name": "Route11_Frlg",
+ "layout": "LAYOUT_ROUTE11",
+ "music": "MUS_RG_ROUTE11",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_11",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_VERMILION_CITY",
+ "offset": -10,
+ "direction": "left"
+ },
+ {
+ "map": "MAP_ROUTE12",
+ "offset": -60,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 19,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "Route11_EventScript_Eddie",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 16,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route11_EventScript_Hugo",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 31,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "Route11_EventScript_Dillon",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 28,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_LEFT_UP",
+ "movement_range_x": 8,
+ "movement_range_y": 4,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route11_EventScript_Dave",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 38,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route11_EventScript_Jasper",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 50,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route11_EventScript_Darian",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 42,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "Route11_EventScript_Braxton",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 50,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 4,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route11_EventScript_Yasu",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 57,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route11_EventScript_Dirk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 32,
+ "y": 18,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "6",
+ "script": "Route11_EventScript_Bernie",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 42,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route11_EventScript_ItemXDefend",
+ "flag": "FLAG_HIDE_ROUTE11_X_DEFEND"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 63,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route11_EventScript_ItemGreatBall",
+ "flag": "FLAG_HIDE_ROUTE11_GREAT_BALL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 13,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route11_EventScript_ItemAwakening",
+ "flag": "FLAG_HIDE_ROUTE11_AWAKENING"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_DIGLETTS_CAVE_SOUTH_ENTRANCE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 58,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE11_EAST_ENTRANCE_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 65,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE11_EAST_ENTRANCE_1F",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route11_EventScript_DiglettsCaveSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 58,
+ "y": 5,
+ "elevation": 0,
+ "item": "ITEM_ESCAPE_ROPE",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE11_ESCAPE_ROPE",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/Route11_Frlg/scripts.inc b/data/maps/Route11_Frlg/scripts.inc
new file mode 100644
index 000000000000..8ea9da93da68
--- /dev/null
+++ b/data/maps/Route11_Frlg/scripts.inc
@@ -0,0 +1,120 @@
+Route11_Frlg_MapScripts::
+ .byte 0
+
+Route11_EventScript_DiglettsCaveSign::
+ msgbox Route11_Text_DiglettsCave, MSGBOX_SIGN
+ end
+
+Route11_Text_HugoIntro::
+ .string "Win, lose, or draw!$"
+
+Route11_Text_HugoDefeat::
+ .string "Atcha!\n"
+ .string "Didn't go my way!$"
+
+Route11_Text_HugoPostBattle::
+ .string "POKéMON is life!\n"
+ .string "And to live is to play games!$"
+
+Route11_Text_JasperIntro::
+ .string "Competition!\n"
+ .string "I can't get enough!$"
+
+Route11_Text_JasperDefeat::
+ .string "I had a chance!$"
+
+Route11_Text_JasperPostBattle::
+ .string "You can't be a coward in the world\n"
+ .string "of POKéMON!$"
+
+Route11_Text_EddieIntro::
+ .string "Let's go, but don't cheat!$"
+
+Route11_Text_EddieDefeat::
+ .string "Huh?\n"
+ .string "That's not right!$"
+
+Route11_Text_EddiePostBattle::
+ .string "I did my best.\n"
+ .string "I have no regrets.$"
+
+Route11_Text_BraxtonIntro::
+ .string "Careful!\n"
+ .string "I'm laying down some cables!$"
+
+Route11_Text_BraxtonDefeat::
+ .string "That was electric!$"
+
+Route11_Text_BraxtonPostBattle::
+ .string "Spread the word to save energy!$"
+
+Route11_Text_DillonIntro::
+ .string "I just became a TRAINER.\n"
+ .string "But, I think I can win.$"
+
+Route11_Text_DillonDefeat::
+ .string "My POKéMON couldn't win…\n"
+ .string "Haven't they grown enough?$"
+
+Route11_Text_DillonPostBattle::
+ .string "What now?\n"
+ .string "Leave me alone!$"
+
+Route11_Text_DirkIntro::
+ .string "Fwahaha!\n"
+ .string "I have never lost!$"
+
+Route11_Text_DirkDefeat::
+ .string "My first loss!$"
+
+Route11_Text_DirkPostBattle::
+ .string "You were just lucky, that's all.$"
+
+Route11_Text_DarianIntro::
+ .string "I have never won before…$"
+
+Route11_Text_DarianDefeat::
+ .string "I saw this coming…$"
+
+Route11_Text_DarianPostBattle::
+ .string "I was unlucky, as always.$"
+
+Route11_Text_YasuIntro::
+ .string "I'm the best in my class.\n"
+ .string "I train every morning.$"
+
+Route11_Text_YasuDefeat::
+ .string "Darn!\n"
+ .string "My POKéMON need to be stronger!$"
+
+Route11_Text_YasuPostBattle::
+ .string "There's a fat POKéMON that comes\n"
+ .string "down from the mountains.\p"
+ .string "I bet it'd be strong if you can\n"
+ .string "catch it.$"
+
+Route11_Text_BernieIntro::
+ .string "Watch out for live wires!$"
+
+Route11_Text_BernieDefeat::
+ .string "Whoa!\n"
+ .string "You spark plug!$"
+
+Route11_Text_BerniePostBattle::
+ .string "Well, better get back to work.$"
+
+Route11_Text_DaveIntro::
+ .string "I raised my POKéMON carefully.\n"
+ .string "They should be ready by now!$"
+
+Route11_Text_DaveDefeat::
+ .string "Bye-bye!\n"
+ .string "Thank you, and good-bye!$"
+
+Route11_Text_DavePostBattle::
+ .string "Tch…\n"
+ .string "I better go find stronger ones!$"
+
+Route11_Text_DiglettsCave::
+ .string "DIGLETT'S CAVE$"
+
diff --git a/data/maps/Route12_FishingHouse_Frlg/map.json b/data/maps/Route12_FishingHouse_Frlg/map.json
new file mode 100644
index 000000000000..9057b590c32a
--- /dev/null
+++ b/data/maps/Route12_FishingHouse_Frlg/map.json
@@ -0,0 +1,68 @@
+{
+ "id": "MAP_ROUTE12_FISHING_HOUSE",
+ "name": "Route12_FishingHouse_Frlg",
+ "layout": "LAYOUT_HOUSE4_FRLG",
+ "music": "MUS_RG_CELADON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_12",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route12_FishingHouse_EventScript_FishingGuruBrother",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 8,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE12",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE12",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 4,
+ "y": 8,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE12",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route12_FishingHouse_EventScript_MagikarpRecordSign"
+ }
+ ]
+}
diff --git a/data/maps/Route12_FishingHouse_Frlg/scripts.inc b/data/maps/Route12_FishingHouse_Frlg/scripts.inc
new file mode 100644
index 000000000000..1ca7a1d9cd9a
--- /dev/null
+++ b/data/maps/Route12_FishingHouse_Frlg/scripts.inc
@@ -0,0 +1,189 @@
+Route12_FishingHouse_Frlg_MapScripts::
+ .byte 0
+
+Route12_FishingHouse_EventScript_FishingGuruBrother::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_SUPER_ROD, Route12_FishingHouse_EventScript_CheckMagikarpRecord
+ msgbox Route12_FishingHouse_Text_DoYouLikeToFish, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, Route12_FishingHouse_EventScript_GiveSuperRod
+ msgbox Route12_FishingHouse_Text_OhThatsDisappointing
+ release
+ end
+
+Route12_FishingHouse_EventScript_GiveSuperRod::
+ checkitemspace ITEM_SUPER_ROD
+ goto_if_eq VAR_RESULT, FALSE, Route12_FishingHouse_EventScript_NoRoomForSuperRod
+ additem ITEM_SUPER_ROD
+ msgbox Route12_FishingHouse_Text_TakeThisAndFish
+ msgreceiveditem Route12_FishingHouse_Text_ReceivedSuperRod, ITEM_SUPER_ROD
+ setflag FLAG_GOT_SUPER_ROD
+ msgbox Route12_FishingHouse_Text_IfYouCatchBigMagikarpShowMe
+ release
+ end
+
+Route12_FishingHouse_EventScript_NoRoomForSuperRod::
+ msgbox Route12_FishingHouse_Text_NoRoomForGift
+ release
+ end
+
+Route12_FishingHouse_EventScript_CheckMagikarpRecord::
+ setvar VAR_0x8004, SPECIES_MAGIKARP
+ specialvar VAR_RESULT, DoesPlayerPartyContainSpecies
+ goto_if_eq VAR_RESULT, FALSE, Route12_FishingHouse_EventScript_NoMagikarpInParty
+ special GetMagikarpSizeRecordInfo
+ msgbox Route12_FishingHouse_Text_OhMagikarpAllowMeToSee
+ special ChoosePartyMon
+ waitstate
+ copyvar VAR_RESULT, VAR_0x8004
+ goto_if_ge VAR_RESULT, PARTY_SIZE, Route12_FishingHouse_EventScript_CancelShowMon
+ special CompareMagikarpSize
+ goto_if_eq VAR_RESULT, 1, Route12_FishingHouse_EventScript_NotMagikarp
+ goto_if_eq VAR_RESULT, 2, Route12_FishingHouse_EventScript_NotRecordMagikarp
+ goto_if_eq VAR_RESULT, 3, Route12_FishingHouse_EventScript_NewRecordMagikarp
+ goto_if_eq VAR_RESULT, 4, Route12_FishingHouse_EventScript_TieRecordMagikarp
+ release
+ end
+
+Route12_FishingHouse_EventScript_NoMagikarpInParty::
+ msgbox Route12_FishingHouse_Text_TryFishingBringMeMagikarp
+ release
+ end
+
+Route12_FishingHouse_EventScript_CancelShowMon::
+ release
+ end
+
+Route12_FishingHouse_EventScript_NotMagikarp::
+ msgbox Route12_FishingHouse_Text_DoesntLookLikeMagikarp
+ release
+ end
+
+Route12_FishingHouse_EventScript_NotRecordMagikarp::
+ goto_if_unset FLAG_GOT_RECORD_SETTING_MAGIKARP, Route12_FishingHouse_EventScript_NewRecordMagikarp
+ msgbox Route12_FishingHouse_Text_HmmXInchesDoesntMeasureUp
+ release
+ end
+
+Route12_FishingHouse_EventScript_TieRecordMagikarp::
+ goto_if_unset FLAG_GOT_RECORD_SETTING_MAGIKARP, Route12_FishingHouse_EventScript_NewRecordMagikarp
+ msgbox Route12_FishingHouse_Text_HuhXInchesSameSizeAsLast
+ release
+ end
+
+Route12_FishingHouse_EventScript_NewRecordMagikarp::
+ setflag FLAG_GOT_RECORD_SETTING_MAGIKARP
+ msgbox Route12_FishingHouse_Text_WhoaXInchesTakeThis
+ giveitem ITEM_NET_BALL
+ goto_if_eq VAR_RESULT, FALSE, Route12_FishingHouse_EventScript_NoRoomForNetBall
+ msgbox Route12_FishingHouse_Text_LookForwardToGreaterRecords
+ release
+ end
+
+Route12_FishingHouse_EventScript_NoRoomForNetBall::
+ msgbox Route12_FishingHouse_Text_NoRoomForGift
+ release
+ end
+
+Route12_FishingHouse_EventScript_MagikarpRecordSign::
+ lockall
+ goto_if_set FLAG_GOT_RECORD_SETTING_MAGIKARP, Route12_FishingHouse_EventScript_MagikarpRecordSignRecordSet
+ msgbox Route12_FishingHouse_Text_BlankChartOfSomeSort
+ releaseall
+ end
+
+Route12_FishingHouse_EventScript_MagikarpRecordSignRecordSet::
+ special GetMagikarpSizeRecordInfo
+ msgbox Route12_FishingHouse_Text_MostGiganticMagikarpXInches
+ releaseall
+ end
+
+Route12_FishingHouse_Text_DoYouLikeToFish::
+ .string "I'm the FISHING GURU's younger\n"
+ .string "brother.\p"
+ .string "I simply looove fishing!\n"
+ .string "I can't bear to go without.\p"
+ .string "Tell me, do you like to fish?$"
+
+Route12_FishingHouse_Text_TakeThisAndFish::
+ .string "Grand! I like your style.\n"
+ .string "I think we can be friends.\p"
+ .string "Take this and fish, young friend!$"
+
+Route12_FishingHouse_Text_ReceivedSuperRod::
+ .string "{PLAYER} received a SUPER ROD from\n"
+ .string "the FISHING GURU's brother.$"
+
+Route12_FishingHouse_Text_IfYouCatchBigMagikarpShowMe::
+ .string "Fishing is a way of life!\n"
+ .string "It is like the finest poetry.\p"
+ .string "From the seas to rivers, go out\n"
+ .string "and land the big one, my friend.\p"
+ .string "Now, I have a request.\p"
+ .string "If you catch a big MAGIKARP \n"
+ .string "with that ROD, I want to see it.\p"
+ .string "As much as I love to fish, I also\n"
+ .string "love seeing gigantic MAGIKARP.$"
+
+Route12_FishingHouse_Text_OhThatsDisappointing::
+ .string "Oh…\n"
+ .string "That's so disappointing…$"
+
+Route12_FishingHouse_Text_TryFishingBringMeMagikarp::
+ .string "Hello there, {PLAYER}!\n"
+ .string "Have you been fishing?\p"
+ .string "Try fishing with the SUPER ROD in\n"
+ .string "any body of water.\p"
+ .string "You'll find different POKéMON in\n"
+ .string "different places.\p"
+ .string "Oh, and don't forget to bring me\n"
+ .string "gigantic MAGIKARP.$"
+
+Route12_FishingHouse_Text_OhMagikarpAllowMeToSee::
+ .string "Oh? {PLAYER}?\n"
+ .string "Why, if it isn't a MAGIKARP!\p"
+ .string "Allow me to see it, quick!$"
+
+Route12_FishingHouse_Text_WhoaXInchesTakeThis::
+ .string "… … …Whoa!\n"
+ .string "{STR_VAR_2} inches!\p"
+ .string "You have a rare appreciation for\n"
+ .string "the fine, poetic aspects of fishing!\p"
+ .string "You must take this.\n"
+ .string "I insist!$"
+
+Route12_FishingHouse_Text_LookForwardToGreaterRecords::
+ .string "I'll look forward to seeing greater\n"
+ .string "records from you!$"
+
+Route12_FishingHouse_Text_HuhXInchesSameSizeAsLast::
+ .string "Huh?\n"
+ .string "{STR_VAR_2} inches?\p"
+ .string "This is the same size as the one\n"
+ .string "I saw before.$"
+
+Route12_FishingHouse_Text_HmmXInchesDoesntMeasureUp::
+ .string "Hmm…\n"
+ .string "This one is {STR_VAR_2} inches long.\p"
+ .string "It doesn't measure up to the\n"
+ .string "{STR_VAR_3}-inch one you brought before.$"
+
+Route12_FishingHouse_Text_DoesntLookLikeMagikarp::
+ .string "Uh… That doesn't look much like\n"
+ .string "a MAGIKARP.$"
+
+Route12_FishingHouse_Text_NoRoomForGift::
+ .string "Oh, no!\p"
+ .string "I had a gift for you, but you have\n"
+ .string "no room for it.$"
+
+Route12_FishingHouse_Text_MostGiganticMagikarpXInches::
+ .string "The most gigantic MAGIKARP\n"
+ .string "I have ever witnessed…\p"
+ .string "{STR_VAR_3} inches!$"
+
+Route12_FishingHouse_Text_BlankChartOfSomeSort::
+ .string "It's a blank chart of some sort.\p"
+ .string "It has spaces for writing in\n"
+ .string "records of some kind.$"
+
diff --git a/data/maps/Route12_Frlg/map.json b/data/maps/Route12_Frlg/map.json
new file mode 100644
index 000000000000..1e9f49e28bc8
--- /dev/null
+++ b/data/maps/Route12_Frlg/map.json
@@ -0,0 +1,311 @@
+{
+ "id": "MAP_ROUTE12",
+ "name": "Route12_Frlg",
+ "layout": "LAYOUT_ROUTE12",
+ "music": "MUS_RG_ROUTE11",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_12",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_LAVENDER_TOWN",
+ "offset": 0,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_ROUTE13",
+ "offset": -48,
+ "direction": "down"
+ },
+ {
+ "map": "MAP_ROUTE11",
+ "offset": 60,
+ "direction": "left"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 17,
+ "y": 32,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route12_EventScript_Ned",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 9,
+ "y": 40,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route12_EventScript_Chip",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 16,
+ "y": 47,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "Route12_EventScript_Hank",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 13,
+ "y": 59,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route12_EventScript_Elliot",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SNORLAX",
+ "x": 14,
+ "y": 70,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route12_EventScript_Snorlax",
+ "flag": "FLAG_HIDE_ROUTE_12_SNORLAX"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 13,
+ "y": 92,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_DOWN_RIGHT",
+ "movement_range_x": 4,
+ "movement_range_y": 4,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route12_EventScript_Luca",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CAMPER_FRLG",
+ "x": 10,
+ "y": 99,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route12_EventScript_Justin",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 18,
+ "y": 108,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route12_EventScript_Andrew",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 11,
+ "y": 100,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 18,
+ "y": 36,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route12_EventScript_ItemTM48",
+ "flag": "FLAG_HIDE_ROUTE12_TM48"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 9,
+ "y": 101,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route12_EventScript_ItemIron",
+ "flag": "FLAG_HIDE_ROUTE12_IRON"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY_FRLG",
+ "x": 19,
+ "y": 64,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route12_EventScript_Gia",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 19,
+ "y": 63,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route12_EventScript_Jes",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 12,
+ "y": 111,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_13"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 12,
+ "y": 86,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE12_FISHING_HOUSE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 14,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE12_NORTH_ENTRANCE_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 15,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE12_NORTH_ENTRANCE_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 14,
+ "y": 21,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE12_NORTH_ENTRANCE_1F",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 17,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route12_EventScript_RouteSign"
+ },
+ {
+ "type": "sign",
+ "x": 15,
+ "y": 69,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route12_EventScript_FishingSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 18,
+ "y": 57,
+ "elevation": 3,
+ "item": "ITEM_HYPER_POTION",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE12_HYPER_POTION",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 14,
+ "y": 70,
+ "elevation": 3,
+ "item": "ITEM_LEFTOVERS",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE12_LEFTOVERS",
+ "quantity": 1,
+ "underfoot": true
+ },
+ {
+ "type": "hidden_item",
+ "x": 9,
+ "y": 116,
+ "elevation": 3,
+ "item": "ITEM_RARE_CANDY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE12_RARE_CANDY",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/Route12_Frlg/scripts.inc b/data/maps/Route12_Frlg/scripts.inc
new file mode 100644
index 000000000000..c74b5c1a7793
--- /dev/null
+++ b/data/maps/Route12_Frlg/scripts.inc
@@ -0,0 +1,202 @@
+Route12_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, Route12_OnResume
+ .byte 0
+
+Route12_OnResume::
+ call_if_set FLAG_SYS_CTRL_OBJ_DELETE, Route12_EventScript_TryRemoveSnorlax
+ end
+
+Route12_EventScript_TryRemoveSnorlax::
+ removeobject VAR_LAST_TALKED
+ return
+
+Route12_EventScript_Snorlax::
+ lock
+ faceplayer
+ goto_if_unset FLAG_GOT_POKE_FLUTE, Route12_EventScript_SnorlaxNoPokeFlute
+ msgbox Text_WantToUsePokeFlute, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, Route12_EventScript_DontUsePokeFlute
+ call EventScript_AwakenSnorlax
+ setwildbattle SPECIES_SNORLAX, 30
+ waitse
+ playmoncry SPECIES_SNORLAX, CRY_MODE_ENCOUNTER
+ delay 40
+ waitmoncry
+ setflag FLAG_HIDE_ROUTE_12_SNORLAX
+ setflag FLAG_SYS_CTRL_OBJ_DELETE
+ setflag FLAG_WOKE_UP_ROUTE_12_SNORLAX
+ dowildbattle
+ clearflag FLAG_SYS_CTRL_OBJ_DELETE
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_eq VAR_RESULT, B_OUTCOME_WON, Route12_EventScript_FoughtSnorlax
+ goto_if_eq VAR_RESULT, B_OUTCOME_RAN, Route12_EventScript_FoughtSnorlax
+ goto_if_eq VAR_RESULT, B_OUTCOME_PLAYER_TELEPORTED, Route12_EventScript_FoughtSnorlax
+ release
+ end
+
+Route12_EventScript_DontUsePokeFlute::
+ release
+ end
+
+Route12_EventScript_FoughtSnorlax::
+ msgbox Text_SnorlaxReturnedToMountains
+ release
+ end
+
+Route12_EventScript_SnorlaxNoPokeFlute::
+ msgbox Route12_Text_MonSprawledOutInSlumber
+ release
+ end
+
+Route12_EventScript_RouteSign::
+ msgbox Route12_Text_RouteSign, MSGBOX_SIGN
+ end
+
+Route12_EventScript_FishingSign::
+ msgbox Route12_Text_SportfishingArea, MSGBOX_SIGN
+ end
+
+Route12_Text_MonSprawledOutInSlumber::
+ .string "A POKéMON is sprawled out in\n"
+ .string "a deep and comfortable slumber.$"
+
+Text_SnorlaxWokeUp::
+ .string "SNORLAX woke up!\p"
+ .string "It attacked in a grumpy rage!$"
+
+Text_SnorlaxReturnedToMountains::
+ .string "SNORLAX calmed down.\n"
+ .string "It gave a huge yawn…\l"
+ .string "And returned to the mountains.$"
+
+Text_WantToUsePokeFlute::
+ .string "Want to use the POKé FLUTE?$"
+
+Text_PlayedPokeFlute::
+ .string "{PLAYER} played the POKé FLUTE.$"
+
+Route12_Text_NedIntro::
+ .string "Yeah!\n"
+ .string "I got a bite here!$"
+
+Route12_Text_NedDefeat::
+ .string "Tch!\n"
+ .string "Just a small fry…$"
+
+Route12_Text_NedPostBattle::
+ .string "Hang on!\n"
+ .string "My line's snagged!$"
+
+Route12_Text_ChipIntro::
+ .string "Be patient.\n"
+ .string "Fishing is a waiting game.$"
+
+Route12_Text_ChipDefeat::
+ .string "That one got away!$"
+
+Route12_Text_ChipPostBattle::
+ .string "With a better ROD, I could catch\n"
+ .string "better POKéMON…$"
+
+Route12_Text_JustinIntro::
+ .string "I'm searching for a MOON STONE.\n"
+ .string "Have you found one?$"
+
+Route12_Text_JustinDefeat::
+ .string "Oww!$"
+
+Route12_Text_JustinPostBattle::
+ .string "I could have made my POKéMON\n"
+ .string "evolve with a MOON STONE.\p"
+ .string "I would have won then, I bet.$"
+
+Route12_Text_LucaIntro::
+ .string "Electricity is my specialty.\p"
+ .string "I don't know a thing about POKéMON\n"
+ .string "of the sea, though.$"
+
+Route12_Text_LucaDefeat::
+ .string "Unplugged!$"
+
+Route12_Text_LucaPostBattle::
+ .string "Water conducts electricity, so you\n"
+ .string "should zap sea POKéMON.$"
+
+Route12_Text_HankIntro::
+ .string "The FISHING FOOL versus POKéMON\n"
+ .string "KID!$"
+
+Route12_Text_HankDefeat::
+ .string "Touch too much!$"
+
+Route12_Text_HankPostBattle::
+ .string "I guess you get to be good at\n"
+ .string "what you like.\p"
+ .string "Well, you beat me at POKéMON,\n"
+ .string "but you can't top me at fishing.$"
+
+Route12_Text_ElliotIntro::
+ .string "I love fishing, don't get me wrong.\p"
+ .string "But it'd be best if I also had more\n"
+ .string "work.$"
+
+Route12_Text_ElliotDefeat::
+ .string "It's not easy…$"
+
+Route12_Text_ElliotPostBattle::
+ .string "It's all right.\n"
+ .string "Losing doesn't bug me anymore.$"
+
+Route12_Text_AndrewIntro::
+ .string "What's catching?\p"
+ .string "You never know what you could\n"
+ .string "catch!$"
+
+Route12_Text_AndrewDefeat::
+ .string "Lost it!$"
+
+Route12_Text_AndrewPostBattle::
+ .string "What, MAGIKARP?\p"
+ .string "I catch them all the time, sure.\n"
+ .string "But, boy are they wimpy.$"
+
+Route12_Text_RouteSign::
+ .string "ROUTE 12 \n"
+ .string "North to LAVENDER$"
+
+Route12_Text_SportfishingArea::
+ .string "SPORTFISHING AREA$"
+
+Route12_Text_JesIntro::
+ .string "JES: If I win, I'm going to\n"
+ .string "propose to GIA.$"
+
+Route12_Text_JesDefeat::
+ .string "JES: Oh, please, why couldn't you\n"
+ .string "let us win?$"
+
+Route12_Text_JesPostBattle::
+ .string "JES: Oh, GIA, forgive me,\n"
+ .string "my love!$"
+
+Route12_Text_JesNotEnoughMons::
+ .string "JES: GIA and I, we'll be\n"
+ .string "together forever.\p"
+ .string "We won't battle unless you have\n"
+ .string "two POKéMON of your own.$"
+
+Route12_Text_GiaIntro::
+ .string "GIA: Hey, JES…\p"
+ .string "If we win, I'll marry you!$"
+
+Route12_Text_GiaDefeat::
+ .string "GIA: Oh, but why?$"
+
+Route12_Text_GiaPostBattle::
+ .string "GIA: JES, you silly!\n"
+ .string "You ruined this!$"
+
+Route12_Text_GiaNotEnoughMons::
+ .string "GIA: I can't bear to battle\n"
+ .string "without my JES!\p"
+ .string "Don't you have one more POKéMON?$"
diff --git a/data/maps/Route12_NorthEntrance_1F_Frlg/map.json b/data/maps/Route12_NorthEntrance_1F_Frlg/map.json
new file mode 100644
index 000000000000..62c3894f8f24
--- /dev/null
+++ b/data/maps/Route12_NorthEntrance_1F_Frlg/map.json
@@ -0,0 +1,73 @@
+{
+ "id": "MAP_ROUTE12_NORTH_ENTRANCE_1F",
+ "name": "Route12_NorthEntrance_1F_Frlg",
+ "layout": "LAYOUT_ROUTE12_NORTH_ENTRANCE_1F",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_12",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 1,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route12_NorthEntrance_1F_EventScript_Guard",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE12",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 6,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE12",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 5,
+ "y": 11,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE12",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 6,
+ "y": 11,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE12",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 8,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE12_NORTH_ENTRANCE_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/Route12_NorthEntrance_1F_Frlg/scripts.inc b/data/maps/Route12_NorthEntrance_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..8620cca46b70
--- /dev/null
+++ b/data/maps/Route12_NorthEntrance_1F_Frlg/scripts.inc
@@ -0,0 +1,11 @@
+Route12_NorthEntrance_1F_Frlg_MapScripts::
+ .byte 0
+
+Route12_NorthEntrance_1F_EventScript_Guard::
+ msgbox Route12_NorthEntrance_1F_Text_LookoutSpotUpstairs, MSGBOX_NPC
+ end
+
+Route12_NorthEntrance_1F_Text_LookoutSpotUpstairs::
+ .string "There's a lookout spot upstairs.\n"
+ .string "The view is magnificent.$"
+
diff --git a/data/maps/Route12_NorthEntrance_2F_Frlg/map.json b/data/maps/Route12_NorthEntrance_2F_Frlg/map.json
new file mode 100644
index 000000000000..8ff0bc6ad56e
--- /dev/null
+++ b/data/maps/Route12_NorthEntrance_2F_Frlg/map.json
@@ -0,0 +1,62 @@
+{
+ "id": "MAP_ROUTE12_NORTH_ENTRANCE_2F",
+ "name": "Route12_NorthEntrance_2F_Frlg",
+ "layout": "LAYOUT_ENTRANCE_2F",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_12",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 7,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route12_NorthEntrance_2F_EventScript_Lass",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 10,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE12_NORTH_ENTRANCE_1F",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route12_NorthEntrance_2F_EventScript_LeftBinoculars"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route12_NorthEntrance_2F_EventScript_RightBinoculars"
+ }
+ ]
+}
diff --git a/data/maps/Route12_NorthEntrance_2F_Frlg/scripts.inc b/data/maps/Route12_NorthEntrance_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..4786ee1c4ea2
--- /dev/null
+++ b/data/maps/Route12_NorthEntrance_2F_Frlg/scripts.inc
@@ -0,0 +1,80 @@
+Route12_NorthEntrance_2F_Frlg_MapScripts::
+ .byte 0
+
+Route12_NorthEntrance_2F_EventScript_LeftBinoculars::
+ msgbox Route12_NorthEntrance_2F_Text_TheresManFishing, MSGBOX_SIGN
+ end
+
+Route12_NorthEntrance_2F_EventScript_RightBinoculars::
+ msgbox Route12_NorthEntrance_2F_Text_ItsPokemonTower, MSGBOX_SIGN
+ end
+
+Route12_NorthEntrance_2F_EventScript_Lass::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_TM27, Route12_NorthEntrance_2F_EventScript_ExplainTM27
+ checkplayergender
+ call_if_eq VAR_RESULT, MALE, Route12_NorthEntrance_2F_EventScript_TakeTMMale
+ call_if_eq VAR_RESULT, FEMALE, Route12_NorthEntrance_2F_EventScript_TakeTMFemale
+ checkitemspace ITEM_TM27
+ goto_if_eq VAR_RESULT, FALSE, Route12_NorthEntrance_2F_EventScript_NoRoomForTM27
+ giveitem_msg Route12_NorthEntrance_2F_Text_ReceivedTM27FromLittleGirl, ITEM_TM27
+ msgbox Route12_NorthEntrance_2F_Text_ExplainTM27
+ setflag FLAG_GOT_TM27
+ release
+ end
+
+Route12_NorthEntrance_2F_EventScript_TakeTMMale::
+ msgbox Route12_NorthEntrance_2F_Text_TakeTMDontNeedAnymoreMale
+ return
+
+Route12_NorthEntrance_2F_EventScript_TakeTMFemale::
+ msgbox Route12_NorthEntrance_2F_Text_TakeTMDontNeedAnymoreFemale
+ return
+
+Route12_NorthEntrance_2F_EventScript_NoRoomForTM27::
+ msgbox Route12_NorthEntrance_2F_Text_DontHaveRoomForThis
+ release
+ end
+
+Route12_NorthEntrance_2F_EventScript_ExplainTM27::
+ msgbox Route12_NorthEntrance_2F_Text_ExplainTM27
+ release
+ end
+
+@ Male and female text identical, differ (presumably) in JP
+Route12_NorthEntrance_2F_Text_TakeTMDontNeedAnymoreMale::
+ .string "My POKéMON's ashes are stored in\n"
+ .string "POKéMON TOWER.\p"
+ .string "You can have this TM.\n"
+ .string "I don't need it anymore…$"
+
+Route12_NorthEntrance_2F_Text_TakeTMDontNeedAnymoreFemale::
+ .string "My POKéMON's ashes are stored in\n"
+ .string "POKéMON TOWER.\p"
+ .string "You can have this TM.\n"
+ .string "I don't need it anymore…$"
+
+Route12_NorthEntrance_2F_Text_ReceivedTM27FromLittleGirl::
+ .string "{PLAYER} received TM27\n"
+ .string "from the little girl.$"
+
+Route12_NorthEntrance_2F_Text_ExplainTM27::
+ .string "TM27 is a move called RETURN…\p"
+ .string "If you treat your POKéMON good,\n"
+ .string "it will return your love by working\l"
+ .string "its hardest in battle.$"
+
+Route12_NorthEntrance_2F_Text_DontHaveRoomForThis::
+ .string "You don't have room for this.$"
+
+Route12_NorthEntrance_2F_Text_TheresManFishing::
+ .string "Let's see what the binoculars have\n"
+ .string "to show…\p"
+ .string "There's a man fishing!$"
+
+Route12_NorthEntrance_2F_Text_ItsPokemonTower::
+ .string "Let's see what the binoculars have\n"
+ .string "to show…\p"
+ .string "It's POKéMON TOWER!$"
+
diff --git a/data/maps/Route13_Frlg/map.json b/data/maps/Route13_Frlg/map.json
new file mode 100644
index 000000000000..534a02eec22c
--- /dev/null
+++ b/data/maps/Route13_Frlg/map.json
@@ -0,0 +1,223 @@
+{
+ "id": "MAP_ROUTE13",
+ "name": "Route13_Frlg",
+ "layout": "LAYOUT_ROUTE13",
+ "music": "MUS_RG_ROUTE11",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_13",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE12",
+ "offset": 48,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_ROUTE14",
+ "offset": 0,
+ "direction": "left"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 62,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route13_EventScript_Alma",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 63,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route13_EventScript_Sebastian",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 54,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route13_EventScript_Susie",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY_FRLG",
+ "x": 42,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route13_EventScript_Sheila",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY_FRLG",
+ "x": 43,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route13_EventScript_Lola",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 35,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route13_EventScript_Valerie",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 29,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route13_EventScript_Gwen",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 9,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route13_EventScript_Robert",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 16,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route13_EventScript_Perry",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 14,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route13_EventScript_Jared",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 44,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ }
+ ],
+ "warp_events": [],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 41,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route13_EventScript_RouteSign"
+ },
+ {
+ "type": "sign",
+ "x": 37,
+ "y": 6,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route13_EventScript_TrainerTips2"
+ },
+ {
+ "type": "sign",
+ "x": 21,
+ "y": 14,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route13_EventScript_TrainerTips1"
+ },
+ {
+ "type": "hidden_item",
+ "x": 23,
+ "y": 14,
+ "elevation": 3,
+ "item": "ITEM_PP_UP",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE13_PP_UP",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/Route13_Frlg/scripts.inc b/data/maps/Route13_Frlg/scripts.inc
new file mode 100644
index 000000000000..3c24222f2699
--- /dev/null
+++ b/data/maps/Route13_Frlg/scripts.inc
@@ -0,0 +1,143 @@
+Route13_Frlg_MapScripts::
+ .byte 0
+
+Route13_EventScript_TrainerTips1::
+ msgbox Route13_Text_LookToLeftOfThatPost, MSGBOX_SIGN
+ end
+
+Route13_EventScript_TrainerTips2::
+ msgbox Route13_Text_SelectToSwitchItems, MSGBOX_SIGN
+ end
+
+Route13_EventScript_RouteSign::
+ msgbox Route13_Text_RouteSign, MSGBOX_SIGN
+ end
+
+Route13_Text_SebastianIntro::
+ .string "My bird POKéMON want to battle\n"
+ .string "with you!$"
+
+Route13_Text_SebastianDefeat::
+ .string "My PIDGEY and PIDGEOTTO combo\n"
+ .string "lost?$"
+
+Route13_Text_SebastianPostBattle::
+ .string "My POKéMON look happy even though\n"
+ .string "they lost.$"
+
+Route13_Text_SusieIntro::
+ .string "I'm told I'm good for a kid.$"
+
+Route13_Text_SusieDefeat::
+ .string "Ohh!\n"
+ .string "I lost!$"
+
+Route13_Text_SusiePostBattle::
+ .string "I want to become a good TRAINER.\n"
+ .string "I'll train hard, just watch.$"
+
+Route13_Text_ValerieIntro::
+ .string "Wow!\n"
+ .string "Your BADGES are too cool!$"
+
+Route13_Text_ValerieDefeat::
+ .string "Not enough!$"
+
+Route13_Text_ValeriePostBattle::
+ .string "You got those BADGES from GYM\n"
+ .string "LEADERS. I know!$"
+
+Route13_Text_GwenIntro::
+ .string "My cute POKéMON wish to make your\n"
+ .string "acquaintance.$"
+
+Route13_Text_GwenDefeat::
+ .string "Good going!\n"
+ .string "You totally won!$"
+
+Route13_Text_GwenPostBattle::
+ .string "You have to make POKéMON battle\n"
+ .string "to toughen them up.$"
+
+Route13_Text_AlmaIntro::
+ .string "I found CARBOS in a cave once\n"
+ .string "while I was spelunking.$"
+
+Route13_Text_AlmaDefeat::
+ .string "Oh, too bad!\n"
+ .string "I just messed up!$"
+
+Route13_Text_AlmaPostBattle::
+ .string "CARBOS boosted the SPEED of my\n"
+ .string "POKéMON.$"
+
+Route13_Text_PerryIntro::
+ .string "I'm not going to lose.\n"
+ .string "Not when the wind's blowing my way!$"
+
+Route13_Text_PerryDefeat::
+ .string "The wind turned!$"
+
+Route13_Text_PerryPostBattle::
+ .string "I'm beat.\n"
+ .string "I guess I'll FLY home.$"
+
+Route13_Text_LolaIntro::
+ .string "Sure, I'll play with you, sweetie.$"
+
+Route13_Text_LolaDefeat::
+ .string "Oh!\n"
+ .string "You little beast!$"
+
+Route13_Text_LolaPostBattle::
+ .string "I wonder which is stronger, male or\n"
+ .string "female POKéMON?$"
+
+Route13_Text_SheilaIntro::
+ .string "Do you want to battle some\n"
+ .string "POKéMON with me?$"
+
+Route13_Text_SheilaDefeat::
+ .string "It's over already?$"
+
+Route13_Text_SheilaPostBattle::
+ .string "I don't know anything about\n"
+ .string "POKéMON actually.\p"
+ .string "The ones I use… I picked them\n"
+ .string "for their looks!$"
+
+Route13_Text_JaredIntro::
+ .string "What're you lookin' at?$"
+
+Route13_Text_JaredDefeat::
+ .string "Dang!\n"
+ .string "Stripped gears!$"
+
+Route13_Text_JaredPostBattle::
+ .string "Get lost!$"
+
+Route13_Text_RobertIntro::
+ .string "I always go with bird POKéMON.\n"
+ .string "I've dedicated myself to them.$"
+
+Route13_Text_RobertDefeat::
+ .string "Out of power!$"
+
+Route13_Text_RobertPostBattle::
+ .string "I wish I could fly like PIDGEY and\n"
+ .string "PIDGEOTTO…$"
+
+Route13_Text_LookToLeftOfThatPost::
+ .string "TRAINER TIPS\p"
+ .string "Look, look!\n"
+ .string "Look to the left of that post!$"
+
+Route13_Text_SelectToSwitchItems::
+ .string "TRAINER TIPS\p"
+ .string "Use SELECT to switch items in the\n"
+ .string "ITEMS window.$"
+
+Route13_Text_RouteSign::
+ .string "ROUTE 13\n"
+ .string "North to SILENCE BRIDGE$"
+
diff --git a/data/maps/Route14_Frlg/map.json b/data/maps/Route14_Frlg/map.json
new file mode 100644
index 000000000000..0e5dbc383b34
--- /dev/null
+++ b/data/maps/Route14_Frlg/map.json
@@ -0,0 +1,278 @@
+{
+ "id": "MAP_ROUTE14",
+ "name": "Route14_Frlg",
+ "layout": "LAYOUT_ROUTE14",
+ "music": "MUS_RG_ROUTE11",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_14",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE15",
+ "offset": 40,
+ "direction": "left"
+ },
+ {
+ "map": "MAP_ROUTE13",
+ "offset": 0,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 7,
+ "y": 37,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route14_EventScript_Gerald",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 18,
+ "y": 35,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route14_EventScript_Donald",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 10,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "Route14_EventScript_Beck",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 16,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route14_EventScript_Marlon",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 7,
+ "y": 31,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route14_EventScript_Isaac",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 7,
+ "y": 34,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route14_EventScript_Malik",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 8,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route14_EventScript_Mitch",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 7,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route14_EventScript_Carter",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 10,
+ "y": 37,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 6,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route14_EventScript_Lukas",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 18,
+ "y": 47,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route14_EventScript_Benny",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 7,
+ "y": 26,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 12,
+ "y": 35,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "local_id": "LOCALID_ROUTE14_BORDER_TREE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 1,
+ "y": 47,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_14"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 13,
+ "y": 51,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route14_EventScript_Jan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 12,
+ "y": 51,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route14_EventScript_Kiri",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 17,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route14_EventScript_RouteSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 9,
+ "y": 20,
+ "elevation": 3,
+ "item": "ITEM_ZINC",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE14_ZINC",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 19,
+ "y": 53,
+ "elevation": 3,
+ "item": "ITEM_PINAP_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE14_PINAP_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/Route14_Frlg/scripts.inc b/data/maps/Route14_Frlg/scripts.inc
new file mode 100644
index 000000000000..033cb96e79c3
--- /dev/null
+++ b/data/maps/Route14_Frlg/scripts.inc
@@ -0,0 +1,163 @@
+Route14_Frlg_MapScripts::
+ .byte 0
+
+Route14_EventScript_RouteSign::
+ msgbox Route14_Text_RouteSign, MSGBOX_SIGN
+ end
+
+Route14_Text_CarterIntro::
+ .string "You need to use TMs to teach good\n"
+ .string "moves to POKéMON.$"
+
+Route14_Text_CarterDefeat::
+ .string "Not good enough quite yet.$"
+
+Route14_Text_CarterPostBattle::
+ .string "You have some HMs, right? POKéMON\n"
+ .string "can't forget those moves easily.$"
+
+Route14_Text_MitchIntro::
+ .string "My bird POKéMON should be ready\n"
+ .string "for battle.$"
+
+Route14_Text_MitchDefeat::
+ .string "Not ready yet!$"
+
+Route14_Text_MitchPostBattle::
+ .string "My bird POKéMON need to learn\n"
+ .string "better moves.$"
+
+Route14_Text_BeckIntro::
+ .string "They have TMs on sale at the\n"
+ .string "CELADON DEPT. STORE.\p"
+ .string "TMs aren't really rare, but not\n"
+ .string "many people have HMs.$"
+
+Route14_Text_BeckDefeat::
+ .string "Aww, bummer!$"
+
+Route14_Text_BeckPostBattle::
+ .string "Try teaching POKéMON a move that's\n"
+ .string "the same type as it.\p"
+ .string "That apparently boosts the power\n"
+ .string "of the move.$"
+
+Route14_Text_MarlonIntro::
+ .string "Have you taught your bird POKéMON\n"
+ .string "how to FLY?\p"
+ .string "You'll be able to soar with it into\n"
+ .string "the sky!$"
+
+Route14_Text_MarlonDefeat::
+ .string "Shot down in flames!$"
+
+Route14_Text_MarlonPostBattle::
+ .string "Bird POKéMON are my one true love.\n"
+ .string "I don't want to raise anything else.$"
+
+Route14_Text_DonaldIntro::
+ .string "Have you heard the legend of the\n"
+ .string "winged mirages?$"
+
+Route14_Text_DonaldDefeat::
+ .string "Why?\n"
+ .string "Why'd I lose?$"
+
+Route14_Text_DonaldPostBattle::
+ .string "Well, the winged mirages are the\n"
+ .string "legendary bird POKéMON.\p"
+ .string "There are three of them: ARTICUNO,\n"
+ .string "ZAPDOS, and MOLTRES.$"
+
+Route14_Text_BennyIntro::
+ .string "I'm not into it, but okay.\n"
+ .string "Let's go!$"
+
+Route14_Text_BennyDefeat::
+ .string "I knew it!$"
+
+Route14_Text_BennyPostBattle::
+ .string "Winning, losing… It's insignificant\n"
+ .string "under this huge sky.$"
+
+Route14_Text_LukasIntro::
+ .string "C'mon, c'mon.\n"
+ .string "Let's go, let's go, let's go!$"
+
+Route14_Text_LukasDefeat::
+ .string "Arrg!\n"
+ .string "Lost! Get lost!$"
+
+Route14_Text_LukasPostBattle::
+ .string "What, what, what?\n"
+ .string "What do you want still?$"
+
+Route14_Text_IsaacIntro::
+ .string "I need to burn some time.\n"
+ .string "Shut up and battle.$"
+
+Route14_Text_IsaacDefeat::
+ .string "What?\n"
+ .string "You!?$"
+
+Route14_Text_IsaacPostBattle::
+ .string "Raising POKéMON is a drag, man.$"
+
+Route14_Text_GeraldIntro::
+ .string "We ride out here because of the\n"
+ .string "wide-open spaces.$"
+
+Route14_Text_GeraldDefeat::
+ .string "Wipeout!$"
+
+Route14_Text_GeraldPostBattle::
+ .string "It's cool you made your POKéMON so\n"
+ .string "strong.\p"
+ .string "Might is right!\n"
+ .string "And you know it!$"
+
+Route14_Text_MalikIntro::
+ .string "POKéMON battle?\n"
+ .string "Cool! Rumble!$"
+
+Route14_Text_MalikDefeat::
+ .string "Blown away!$"
+
+Route14_Text_MalikPostBattle::
+ .string "You know who'd win, you and me\n"
+ .string "one-on-one!$"
+
+Route14_Text_RouteSign::
+ .string "ROUTE 14\n"
+ .string "West to FUCHSIA CITY$"
+
+Route14_Text_KiriIntro::
+ .string "KIRI: JAN, let's try really,\n"
+ .string "really hard together.$"
+
+Route14_Text_KiriDefeat::
+ .string "KIRI: Whimper…\n"
+ .string "We lost, didn't we?$"
+
+Route14_Text_KiriPostBattle::
+ .string "KIRI: Did we lose because of me?$"
+
+Route14_Text_KiriNotEnoughMons::
+ .string "KIRI: We can battle if you have\n"
+ .string "two POKéMON.$"
+
+Route14_Text_JanIntro::
+ .string "JAN: KIRI, here we go!\n"
+ .string "We have to try hard!$"
+
+Route14_Text_JanDefeat::
+ .string "JAN: Eeeeh!\n"
+ .string "No fair!$"
+
+Route14_Text_JanPostBattle::
+ .string "JAN: KIRI, don't cry!\n"
+ .string "We'll just try harder next time.$"
+
+Route14_Text_JanNotEnoughMons::
+ .string "JAN: You want to battle?\n"
+ .string "You don't have enough POKéMON.$"
diff --git a/data/maps/Route15_Frlg/map.json b/data/maps/Route15_Frlg/map.json
new file mode 100644
index 000000000000..c3150eacb321
--- /dev/null
+++ b/data/maps/Route15_Frlg/map.json
@@ -0,0 +1,248 @@
+{
+ "id": "MAP_ROUTE15",
+ "name": "Route15_Frlg",
+ "layout": "LAYOUT_ROUTE15",
+ "music": "MUS_RG_ROUTE11",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_15",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_FUCHSIA_CITY",
+ "offset": -10,
+ "direction": "left"
+ },
+ {
+ "map": "MAP_ROUTE14",
+ "offset": -40,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 22,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route15_EventScript_Yazmin",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 31,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "Route15_EventScript_Edwin",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 37,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route15_EventScript_Chester",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 44,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route15_EventScript_Kindra",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY_FRLG",
+ "x": 50,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route15_EventScript_Olivia",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 59,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route15_EventScript_Alex",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 63,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route15_EventScript_Ernest",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 52,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 4,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route15_EventScript_Becky",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY_FRLG",
+ "x": 54,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route15_EventScript_Grace",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 28,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 4,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route15_EventScript_Celia",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 20,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route15_EventScript_ItemTM18",
+ "flag": "FLAG_HIDE_ROUTE15_TM18"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 39,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route15_EventScript_Ron",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BATTLE_GIRL",
+ "x": 40,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route15_EventScript_Mya",
+ "flag": "0"
+ },
+ {
+ "type": "clone",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 73,
+ "y": 7,
+ "target_local_id": "LOCALID_ROUTE14_BORDER_TREE",
+ "target_map": "MAP_ROUTE14"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 9,
+ "y": 11,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE15_WEST_ENTRANCE_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 16,
+ "y": 11,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE15_WEST_ENTRANCE_1F",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 41,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route15_EventScript_RouteSign"
+ }
+ ]
+}
diff --git a/data/maps/Route15_Frlg/scripts.inc b/data/maps/Route15_Frlg/scripts.inc
new file mode 100644
index 000000000000..a93869cc03dd
--- /dev/null
+++ b/data/maps/Route15_Frlg/scripts.inc
@@ -0,0 +1,161 @@
+Route15_Frlg_MapScripts::
+ .byte 0
+
+Route15_EventScript_RouteSign::
+ msgbox Route15_Text_RouteSign, MSGBOX_SIGN
+ end
+
+Route15_Text_KindraIntro::
+ .string "I just got some POKéMON in trades.\n"
+ .string "Can I try them out on you?$"
+
+Route15_Text_KindraDefeat::
+ .string "Not good enough!$"
+
+Route15_Text_KindraPostBattle::
+ .string "You can't change the nickname of\n"
+ .string "any POKéMON you get in a trade.\p"
+ .string "Only the Original TRAINER can get\n"
+ .string "the nickname changed.$"
+
+Route15_Text_BeckyIntro::
+ .string "You look gentle, so I think I can\n"
+ .string "beat you.\p"
+ .string "I'll give it a go!$"
+
+Route15_Text_BeckyDefeat::
+ .string "No, wrong!$"
+
+Route15_Text_BeckyPostBattle::
+ .string "I'm afraid of BIKERS. They look so\n"
+ .string "ugly and mean!$"
+
+Route15_Text_EdwinIntro::
+ .string "When I whistle, I can summon bird\n"
+ .string "POKéMON.$"
+
+Route15_Text_EdwinDefeat::
+ .string "Ow!\n"
+ .string "That's tragic!$"
+
+Route15_Text_EdwinPostBattle::
+ .string "Maybe I'm not cut out for battles.\n"
+ .string "I'm not the right type, I guess.$"
+
+Route15_Text_ChesterIntro::
+ .string "Hmm? My birds are shivering!\n"
+ .string "You're good, aren't you?$"
+
+Route15_Text_ChesterDefeat::
+ .string "Just as I thought!$"
+
+Route15_Text_ChesterPostBattle::
+ .string "This is so obvious, you should know\n"
+ .string "this, but…\p"
+ .string "Moves like EARTHQUAKE and FISSURE\n"
+ .string "have no effect on bird POKéMON.$"
+
+Route15_Text_GraceIntro::
+ .string "Oh, you're a little cutie!\n"
+ .string "So like a darling POKéMON!$"
+
+Route15_Text_GraceDefeat::
+ .string "You looked so cute, too!$"
+
+Route15_Text_GracePostBattle::
+ .string "I forgive you.\n"
+ .string "I can take it.\l"
+ .string "I'm a big girl now.$"
+
+Route15_Text_OliviaIntro::
+ .string "I raise POKéMON for protection\n"
+ .string "because I live alone.$"
+
+Route15_Text_OliviaDefeat::
+ .string "POKéMON isn't about winning or\n"
+ .string "losing for me.$"
+
+Route15_Text_OliviaPostBattle::
+ .string "I love having my POKéMON greet me\n"
+ .string "when I get home.\p"
+ .string "It's so reassuring.$"
+
+Route15_Text_ErnestIntro::
+ .string "Hey, kid! C'mon!\n"
+ .string "I just got these off some loser!$"
+
+Route15_Text_ErnestDefeat::
+ .string "Why not?$"
+
+Route15_Text_ErnestPostBattle::
+ .string "Life's too short.\n"
+ .string "It's cool to live as an outlaw.\l"
+ .string "TEAM ROCKET RULES!$"
+
+Route15_Text_AlexIntro::
+ .string "Fork over all your cash when you\n"
+ .string "lose to me, kid!$"
+
+Route15_Text_AlexDefeat::
+ .string "That can't be true!$"
+
+Route15_Text_AlexPostBattle::
+ .string "I was just joking about the money.\n"
+ .string "Don't take me all serious.$"
+
+Route15_Text_CeliaIntro::
+ .string "What's cool and happening?\n"
+ .string "Trading POKéMON!$"
+
+Route15_Text_CeliaDefeat::
+ .string "I said trade!$"
+
+Route15_Text_CeliaPostBattle::
+ .string "I trade POKéMON with my friends\n"
+ .string "all the time.$"
+
+Route15_Text_YazminIntro::
+ .string "Want to play with my POKéMON?$"
+
+Route15_Text_YazminDefeat::
+ .string "I was too impatient!$"
+
+Route15_Text_YazminPostBattle::
+ .string "I'll go train with weaker people.$"
+
+Route15_Text_RouteSign::
+ .string "ROUTE 15\n"
+ .string "West to FUCHSIA CITY$"
+
+Route15_Text_MyaIntro::
+ .string "MYA: You're perfect.\n"
+ .string "Help me train my little brother?$"
+
+Route15_Text_MyaDefeat::
+ .string "MYA: RON, you have to focus!\n"
+ .string "Concentrate on what you're doing!$"
+
+Route15_Text_MyaPostBattle::
+ .string "MYA: Okay, we'll turn it up.\n"
+ .string "I'll add to our training menu!$"
+
+Route15_Text_MyaNotEnoughMons::
+ .string "MYA: Do you want to challenge us?\n"
+ .string "You'll need two POKéMON, though.$"
+
+Route15_Text_RonIntro::
+ .string "RON: My sister gets scary when we\n"
+ .string "lose.$"
+
+Route15_Text_RonDefeat::
+ .string "RON: Oh, no, no…\n"
+ .string "Sis, I'm sorry!$"
+
+Route15_Text_RonPostBattle::
+ .string "RON: Oh, bleah…\n"
+ .string "I wish I had a nice sister…$"
+
+Route15_Text_RonNotEnoughMons::
+ .string "RON: Did you want to battle with\n"
+ .string "my sister and me?\p"
+ .string "You need two POKéMON, then.$"
diff --git a/data/maps/Route15_WestEntrance_1F_Frlg/map.json b/data/maps/Route15_WestEntrance_1F_Frlg/map.json
new file mode 100644
index 000000000000..713307457868
--- /dev/null
+++ b/data/maps/Route15_WestEntrance_1F_Frlg/map.json
@@ -0,0 +1,73 @@
+{
+ "id": "MAP_ROUTE15_WEST_ENTRANCE_1F",
+ "name": "Route15_WestEntrance_1F_Frlg",
+ "layout": "LAYOUT_ENTRANCE_1F",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_15",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route15_WestEntrance_1F_EventScript_Guard",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE15",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 1,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE15",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 11,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE15",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 11,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE15",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 9,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE15_WEST_ENTRANCE_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/Route15_WestEntrance_1F_Frlg/scripts.inc b/data/maps/Route15_WestEntrance_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..6ec089074495
--- /dev/null
+++ b/data/maps/Route15_WestEntrance_1F_Frlg/scripts.inc
@@ -0,0 +1,12 @@
+Route15_WestEntrance_1F_Frlg_MapScripts::
+ .byte 0
+
+Route15_WestEntrance_1F_EventScript_Guard::
+ msgbox Route15_WestEntrance_1F_Text_OaksAideCameByHere, MSGBOX_NPC
+ end
+
+Route15_WestEntrance_1F_Text_OaksAideCameByHere::
+ .string "Are you the kid who's working on\n"
+ .string "a POKéDEX?\p"
+ .string "PROF. OAK's AIDE came by here.$"
+
diff --git a/data/maps/Route15_WestEntrance_2F_Frlg/map.json b/data/maps/Route15_WestEntrance_2F_Frlg/map.json
new file mode 100644
index 000000000000..d700bf5e3ecc
--- /dev/null
+++ b/data/maps/Route15_WestEntrance_2F_Frlg/map.json
@@ -0,0 +1,62 @@
+{
+ "id": "MAP_ROUTE15_WEST_ENTRANCE_2F",
+ "name": "Route15_WestEntrance_2F_Frlg",
+ "layout": "LAYOUT_ENTRANCE_2F",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_15",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 5,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route15_WestEntrance_2F_EventScript_Aide",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 10,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE15_WEST_ENTRANCE_1F",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route15_WestEntrance_2F_EventScript_LeftBinoculars"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route15_WestEntrance_2F_EventScript_RightBinoculars"
+ }
+ ]
+}
diff --git a/data/maps/Route15_WestEntrance_2F_Frlg/scripts.inc b/data/maps/Route15_WestEntrance_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..d6ade0b38fd4
--- /dev/null
+++ b/data/maps/Route15_WestEntrance_2F_Frlg/scripts.inc
@@ -0,0 +1,93 @@
+.equ REQUIRED_CAUGHT_MONS, 50
+
+Route15_WestEntrance_2F_Frlg_MapScripts::
+ .byte 0
+
+Route15_WestEntrance_2F_EventScript_LeftBinoculars::
+ lockall
+ msgbox Route15_WestEntrance_2F_Text_LargeShiningBird
+ showmonpic SPECIES_ARTICUNO, 10, 3
+ delay 20
+ waitbuttonpress
+ hidemonpic
+ setvar VAR_0x8004, SPECIES_ARTICUNO
+ special SetSeenMon
+ releaseall
+ end
+
+Route15_WestEntrance_2F_EventScript_RightBinoculars::
+ msgbox Route15_WestEntrance_2F_Text_SmallIslandOnHorizon, MSGBOX_SIGN
+ end
+
+Route15_WestEntrance_2F_EventScript_Aide::
+ lock
+ faceplayer
+ call Route15_WestEntrance_2F_EventScript_GetAideRequestInfo
+ goto_if_set FLAG_GOT_EXP_SHARE_FROM_OAKS_AIDE, Route15_WestEntrance_2F_EventScript_AlreadyGotExpShare
+ msgbox Route15_WestEntrance_2F_Text_GiveItemIfCaughtEnough, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, Aide_EventScript_DeclineCheckMons
+ setvar VAR_0x8004, 0
+ specialvar VAR_RESULT, GetFrlgPokedexCount
+ buffernumberstring STR_VAR_3, VAR_0x8006
+ call Route15_WestEntrance_2F_EventScript_GetAideRequestInfo
+ goto_if_lt VAR_0x8006, REQUIRED_CAUGHT_MONS, Aide_EventScript_HaventCaughtEnough
+ msgbox Route15_WestEntrance_2F_Text_GreatHereYouGo
+ checkitemspace ITEM_EXP_SHARE
+ goto_if_eq VAR_RESULT, FALSE, Aide_EventScript_NoRoomForItem
+ giveitem_msg Route15_WestEntrance_2F_Text_ReceivedItemFromAide, ITEM_EXP_SHARE
+ setflag FLAG_GOT_EXP_SHARE_FROM_OAKS_AIDE
+ msgbox Route15_WestEntrance_2F_Text_ExplainExpShare
+ release
+ end
+
+Route15_WestEntrance_2F_EventScript_AlreadyGotExpShare::
+ msgbox Route15_WestEntrance_2F_Text_ExplainExpShare
+ release
+ end
+
+Route15_WestEntrance_2F_EventScript_GetAideRequestInfo::
+ buffernumberstring STR_VAR_1, REQUIRED_CAUGHT_MONS
+ bufferitemname STR_VAR_2, ITEM_EXP_SHARE
+ return
+
+Route15_WestEntrance_2F_Text_GiveItemIfCaughtEnough::
+ .string "Hi! Remember me?\n"
+ .string "I'm one of PROF. OAK's AIDES.\p"
+ .string "If your POKéDEX has complete data\n"
+ .string "on {STR_VAR_1} species, I'm supposed to\l"
+ .string "give you a reward.\p"
+ .string "PROF. OAK entrusted me with the\n"
+ .string "{STR_VAR_2} for you.\p"
+ .string "So, {PLAYER}, let me ask you.\p"
+ .string "Have you gathered data on at least\n"
+ .string "{STR_VAR_1} kinds of POKéMON?$"
+
+Route15_WestEntrance_2F_Text_GreatHereYouGo::
+ .string "Great! You have caught or owned\n"
+ .string "{STR_VAR_3} kinds of POKéMON!\p"
+ .string "Congratulations!\n"
+ .string "Here you go!$"
+
+Route15_WestEntrance_2F_Text_ReceivedItemFromAide::
+ .string "{PLAYER} received the {STR_VAR_2}\n"
+ .string "from the AIDE.$"
+
+Route15_WestEntrance_2F_Text_ExplainExpShare::
+ .string "EXP. SHARE is an item to be held\n"
+ .string "by a POKéMON.\p"
+ .string "The POKéMON will receive a share\n"
+ .string "of the EXP. Points without having\l"
+ .string "to battle.$"
+
+Route15_WestEntrance_2F_Text_LargeShiningBird::
+ .string "Let's see what the binoculars have\n"
+ .string "to show…\p"
+ .string "A large, shining bird is flying\n"
+ .string "toward the sea.$"
+
+Route15_WestEntrance_2F_Text_SmallIslandOnHorizon::
+ .string "Let's see what the binoculars have\n"
+ .string "to show…\p"
+ .string "It looks like a small island on\n"
+ .string "the horizon!$"
+
diff --git a/data/maps/Route16_Frlg/map.json b/data/maps/Route16_Frlg/map.json
new file mode 100644
index 000000000000..a49179724cf8
--- /dev/null
+++ b/data/maps/Route16_Frlg/map.json
@@ -0,0 +1,240 @@
+{
+ "id": "MAP_ROUTE16",
+ "name": "Route16_Frlg",
+ "layout": "LAYOUT_ROUTE16",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_16",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE17",
+ "offset": 0,
+ "direction": "down"
+ },
+ {
+ "map": "MAP_CELADON_CITY",
+ "offset": -10,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 16,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route16_EventScript_Lao",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 14,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route16_EventScript_Koji",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 12,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route16_EventScript_Luke",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 8,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route16_EventScript_Ruben",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 10,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route16_EventScript_Hideo",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 6,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route16_EventScript_Camron",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_ROUTE16_CUT_TREE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 41,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY_FRLG",
+ "x": 30,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route16_EventScript_Lea",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 31,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route16_EventScript_Jed",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SNORLAX",
+ "x": 31,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route16_EventScript_Snorlax",
+ "flag": "FLAG_HIDE_ROUTE_16_SNORLAX"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 10,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE16_HOUSE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 20,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE16_NORTH_ENTRANCE_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 27,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE16_NORTH_ENTRANCE_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 20,
+ "y": 13,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE16_NORTH_ENTRANCE_1F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 27,
+ "y": 13,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE16_NORTH_ENTRANCE_1F",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 17,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route16_EventScript_RouteSign"
+ },
+ {
+ "type": "sign",
+ "x": 33,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route16_EventScript_CyclingRoadSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 31,
+ "y": 13,
+ "elevation": 3,
+ "item": "ITEM_LEFTOVERS",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE16_LEFTOVERS",
+ "quantity": 1,
+ "underfoot": true
+ }
+ ]
+}
diff --git a/data/maps/Route16_Frlg/scripts.inc b/data/maps/Route16_Frlg/scripts.inc
new file mode 100644
index 000000000000..cca973610aec
--- /dev/null
+++ b/data/maps/Route16_Frlg/scripts.inc
@@ -0,0 +1,188 @@
+Route16_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, Route16_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, Route16_OnTransition
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, Route16_OnWarp
+ .byte 0
+
+Route16_OnResume::
+ call_if_set FLAG_SYS_CTRL_OBJ_DELETE, Route16_EventScript_RemoveSnorlax
+ end
+
+Route16_EventScript_RemoveSnorlax::
+ removeobject VAR_LAST_TALKED
+ return
+
+Route16_OnTransition::
+ call_if_eq VAR_MAP_SCENE_ROUTE16, 1, Route16_OnTransitionCyclingRoad
+ end
+
+Route16_OnTransitionCyclingRoad::
+ setflag FLAG_SYS_ON_CYCLING_ROAD
+ return
+
+Route16_OnWarp::
+ map_script_2 VAR_MAP_SCENE_ROUTE16, 1, Route16_OnWarpCyclingRoad
+ .2byte 0
+
+Route16_OnWarpCyclingRoad::
+ special ForcePlayerOntoBike
+ end
+
+Route16_EventScript_Snorlax::
+ lock
+ faceplayer
+ goto_if_unset FLAG_GOT_POKE_FLUTE, Route16_EventScript_SnorlaxNoPokeFlute
+ msgbox Text_WantToUsePokeFlute, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, Route16_EventScript_DontUsePokeFlute
+ call EventScript_AwakenSnorlax
+ setwildbattle SPECIES_SNORLAX, 30
+ waitse
+ playmoncry SPECIES_SNORLAX, CRY_MODE_ENCOUNTER
+ delay 40
+ waitmoncry
+ setflag FLAG_HIDE_ROUTE_16_SNORLAX
+ setflag FLAG_SYS_CTRL_OBJ_DELETE
+ dowildbattle
+ clearflag FLAG_SYS_CTRL_OBJ_DELETE
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_eq VAR_RESULT, B_OUTCOME_WON, Route16_EventScript_FoughtSnorlax
+ goto_if_eq VAR_RESULT, B_OUTCOME_RAN, Route16_EventScript_FoughtSnorlax
+ goto_if_eq VAR_RESULT, B_OUTCOME_PLAYER_TELEPORTED, Route16_EventScript_FoughtSnorlax
+ release
+ end
+
+Route16_EventScript_DontUsePokeFlute::
+ release
+ end
+
+Route16_EventScript_FoughtSnorlax::
+ msgbox Text_SnorlaxReturnedToMountains
+ release
+ end
+
+Route16_EventScript_SnorlaxNoPokeFlute::
+ msgbox Route16_Text_MonSprawledOutInSlumber
+ release
+ end
+
+Route16_EventScript_CyclingRoadSign::
+ msgbox Route16_Text_CyclingRoadSign, MSGBOX_SIGN
+ end
+
+Route16_EventScript_RouteSign::
+ msgbox Route16_Text_RouteSign, MSGBOX_SIGN
+ end
+
+Route16_Text_LaoIntro::
+ .string "What do you want?$"
+
+Route16_Text_LaoDefeat::
+ .string "Don't you dare laugh!$"
+
+Route16_Text_LaoPostBattle::
+ .string "We like just hanging here.\n"
+ .string "What's it to you?$"
+
+Route16_Text_KojiIntro::
+ .string "Nice BIKE!\n"
+ .string "Hand it over!$"
+
+Route16_Text_KojiDefeat::
+ .string "Knockout!$"
+
+Route16_Text_KojiPostBattle::
+ .string "Forget it, who needs your BIKE!$"
+
+Route16_Text_LukeIntro::
+ .string "Come out and play, little mouse!$"
+
+Route16_Text_LukeDefeat::
+ .string "You little rat!$"
+
+Route16_Text_LukePostBattle::
+ .string "I hate losing!\n"
+ .string "Get out of my face!$"
+
+Route16_Text_HideoIntro::
+ .string "Hey, you just bumped me!$"
+
+Route16_Text_HideoDefeat::
+ .string "Kaboom!$"
+
+Route16_Text_HideoPostBattle::
+ .string "We'll always be hanging around here\n"
+ .string "even if you don't like it.\p"
+ .string "You can detour to VERMILION from\n"
+ .string "FUCHSIA going along the coast.$"
+
+Route16_Text_CamronIntro::
+ .string "I'm feeling hungry and mean!\n"
+ .string "I need a punching bag!$"
+
+Route16_Text_CamronDefeat::
+ .string "Bad, bad, bad!$"
+
+Route16_Text_CamronPostBattle::
+ .string "If I'm going to have POKéMON, they\n"
+ .string "may as well be ferocious.\p"
+ .string "I'd use them to leave my enemies\n"
+ .string "in tatters.$"
+
+Route16_Text_RubenIntro::
+ .string "Hey, there!\n"
+ .string "Let's have ourselves a good time!$"
+
+Route16_Text_RubenDefeat::
+ .string "Don't make me mad!$"
+
+Route16_Text_RubenPostBattle::
+ .string "I get my kicks by harassing people\n"
+ .string "with my stinking POKéMON.\p"
+ .string "They're great for startling people.\n"
+ .string "And, they bite, too.$"
+
+Route16_Text_MonSprawledOutInSlumber::
+ .string "A POKéMON is sprawled out in\n"
+ .string "a deep and comfortable slumber.$"
+
+Route16_Text_CyclingRoadSign::
+ .string "Enjoy the slope!\n"
+ .string "CYCLING ROAD$"
+
+Route16_Text_RouteSign::
+ .string "ROUTE 16\n"
+ .string "CELADON CITY - FUCHSIA CITY$"
+
+Route16_Text_JedIntro::
+ .string "JED: Our love knows no bounds.\n"
+ .string "We're in love and we show it!$"
+
+Route16_Text_JedDefeat::
+ .string "JED: Oh, no!\n"
+ .string "My love has seen me as a loser!$"
+
+Route16_Text_JedPostBattle::
+ .string "JED: Listen, LEA.\n"
+ .string "You need to focus less on me.$"
+
+Route16_Text_JedNotEnoughMons::
+ .string "JED: You have just one POKéMON?\n"
+ .string "Is there no love in your heart?$"
+
+Route16_Text_LeaIntro::
+ .string "LEA: Sometimes, the intensity of\n"
+ .string "our love scares me.$"
+
+Route16_Text_LeaDefeat::
+ .string "LEA: Ohh! But JED looks cool\n"
+ .string "even in a loss!$"
+
+Route16_Text_LeaPostBattle::
+ .string "LEA: Ehehe, I'm sorry.\n"
+ .string "JED is so cool.$"
+
+Route16_Text_LeaNotEnoughMons::
+ .string "LEA: Oh, you don't have two\n"
+ .string "POKéMON with you?\p"
+ .string "Doesn't it feel lonely for you or\n"
+ .string "your POKéMON?$"
diff --git a/data/maps/Route16_House_Frlg/map.json b/data/maps/Route16_House_Frlg/map.json
new file mode 100644
index 000000000000..7756135c8cfe
--- /dev/null
+++ b/data/maps/Route16_House_Frlg/map.json
@@ -0,0 +1,73 @@
+{
+ "id": "MAP_ROUTE16_HOUSE",
+ "name": "Route16_House_Frlg",
+ "layout": "LAYOUT_HOUSE1_FRLG",
+ "music": "MUS_RG_CELADON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_16",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route16_House_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FEAROW",
+ "x": 9,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route16_House_EventScript_Fearow",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE16",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE16",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE16",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/Route16_House_Frlg/scripts.inc b/data/maps/Route16_House_Frlg/scripts.inc
new file mode 100644
index 000000000000..c98bfc788d9c
--- /dev/null
+++ b/data/maps/Route16_House_Frlg/scripts.inc
@@ -0,0 +1,57 @@
+Route16_House_Frlg_MapScripts::
+ .byte 0
+
+Route16_House_EventScript_Woman::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_HM02, Route16_House_EventScript_AlreadyGotHM02
+ msgbox Route16_House_Text_FoundMySecretRetreat
+ checkitemspace ITEM_HM02
+ goto_if_eq VAR_RESULT, FALSE, Route16_House_EventScript_NoRoomForHM02
+ giveitem_msg Route16_House_Text_ReceivedHM02FromGirl, ITEM_HM02
+ msgbox Route16_House_Text_ExplainHM02
+ setflag FLAG_GOT_HM02
+ release
+ end
+
+Route16_House_EventScript_NoRoomForHM02::
+ msgbox Route16_House_Text_DontHaveAnyRoomForThis
+ release
+ end
+
+Route16_House_EventScript_AlreadyGotHM02::
+ msgbox Route16_House_Text_ExplainHM02
+ release
+ end
+
+Route16_House_EventScript_Fearow::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_FEAROW, CRY_MODE_NORMAL
+ msgbox Route16_House_Text_Fearow
+ waitmoncry
+ release
+ end
+
+Route16_House_Text_FoundMySecretRetreat::
+ .string "Oh, dear.\n"
+ .string "You've found my secret retreat.\p"
+ .string "Please don't tell anyone I'm here.\n"
+ .string "I'll make it up to you with this!$"
+
+Route16_House_Text_ReceivedHM02FromGirl::
+ .string "{PLAYER} received HM02\n"
+ .string "from the girl.$"
+
+Route16_House_Text_ExplainHM02::
+ .string "HM02 is FLY.\n"
+ .string "It's a wonderfully convenient move.\p"
+ .string "Please, put it to good use.$"
+
+Route16_House_Text_DontHaveAnyRoomForThis::
+ .string "You don't have any room for this.$"
+
+Route16_House_Text_Fearow::
+ .string "FEAROW: Kyueen!$"
+
diff --git a/data/maps/Route16_NorthEntrance_1F_Frlg/map.json b/data/maps/Route16_NorthEntrance_1F_Frlg/map.json
new file mode 100644
index 000000000000..b05f27e6a05a
--- /dev/null
+++ b/data/maps/Route16_NorthEntrance_1F_Frlg/map.json
@@ -0,0 +1,187 @@
+{
+ "id": "MAP_ROUTE16_NORTH_ENTRANCE_1F",
+ "name": "Route16_NorthEntrance_1F_Frlg",
+ "layout": "LAYOUT_ROUTE16_NORTH_ENTRANCE_1F",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_16",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route16_NorthEntrance_1F_EventScript_Guard",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route16_NorthEntrance_1F_EventScript_OldMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 3,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE16",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 11,
+ "y": 3,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE16",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 1,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE16",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 11,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE16",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 9,
+ "y": 16,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE16_NORTH_ENTRANCE_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 12,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE16",
+ "var_value": "1",
+ "script": "EventScript_SetExitingCyclingRoad"
+ },
+ {
+ "type": "trigger",
+ "x": 2,
+ "y": 12,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE16",
+ "var_value": "0",
+ "script": "EventScript_SetEnteringCyclingRoad"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 10,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "Route16_NorthEntrance_1F_EventScript_NeedBikeTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 11,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "Route16_NorthEntrance_1F_EventScript_NeedBikeTriggerMidTop"
+ },
+ {
+ "type": "trigger",
+ "x": 1,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE16",
+ "var_value": "0",
+ "script": "EventScript_SetEnteringCyclingRoad"
+ },
+ {
+ "type": "trigger",
+ "x": 1,
+ "y": 11,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE16",
+ "var_value": "0",
+ "script": "EventScript_SetEnteringCyclingRoad"
+ },
+ {
+ "type": "trigger",
+ "x": 11,
+ "y": 11,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE16",
+ "var_value": "1",
+ "script": "EventScript_SetExitingCyclingRoad"
+ },
+ {
+ "type": "trigger",
+ "x": 11,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE16",
+ "var_value": "1",
+ "script": "EventScript_SetExitingCyclingRoad"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 12,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "Route16_NorthEntrance_1F_EventScript_NeedBikeTriggerMid"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "Route16_NorthEntrance_1F_EventScript_NeedBikeTriggerMidBottom"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 14,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "Route16_NorthEntrance_1F_EventScript_NeedBikeTriggerBottom"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/Route16_NorthEntrance_1F_Frlg/scripts.inc b/data/maps/Route16_NorthEntrance_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..d1e68f91c9c5
--- /dev/null
+++ b/data/maps/Route16_NorthEntrance_1F_Frlg/scripts.inc
@@ -0,0 +1,131 @@
+Route16_NorthEntrance_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, Route16_NorthEntrance_1F_OnTransition
+ .byte 0
+
+Route16_NorthEntrance_1F_OnTransition::
+ clearflag FLAG_SYS_ON_CYCLING_ROAD
+ call_if_set FLAG_GOT_BICYCLE, Route16_NorthEntrance_1F_EventScript_DisableNeedBikeTrigger
+ end
+
+Route16_NorthEntrance_1F_EventScript_DisableNeedBikeTrigger::
+ setvar VAR_TEMP_1, 1
+ return
+
+Route16_NorthEntrance_1F_EventScript_Guard::
+ msgbox Route16_NorthEntrance_1F_Text_CyclingRoadIsDownhillCourse, MSGBOX_NPC
+ end
+
+Route16_NorthEntrance_1F_EventScript_NeedBikeTriggerTop::
+ lockall
+ setvar VAR_0x8008, 0
+ goto Route16_NorthEntrance_1F_EventScript_NeedBikeTrigger
+ end
+
+Route16_NorthEntrance_1F_EventScript_NeedBikeTriggerMidTop::
+ lockall
+ setvar VAR_0x8008, 1
+ goto Route16_NorthEntrance_1F_EventScript_NeedBikeTrigger
+ end
+
+Route16_NorthEntrance_1F_EventScript_NeedBikeTriggerMid::
+ lockall
+ setvar VAR_0x8008, 2
+ goto Route16_NorthEntrance_1F_EventScript_NeedBikeTrigger
+ end
+
+Route16_NorthEntrance_1F_EventScript_NeedBikeTriggerMidBottom::
+ lockall
+ setvar VAR_0x8008, 3
+ goto Route16_NorthEntrance_1F_EventScript_NeedBikeTrigger
+ end
+
+Route16_NorthEntrance_1F_EventScript_NeedBikeTriggerBottom::
+ lockall
+ setvar VAR_0x8008, 4
+ goto Route16_NorthEntrance_1F_EventScript_NeedBikeTrigger
+ end
+
+Route16_NorthEntrance_1F_EventScript_NeedBikeTrigger::
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox Route16_NorthEntrance_1F_Text_ExcuseMeWaitUp
+ closemessage
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ delay 20
+ call_if_eq VAR_0x8008, 1, Route16_NorthEntrance_1F_EventScript_PlayerWalkToCounterMidTop
+ call_if_eq VAR_0x8008, 2, Route16_NorthEntrance_1F_EventScript_PlayerWalkToCounterMid
+ call_if_eq VAR_0x8008, 3, Route16_NorthEntrance_1F_EventScript_PlayerWalkToCounterMidBottom
+ call_if_eq VAR_0x8008, 4, Route16_NorthEntrance_1F_EventScript_PlayerWalkToCounterBottom
+ msgbox Route16_NorthEntrance_1F_Text_NoPedestriansOnCyclingRoad
+ closemessage
+ applymovement LOCALID_PLAYER, Route16_NorthEntrance_1F_Movement_WalkRight
+ waitmovement 0
+ releaseall
+ end
+
+Route16_NorthEntrance_1F_EventScript_PlayerWalkToCounterMidTop::
+ applymovement LOCALID_PLAYER, Route16_NorthEntrance_1F_Movement_WalkUp
+ waitmovement 0
+ return
+
+Route16_NorthEntrance_1F_EventScript_PlayerWalkToCounterMid::
+ applymovement LOCALID_PLAYER, Route16_NorthEntrance_1F_Movement_WalkUp2
+ waitmovement 0
+ return
+
+Route16_NorthEntrance_1F_EventScript_PlayerWalkToCounterMidBottom::
+ applymovement LOCALID_PLAYER, Route16_NorthEntrance_1F_Movement_WalkUp3
+ waitmovement 0
+ return
+
+Route16_NorthEntrance_1F_EventScript_PlayerWalkToCounterBottom::
+ applymovement LOCALID_PLAYER, Route16_NorthEntrance_1F_Movement_WalkUp4
+ waitmovement 0
+ return
+
+Route16_NorthEntrance_1F_Movement_WalkUp::
+ walk_up
+ step_end
+
+Route16_NorthEntrance_1F_Movement_WalkUp2::
+ walk_up
+ walk_up
+ step_end
+
+Route16_NorthEntrance_1F_Movement_WalkUp3::
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+Route16_NorthEntrance_1F_Movement_WalkUp4::
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+Route16_NorthEntrance_1F_Movement_WalkRight::
+ walk_right
+ step_end
+
+Route16_NorthEntrance_1F_EventScript_OldMan::
+ msgbox Route16_NorthEntrance_1F_Text_HowdYouGetInGoodEffort, MSGBOX_NPC
+ end
+
+Route16_NorthEntrance_1F_Text_NoPedestriansOnCyclingRoad::
+ .string "No pedestrians are allowed on\n"
+ .string "CYCLING ROAD!$"
+
+Route16_NorthEntrance_1F_Text_CyclingRoadIsDownhillCourse::
+ .string "CYCLING ROAD is a downhill course\n"
+ .string "by the sea. It's a great ride.$"
+
+Route16_NorthEntrance_1F_Text_ExcuseMeWaitUp::
+ .string "Excuse me!\n"
+ .string "Wait up, please!$"
+
+Route16_NorthEntrance_1F_Text_HowdYouGetInGoodEffort::
+ .string "How'd you get in?\n"
+ .string "Good effort!$"
+
diff --git a/data/maps/Route16_NorthEntrance_2F_Frlg/map.json b/data/maps/Route16_NorthEntrance_2F_Frlg/map.json
new file mode 100644
index 000000000000..7dd69de88b3a
--- /dev/null
+++ b/data/maps/Route16_NorthEntrance_2F_Frlg/map.json
@@ -0,0 +1,90 @@
+{
+ "id": "MAP_ROUTE16_NORTH_ENTRANCE_2F",
+ "name": "Route16_NorthEntrance_2F_Frlg",
+ "layout": "LAYOUT_ENTRANCE_2F",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_16",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_BOY_FRLG",
+ "x": 6,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route16_NorthEntrance_2F_EventScript_LittleBoy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 4,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route16_NorthEntrance_2F_EventScript_LittleGirl",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 10,
+ "y": 6,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route16_NorthEntrance_2F_EventScript_Aide",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 10,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE16_NORTH_ENTRANCE_1F",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route16_NorthEntrance_2F_EventScript_LeftBinoculars"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route16_NorthEntrance_2F_EventScript_RightBinoculars"
+ }
+ ]
+}
diff --git a/data/maps/Route16_NorthEntrance_2F_Frlg/scripts.inc b/data/maps/Route16_NorthEntrance_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..c6c70b6ec036
--- /dev/null
+++ b/data/maps/Route16_NorthEntrance_2F_Frlg/scripts.inc
@@ -0,0 +1,99 @@
+.equ REQUIRED_CAUGHT_MONS, 40
+
+Route16_NorthEntrance_2F_Frlg_MapScripts::
+ .byte 0
+
+Route16_NorthEntrance_2F_EventScript_LittleBoy::
+ msgbox Route16_NorthEntrance_2F_Text_OnBikeRideWithGirlfriend, MSGBOX_NPC
+ end
+
+Route16_NorthEntrance_2F_EventScript_LittleGirl::
+ msgbox Route16_NorthEntrance_2F_Text_RidingTogetherOnNewBikes, MSGBOX_NPC
+ end
+
+Route16_NorthEntrance_2F_EventScript_LeftBinoculars::
+ msgbox Route16_NorthEntrance_2F_Text_ItsCeladonDeptStore, MSGBOX_SIGN
+ end
+
+Route16_NorthEntrance_2F_EventScript_RightBinoculars::
+ msgbox Route16_NorthEntrance_2F_Text_LongPathOverWater, MSGBOX_SIGN
+ end
+
+Route16_NorthEntrance_2F_EventScript_Aide::
+ lock
+ faceplayer
+ call Route16_NorthEntrance_2F_EventScript_GetAideRequestInfo
+ goto_if_set FLAG_GOT_AMULET_COIN_FROM_OAKS_AIDE, Route16_NorthEntrance_2F_EventScript_AlreadyGotAmuletCoin
+ msgbox Route16_NorthEntrance_2F_Text_GiveAmuletCoinIfCaught40, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, Aide_EventScript_DeclineCheckMons
+ setvar VAR_0x8004, 0
+ specialvar VAR_RESULT, GetFrlgPokedexCount
+ buffernumberstring STR_VAR_3, VAR_0x8006
+ call Route16_NorthEntrance_2F_EventScript_GetAideRequestInfo
+ goto_if_lt VAR_0x8006, REQUIRED_CAUGHT_MONS, Aide_EventScript_HaventCaughtEnough
+ msgbox Route16_NorthEntrance_2F_Text_GreatHereYouGo
+ checkitemspace ITEM_AMULET_COIN
+ goto_if_eq VAR_RESULT, FALSE, Aide_EventScript_NoRoomForItem
+ giveitem_msg Route16_NorthEntrance_2F_Text_ReceivedAmuletCoinFromAide, ITEM_AMULET_COIN
+ setflag FLAG_GOT_AMULET_COIN_FROM_OAKS_AIDE
+ msgbox Route16_NorthEntrance_2F_Text_ExplainAmuletCoin
+ release
+ end
+
+Route16_NorthEntrance_2F_EventScript_AlreadyGotAmuletCoin::
+ msgbox Route16_NorthEntrance_2F_Text_ExplainAmuletCoin
+ release
+ end
+
+Route16_NorthEntrance_2F_EventScript_GetAideRequestInfo::
+ buffernumberstring STR_VAR_1, REQUIRED_CAUGHT_MONS
+ bufferitemname STR_VAR_2, ITEM_AMULET_COIN
+ return
+
+Route16_NorthEntrance_2F_Text_OnBikeRideWithGirlfriend::
+ .string "I'm on a relaxing ride on my new\n"
+ .string "bike with my girlfriend.$"
+
+Route16_NorthEntrance_2F_Text_RidingTogetherOnNewBikes::
+ .string "We're going riding together on our\n"
+ .string "new bikes.$"
+
+Route16_NorthEntrance_2F_Text_ItsCeladonDeptStore::
+ .string "Let's see what the binoculars have\n"
+ .string "to show…\p"
+ .string "It's the CELADON DEPT. STORE!$"
+
+Route16_NorthEntrance_2F_Text_LongPathOverWater::
+ .string "Let's see what the binoculars have\n"
+ .string "to show…\p"
+ .string "There's a long path over water far\n"
+ .string "away.$"
+
+Route16_NorthEntrance_2F_Text_GiveAmuletCoinIfCaught40::
+ .string "Hi! Remember me?\n"
+ .string "I'm one of PROF. OAK's AIDES.\p"
+ .string "If your POKéDEX has complete data\n"
+ .string "on 40 species, I'm supposed to\l"
+ .string "give you a reward.\p"
+ .string "PROF. OAK entrusted me with an\n"
+ .string "AMULET COIN for you.\p"
+ .string "So, {PLAYER}, let me ask you.\p"
+ .string "Have you gathered data on at least\n"
+ .string "40 kinds of POKéMON?$"
+
+Route16_NorthEntrance_2F_Text_GreatHereYouGo::
+ .string "Great! You have caught or owned\n"
+ .string "{STR_VAR_3} kinds of POKéMON!\p"
+ .string "Congratulations!\n"
+ .string "Here you go!$"
+
+Route16_NorthEntrance_2F_Text_ReceivedAmuletCoinFromAide::
+ .string "{PLAYER} received the AMULET COIN\n"
+ .string "from the AIDE.$"
+
+Route16_NorthEntrance_2F_Text_ExplainAmuletCoin::
+ .string "An AMULET COIN is an item to be\n"
+ .string "held by a POKéMON.\p"
+ .string "If the POKéMON appears in a winning\n"
+ .string "battle, you will earn more money.$"
+
diff --git a/data/maps/Route17_Frlg/map.json b/data/maps/Route17_Frlg/map.json
new file mode 100644
index 000000000000..43a8937c9eaa
--- /dev/null
+++ b/data/maps/Route17_Frlg/map.json
@@ -0,0 +1,273 @@
+{
+ "id": "MAP_ROUTE17",
+ "name": "Route17_Frlg",
+ "layout": "LAYOUT_ROUTE17",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_17",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE16",
+ "offset": 0,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_ROUTE18",
+ "offset": 0,
+ "direction": "down"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 4,
+ "y": 18,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 6,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route17_EventScript_Virgil",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 11,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 5,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route17_EventScript_Isaiah",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 15,
+ "y": 24,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_LEFT_UP",
+ "movement_range_x": 4,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route17_EventScript_Raul",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 18,
+ "y": 41,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 5,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route17_EventScript_Nikolas",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 7,
+ "y": 38,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "Route17_EventScript_Billy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 2,
+ "y": 61,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "Route17_EventScript_Jamal",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 21,
+ "y": 61,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route17_EventScript_Zeek",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 18,
+ "y": 94,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 5,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route17_EventScript_Corey",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 16,
+ "y": 134,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_RIGHT_UP",
+ "movement_range_x": 8,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route17_EventScript_William",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 4,
+ "y": 116,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 5,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route17_EventScript_Jaxon",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 97,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route17_EventScript_RouteSign"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 83,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route17_EventScript_TrainerTips2"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 68,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route17_EventScript_TrainerTips1"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 53,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route17_EventScript_ItemsNotice"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 125,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route17_EventScript_BallsNotice"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 157,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route17_EventScript_CyclingRoadSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 18,
+ "y": 83,
+ "elevation": 3,
+ "item": "ITEM_RARE_CANDY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE17_RARE_CANDY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 10,
+ "y": 53,
+ "elevation": 3,
+ "item": "ITEM_FULL_RESTORE",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE17_FULL_RESTORE",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 4,
+ "y": 68,
+ "elevation": 3,
+ "item": "ITEM_PP_UP",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE17_PP_UP",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 4,
+ "y": 125,
+ "elevation": 3,
+ "item": "ITEM_MAX_REVIVE",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE17_MAX_REVIVE",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 14,
+ "y": 157,
+ "elevation": 3,
+ "item": "ITEM_MAX_ELIXIR",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE17_MAX_ELIXIR",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/Route17_Frlg/scripts.inc b/data/maps/Route17_Frlg/scripts.inc
new file mode 100644
index 000000000000..9f0e6a73effc
--- /dev/null
+++ b/data/maps/Route17_Frlg/scripts.inc
@@ -0,0 +1,158 @@
+Route17_Frlg_MapScripts::
+ .byte 0
+
+Route17_EventScript_ItemsNotice::
+ msgbox Route17_Text_WatchOutForDiscardedItems, MSGBOX_SIGN
+ end
+
+Route17_EventScript_TrainerTips1::
+ msgbox Route17_Text_SameSpeciesGrowDifferentRates, MSGBOX_SIGN
+ end
+
+Route17_EventScript_TrainerTips2::
+ msgbox Route17_Text_PressBToStayInPlace, MSGBOX_SIGN
+ end
+
+Route17_EventScript_RouteSign::
+ msgbox Route17_Text_RouteSign, MSGBOX_SIGN
+ end
+
+Route17_EventScript_BallsNotice::
+ msgbox Route17_Text_DontThrowGameThrowBalls, MSGBOX_SIGN
+ end
+
+Route17_EventScript_CyclingRoadSign::
+ msgbox Route17_Text_CyclingRoadSign, MSGBOX_SIGN
+ end
+
+Route17_Text_RaulIntro::
+ .string "There's no getting rich quick in\n"
+ .string "battling kids.$"
+
+Route17_Text_RaulDefeat::
+ .string "Burned out!$"
+
+Route17_Text_RaulPostBattle::
+ .string "You can find good stuff lying\n"
+ .string "around on CYCLING ROAD.\p"
+ .string "There's good money in picking them\n"
+ .string "up and selling them.$"
+
+Route17_Text_IsaiahIntro::
+ .string "I'm mighty proud of my bod, kiddo.\n"
+ .string "Come on!$"
+
+Route17_Text_IsaiahDefeat::
+ .string "Whoo!$"
+
+Route17_Text_IsaiahPostBattle::
+ .string "I could belly-bump you outta\n"
+ .string "here!$"
+
+Route17_Text_VirgilIntro::
+ .string "You heading to FUCHSIA?$"
+
+Route17_Text_VirgilDefeat::
+ .string "Crash and burn!$"
+
+Route17_Text_VirgilPostBattle::
+ .string "I love racing downhill!$"
+
+Route17_Text_BillyIntro::
+ .string "We're BIKERS!\n"
+ .string "We rule the roads, man!$"
+
+Route17_Text_BillyDefeat::
+ .string "Smoked!$"
+
+Route17_Text_BillyPostBattle::
+ .string "Are you looking for adventure?$"
+
+Route17_Text_NikolasIntro::
+ .string "Let VOLTORB electrify you!$"
+
+Route17_Text_NikolasDefeat::
+ .string "Grounded out!$"
+
+Route17_Text_NikolasPostBattle::
+ .string "I got my VOLTORB at the abandoned\n"
+ .string "POWER PLANT.$"
+
+Route17_Text_ZeekIntro::
+ .string "I leveled up my POKéMON, but it\n"
+ .string "won't evolve. Why?$"
+
+Route17_Text_ZeekDefeat::
+ .string "Why, you!$"
+
+Route17_Text_ZeekPostBattle::
+ .string "Maybe some POKéMON need element\n"
+ .string "STONES to evolve.$"
+
+Route17_Text_JamalIntro::
+ .string "I need a little exercise!$"
+
+Route17_Text_JamalDefeat::
+ .string "Whew!\n"
+ .string "Good workout!$"
+
+Route17_Text_JamalPostBattle::
+ .string "I'm sure I lost weight there!$"
+
+Route17_Text_CoreyIntro::
+ .string "Be a rebel!$"
+
+Route17_Text_CoreyDefeat::
+ .string "Aaaargh!$"
+
+Route17_Text_CoreyPostBattle::
+ .string "Be ready to fight for your beliefs!$"
+
+Route17_Text_JaxonIntro::
+ .string "Nice BIKE!\n"
+ .string "How's it handle?$"
+
+Route17_Text_JaxonDefeat::
+ .string "Shoot!$"
+
+Route17_Text_JaxonPostBattle::
+ .string "The slope makes it hard to steer.$"
+
+Route17_Text_WilliamIntro::
+ .string "Get lost, kid!\n"
+ .string "I'm bushed!$"
+
+Route17_Text_WilliamDefeat::
+ .string "Are you satisfied?$"
+
+Route17_Text_WilliamPostBattle::
+ .string "I need to catch a few z's!$"
+
+Route17_Text_WatchOutForDiscardedItems::
+ .string "It's a notice.\p"
+ .string "Watch out for discarded items.$"
+
+Route17_Text_SameSpeciesGrowDifferentRates::
+ .string "TRAINER TIPS\p"
+ .string "All POKéMON are unique.\p"
+ .string "Even POKéMON of the same species\n"
+ .string "and level grow at different rates.$"
+
+Route17_Text_PressBToStayInPlace::
+ .string "TRAINER TIPS\p"
+ .string "Press the B Button to stay in place\n"
+ .string "while on a slope.$"
+
+Route17_Text_RouteSign::
+ .string "ROUTE 17\n"
+ .string "CELADON CITY - FUCHSIA CITY$"
+
+Route17_Text_DontThrowGameThrowBalls::
+ .string "It's a notice!\p"
+ .string "Don't throw the game, throw POKé\n"
+ .string "BALLS instead!$"
+
+Route17_Text_CyclingRoadSign::
+ .string "CYCLING ROAD\n"
+ .string "Slope ends here!$"
+
diff --git a/data/maps/Route18_EastEntrance_1F_Frlg/map.json b/data/maps/Route18_EastEntrance_1F_Frlg/map.json
new file mode 100644
index 000000000000..1e6e797debc0
--- /dev/null
+++ b/data/maps/Route18_EastEntrance_1F_Frlg/map.json
@@ -0,0 +1,159 @@
+{
+ "id": "MAP_ROUTE18_EAST_ENTRANCE_1F",
+ "name": "Route18_EastEntrance_1F_Frlg",
+ "layout": "LAYOUT_ENTRANCE_1F",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_18",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route18_EastEntrance_1F_EventScript_Guard",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE18",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 11,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE18",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 9,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE18_EAST_ENTRANCE_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 2,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE16",
+ "var_value": "0",
+ "script": "EventScript_SetEnteringCyclingRoad"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 4,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "Route18_EastEntrance_1F_EventScript_NeedBikeTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "Route18_EastEntrance_1F_EventScript_NeedBikeTriggerMidTop"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "Route18_EastEntrance_1F_EventScript_NeedBikeTriggerMid"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 7,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "Route18_EastEntrance_1F_EventScript_NeedBikeTriggerMidBottom"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "Route18_EastEntrance_1F_EventScript_NeedBikeTriggerBottom"
+ },
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE16",
+ "var_value": "1",
+ "script": "EventScript_SetExitingCyclingRoad"
+ },
+ {
+ "type": "trigger",
+ "x": 11,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE16",
+ "var_value": "1",
+ "script": "EventScript_SetExitingCyclingRoad"
+ },
+ {
+ "type": "trigger",
+ "x": 11,
+ "y": 7,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE16",
+ "var_value": "1",
+ "script": "EventScript_SetExitingCyclingRoad"
+ },
+ {
+ "type": "trigger",
+ "x": 1,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE16",
+ "var_value": "0",
+ "script": "EventScript_SetEnteringCyclingRoad"
+ },
+ {
+ "type": "trigger",
+ "x": 1,
+ "y": 7,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE16",
+ "var_value": "0",
+ "script": "EventScript_SetEnteringCyclingRoad"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/Route18_EastEntrance_1F_Frlg/scripts.inc b/data/maps/Route18_EastEntrance_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..857fbcc7a1d9
--- /dev/null
+++ b/data/maps/Route18_EastEntrance_1F_Frlg/scripts.inc
@@ -0,0 +1,122 @@
+Route18_EastEntrance_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, Route18_EastEntrance_1F_OnTransition
+ .byte 0
+
+Route18_EastEntrance_1F_OnTransition::
+ clearflag FLAG_SYS_ON_CYCLING_ROAD
+ call_if_set FLAG_GOT_BICYCLE, Route18_EastEntrance_1F_EventScript_DisableNeedBikeTrigger
+ end
+
+Route18_EastEntrance_1F_EventScript_DisableNeedBikeTrigger::
+ setvar VAR_TEMP_1, 1
+ return
+
+Route18_EastEntrance_1F_EventScript_Guard::
+ msgbox Route18_EastEntrance_1F_Text_CyclingRoadAllUphillFromHere, MSGBOX_NPC
+ end
+
+Route18_EastEntrance_1F_EventScript_NeedBikeTriggerTop::
+ lockall
+ setvar VAR_0x8008, 0
+ goto Route18_EastEntrance_1F_EventScript_NeedBikeTrigger
+ end
+
+Route18_EastEntrance_1F_EventScript_NeedBikeTriggerMidTop::
+ lockall
+ setvar VAR_0x8008, 1
+ goto Route18_EastEntrance_1F_EventScript_NeedBikeTrigger
+ end
+
+Route18_EastEntrance_1F_EventScript_NeedBikeTriggerMid::
+ lockall
+ setvar VAR_0x8008, 2
+ goto Route18_EastEntrance_1F_EventScript_NeedBikeTrigger
+ end
+
+Route18_EastEntrance_1F_EventScript_NeedBikeTriggerMidBottom::
+ lockall
+ setvar VAR_0x8008, 3
+ goto Route18_EastEntrance_1F_EventScript_NeedBikeTrigger
+ end
+
+Route18_EastEntrance_1F_EventScript_NeedBikeTriggerBottom::
+ lockall
+ setvar VAR_0x8008, 4
+ goto Route18_EastEntrance_1F_EventScript_NeedBikeTrigger
+ end
+
+Route18_EastEntrance_1F_EventScript_NeedBikeTrigger::
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox Route18_EastEntrance_1F_Text_ExcuseMe
+ closemessage
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ delay 20
+ call_if_eq VAR_0x8008, 1, Route18_EastEntrance_1F_EventScript_PlayerWalkToCounterMidTop
+ call_if_eq VAR_0x8008, 2, Route18_EastEntrance_1F_EventScript_PlayerWalkToCounterMid
+ call_if_eq VAR_0x8008, 3, Route18_EastEntrance_1F_EventScript_PlayerWalkToCounterMidBottom
+ call_if_eq VAR_0x8008, 4, Route18_EastEntrance_1F_EventScript_PlayerWalkToCounterBottom
+ msgbox Route18_EastEntrance_1F_Text_NeedBicycleForCyclingRoad
+ closemessage
+ applymovement LOCALID_PLAYER, Route18_EastEntrance_1F_Movement_WalkRight
+ waitmovement 0
+ releaseall
+ end
+
+Route18_EastEntrance_1F_EventScript_PlayerWalkToCounterMidTop::
+ applymovement LOCALID_PLAYER, Route18_EastEntrance_1F_Movement_WalkUp
+ waitmovement 0
+ return
+
+Route18_EastEntrance_1F_EventScript_PlayerWalkToCounterMid::
+ applymovement LOCALID_PLAYER, Route18_EastEntrance_1F_Movement_WalkUp2
+ waitmovement 0
+ return
+
+Route18_EastEntrance_1F_EventScript_PlayerWalkToCounterMidBottom::
+ applymovement LOCALID_PLAYER, Route18_EastEntrance_1F_Movement_WalkUp3
+ waitmovement 0
+ return
+
+Route18_EastEntrance_1F_EventScript_PlayerWalkToCounterBottom::
+ applymovement LOCALID_PLAYER, Route18_EastEntrance_1F_Movement_WalkUp4
+ waitmovement 0
+ return
+
+Route18_EastEntrance_1F_Movement_WalkUp::
+ walk_up
+ step_end
+
+Route18_EastEntrance_1F_Movement_WalkUp2::
+ walk_up
+ walk_up
+ step_end
+
+Route18_EastEntrance_1F_Movement_WalkUp3::
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+Route18_EastEntrance_1F_Movement_WalkUp4::
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+Route18_EastEntrance_1F_Movement_WalkRight::
+ walk_right
+ step_end
+
+Route18_EastEntrance_1F_Text_NeedBicycleForCyclingRoad::
+ .string "You need a BICYCLE to go out on\n"
+ .string "CYCLING ROAD!$"
+
+Route18_EastEntrance_1F_Text_CyclingRoadAllUphillFromHere::
+ .string "CYCLING ROAD is all uphill from\n"
+ .string "here.$"
+
+Route18_EastEntrance_1F_Text_ExcuseMe::
+ .string "Excuse me!$"
+
diff --git a/data/maps/Route18_EastEntrance_2F_Frlg/map.json b/data/maps/Route18_EastEntrance_2F_Frlg/map.json
new file mode 100644
index 000000000000..b02c242f23eb
--- /dev/null
+++ b/data/maps/Route18_EastEntrance_2F_Frlg/map.json
@@ -0,0 +1,62 @@
+{
+ "id": "MAP_ROUTE18_EAST_ENTRANCE_2F",
+ "name": "Route18_EastEntrance_2F_Frlg",
+ "layout": "LAYOUT_ENTRANCE_2F",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_18",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 5,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route18_EastEntrance_2F_EventScript_Haden",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 10,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE18_EAST_ENTRANCE_1F",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route18_EastEntrance_2F_EventScript_LeftBinoculars"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route18_EastEntrance_2F_EventScript_RightBinoculars"
+ }
+ ]
+}
diff --git a/data/maps/Route18_EastEntrance_2F_Frlg/scripts.inc b/data/maps/Route18_EastEntrance_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..c4441ffada41
--- /dev/null
+++ b/data/maps/Route18_EastEntrance_2F_Frlg/scripts.inc
@@ -0,0 +1,55 @@
+Route18_EastEntrance_2F_Frlg_MapScripts::
+ .byte 0
+
+Route18_EastEntrance_2F_EventScript_LeftBinoculars::
+ msgbox Route18_EastEntrance_2F_Text_PalletTownInWest, MSGBOX_SIGN
+ end
+
+Route18_EastEntrance_2F_EventScript_RightBinoculars::
+ msgbox Route18_EastEntrance_2F_Text_PeopleSwimming, MSGBOX_SIGN
+ end
+
+Route18_EastEntrance_2F_EventScript_Haden::
+ lock
+ faceplayer
+ setvar VAR_0x8008, INGAME_TRADE_LICKITUNG
+ call EventScript_GetInGameTradeSpeciesInfo
+ goto_if_set FLAG_DID_MARC_TRADE, Route18_EastEntrance_2F_EventScript_AlreadyTraded
+ msgbox Trade_Text_LookingForMonWannaTradeForMon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, Route18_EastEntrance_2F_EventScript_DeclineTrade
+ call EventScript_ChooseMonForInGameTrade
+ goto_if_ge VAR_0x8004, PARTY_SIZE, Route18_EastEntrance_2F_EventScript_DeclineTrade
+ call EventScript_GetInGameTradeSpecies
+ goto_if_ne VAR_RESULT, VAR_0x8009, Route18_EastEntrance_2F_EventScript_NotRequestedMon
+ call EventScript_DoInGameTrade
+ msgbox Trade_Text_HeyThanks
+ setflag FLAG_DID_MARC_TRADE
+ release
+ end
+
+Route18_EastEntrance_2F_EventScript_DeclineTrade::
+ msgbox Trade_Text_AwwOhWell
+ release
+ end
+
+Route18_EastEntrance_2F_EventScript_NotRequestedMon::
+ bufferspeciesname STR_VAR_1, VAR_0x8009
+ msgbox Trade_Text_WhatThatsNoMon
+ release
+ end
+
+Route18_EastEntrance_2F_EventScript_AlreadyTraded::
+ msgbox Trade_Text_IsntMyOldMonGreat
+ release
+ end
+
+Route18_EastEntrance_2F_Text_PalletTownInWest::
+ .string "Let's see what the binoculars have\n"
+ .string "to show…\p"
+ .string "PALLET TOWN is in the west.$"
+
+Route18_EastEntrance_2F_Text_PeopleSwimming::
+ .string "Let's see what the binoculars have\n"
+ .string "to show…\p"
+ .string "There are people swimming.$"
+
diff --git a/data/maps/Route18_Frlg/map.json b/data/maps/Route18_Frlg/map.json
new file mode 100644
index 000000000000..3ea64079cd94
--- /dev/null
+++ b/data/maps/Route18_Frlg/map.json
@@ -0,0 +1,108 @@
+{
+ "id": "MAP_ROUTE18",
+ "name": "Route18_Frlg",
+ "layout": "LAYOUT_ROUTE18",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_18",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE17",
+ "offset": 0,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_FUCHSIA_CITY",
+ "offset": -10,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 46,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "Route18_EventScript_Jacob",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 41,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route18_EventScript_Ramiro",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 39,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "6",
+ "script": "Route18_EventScript_Wilton",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 41,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE18_EAST_ENTRANCE_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 48,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE18_EAST_ENTRANCE_1F",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 37,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route18_EventScript_CyclingRoadSign"
+ },
+ {
+ "type": "sign",
+ "x": 52,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route18_EventScript_RouteSign"
+ }
+ ]
+}
diff --git a/data/maps/Route18_Frlg/scripts.inc b/data/maps/Route18_Frlg/scripts.inc
new file mode 100644
index 000000000000..420306517e50
--- /dev/null
+++ b/data/maps/Route18_Frlg/scripts.inc
@@ -0,0 +1,69 @@
+Route18_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, Route18_OnTransition
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, Route18_OnWarp
+ .byte 0
+
+Route18_OnTransition::
+ call_if_eq VAR_MAP_SCENE_ROUTE16, 1, Route18_OnTransitionCyclingRoad
+ end
+
+Route18_OnTransitionCyclingRoad::
+ setflag FLAG_SYS_ON_CYCLING_ROAD
+ return
+
+Route18_OnWarp::
+ map_script_2 VAR_MAP_SCENE_ROUTE16, 1, Route18_OnWarpCyclingRoad
+ .2byte 0
+
+Route18_OnWarpCyclingRoad::
+ special ForcePlayerOntoBike
+ end
+
+Route18_EventScript_RouteSign::
+ msgbox Route18_Text_RouteSign, MSGBOX_SIGN
+ end
+
+Route18_EventScript_CyclingRoadSign::
+ msgbox Route18_Text_CyclingRoadSign, MSGBOX_SIGN
+ end
+
+Route18_Text_WiltonIntro::
+ .string "I always check every grassy area\n"
+ .string "for new POKéMON.$"
+
+Route18_Text_WiltonDefeat::
+ .string "Tch!$"
+
+Route18_Text_WiltonPostBattle::
+ .string "I wish I had a BIKE!$"
+
+Route18_Text_RamiroIntro::
+ .string "Kurukkoo!\n"
+ .string "How do you like my birdcall?$"
+
+Route18_Text_RamiroDefeat::
+ .string "I had to bug you!$"
+
+Route18_Text_RamiroPostBattle::
+ .string "I collect sea POKéMON on weekends\n"
+ .string "because the sea is so close.$"
+
+Route18_Text_JacobIntro::
+ .string "This is my turf!\n"
+ .string "Get out of here!$"
+
+Route18_Text_JacobDefeat::
+ .string "Darn!$"
+
+Route18_Text_JacobPostBattle::
+ .string "This is my fave area for catching\n"
+ .string "POKéMON.$"
+
+Route18_Text_RouteSign::
+ .string "ROUTE 18\n"
+ .string "CELADON CITY - FUCHSIA CITY$"
+
+Route18_Text_CyclingRoadSign::
+ .string "CYCLING ROAD\n"
+ .string "No pedestrians permitted!$"
+
diff --git a/data/maps/Route19_Frlg/map.json b/data/maps/Route19_Frlg/map.json
new file mode 100644
index 000000000000..c7694be34777
--- /dev/null
+++ b/data/maps/Route19_Frlg/map.json
@@ -0,0 +1,211 @@
+{
+ "id": "MAP_ROUTE19",
+ "name": "Route19_Frlg",
+ "layout": "LAYOUT_ROUTE19",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_19",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_FUCHSIA_CITY",
+ "offset": -12,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_ROUTE20",
+ "offset": 40,
+ "direction": "left"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_LAND",
+ "x": 15,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 6,
+ "movement_range_y": 3,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route19_EventScript_Reece",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_LAND",
+ "x": 10,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route19_EventScript_Richard",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_WATER",
+ "x": 12,
+ "y": 17,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route19_EventScript_Tony",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_WATER",
+ "x": 18,
+ "y": 33,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_RIGHT_DOWN",
+ "movement_range_x": 5,
+ "movement_range_y": 3,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route19_EventScript_Matthew",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_WATER",
+ "x": 8,
+ "y": 27,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route19_EventScript_Douglas",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_WATER",
+ "x": 16,
+ "y": 22,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "6",
+ "script": "Route19_EventScript_David",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_WATER",
+ "x": 11,
+ "y": 47,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route19_EventScript_Axle",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_F_WATER",
+ "x": 14,
+ "y": 48,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route19_EventScript_Alice",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_F_WATER",
+ "x": 12,
+ "y": 49,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route19_EventScript_Connie",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_F_WATER",
+ "x": 9,
+ "y": 48,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route19_EventScript_Anya",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_F_WATER",
+ "x": 8,
+ "y": 41,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route19_EventScript_Lia",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_TUBER_M_WATER",
+ "x": 9,
+ "y": 41,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route19_EventScript_Luc",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 13,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route19_EventScript_RouteSign"
+ }
+ ]
+}
diff --git a/data/maps/Route19_Frlg/scripts.inc b/data/maps/Route19_Frlg/scripts.inc
new file mode 100644
index 000000000000..a6a7fa10be34
--- /dev/null
+++ b/data/maps/Route19_Frlg/scripts.inc
@@ -0,0 +1,161 @@
+Route19_Frlg_MapScripts::
+ .byte 0
+
+Route19_EventScript_RouteSign::
+ msgbox Route19_Text_RouteSign, MSGBOX_SIGN
+ end
+
+Route19_Text_RichardIntro::
+ .string "I have to exercise and warm up\n"
+ .string "before going out for a swim.$"
+
+Route19_Text_RichardDefeat::
+ .string "All warmed up!$"
+
+Route19_Text_RichardPostBattle::
+ .string "Thanks, kid!\n"
+ .string "I'm ready for a swim.$"
+
+Route19_Text_ReeceIntro::
+ .string "Wait! Slow down!\n"
+ .string "You'll have a heart attack!$"
+
+Route19_Text_ReeceDefeat::
+ .string "Ooh!\n"
+ .string "That's chilly!$"
+
+Route19_Text_ReecePostBattle::
+ .string "Watch out for TENTACOOL.\n"
+ .string "They sting so painfully.$"
+
+Route19_Text_MatthewIntro::
+ .string "I love swimming!\n"
+ .string "What about you?$"
+
+Route19_Text_MatthewDefeat::
+ .string "Belly flop!$"
+
+Route19_Text_MatthewPostBattle::
+ .string "I can beat even marine POKéMON\n"
+ .string "at swimming.$"
+
+Route19_Text_DouglasIntro::
+ .string "What's beyond the horizon?$"
+
+Route19_Text_DouglasDefeat::
+ .string "Glub!$"
+
+Route19_Text_DouglasPostBattle::
+ .string "I see a couple of islands over\n"
+ .string "yonder!$"
+
+Route19_Text_DavidIntro::
+ .string "I tried diving for POKéMON, but it\n"
+ .string "was a no-go.$"
+
+Route19_Text_DavidDefeat::
+ .string "Help!$"
+
+Route19_Text_DavidPostBattle::
+ .string "I guess you have to fish for sea\n"
+ .string "POKéMON.$"
+
+Route19_Text_TonyIntro::
+ .string "I look at the sea to forget all\n"
+ .string "the bad things that happened.$"
+
+Route19_Text_TonyDefeat::
+ .string "Ooh!\n"
+ .string "Traumatic!$"
+
+Route19_Text_TonyPostBattle::
+ .string "I'm looking at the sea to forget\n"
+ .string "the bad thing that happened!$"
+
+Route19_Text_AnyaIntro::
+ .string "Oh, I just love your ride!\n"
+ .string "Can I have it if I win?$"
+
+Route19_Text_AnyaDefeat::
+ .string "Oh! I lost!$"
+
+Route19_Text_AnyaPostBattle::
+ .string "It's still a long way to go to\n"
+ .string "SEAFOAM ISLANDS…\p"
+ .string "I want to go back to FUCHSIA…$"
+
+Route19_Text_AliceIntro::
+ .string "Swimming's great!\n"
+ .string "Sunburns aren't!$"
+
+Route19_Text_AliceDefeat::
+ .string "Shocker!$"
+
+Route19_Text_AlicePostBattle::
+ .string "My boyfriend wanted to swim to\n"
+ .string "SEAFOAM ISLANDS.$"
+
+Route19_Text_AxleIntro::
+ .string "Ahoy, there!\n"
+ .string "These waters are treacherous!$"
+
+Route19_Text_AxleDefeat::
+ .string "Ooh!\n"
+ .string "Dangerous!$"
+
+Route19_Text_AxlePostBattle::
+ .string "M-my legs! They cramped up!\n"
+ .string "Glub, glub…$"
+
+Route19_Text_ConnieIntro::
+ .string "I swam here with my friends…\n"
+ .string "I'm tired…$"
+
+Route19_Text_ConnieDefeat::
+ .string "I'm exhausted…$"
+
+Route19_Text_ConniePostBattle::
+ .string "If I were to ride a POKéMON on\n"
+ .string "the sea, I'd like a LAPRAS.\p"
+ .string "LAPRAS is so big, I bet it\n"
+ .string "would keep me dry on water.$"
+
+Route19_Text_RouteSign::
+ .string "SEA ROUTE 19\n"
+ .string "FUCHSIA CITY - SEAFOAM ISLANDS$"
+
+Route19_Text_LiaIntro::
+ .string "LIA: I'm looking after my brother.\n"
+ .string "He just became a TRAINER.$"
+
+Route19_Text_LiaDefeat::
+ .string "LIA: That's no way to treat my\n"
+ .string "little brother!$"
+
+Route19_Text_LiaPostBattle::
+ .string "LIA: Do you have a younger\n"
+ .string "brother?\p"
+ .string "I hope you're teaching him all\n"
+ .string "sorts of things.$"
+
+Route19_Text_LiaNotEnoughMons::
+ .string "LIA: I want to battle together\n"
+ .string "with my little brother.\p"
+ .string "Don't you have two POKéMON?$"
+
+Route19_Text_LucIntro::
+ .string "LUC: My big sis taught me how\n"
+ .string "to swim and train POKéMON.$"
+
+Route19_Text_LucDefeat::
+ .string "LUC: Oh, wow!\n"
+ .string "Someone tougher than my big sis!$"
+
+Route19_Text_LucPostBattle::
+ .string "LUC: My big sis is strong and nice.\n"
+ .string "I think she's awesome!$"
+
+Route19_Text_LucNotEnoughMons::
+ .string "LUC: I don't want to if I can't\n"
+ .string "battle you with my big sis.\p"
+ .string "Don't you have two POKéMON?$"
diff --git a/data/maps/Route19_UnusedHouse_Frlg/map.json b/data/maps/Route19_UnusedHouse_Frlg/map.json
new file mode 100644
index 000000000000..ef096e6fbd65
--- /dev/null
+++ b/data/maps/Route19_UnusedHouse_Frlg/map.json
@@ -0,0 +1,22 @@
+{
+ "id": "MAP_ROUTE19_UNUSED_HOUSE",
+ "name": "Route19_UnusedHouse_Frlg",
+ "layout": "LAYOUT_HOUSE2_FRLG",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_19",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/Route19_UnusedHouse_Frlg/scripts.inc b/data/maps/Route19_UnusedHouse_Frlg/scripts.inc
new file mode 100644
index 000000000000..df5679f598b9
--- /dev/null
+++ b/data/maps/Route19_UnusedHouse_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+Route19_UnusedHouse_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/Route1_Frlg/map.json b/data/maps/Route1_Frlg/map.json
new file mode 100644
index 000000000000..7a1e26f25fe4
--- /dev/null
+++ b/data/maps/Route1_Frlg/map.json
@@ -0,0 +1,75 @@
+{
+ "id": "MAP_ROUTE1",
+ "name": "Route1_Frlg",
+ "layout": "LAYOUT_ROUTE1",
+ "music": "MUS_RG_ROUTE1",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_1",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_VIRIDIAN_CITY",
+ "offset": -12,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_PALLET_TOWN",
+ "offset": 0,
+ "direction": "down"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 6,
+ "y": 28,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route1_EventScript_MartClerk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 19,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 3,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route1_EventScript_Boy",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 31,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route1_EventScript_RouteSign"
+ }
+ ]
+}
diff --git a/data/maps/Route1_Frlg/scripts.inc b/data/maps/Route1_Frlg/scripts.inc
new file mode 100644
index 000000000000..3a39538f4e5c
--- /dev/null
+++ b/data/maps/Route1_Frlg/scripts.inc
@@ -0,0 +1,64 @@
+Route1_Frlg_MapScripts::
+ .byte 0
+
+Route1_EventScript_MartClerk::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_POTION_ON_ROUTE_1, Route1_EventScript_AlreadyGotPotion
+ msgbox Route1_Text_WorkAtPokeMartTakeSample
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ checkitemspace ITEM_POTION
+ goto_if_eq VAR_RESULT, FALSE, EventScript_BagIsFull
+ bufferitemname STR_VAR_2, ITEM_POTION
+ playfanfare MUS_LEVEL_UP
+ message gText_ObtainedTheItem
+ waitmessage
+ waitfanfare
+ additem ITEM_POTION
+ msgbox Route1_Text_PutPotionAway
+ call EventScript_RestorePrevTextColor
+ setflag FLAG_GOT_POTION_ON_ROUTE_1
+ release
+ end
+
+Route1_EventScript_AlreadyGotPotion::
+ msgbox Route1_Text_ComeSeeUsIfYouNeedPokeBalls
+ release
+ end
+
+Route1_EventScript_Boy::
+ msgbox Route1_Text_CanJumpFromLedges, MSGBOX_NPC
+ end
+
+Route1_EventScript_RouteSign::
+ msgbox Route1_Text_RouteSign, MSGBOX_SIGN
+ end
+
+Route1_Text_WorkAtPokeMartTakeSample::
+ .string "Hi!\n"
+ .string "I work at a POKéMON MART.\p"
+ .string "It's part of a convenient chain\n"
+ .string "selling all sorts of items.\p"
+ .string "Please, visit us in VIRIDIAN CITY.\p"
+ .string "I know, I'll give you a sample.\n"
+ .string "Here you go!$"
+
+Route1_Text_ComeSeeUsIfYouNeedPokeBalls::
+ .string "Please come see us if you need\n"
+ .string "POKé BALLS for catching POKéMON.$"
+
+Route1_Text_PutPotionAway::
+ .string "{PLAYER} put the POTION away in\n"
+ .string "the BAG's ITEMS POCKET.$"
+
+Route1_Text_CanJumpFromLedges::
+ .string "See those ledges along the road?\p"
+ .string "It's a bit scary, but you can jump\n"
+ .string "from them.\p"
+ .string "You can get back to PALLET TOWN\n"
+ .string "quicker that way.$"
+
+Route1_Text_RouteSign::
+ .string "ROUTE 1\n"
+ .string "PALLET TOWN - VIRIDIAN CITY$"
+
diff --git a/data/maps/Route20_Frlg/map.json b/data/maps/Route20_Frlg/map.json
new file mode 100644
index 000000000000..ae85966686ec
--- /dev/null
+++ b/data/maps/Route20_Frlg/map.json
@@ -0,0 +1,230 @@
+{
+ "id": "MAP_ROUTE20",
+ "name": "Route20_Frlg",
+ "layout": "LAYOUT_ROUTE20",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_20",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_CINNABAR_ISLAND",
+ "offset": 0,
+ "direction": "left"
+ },
+ {
+ "map": "MAP_ROUTE19",
+ "offset": -40,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_F_WATER",
+ "x": 8,
+ "y": 11,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route20_EventScript_Melissa",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 16,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route20_EventScript_Missy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_F_WATER",
+ "x": 34,
+ "y": 7,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "Route20_EventScript_Nora",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 43,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route20_EventScript_Roger",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_WATER",
+ "x": 23,
+ "y": 10,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_LEFT_UP",
+ "movement_range_x": 5,
+ "movement_range_y": 4,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route20_EventScript_Dean",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 73,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route20_EventScript_Irene",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_WATER",
+ "x": 111,
+ "y": 9,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_DOWN_RIGHT",
+ "movement_range_x": 5,
+ "movement_range_y": 3,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route20_EventScript_Barry",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_WATER",
+ "x": 106,
+ "y": 11,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_UP_RIGHT",
+ "movement_range_x": 5,
+ "movement_range_y": 3,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route20_EventScript_Darrin",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_F_WATER",
+ "x": 93,
+ "y": 10,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "Route20_EventScript_Shirley",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_F_WATER",
+ "x": 54,
+ "y": 11,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route20_EventScript_Tiffany",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CAMPER_FRLG",
+ "x": 69,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route20_EventScript_Camper",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 60,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 72,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_1F",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 68,
+ "y": 14,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route20_EventScript_SeafoamIslandsSign"
+ },
+ {
+ "type": "sign",
+ "x": 64,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route20_EventScript_SeafoamIslandsSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 23,
+ "y": 6,
+ "elevation": 3,
+ "item": "ITEM_STARDUST",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE20_STARDUST",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/Route20_Frlg/scripts.inc b/data/maps/Route20_Frlg/scripts.inc
new file mode 100644
index 000000000000..cb9f7f93b484
--- /dev/null
+++ b/data/maps/Route20_Frlg/scripts.inc
@@ -0,0 +1,153 @@
+Route20_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, Route20_OnTransition
+ .byte 0
+
+Route20_OnTransition::
+ call_if_unset FLAG_STOPPED_SEAFOAM_B3F_CURRENT, Route20_EventScript_ResetSeafoamBouldersForB3F
+ call_if_unset FLAG_STOPPED_SEAFOAM_B4F_CURRENT, Route20_EventScript_ResetSeafoamBouldersForB4F
+ end
+
+Route20_EventScript_ResetSeafoamBouldersForB3F::
+ clearflag FLAG_HIDE_SEAFOAM_1F_BOULDER_1
+ clearflag FLAG_HIDE_SEAFOAM_1F_BOULDER_2
+ setflag FLAG_HIDE_SEAFOAM_B1F_BOULDER_1
+ setflag FLAG_HIDE_SEAFOAM_B1F_BOULDER_2
+ setflag FLAG_HIDE_SEAFOAM_B2F_BOULDER_1
+ setflag FLAG_HIDE_SEAFOAM_B2F_BOULDER_2
+ setflag FLAG_HIDE_SEAFOAM_B3F_BOULDER_1
+ setflag FLAG_HIDE_SEAFOAM_B3F_BOULDER_2
+ return
+
+Route20_EventScript_ResetSeafoamBouldersForB4F::
+ clearflag FLAG_HIDE_SEAFOAM_B3F_BOULDER_3
+ clearflag FLAG_HIDE_SEAFOAM_B3F_BOULDER_4
+ clearflag FLAG_HIDE_SEAFOAM_B3F_BOULDER_5
+ clearflag FLAG_HIDE_SEAFOAM_B3F_BOULDER_6
+ setflag FLAG_HIDE_SEAFOAM_B4F_BOULDER_1
+ setflag FLAG_HIDE_SEAFOAM_B4F_BOULDER_2
+ return
+
+Route20_EventScript_SeafoamIslandsSign::
+ msgbox Route20_Text_SeafoamIslands, MSGBOX_SIGN
+ end
+
+Route20_Text_BarryIntro::
+ .string "The water is shallow here.\n"
+ .string "There are many people swimming.$"
+
+Route20_Text_BarryDefeat::
+ .string "Splash!$"
+
+Route20_Text_BarryPostBattle::
+ .string "I wish I could ride my POKéMON.\n"
+ .string "I bet you're not tired.$"
+
+Route20_Text_ShirleyIntro::
+ .string "SEAFOAM is a quiet getaway.\n"
+ .string "I'm vacationing here.$"
+
+Route20_Text_ShirleyDefeat::
+ .string "Quit it!$"
+
+Route20_Text_ShirleyPostBattle::
+ .string "There's a huge cavern underneath\n"
+ .string "this island.$"
+
+Route20_Text_TiffanyIntro::
+ .string "I love floating with the fishes\n"
+ .string "here among the waves.$"
+
+Route20_Text_TiffanyDefeat::
+ .string "Yowch!$"
+
+Route20_Text_TiffanyPostBattle::
+ .string "Want to float with me?$"
+
+Route20_Text_IreneIntro::
+ .string "Are you on vacation, too?$"
+
+Route20_Text_IreneDefeat::
+ .string "No mercy at all!$"
+
+Route20_Text_IrenePostBattle::
+ .string "SEAFOAM used to be a single island\n"
+ .string "in the distant past.$"
+
+Route20_Text_DeanIntro::
+ .string "Check out my buff physique!$"
+
+Route20_Text_DeanDefeat::
+ .string "Wimpy!$"
+
+Route20_Text_DeanPostBattle::
+ .string "I should've been buffing up my\n"
+ .string "POKéMON, not me!$"
+
+Route20_Text_DarrinIntro::
+ .string "Why are you riding a POKéMON?\n"
+ .string "Can't you swim?$"
+
+Route20_Text_DarrinDefeat::
+ .string "Ouch!\n"
+ .string "Torpedoed!$"
+
+Route20_Text_DarrinPostBattle::
+ .string "Riding a POKéMON sure looks fun!$"
+
+Route20_Text_RogerIntro::
+ .string "I rode my bird POKéMON here.$"
+
+Route20_Text_RogerDefeat::
+ .string "Oh, no!\n"
+ .string "Now what am I to do?$"
+
+Route20_Text_RogerPostBattle::
+ .string "My birds are exhausted.\n"
+ .string "They can't FLY me back!$"
+
+Route20_Text_NoraIntro::
+ .string "My boyfriend gave me big pearls.$"
+
+Route20_Text_NoraDefeat::
+ .string "Oh, no!\n"
+ .string "My pearls were in them!$"
+
+Route20_Text_NoraPostBattle::
+ .string "Will my pearls grow bigger inside\n"
+ .string "CLOYSTER?$"
+
+Route20_Text_MissyIntro::
+ .string "I swam here from CINNABAR ISLAND.\n"
+ .string "It wasn't easy, I tell you.$"
+
+Route20_Text_MissyDefeat::
+ .string "I'm so disappointed!$"
+
+Route20_Text_MissyPostBattle::
+ .string "POKéMON have taken over an\n"
+ .string "abandoned mansion on CINNABAR.\p"
+ .string "They call it the POKéMON MANSION\n"
+ .string "now.$"
+
+Route20_Text_MelissaIntro::
+ .string "CINNABAR, in the west, has a LAB\n"
+ .string "for POKéMON.\p"
+ .string "My daddy works there.$"
+
+Route20_Text_MelissaDefeat::
+ .string "Wait!\n"
+ .string "You're supposed to wait!$"
+
+Route20_Text_MelissaPostBattle::
+ .string "CINNABAR is a volcanic island.\p"
+ .string "I heard it rose out of the sea\n"
+ .string "when a volcano erupted.$"
+
+Route20_Text_SeafoamIslands::
+ .string "SEAFOAM ISLANDS$"
+
+Route20_Text_MistyTrainsHere::
+ .string "Strong TRAINERS and WATER POKéMON\n"
+ .string "are common sights in these parts.\p"
+ .string "They say that MISTY of the\n"
+ .string "CERULEAN GYM trains here.$"
diff --git a/data/maps/Route21_North_Frlg/map.json b/data/maps/Route21_North_Frlg/map.json
new file mode 100644
index 000000000000..29f0f32889e9
--- /dev/null
+++ b/data/maps/Route21_North_Frlg/map.json
@@ -0,0 +1,127 @@
+{
+ "id": "MAP_ROUTE21_NORTH",
+ "name": "Route21_North_Frlg",
+ "layout": "LAYOUT_ROUTE21_NORTH",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_21",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_PALLET_TOWN",
+ "offset": 0,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_ROUTE21_SOUTH",
+ "offset": 0,
+ "direction": "down"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 7,
+ "y": 27,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route21_North_EventScript_Ronald",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 16,
+ "y": 26,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route21_North_EventScript_Wade",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_WATER",
+ "x": 12,
+ "y": 44,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_RIGHT_DOWN",
+ "movement_range_x": 4,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route21_North_EventScript_Spencer",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_F_WATER",
+ "x": 14,
+ "y": 35,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route21_North_EventScript_Lil",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_TUBER_M_WATER",
+ "x": 15,
+ "y": 35,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route21_North_EventScript_Ian",
+ "flag": "0"
+ },
+ {
+ "type": "clone",
+ "graphics_id": "OBJ_EVENT_GFX_FAT_MAN_FRLG",
+ "x": 13,
+ "y": -3,
+ "target_local_id": "LOCALID_PALLET_FAT_MAN",
+ "target_map": "MAP_PALLET_TOWN"
+ }
+ ],
+ "warp_events": [
+
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 17,
+ "y": 42,
+ "elevation": 3,
+ "item": "ITEM_PEARL",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE21_NORTH_PEARL",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/Route21_North_Frlg/scripts.inc b/data/maps/Route21_North_Frlg/scripts.inc
new file mode 100644
index 000000000000..d8ec7a5ed7b9
--- /dev/null
+++ b/data/maps/Route21_North_Frlg/scripts.inc
@@ -0,0 +1,53 @@
+Route21_North_Frlg_MapScripts::
+ .byte 0
+
+Route21_North_Text_RonaldIntro::
+ .string "You want to know if the fish are\n"
+ .string "biting?$"
+
+Route21_North_Text_RonaldDefeat::
+ .string "Dang!$"
+
+Route21_North_Text_RonaldPostBattle::
+ .string "I can't catch anything good.\n"
+ .string "Not one good POKéMON to be had!$"
+
+Route21_North_Text_WadeIntro::
+ .string "I got a big haul!\n"
+ .string "Wanna go for it?$"
+
+Route21_North_Text_WadeDefeat::
+ .string "Heheh, MAGIKARP just don't make\n"
+ .string "the grade, do they?$"
+
+Route21_North_Text_WadePostBattle::
+ .string "I seem to only catch MAGIKARP!$"
+
+Route21_North_Text_SpencerIntro::
+ .string "The sea cleanses my body and soul!$"
+
+Route21_North_Text_SpencerDefeat::
+ .string "Ayah!$"
+
+Route21_North_Text_SpencerPostBattle::
+ .string "The sea is great and all, but I\n"
+ .string "like the mountains, too.$"
+
+@ Below is the battle text for the Cue Ball that was on Route 21 in Gen 1.
+@ This trainer wasnt used in Gen 3 so their text goes unused/untranslated
+@ Interestingly they did add a rematch intro text for this trainer
+@ English translations from RB are listed
+
+@ "What's wrong with me swimming?"
+Route21_North_Text_CueBallIntro::
+ .string "おれだって たまには\n"
+ .string "およぎに くるぜ!$"
+
+@ "Cheap shot!"
+Route21_North_Text_CueBallDefeat::
+ .string "ぐわわ!$"
+
+@ "I look like what? A studded inner tube? Get lost!"
+Route21_North_Text_CueBallPostBattle::
+ .string "うきやすそう だと?\n"
+ .string "うるせー おおきな おせわだッ!$"
diff --git a/data/maps/Route21_South_Frlg/map.json b/data/maps/Route21_South_Frlg/map.json
new file mode 100644
index 000000000000..9bdcc6f9d7b6
--- /dev/null
+++ b/data/maps/Route21_South_Frlg/map.json
@@ -0,0 +1,104 @@
+{
+ "id": "MAP_ROUTE21_SOUTH",
+ "name": "Route21_South_Frlg",
+ "layout": "LAYOUT_ROUTE21_SOUTH",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_21",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE21_NORTH",
+ "offset": 0,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_CINNABAR_ISLAND",
+ "offset": 0,
+ "direction": "down"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 11,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route21_South_EventScript_Claude",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 14,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route21_South_EventScript_Nolan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_WATER",
+ "x": 15,
+ "y": 24,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route21_South_EventScript_Jack",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_WATER",
+ "x": 15,
+ "y": 38,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route21_South_EventScript_Jerome",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_WATER",
+ "x": 10,
+ "y": 29,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "Route21_South_EventScript_Roland",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/Route21_South_Frlg/scripts.inc b/data/maps/Route21_South_Frlg/scripts.inc
new file mode 100644
index 000000000000..288027751937
--- /dev/null
+++ b/data/maps/Route21_South_Frlg/scripts.inc
@@ -0,0 +1,90 @@
+Route21_South_Frlg_MapScripts::
+ .byte 0
+
+Route21_South_Text_JackIntro::
+ .string "I caught my POKéMON at sea.$"
+
+Route21_South_Text_JackDefeat::
+ .string "Diver!!\n"
+ .string "Down!!$"
+
+Route21_South_Text_JackPostBattle::
+ .string "Where'd you catch your POKéMON?$"
+
+Route21_South_Text_JeromeIntro::
+ .string "Right now, I'm in a triathlon meet.$"
+
+Route21_South_Text_JeromeDefeat::
+ .string "Pant…\n"
+ .string "Pant… Pant…$"
+
+Route21_South_Text_JeromePostBattle::
+ .string "I'm beat! But, I still have the\n"
+ .string "bike race and marathon left!$"
+
+Route21_South_Text_RolandIntro::
+ .string "Ahh!\n"
+ .string "Feel the sun and the wind!$"
+
+Route21_South_Text_RolandDefeat::
+ .string "Yow!\n"
+ .string "I lost!$"
+
+Route21_South_Text_RolandPostBattle::
+ .string "I'm sunburnt to a crisp!$"
+
+Route21_South_Text_ClaudeIntro::
+ .string "Hey, don't scare away the fish!$"
+
+Route21_South_Text_ClaudeDefeat::
+ .string "Sorry! I'm just so frustrated from\n"
+ .string "not catching anything.$"
+
+Route21_South_Text_ClaudePostBattle::
+ .string "Sheesh, I haven't caught a thing.\n"
+ .string "Could this place actually be a\l"
+ .string "giant pool or something?$"
+
+Route21_South_Text_NolanIntro::
+ .string "Keep me company till I get a hit.$"
+
+Route21_South_Text_NolanDefeat::
+ .string "That burned some time.$"
+
+Route21_South_Text_NolanPostBattle::
+ .string "Oh wait!\n"
+ .string "I got a bite! Yeah!$"
+
+Route21_North_Text_LilIntro::
+ .string "LIL: Huh? A battle?\n"
+ .string "IAN, can't you do it alone?$"
+
+Route21_North_Text_LilDefeat::
+ .string "LIL: Oh, see?\n"
+ .string "We lost. Happy now?$"
+
+Route21_North_Text_LilPostBattle::
+ .string "LIL: I'm tired.\n"
+ .string "Can't we go home already?$"
+
+Route21_North_Text_LilNotEnoughMons::
+ .string "LIL: Huh? A battle?\n"
+ .string "I can't be bothered to do it alone.\l"
+ .string "Bring two POKéMON, won't you?$"
+
+Route21_North_Text_IanIntro::
+ .string "IAN: My sis doesn't get enough\n"
+ .string "exercise, so I made her come.$"
+
+Route21_North_Text_IanDefeat::
+ .string "IAN: Awww, Sis!\n"
+ .string "Get it together!$"
+
+Route21_North_Text_IanPostBattle::
+ .string "IAN: Come on, Sis!\p"
+ .string "You're not going to lose weight\n"
+ .string "like this!$"
+
+Route21_North_Text_IanNotEnoughMons::
+ .string "IAN: We want a two-on-two battle.\n"
+ .string "So can you bring two POKéMON?$"
diff --git a/data/maps/Route22_Frlg/map.json b/data/maps/Route22_Frlg/map.json
new file mode 100644
index 000000000000..7728b9a9cf36
--- /dev/null
+++ b/data/maps/Route22_Frlg/map.json
@@ -0,0 +1,128 @@
+{
+ "id": "MAP_ROUTE22",
+ "name": "Route22_Frlg",
+ "layout": "LAYOUT_ROUTE22",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_22",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE23",
+ "offset": 0,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_VIRIDIAN_CITY",
+ "offset": -10,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "local_id": "LOCALID_ROUTE22_RIVAL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLUE",
+ "x": 25,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_ROUTE_22_RIVAL"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE22_NORTH_ENTRANCE",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 9,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE22_NORTH_ENTRANCE",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 33,
+ "y": 4,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE22",
+ "var_value": "1",
+ "script": "Route22_EventScript_EarlyRivalTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 33,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE22",
+ "var_value": "1",
+ "script": "Route22_EventScript_EarlyRivalTriggerMid"
+ },
+ {
+ "type": "trigger",
+ "x": 33,
+ "y": 6,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE22",
+ "var_value": "1",
+ "script": "Route22_EventScript_EarlyRivalTriggerBottom"
+ },
+ {
+ "type": "trigger",
+ "x": 33,
+ "y": 4,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE22",
+ "var_value": "3",
+ "script": "Route22_EventScript_LateRivalTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 33,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE22",
+ "var_value": "3",
+ "script": "Route22_EventScript_LateRivalTriggerMid"
+ },
+ {
+ "type": "trigger",
+ "x": 33,
+ "y": 6,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE22",
+ "var_value": "3",
+ "script": "Route22_EventScript_LateRivalTriggerBottom"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route22_EventScript_LeagueGateSign"
+ }
+ ]
+}
diff --git a/data/maps/Route22_Frlg/scripts.inc b/data/maps/Route22_Frlg/scripts.inc
new file mode 100644
index 000000000000..0497ab4dccbc
--- /dev/null
+++ b/data/maps/Route22_Frlg/scripts.inc
@@ -0,0 +1,301 @@
+Route22_Frlg_MapScripts::
+ .byte 0
+
+Route22_EventScript_EarlyRivalTriggerTop::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto Route22_EventScript_EarlyRival
+ end
+
+Route22_EventScript_EarlyRivalTriggerMid::
+ lockall
+ setvar VAR_TEMP_1, 1
+ setobjectxyperm LOCALID_ROUTE22_RIVAL, 25, 5
+ goto Route22_EventScript_EarlyRival
+ end
+
+Route22_EventScript_EarlyRivalTriggerBottom::
+ lockall
+ setvar VAR_TEMP_1, 2
+ setobjectxyperm LOCALID_ROUTE22_RIVAL, 25, 5
+ goto Route22_EventScript_EarlyRival
+ end
+
+Route22_EventScript_EarlyRival::
+ textcolor NPC_TEXT_COLOR_MALE
+ playbgm MUS_RG_ENCOUNTER_RIVAL, 0
+ addobject LOCALID_ROUTE22_RIVAL
+ call_if_eq VAR_TEMP_1, 0, Route22_EventScript_EarlyRivalApproach
+ call_if_eq VAR_TEMP_1, 1, Route22_EventScript_EarlyRivalApproach
+ call_if_eq VAR_TEMP_1, 2, Route22_EventScript_EarlyRivalApproachBottom
+ delay 6
+ msgbox Route22_Text_EarlyRivalIntro
+ call_if_eq VAR_STARTER_MON, 2, Route22_EventScript_EarlyRivalSquirtle
+ call_if_eq VAR_STARTER_MON, 1, Route22_EventScript_EarlyRivalBulbasaur
+ call_if_eq VAR_STARTER_MON, 0, Route22_EventScript_EarlyRivalCharmander
+ msgbox Route22_Text_EarlyRivalPostBattle
+ closemessage
+ delay 10
+ playbgm MUS_RG_RIVAL_EXIT, 0
+ call_if_eq VAR_TEMP_1, 0, Route22_EventScript_EarlyRivalExit
+ call_if_eq VAR_TEMP_1, 1, Route22_EventScript_EarlyRivalExit
+ call_if_eq VAR_TEMP_1, 2, Route22_EventScript_EarlyRivalExitBottom
+ fadedefaultbgm
+ removeobject LOCALID_ROUTE22_RIVAL
+ setvar VAR_MAP_SCENE_ROUTE22, 2
+ releaseall
+ end
+
+Route22_EventScript_EarlyRivalApproach::
+ applymovement LOCALID_ROUTE22_RIVAL, Route22_Movement_RivalApproach
+ waitmovement 0
+ return
+
+Route22_EventScript_EarlyRivalApproachBottom::
+ applymovement LOCALID_ROUTE22_RIVAL, Route22_Movement_RivalApproachBottom
+ applymovement LOCALID_PLAYER, Route22_Movement_PlayerFaceRival
+ waitmovement 0
+ return
+
+Route22_EventScript_EarlyRivalSquirtle::
+ trainerbattle_earlyrival TRAINER_RIVAL_ROUTE22_EARLY_SQUIRTLE, 0, Route22_Text_EarlyRivalDefeat, Text_RivalVictory
+ return
+
+Route22_EventScript_EarlyRivalBulbasaur::
+ trainerbattle_earlyrival TRAINER_RIVAL_ROUTE22_EARLY_BULBASAUR, 0, Route22_Text_EarlyRivalDefeat, Text_RivalVictory
+ return
+
+Route22_EventScript_EarlyRivalCharmander::
+ trainerbattle_earlyrival TRAINER_RIVAL_ROUTE22_EARLY_CHARMANDER, 0, Route22_Text_EarlyRivalDefeat, Text_RivalVictory
+ return
+
+Route22_EventScript_EarlyRivalExit::
+ applymovement LOCALID_ROUTE22_RIVAL, Route22_Movement_EarlyRivalExit
+ waitmovement 0
+ return
+
+Route22_EventScript_EarlyRivalExitBottom::
+ applymovement LOCALID_ROUTE22_RIVAL, Route22_Movement_EarlyRivalExitBottom
+ waitmovement 0
+ return
+
+Route22_Movement_UnusedRivalExit:: @ 8
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ step_end
+
+Route22_Movement_EarlyRivalExit::
+ walk_down
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+Route22_Movement_EarlyRivalExitBottom::
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+Route22_Movement_RivalApproach::
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ step_end
+
+Route22_Movement_RivalApproachBottom::
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_in_place_faster_down
+ step_end
+
+Route22_Movement_PlayerFaceRival::
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ delay_8
+ walk_in_place_faster_up
+ step_end
+
+Route22_EventScript_LateRivalTriggerTop::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto Route22_EventScript_LateRival
+ end
+
+Route22_EventScript_LateRivalTriggerMid::
+ lockall
+ setvar VAR_TEMP_1, 1
+ setobjectxyperm LOCALID_ROUTE22_RIVAL, 25, 5
+ goto Route22_EventScript_LateRival
+ end
+
+Route22_EventScript_LateRivalTriggerBottom::
+ lockall
+ setvar VAR_TEMP_1, 2
+ setobjectxyperm LOCALID_ROUTE22_RIVAL, 25, 5
+ goto Route22_EventScript_LateRival
+ end
+
+Route22_EventScript_LateRival::
+ textcolor NPC_TEXT_COLOR_MALE
+ playbgm MUS_RG_ENCOUNTER_RIVAL, 0
+ addobject LOCALID_ROUTE22_RIVAL
+ call_if_eq VAR_TEMP_1, 0, Route22_EventScript_LateRivalApproach
+ call_if_eq VAR_TEMP_1, 1, Route22_EventScript_LateRivalApproach
+ call_if_eq VAR_TEMP_1, 2, Route22_EventScript_LateRivalApproachBottom
+ msgbox Route22_Text_LateRivalIntro
+ setvar VAR_LAST_TALKED, LOCALID_ROUTE22_RIVAL
+ call_if_eq VAR_STARTER_MON, 2, Route22_EventScript_LateRivalSquirtle
+ call_if_eq VAR_STARTER_MON, 1, Route22_EventScript_LateRivalBulbasaur
+ call_if_eq VAR_STARTER_MON, 0, Route22_EventScript_LateRivalCharmander
+ msgbox Route22_Text_LateRivalPostBattle
+ closemessage
+ delay 10
+ playbgm MUS_RG_RIVAL_EXIT, 0
+ applymovement LOCALID_ROUTE22_RIVAL, Route22_Movement_LateRivalExit
+ waitmovement 0
+ fadedefaultbgm
+ removeobject LOCALID_ROUTE22_RIVAL
+ setvar VAR_MAP_SCENE_ROUTE22, 4
+ releaseall
+ end
+
+Route22_EventScript_LateRivalApproach::
+ applymovement LOCALID_ROUTE22_RIVAL, Route22_Movement_RivalApproach
+ waitmovement 0
+ return
+
+Route22_EventScript_LateRivalApproachBottom::
+ applymovement LOCALID_ROUTE22_RIVAL, Route22_Movement_RivalApproachBottom
+ applymovement LOCALID_PLAYER, Route22_Movement_PlayerFaceRival
+ waitmovement 0
+ return
+
+Route22_EventScript_LateRivalSquirtle::
+ trainerbattle_no_intro TRAINER_RIVAL_ROUTE22_LATE_SQUIRTLE, Route22_Text_LateRivalDefeat
+ return
+
+Route22_EventScript_LateRivalBulbasaur::
+ trainerbattle_no_intro TRAINER_RIVAL_ROUTE22_LATE_BULBASAUR, Route22_Text_LateRivalDefeat
+ return
+
+Route22_EventScript_LateRivalCharmander::
+ trainerbattle_no_intro TRAINER_RIVAL_ROUTE22_LATE_CHARMANDER, Route22_Text_LateRivalDefeat
+ return
+
+Route22_Movement_LateRivalExit::
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ walk_left
+ step_end
+
+Route22_EventScript_LeagueGateSign::
+ msgbox Route22_Text_LeagueGateSign, MSGBOX_SIGN
+ end
+
+Route22_Text_EarlyRivalIntro::
+ .string "{RIVAL}: Hey! {PLAYER}!\p"
+ .string "You're off to the POKéMON LEAGUE?\n"
+ .string "Forget about it!\p"
+ .string "You probably don't have any\n"
+ .string "BADGES, do you?\p"
+ .string "The guard won't let you through\n"
+ .string "without them.\p"
+ .string "By the way, did your POKéMON get\n"
+ .string "any stronger?$"
+
+Route22_Text_EarlyRivalDefeat::
+ .string "Awww!\n"
+ .string "You just lucked out!$"
+
+Route22_Text_EarlyRivalPostBattle::
+ .string "I heard the POKéMON LEAGUE is\n"
+ .string "crawling with tough TRAINERS.\p"
+ .string "I have to figure out how to get\n"
+ .string "past them.\p"
+ .string "You should quit dawdling and get a\n"
+ .string "move on!$"
+
+@ Translated in RB as "{RIVAL}: What? Why do I have 2 POKéMON? You should catch some more too!"
+Route22_Text_RivalShouldCatchSomeMons::
+ .string "{RIVAL}“なんだ?\n"
+ .string "ポケモン 2ひきも\l"
+ .string "もってるの なぜか だって?\p"
+ .string "おまえも\n"
+ .string "つかまえれば いい じゃん!$"
+
+Route22_Text_LateRivalIntro::
+ .string "{RIVAL}: What? {PLAYER}!\n"
+ .string "What a surprise to see you here!\p"
+ .string "So you're going to the POKéMON\n"
+ .string "LEAGUE?\p"
+ .string "You collected all the BADGES, too?\n"
+ .string "That's cool!\p"
+ .string "Then I'll whip you, {PLAYER}, as a\n"
+ .string "warm-up for the POKéMON LEAGUE!\p"
+ .string "Come on!$"
+
+Route22_Text_LateRivalDefeat::
+ .string "What!?\p"
+ .string "I was just careless, you!$"
+
+Route22_Text_LateRivalPostBattle::
+ .string "That loosened me up.\n"
+ .string "I'm ready for the POKéMON LEAGUE!\p"
+ .string "{PLAYER}, you need more practice.\p"
+ .string "But hey, you know that!\n"
+ .string "I'm out of here. Smell ya!$"
+
+@ Translated in RB as "{RIVAL}: Hahaha! {PLAYER}! That's your best? You're nowhere near as good as me, pal! Go train some more! You loser!"
+Route22_Text_LateRivalVictory::
+ .string "{RIVAL}“ひゃははッ {PLAYER}ー!\n"
+ .string "それで がんばってるのかよ!\l"
+ .string "おれの さいのうに くらべりゃ\l"
+ .string "{PLAYER}は まだまだ だな!\p"
+ .string "もっと れんしゅう こいよ!\n"
+ .string "あははーッ!$"
+
+Route22_Text_LeagueGateSign::
+ .string "POKéMON LEAGUE\n"
+ .string "Front Gate$"
+
diff --git a/data/maps/Route22_NorthEntrance_Frlg/map.json b/data/maps/Route22_NorthEntrance_Frlg/map.json
new file mode 100644
index 000000000000..8212a66b2ece
--- /dev/null
+++ b/data/maps/Route22_NorthEntrance_Frlg/map.json
@@ -0,0 +1,76 @@
+{
+ "id": "MAP_ROUTE22_NORTH_ENTRANCE",
+ "name": "Route22_NorthEntrance_Frlg",
+ "layout": "LAYOUT_ROUTE22_NORTH_ENTRANCE",
+ "music": "MUS_RG_VIRIDIAN_FOREST",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_22",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 8,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route22_NorthEntrance_EventScript_BoulderBadgeGuard",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE23",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 6,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE22",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 7,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE22",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 8,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE22",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "0",
+ "script": "Route22_NorthEntrance_EventScript_BoulderBadgeGuardTrigger"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/Route22_NorthEntrance_Frlg/scripts.inc b/data/maps/Route22_NorthEntrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..9ccfded6cd2f
--- /dev/null
+++ b/data/maps/Route22_NorthEntrance_Frlg/scripts.inc
@@ -0,0 +1,18 @@
+Route22_NorthEntrance_Frlg_MapScripts::
+ .byte 0
+
+Route22_NorthEntrance_EventScript_BoulderBadgeGuard::
+ lock
+ faceplayer
+ setvar VAR_TEMP_1, 1
+ bufferstdstring STR_VAR_1, STDSTRING_BOULDER_BADGE
+ goto Route22_NorthEntrance_EventScript_BadgeGuard
+ end
+
+Route22_NorthEntrance_EventScript_BoulderBadgeGuardTrigger::
+ lockall
+ setvar VAR_TEMP_1, 1
+ setvar VAR_0x8009, 1
+ bufferstdstring STR_VAR_1, STDSTRING_BOULDER_BADGE
+ goto Route23_EventScript_BadgeGuardTrigger
+ end
diff --git a/data/maps/Route23_Frlg/map.json b/data/maps/Route23_Frlg/map.json
new file mode 100644
index 000000000000..3aa4b9260a7a
--- /dev/null
+++ b/data/maps/Route23_Frlg/map.json
@@ -0,0 +1,636 @@
+{
+ "id": "MAP_ROUTE23",
+ "name": "Route23_Frlg",
+ "layout": "LAYOUT_ROUTE23",
+ "music": "MUS_VICTORY_ROAD",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_23",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_INDIGO_PLATEAU_EXTERIOR",
+ "offset": 0,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_ROUTE22",
+ "offset": 0,
+ "direction": "down"
+ }
+ ],
+ "object_events": [
+ {
+ "local_id": "LOCALID_CASCADE_BADGE_GUARD",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 15,
+ "y": 149,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route23_EventScript_CascadeBadgeGuard",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_THUNDER_BADGE_GUARD",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 8,
+ "y": 140,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route23_EventScript_ThunderBadgeGuard",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_RAINBOW_BADGE_GUARD",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 14,
+ "y": 123,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route23_EventScript_RainbowBadgeGuard",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_SOUL_BADGE_GUARD",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 16,
+ "y": 112,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route23_EventScript_SoulBadgeGuard",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_MARSH_BADGE_GUARD",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 10,
+ "y": 94,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route23_EventScript_MarshBadgeGuard",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_VOLCANO_BADGE_GUARD",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 14,
+ "y": 61,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route23_EventScript_VolcanoBadgeGuard",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_EARTH_BADGE_GUARD",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 6,
+ "y": 35,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route23_EventScript_EarthBadgeGuard",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 28,
+ "elevation": 3,
+ "dest_map": "MAP_VICTORY_ROAD_1F_FRLG",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 18,
+ "y": 28,
+ "elevation": 3,
+ "dest_map": "MAP_VICTORY_ROAD_2F",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 8,
+ "y": 153,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE22_NORTH_ENTRANCE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 154,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE22_NORTH_ENTRANCE",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 13,
+ "y": 149,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "1",
+ "script": "Route23_EventScript_CascadeBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 7,
+ "y": 140,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "2",
+ "script": "Route23_EventScript_ThunderBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 12,
+ "y": 123,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "3",
+ "script": "Route23_EventScript_RainbowBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 11,
+ "y": 111,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "4",
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 94,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "5",
+ "script": "Route23_EventScript_MarshBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 12,
+ "y": 61,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "6",
+ "script": "Route23_EventScript_VolcanoBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 1,
+ "y": 35,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "7",
+ "script": "Route23_EventScript_EarthBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 1,
+ "y": 34,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "7",
+ "script": "Route23_EventScript_EarthBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 1,
+ "y": 32,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "7",
+ "script": "Route23_EventScript_EarthBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 1,
+ "y": 33,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "7",
+ "script": "Route23_EventScript_EarthBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 1,
+ "y": 31,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "7",
+ "script": "Route23_EventScript_EarthBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 1,
+ "y": 36,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "7",
+ "script": "Route23_EventScript_EarthBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 5,
+ "y": 35,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "7",
+ "script": "Route23_EventScript_EarthBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 4,
+ "y": 35,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "7",
+ "script": "Route23_EventScript_EarthBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 60,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "6",
+ "script": "Route23_EventScript_VolcanoBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 13,
+ "y": 61,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "6",
+ "script": "Route23_EventScript_VolcanoBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 11,
+ "y": 60,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "6",
+ "script": "Route23_EventScript_VolcanoBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 8,
+ "y": 94,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "5",
+ "script": "Route23_EventScript_MarshBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 5,
+ "y": 92,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "5",
+ "script": "Route23_EventScript_MarshBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 7,
+ "y": 94,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "5",
+ "script": "Route23_EventScript_MarshBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 4,
+ "y": 92,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "5",
+ "script": "Route23_EventScript_MarshBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 3,
+ "y": 92,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "5",
+ "script": "Route23_EventScript_MarshBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 2,
+ "y": 92,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "5",
+ "script": "Route23_EventScript_MarshBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 4,
+ "y": 139,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "2",
+ "script": "Route23_EventScript_ThunderBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 5,
+ "y": 139,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "2",
+ "script": "Route23_EventScript_ThunderBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 140,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "2",
+ "script": "Route23_EventScript_ThunderBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 122,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "3",
+ "script": "Route23_EventScript_RainbowBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 11,
+ "y": 122,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "3",
+ "script": "Route23_EventScript_RainbowBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 13,
+ "y": 123,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "3",
+ "script": "Route23_EventScript_RainbowBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 8,
+ "y": 109,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "4",
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 109,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "4",
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 109,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "4",
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 11,
+ "y": 109,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "4",
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 12,
+ "y": 109,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "4",
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 12,
+ "y": 111,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "4",
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 14,
+ "y": 112,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "4",
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 13,
+ "y": 112,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "4",
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 15,
+ "y": 112,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "4",
+ "script": "Route23_EventScript_SoulBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 12,
+ "y": 148,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "1",
+ "script": "Route23_EventScript_CascadeBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 11,
+ "y": 148,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "1",
+ "script": "Route23_EventScript_CascadeBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 14,
+ "y": 149,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "1",
+ "script": "Route23_EventScript_CascadeBadgeGuardTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 148,
+ "elevation": 0,
+ "var": "VAR_MAP_SCENE_ROUTE23",
+ "var_value": "1",
+ "script": "Route23_EventScript_CascadeBadgeGuardTrigger"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 19,
+ "y": 42,
+ "elevation": 0,
+ "item": "ITEM_FULL_RESTORE",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE23_FULL_RESTORE",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 20,
+ "y": 72,
+ "elevation": 0,
+ "item": "ITEM_ULTRA_BALL",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE23_ULTRA_BALL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 11,
+ "y": 101,
+ "elevation": 3,
+ "item": "ITEM_MAX_ETHER",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE23_MAX_ETHER",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 3,
+ "y": 18,
+ "elevation": 3,
+ "item": "ITEM_LUM_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE23_LUM_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 2,
+ "y": 29,
+ "elevation": 3,
+ "item": "ITEM_SITRUS_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE23_SITRUS_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 10,
+ "y": 67,
+ "elevation": 3,
+ "item": "ITEM_ASPEAR_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE23_ASPEAR_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 3,
+ "y": 128,
+ "elevation": 3,
+ "item": "ITEM_LEPPA_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE23_LEPPA_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 9,
+ "y": 8,
+ "elevation": 3,
+ "item": "ITEM_MAX_ELIXIR",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE23_MAX_ELIXIR",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 31,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route23_EventScript_VictoryRoadGateSign"
+ }
+ ]
+}
diff --git a/data/maps/Route23_Frlg/scripts.inc b/data/maps/Route23_Frlg/scripts.inc
new file mode 100644
index 000000000000..bcf89f634e2f
--- /dev/null
+++ b/data/maps/Route23_Frlg/scripts.inc
@@ -0,0 +1,133 @@
+Route23_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, Route23_OnTransition
+ .byte 0
+
+Route23_OnTransition::
+ clearflag FLAG_HIDE_VICTORY_ROAD_3F_BOULDER
+ setflag FLAG_HIDE_VICTORY_ROAD_2F_BOULDER
+ setvar VAR_MAP_SCENE_VICTORY_ROAD_1F, 0
+ setvar VAR_MAP_SCENE_VICTORY_ROAD_2F_BOULDER1, 0
+ setvar VAR_MAP_SCENE_VICTORY_ROAD_2F_BOULDER2, 0
+ setvar VAR_MAP_SCENE_VICTORY_ROAD_3F, 0
+ end
+
+Route23_EventScript_CascadeBadgeGuard::
+ lock
+ faceplayer
+ setvar VAR_TEMP_1, 2
+ bufferstdstring STR_VAR_1, STDSTRING_CASCADE_BADGE
+ goto Route23_EventScript_BadgeGuard
+ end
+
+Route23_EventScript_ThunderBadgeGuard::
+ lock
+ faceplayer
+ setvar VAR_TEMP_1, 3
+ bufferstdstring STR_VAR_1, STDSTRING_THUNDER_BADGE
+ goto Route23_EventScript_BadgeGuard
+ end
+
+Route23_EventScript_RainbowBadgeGuard::
+ lock
+ faceplayer
+ setvar VAR_TEMP_1, 4
+ bufferstdstring STR_VAR_1, STDSTRING_RAINBOW_BADGE
+ goto Route23_EventScript_BadgeGuard
+ end
+
+Route23_EventScript_SoulBadgeGuard::
+ lock
+ faceplayer
+ setvar VAR_TEMP_1, 5
+ bufferstdstring STR_VAR_1, STDSTRING_SOUL_BADGE
+ goto Route23_EventScript_BadgeGuard
+ end
+
+Route23_EventScript_MarshBadgeGuard::
+ lock
+ faceplayer
+ setvar VAR_TEMP_1, 6
+ bufferstdstring STR_VAR_1, STDSTRING_MARSH_BADGE
+ goto Route23_EventScript_BadgeGuard
+ end
+
+Route23_EventScript_VolcanoBadgeGuard::
+ lock
+ faceplayer
+ setvar VAR_TEMP_1, 7
+ bufferstdstring STR_VAR_1, STDSTRING_VOLCANO_BADGE
+ goto Route23_EventScript_BadgeGuard
+ end
+
+Route23_EventScript_EarthBadgeGuard::
+ lock
+ faceplayer
+ setvar VAR_TEMP_1, 8
+ bufferstdstring STR_VAR_1, STDSTRING_EARTH_BADGE
+ goto Route23_EventScript_BadgeGuard
+ end
+
+Route23_EventScript_CascadeBadgeGuardTrigger::
+ lockall
+ setvar VAR_TEMP_1, 2
+ setvar VAR_0x8009, LOCALID_CASCADE_BADGE_GUARD
+ bufferstdstring STR_VAR_1, STDSTRING_CASCADE_BADGE
+ goto Route23_EventScript_BadgeGuardTrigger
+ end
+
+Route23_EventScript_ThunderBadgeGuardTrigger::
+ lockall
+ setvar VAR_TEMP_1, 3
+ setvar VAR_0x8009, LOCALID_THUNDER_BADGE_GUARD
+ bufferstdstring STR_VAR_1, STDSTRING_THUNDER_BADGE
+ goto Route23_EventScript_BadgeGuardTrigger
+ end
+
+Route23_EventScript_RainbowBadgeGuardTrigger::
+ lockall
+ setvar VAR_TEMP_1, 4
+ setvar VAR_0x8009, LOCALID_RAINBOW_BADGE_GUARD
+ bufferstdstring STR_VAR_1, STDSTRING_RAINBOW_BADGE
+ goto Route23_EventScript_BadgeGuardTrigger
+ end
+
+Route23_EventScript_SoulBadgeGuardTrigger::
+ lockall
+ setvar VAR_TEMP_1, 5
+ setvar VAR_0x8009, LOCALID_SOUL_BADGE_GUARD
+ bufferstdstring STR_VAR_1, STDSTRING_SOUL_BADGE
+ goto Route23_EventScript_BadgeGuardTrigger
+ end
+
+Route23_EventScript_MarshBadgeGuardTrigger::
+ lockall
+ setvar VAR_TEMP_1, 6
+ setvar VAR_0x8009, LOCALID_MARSH_BADGE_GUARD
+ bufferstdstring STR_VAR_1, STDSTRING_MARSH_BADGE
+ goto Route23_EventScript_BadgeGuardTrigger
+ end
+
+Route23_EventScript_VolcanoBadgeGuardTrigger::
+ lockall
+ setvar VAR_TEMP_1, 7
+ setvar VAR_0x8009, LOCALID_VOLCANO_BADGE_GUARD
+ bufferstdstring STR_VAR_1, STDSTRING_VOLCANO_BADGE
+ goto Route23_EventScript_BadgeGuardTrigger
+ end
+
+Route23_EventScript_EarthBadgeGuardTrigger::
+ lockall
+ setvar VAR_TEMP_1, 8
+ setvar VAR_0x8009, LOCALID_EARTH_BADGE_GUARD
+ bufferstdstring STR_VAR_1, STDSTRING_EARTH_BADGE
+ goto Route23_EventScript_BadgeGuardTrigger
+ end
+
+Route23_EventScript_VictoryRoadGateSign::
+ msgbox Route23_Text_VictoryRoadGateSign, MSGBOX_SIGN
+ end
+
+Route23_Text_VictoryRoadGateSign::
+ .string "VICTORY ROAD GATE -\n"
+ .string "POKéMON LEAGUE$"
+
diff --git a/data/maps/Route23_UnusedHouse/map.json b/data/maps/Route23_UnusedHouse/map.json
new file mode 100644
index 000000000000..11e58dfeea7d
--- /dev/null
+++ b/data/maps/Route23_UnusedHouse/map.json
@@ -0,0 +1,22 @@
+{
+ "id": "MAP_ROUTE23_UNUSED_HOUSE",
+ "name": "Route23_UnusedHouse",
+ "layout": "LAYOUT_HOUSE2_FRLG",
+ "music": "MUS_VICTORY_ROAD",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_23",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/Route24_Frlg/map.json b/data/maps/Route24_Frlg/map.json
new file mode 100644
index 000000000000..99e76d64939e
--- /dev/null
+++ b/data/maps/Route24_Frlg/map.json
@@ -0,0 +1,179 @@
+{
+ "id": "MAP_ROUTE24",
+ "name": "Route24_Frlg",
+ "layout": "LAYOUT_ROUTE24",
+ "music": "MUS_RG_ROUTE24",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_24",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_CERULEAN_CITY",
+ "offset": -12,
+ "direction": "down"
+ },
+ {
+ "map": "MAP_ROUTE25",
+ "offset": 0,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "local_id": "LOCALID_ROUTE24_ROCKET",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 12,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route24_EventScript_Rocket",
+ "flag": "FLAG_HIDE_NUGGET_BRIDGE_ROCKET"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CAMPER_FRLG",
+ "x": 12,
+ "y": 19,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route24_EventScript_Ethan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 10,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route24_EventScript_Reli",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 12,
+ "y": 25,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route24_EventScript_Timmy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 10,
+ "y": 28,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route24_EventScript_Ali",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 12,
+ "y": 31,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route24_EventScript_Cale",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CAMPER_FRLG",
+ "x": 5,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "Route24_EventScript_Shane",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 11,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route24_EventScript_ItemTM45",
+ "flag": "FLAG_HIDE_ROUTE24_TM45"
+ }
+ ],
+ "warp_events": [
+
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 15,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE24",
+ "var_value": "0",
+ "script": "Route24_EventScript_RocketTriggerLeft"
+ },
+ {
+ "type": "trigger",
+ "x": 11,
+ "y": 15,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE24",
+ "var_value": "0",
+ "script": "Route24_EventScript_RocketTriggerRight"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 19,
+ "y": 4,
+ "elevation": 3,
+ "item": "ITEM_PECHA_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE24_PECHA_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/Route24_Frlg/scripts.inc b/data/maps/Route24_Frlg/scripts.inc
new file mode 100644
index 000000000000..75686a2a7f42
--- /dev/null
+++ b/data/maps/Route24_Frlg/scripts.inc
@@ -0,0 +1,198 @@
+Route24_Frlg_MapScripts::
+ .byte 0
+
+Route24_EventScript_Rocket::
+ lock
+ faceplayer
+ goto_if_eq VAR_MAP_SCENE_ROUTE24, 1, Route24_EventScript_RocketPostBattle
+ msgbox Route24_Text_JustEarnedFabulousPrize
+ checkitemspace ITEM_NUGGET
+ goto_if_eq VAR_RESULT, FALSE, Route24_EventScript_NoRoomForNugget
+ call Route24_EventScript_BattleRocket
+ release
+ end
+
+Route24_EventScript_NoRoomForNugget::
+ msgbox Route24_Text_YouDontHaveAnyRoom
+ release
+ end
+
+Route24_EventScript_RocketPostBattle::
+ msgbox Route24_Text_YoudBecomeTopRocketLeader
+ release
+ end
+
+Route24_EventScript_RocketTriggerLeft::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto Route24_EventScript_RocketTrigger
+ end
+
+Route24_EventScript_RocketTriggerRight::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto Route24_EventScript_RocketTrigger
+ end
+
+Route24_EventScript_RocketTrigger::
+ textcolor NPC_TEXT_COLOR_MALE
+ call_if_eq VAR_TEMP_1, 0, Route24_EventScript_RocketApproachPlayer
+ call_if_eq VAR_TEMP_1, 1, Route24_EventScript_RocketMotionToPlayer
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ msgbox Route24_Text_JustEarnedFabulousPrize
+ checkitemspace ITEM_NUGGET
+ goto_if_eq VAR_RESULT, FALSE, Route24_EventScript_NoRoomForNuggetTrigger
+ call Route24_EventScript_BattleRocket
+ releaseall
+ end
+
+Route24_EventScript_BattleRocket::
+ giveitem_msg Route24_Text_ReceivedNuggetFromMysteryTrainer, ITEM_NUGGET
+ message Route24_Text_JoinTeamRocket
+ waitmessage
+ playbgm MUS_RG_ENCOUNTER_ROCKET, 0
+ waitbuttonpress
+ setvar VAR_LAST_TALKED, LOCALID_ROUTE24_ROCKET
+ trainerbattle_no_intro TRAINER_TEAM_ROCKET_GRUNT_6, Route24_Text_RocketDefeat
+ msgbox Route24_Text_YoudBecomeTopRocketLeader
+ setvar VAR_MAP_SCENE_ROUTE24, 1
+ return
+
+Route24_EventScript_RocketApproachPlayer::
+ applymovement LOCALID_ROUTE24_ROCKET, Route24_Movement_RocketApproachPlayer
+ waitmovement 0
+ return
+
+Route24_EventScript_RocketMotionToPlayer::
+ applymovement LOCALID_ROUTE24_ROCKET, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ return
+
+Route24_EventScript_NoRoomForNuggetTrigger::
+ msgbox Route24_Text_YouDontHaveAnyRoom
+ closemessage
+ applymovement LOCALID_PLAYER, Route24_Movement_WalkDown
+ waitmovement 0
+ call_if_eq VAR_TEMP_1, 0, Route24_EventScript_RocketWalkBackToPos
+ release
+ end
+
+Route24_EventScript_RocketWalkBackToPos::
+ applymovement LOCALID_ROUTE24_ROCKET, Route24_Movement_RocketWalkBackToPos
+ waitmovement 0
+ return
+
+Route24_Movement_RocketApproachPlayer::
+ walk_left
+ step_end
+
+Route24_Movement_RocketWalkBackToPos::
+ walk_right
+ walk_in_place_faster_left
+ step_end
+
+Route24_Movement_WalkDown::
+ walk_down
+ step_end
+
+Route24_Text_JustEarnedFabulousPrize::
+ .string "Congratulations! You beat our\n"
+ .string "five contest TRAINERS!\p"
+ .string "You just earned a fabulous prize!$"
+
+Route24_Text_ReceivedNuggetFromMysteryTrainer::
+ .string "{PLAYER} received a NUGGET\n"
+ .string "from the mystery TRAINER!$"
+
+Route24_Text_YouDontHaveAnyRoom::
+ .string "You don't have any room!$"
+
+Route24_Text_JoinTeamRocket::
+ .string "By the way, how would you like to\n"
+ .string "join TEAM ROCKET?\p"
+ .string "We're a group of professional\n"
+ .string "criminals specializing in POKéMON!\p"
+ .string "Want to join?\p"
+ .string "Are you sure?\p"
+ .string "Come on, join us!\p"
+ .string "I'm telling you to join!\p"
+ .string "…Okay, you need convincing!\p"
+ .string "I'll make you an offer you can't\n"
+ .string "refuse!$"
+
+Route24_Text_RocketDefeat::
+ .string "Arrgh!\n"
+ .string "You are good!$"
+
+Route24_Text_YoudBecomeTopRocketLeader::
+ .string "With your ability, you'd become\n"
+ .string "a top leader in TEAM ROCKET.\p"
+ .string "Come on, think of the opportunity!\n"
+ .string "Don't let this chance go to waste.$"
+
+Route24_Text_ShaneIntro::
+ .string "I saw your feat from the grass!$"
+
+Route24_Text_ShaneDefeat::
+ .string "I thought not!$"
+
+Route24_Text_ShanePostBattle::
+ .string "I hid because the people on the\n"
+ .string "bridge frightened me.$"
+
+Route24_Text_EthanIntro::
+ .string "Okay! I'm No. 5!\n"
+ .string "I'll stomp you!$"
+
+Route24_Text_EthanDefeat::
+ .string "Whoa!\n"
+ .string "Too much!$"
+
+Route24_Text_EthanPostBattle::
+ .string "I did my best. I have no regrets!$"
+
+Route24_Text_ReliIntro::
+ .string "I'm No. 4!\n"
+ .string "Getting tired?$"
+
+Route24_Text_ReliDefeat::
+ .string "I lost, too!$"
+
+Route24_Text_ReliPostBattle::
+ .string "I did my best, so I've no regrets!$"
+
+Route24_Text_TimmyIntro::
+ .string "Here's No. 3!\n"
+ .string "I won't be easy!$"
+
+Route24_Text_TimmyDefeat::
+ .string "Ow!\n"
+ .string "Stomped flat!$"
+
+Route24_Text_TimmyPostBattle::
+ .string "I did my best. I have no regrets!$"
+
+Route24_Text_AliIntro::
+ .string "I'm second!\n"
+ .string "Now it's serious!$"
+
+Route24_Text_AliDefeat::
+ .string "How could I lose?$"
+
+Route24_Text_AliPostBattle::
+ .string "I did my best. I have no regrets!$"
+
+Route24_Text_CaleIntro::
+ .string "People call this the NUGGET\n"
+ .string "BRIDGE!\p"
+ .string "Beat us five TRAINERS and win\n"
+ .string "a fabulous prize!\p"
+ .string "Think you got what it takes?$"
+
+Route24_Text_CaleDefeat::
+ .string "Whoo!\n"
+ .string "Good stuff!$"
+
+Route24_Text_CalePostBattle::
+ .string "I did my best. I have no regrets!$"
diff --git a/data/maps/Route25_Frlg/map.json b/data/maps/Route25_Frlg/map.json
new file mode 100644
index 000000000000..e4d2b68e2175
--- /dev/null
+++ b/data/maps/Route25_Frlg/map.json
@@ -0,0 +1,270 @@
+{
+ "id": "MAP_ROUTE25",
+ "name": "Route25_Frlg",
+ "layout": "LAYOUT_ROUTE25",
+ "music": "MUS_RG_ROUTE24",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_25",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE24",
+ "offset": 0,
+ "direction": "left"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 11,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "Route25_EventScript_Franklin",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 18,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route25_EventScript_Joey",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 17,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route25_EventScript_Wayne",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 22,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route25_EventScript_Dan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 22,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route25_EventScript_Kelsey",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 27,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route25_EventScript_Nob",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CAMPER_FRLG",
+ "x": 28,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route25_EventScript_Flint",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 36,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 3,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route25_EventScript_Chad",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 42,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route25_EventScript_Haley",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 26,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route25_EventScript_ItemTM43",
+ "flag": "FLAG_HIDE_ROUTE25_TM43"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 30,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY_FRLG",
+ "x": 49,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route25_EventScript_Beauty",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 49,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route25_EventScript_Man",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 51,
+ "y": 4,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE25_SEA_COTTAGE",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 48,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route25_EventScript_SeaCottageSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 14,
+ "y": 2,
+ "elevation": 3,
+ "item": "ITEM_ELIXIR",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE25_ELIXIR",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 58,
+ "y": 6,
+ "elevation": 3,
+ "item": "ITEM_ETHER",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE25_ETHER",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 33,
+ "y": 8,
+ "elevation": 3,
+ "item": "ITEM_ORAN_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE25_ORAN_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 40,
+ "y": 3,
+ "elevation": 3,
+ "item": "ITEM_BLUK_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE25_BLUK_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/Route25_Frlg/scripts.inc b/data/maps/Route25_Frlg/scripts.inc
new file mode 100644
index 000000000000..a16819121433
--- /dev/null
+++ b/data/maps/Route25_Frlg/scripts.inc
@@ -0,0 +1,130 @@
+Route25_Frlg_MapScripts::
+ .byte 0
+
+Route25_EventScript_SeaCottageSign::
+ msgbox Route25_Text_SeaCottageSign, MSGBOX_SIGN
+ end
+
+Route25_EventScript_Man::
+ msgbox Route25_Text_AreYouHereAlone, MSGBOX_NPC
+ end
+
+Route25_Text_JoeyIntro::
+ .string "Local TRAINERS come here to\n"
+ .string "practice.$"
+
+Route25_Text_JoeyDefeat::
+ .string "You're decent.$"
+
+Route25_Text_JoeyPostBattle::
+ .string "All POKéMON have weaknesses.\n"
+ .string "Even the strongest ones.\p"
+ .string "That's why it's best to raise\n"
+ .string "POKéMON of different types.$"
+
+Route25_Text_DanIntro::
+ .string "Dad took me to a great party on\n"
+ .string "the S.S. ANNE at VERMILION CITY.$"
+
+Route25_Text_DanDefeat::
+ .string "I'm not mad!$"
+
+Route25_Text_DanPostBattle::
+ .string "On the S.S. ANNE, I saw TRAINERS\n"
+ .string "from around the world.$"
+
+Route25_Text_FlintIntro::
+ .string "I'm a cool guy.\n"
+ .string "I've got a girlfriend!$"
+
+Route25_Text_FlintDefeat::
+ .string "Aww, darn…$"
+
+Route25_Text_FlintPostBattle::
+ .string "Oh, well.\n"
+ .string "My girlfriend will cheer me up.$"
+
+Route25_Text_KelseyIntro::
+ .string "Hi!\n"
+ .string "My boyfriend is cool!$"
+
+Route25_Text_KelseyDefeat::
+ .string "My conditioning isn't the best…$"
+
+Route25_Text_KelseyPostBattle::
+ .string "I wish my boyfriend was as good\n"
+ .string "as you.$"
+
+Route25_Text_ChadIntro::
+ .string "I had this feeling…\n"
+ .string "I knew I had to battle you!$"
+
+Route25_Text_ChadDefeat::
+ .string "I knew I'd lose, too!$"
+
+Route25_Text_ChadPostBattle::
+ .string "If your POKéMON gets confused,\n"
+ .string "switch it out.\p"
+ .string "That's a good tactic.$"
+
+Route25_Text_HaleyIntro::
+ .string "My friend has many cute POKéMON.\n"
+ .string "I'm so jealous!$"
+
+Route25_Text_HaleyDefeat::
+ .string "I'm not so jealous!$"
+
+Route25_Text_HaleyPostBattle::
+ .string "You came from MT. MOON?\n"
+ .string "May I have a CLEFAIRY?$"
+
+Route25_Text_FranklinIntro::
+ .string "I just got down from MT. MOON,\n"
+ .string "but I've still got gas in the tank!$"
+
+Route25_Text_FranklinDefeat::
+ .string "You worked hard!$"
+
+Route25_Text_FranklinPostBattle::
+ .string "Drat!\n"
+ .string "A ZUBAT bit me back in that cave.$"
+
+Route25_Text_NobIntro::
+ .string "I'm off to see a POKéMANIAC's\n"
+ .string "collection at the cape.$"
+
+Route25_Text_NobDefeat::
+ .string "You done got me, and real good,\n"
+ .string "too!$"
+
+Route25_Text_NobPostBattle::
+ .string "The POKéMANIAC sure lives up to\n"
+ .string "his name.\p"
+ .string "His collection includes many rare\n"
+ .string "species of POKéMON.$"
+
+Route25_Text_WayneIntro::
+ .string "You're going to see BILL?\n"
+ .string "First, we battle!$"
+
+Route25_Text_WayneDefeat::
+ .string "You're something.$"
+
+Route25_Text_WaynePostBattle::
+ .string "The trail below is a shortcut to\n"
+ .string "CERULEAN CITY.$"
+
+Route25_Text_SeaCottageSign::
+ .string "SEA COTTAGE\n"
+ .string "BILL lives here!$"
+
+Route25_Text_MistyHighHopesAboutThisPlace::
+ .string "This cape is a famous date spot.\p"
+ .string "MISTY, the GYM LEADER, has high\n"
+ .string "hopes about this place.$"
+
+Route25_Text_AreYouHereAlone::
+ .string "Hello, are you here alone?\p"
+ .string "If you're out at CERULEAN's cape…\n"
+ .string "Well, it should be as a couple.$"
+
diff --git a/data/maps/Route25_SeaCottage_Frlg/map.json b/data/maps/Route25_SeaCottage_Frlg/map.json
new file mode 100644
index 000000000000..6a319925d0bd
--- /dev/null
+++ b/data/maps/Route25_SeaCottage_Frlg/map.json
@@ -0,0 +1,84 @@
+{
+ "id": "MAP_ROUTE25_SEA_COTTAGE",
+ "name": "Route25_SeaCottage_Frlg",
+ "layout": "LAYOUT_ROUTE25_SEA_COTTAGE",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_25",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_BILL_HUMAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BILL",
+ "x": 7,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route25_SeaCottage_EventScript_Bill",
+ "flag": "FLAG_HIDE_BILL_HUMAN_SEA_COTTAGE"
+ },
+ {
+ "local_id": "LOCALID_BILL_CLEFAIRY",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLEFAIRY",
+ "x": 10,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route25_SeaCottage_EventScript_Bill",
+ "flag": "FLAG_HIDE_BILL_CLEFAIRY"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE25",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 7,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE25",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 8,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE25",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "Route25_SeaCottage_EventScript_Computer"
+ }
+ ]
+}
diff --git a/data/maps/Route25_SeaCottage_Frlg/scripts.inc b/data/maps/Route25_SeaCottage_Frlg/scripts.inc
new file mode 100644
index 000000000000..79c7d0795dd3
--- /dev/null
+++ b/data/maps/Route25_SeaCottage_Frlg/scripts.inc
@@ -0,0 +1,405 @@
+.equ BILL_IN_TELEPORTER, FLAG_TEMP_2
+.equ RETURN_AFTER_SS_TICKET, FLAG_TEMP_3
+
+Route25_SeaCottage_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, Route25_SeaCottage_OnTransition
+ .byte 0
+
+Route25_SeaCottage_OnTransition::
+ call_if_unset FLAG_HELPED_BILL_IN_SEA_COTTAGE, Route25_SeaCottage_EventScript_HideClefairyBill
+ call_if_set FLAG_GOT_SS_TICKET, Route25_SeaCottage_EventScript_SetReturnedAfterSSTicket
+ end
+
+Route25_SeaCottage_EventScript_HideClefairyBill::
+ clearflag FLAG_HIDE_BILL_CLEFAIRY
+ setobjectxyperm LOCALID_BILL_HUMAN, 3, 3
+ return
+
+Route25_SeaCottage_EventScript_SetReturnedAfterSSTicket::
+ setflag RETURN_AFTER_SS_TICKET
+ return
+
+Route25_SeaCottage_EventScript_Bill::
+ lock
+ faceplayer
+ goto_if_set RETURN_AFTER_SS_TICKET, Route25_SeaCottage_EventScript_BillGoLookAtPC
+ goto_if_set FLAG_GOT_SS_TICKET, Route25_SeaCottage_EventScript_BillGoToSSAnne
+ goto_if_set FLAG_HELPED_BILL_IN_SEA_COTTAGE, Route25_SeaCottage_EventScript_BillGiveSSTicket
+ checkplayergender
+ goto_if_eq VAR_RESULT, MALE, Route25_SeaCottage_EventScript_BillAskForHelpMale
+ goto_if_eq VAR_RESULT, FEMALE, Route25_SeaCottage_EventScript_BillAskForHelpFemale
+ end
+
+Route25_SeaCottage_EventScript_BillAskForHelpMale::
+ msgbox Route25_SeaCottage_Text_ImBillHelpMeOutPal, MSGBOX_YESNO
+ goto Route25_SeaCottage_EventScript_BillAskForHelp
+ end
+
+Route25_SeaCottage_EventScript_BillAskForHelpFemale::
+ msgbox Route25_SeaCottage_Text_ImBillHelpMeOutLady, MSGBOX_YESNO
+ goto Route25_SeaCottage_EventScript_BillAskForHelp
+ end
+
+Route25_SeaCottage_EventScript_BillAskForHelp::
+ call_if_eq VAR_RESULT, NO, Route25_SeaCottage_EventScript_DeclineHelpBill
+ msgbox Route25_SeaCottage_Text_RunCellSeparationOnPC
+ closemessage
+ delay 10
+ call_if_eq VAR_FACING, DIR_SOUTH, Route25_SeaCottage_EventScript_BillWalkToTeleporterSouth
+ call_if_eq VAR_FACING, DIR_NORTH, Route25_SeaCottage_EventScript_BillWalkToTeleporter
+ call_if_eq VAR_FACING, DIR_WEST, Route25_SeaCottage_EventScript_BillWalkToTeleporter
+ call_if_eq VAR_FACING, DIR_EAST, Route25_SeaCottage_EventScript_BillWalkToTeleporter
+ opendoor 10, 3
+ waitdooranim
+ applymovement LOCALID_BILL_CLEFAIRY, Route25_SeaCottage_Movement_BillEnterTeleporter
+ waitmovement 0
+ removeobject LOCALID_BILL_CLEFAIRY
+ playse SE_CONTEST_CURTAIN_FALL
+ closedoor 10, 3
+ waitdooranim
+ setflag BILL_IN_TELEPORTER
+ release
+ end
+
+@ Just returns after message, execution continues as if player had said yes
+Route25_SeaCottage_EventScript_DeclineHelpBill::
+ checkplayergender
+ call_if_eq VAR_RESULT, MALE, Route25_SeaCottage_EventScript_DeclineHelpBillMale
+ call_if_eq VAR_RESULT, FEMALE, Route25_SeaCottage_EventScript_DeclineHelpBillFemale
+ return
+
+Route25_SeaCottage_EventScript_DeclineHelpBillMale::
+ msgbox Route25_SeaCottage_Text_NoPleaseChief
+ return
+
+Route25_SeaCottage_EventScript_DeclineHelpBillFemale::
+ msgbox Route25_SeaCottage_Text_NoPleaseBeautiful
+ return
+
+Route25_SeaCottage_EventScript_BillWalkToTeleporterSouth::
+ applymovement LOCALID_BILL_CLEFAIRY, Route25_SeaCottage_Movement_BillWalkToTeleporterSouth
+ waitmovement 0
+ return
+
+Route25_SeaCottage_EventScript_BillWalkToTeleporter::
+ applymovement LOCALID_BILL_CLEFAIRY, Route25_SeaCottage_Movement_BillWalkToTeleporter
+ waitmovement 0
+ return
+
+Route25_SeaCottage_EventScript_BillGoToSSAnne::
+ msgbox Route25_SeaCottage_Text_SSAnnePartyYouGoInstead
+ release
+ end
+
+Route25_SeaCottage_EventScript_BillGiveSSTicket::
+ famechecker FAMECHECKER_BILL, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
+ checkplayergender
+ call_if_eq VAR_RESULT, MALE, Route25_SeaCottage_EventScript_BillThanksMale
+ call_if_eq VAR_RESULT, FEMALE, Route25_SeaCottage_EventScript_BillThanksFemale
+ checkitemspace ITEM_SS_TICKET
+ goto_if_eq VAR_RESULT, FALSE, Route25_SeaCottage_EventScript_NoRoomForSSTicket
+ giveitem_msg Route25_SeaCottage_Text_ReceivedSSTicketFromBill, ITEM_SS_TICKET, 1, MUS_RG_OBTAIN_KEY_ITEM
+ setflag FLAG_GOT_SS_TICKET_DUP
+ setflag FLAG_HIDE_NUGGET_BRIDGE_ROCKET
+ setflag FLAG_GOT_SS_TICKET
+ setflag FLAG_SYS_PC_LANETTE
+ goto Route25_SeaCottage_EventScript_BillGoToSSAnne
+ end
+
+Route25_SeaCottage_EventScript_BillThanksMale::
+ msgbox Route25_SeaCottage_Text_ThanksBudTakeThis
+ return
+
+Route25_SeaCottage_EventScript_BillThanksFemale::
+ msgbox Route25_SeaCottage_Text_ThanksLadyTakeThis
+ return
+
+Route25_SeaCottage_EventScript_NoRoomForSSTicket::
+ msgbox Route25_SeaCottage_Text_YouveGotTooMuchStuff
+ release
+ end
+
+Route25_SeaCottage_EventScript_BillGoLookAtPC::
+ msgbox Route25_SeaCottage_Text_CheckOutRareMonsOnPC
+ release
+ end
+
+Route25_SeaCottage_Movement_BillWalkToTeleporter::
+ walk_up
+ walk_up
+ step_end
+
+Route25_SeaCottage_Movement_BillWalkToTeleporterSouth::
+ walk_right
+ walk_up
+ walk_up
+ walk_left
+ walk_in_place_faster_up
+ step_end
+
+Route25_SeaCottage_Movement_BillEnterTeleporter::
+ walk_up
+ step_end
+
+Route25_SeaCottage_EventScript_Computer::
+ lockall
+ goto_if_set RETURN_AFTER_SS_TICKET, Route25_SeaCottage_EventScript_OpenBillsMonList
+ goto_if_set BILL_IN_TELEPORTER, Route25_SeaCottage_EventScript_RunCellSeparator
+ msgbox Route25_SeaCottage_Text_TeleporterIsDisplayed
+ releaseall
+ end
+
+Route25_SeaCottage_EventScript_RunCellSeparator::
+ fadeoutbgm 0
+ msgbox Route25_SeaCottage_Text_InitiatedTeleportersCellSeparator
+ closemessage
+ clearflag BILL_IN_TELEPORTER
+ setflag FLAG_HELPED_BILL_IN_SEA_COTTAGE
+ special SpawnCameraObject
+ applymovement LOCALID_CAMERA, Route25_SeaCottage_Movement_CameraPanToTeleporters
+ waitmovement 0
+ delay 35
+ playse SE_PIN
+ waitse
+ setvar VAR_0x8004, 0
+ special AnimateTeleporterHousing
+ delay 10
+ call Route25_SeaCottage_EventScript_PlayTeleporterBeepSE
+ call Route25_SeaCottage_EventScript_PlayTeleporterBeepSE
+ call Route25_SeaCottage_EventScript_PlayTeleporterBeepSE
+ call Route25_SeaCottage_EventScript_PlayTeleporterBeepSE
+ call Route25_SeaCottage_EventScript_PlayTeleporterBeepSE
+ call Route25_SeaCottage_EventScript_PlayTeleporterBeepSE
+ call Route25_SeaCottage_EventScript_PlayTeleporterBeepSE
+ setvar VAR_0x8004, 1
+ special AnimateTeleporterHousing
+ playse SE_WARP_IN
+ special AnimateTeleporterCable
+ waitse
+ call Route25_SeaCottage_EventScript_PlayTeleporterBeepSE
+ call Route25_SeaCottage_EventScript_PlayTeleporterBeepSE
+ call Route25_SeaCottage_EventScript_PlayTeleporterBeepSE
+ call Route25_SeaCottage_EventScript_PlayTeleporterBeepSE
+ call Route25_SeaCottage_EventScript_PlayTeleporterBeepSE
+ opendoor 3, 3
+ waitdooranim
+ fadeinbgm 0
+ addobject LOCALID_BILL_HUMAN
+ clearflag FLAG_HIDE_BILL_HUMAN_SEA_COTTAGE
+ delay 50
+ playfanfare MUS_LEVEL_UP
+ applymovement LOCALID_BILL_HUMAN, Route25_SeaCottage_Movement_BillExitTeleporter
+ waitmovement 0
+ waitfanfare
+ applymovement LOCALID_CAMERA, Route25_SeaCottage_Movement_CameraPanBackFromTeleporters
+ waitmovement 0
+ playse SE_CONTEST_CURTAIN_FALL
+ closedoor 3, 3
+ waitdooranim
+ applymovement LOCALID_BILL_HUMAN, Route25_SeaCottage_Movement_BillWalkToMiddleOfRoom
+ waitmovement 0
+ special RemoveCameraObject
+ releaseall
+ end
+
+Route25_SeaCottage_EventScript_PlayTeleporterBeepSE::
+ playse SE_BALL
+ waitse
+ delay 20
+ return
+
+Route25_SeaCottage_Movement_CameraPanToTeleporters::
+ walk_up
+ walk_up
+ walk_right
+ walk_right
+ step_end
+
+Route25_SeaCottage_Movement_CameraPanBackFromTeleporters::
+ delay_16
+ delay_16
+ walk_down
+ walk_down
+ walk_left
+ walk_left
+ step_end
+
+Route25_SeaCottage_EventScript_OpenBillsMonList::
+ msgbox Route25_SeaCottage_Text_BillsFavoriteMonList
+ goto Route25_SeaCottage_EventScript_BillsMonList
+ end
+
+Route25_SeaCottage_EventScript_BillsMonList::
+ message Route25_SeaCottage_Text_SeeWhichMon
+ waitmessage
+ multichoice 0, 0, MULTI_EEVEELUTIONS, FALSE
+ switch VAR_RESULT
+ case 0, Route25_SeaCottage_EventScript_ViewEevee
+ case 1, Route25_SeaCottage_EventScript_ViewFlareon
+ case 2, Route25_SeaCottage_EventScript_ViewJolteon
+ case 3, Route25_SeaCottage_EventScript_ViewVaporeon
+ case 4, Route25_SeaCottage_EventScript_ExitBillsMonList
+ case 127, Route25_SeaCottage_EventScript_ExitBillsMonList
+ end
+
+Route25_SeaCottage_EventScript_ViewEevee::
+ showmonpic SPECIES_EEVEE, 10, 3
+ waitbuttonpress
+ hidemonpic
+ setvar VAR_0x8004, SPECIES_EEVEE
+ special SetSeenMon
+ goto Route25_SeaCottage_EventScript_BillsMonList
+ end
+
+Route25_SeaCottage_EventScript_ViewFlareon::
+ showmonpic SPECIES_FLAREON, 10, 3
+ waitbuttonpress
+ hidemonpic
+ setvar VAR_0x8004, SPECIES_FLAREON
+ special SetSeenMon
+ goto Route25_SeaCottage_EventScript_BillsMonList
+ end
+
+Route25_SeaCottage_EventScript_ViewJolteon::
+ showmonpic SPECIES_JOLTEON, 10, 3
+ waitbuttonpress
+ hidemonpic
+ setvar VAR_0x8004, SPECIES_JOLTEON
+ special SetSeenMon
+ goto Route25_SeaCottage_EventScript_BillsMonList
+ end
+
+Route25_SeaCottage_EventScript_ViewVaporeon::
+ showmonpic SPECIES_VAPOREON, 10, 3
+ waitbuttonpress
+ hidemonpic
+ setvar VAR_0x8004, SPECIES_VAPOREON
+ special SetSeenMon
+ goto Route25_SeaCottage_EventScript_BillsMonList
+ end
+
+Route25_SeaCottage_EventScript_ExitBillsMonList::
+ releaseall
+ end
+
+Route25_SeaCottage_Movement_BillWalkToMiddleOfRoom::
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_down
+ walk_down
+ step_end
+
+Route25_SeaCottage_Movement_BillExitTeleporter::
+ walk_down
+ step_end
+
+Route25_SeaCottage_Text_ImBillHelpMeOutPal::
+ .string "Hiya! I'm a POKéMON…\n"
+ .string "…No I'm not!\p"
+ .string "Call me BILL!\n"
+ .string "I'm a true-blue POKéMANIAC!\p"
+ .string "Hey!\n"
+ .string "What's with that skeptical look?\p"
+ .string "I'm not joshing you, pal.\p"
+ .string "I screwed up an experiment and got\n"
+ .string "combined with a POKéMON!\p"
+ .string "So, how about it?\n"
+ .string "Help me out here!$"
+
+Route25_SeaCottage_Text_ImBillHelpMeOutLady::
+ .string "Hiya! I'm a POKéMON…\n"
+ .string "…No I'm not!\p"
+ .string "Call me BILL!\n"
+ .string "I'm a true-blue POKéMANIAC!\p"
+ .string "Hey!\n"
+ .string "What's with that skeptical look?\p"
+ .string "I'm not joshing you, lady.\p"
+ .string "I screwed up an experiment and got\n"
+ .string "combined with a POKéMON!\p"
+ .string "So, how about it?\n"
+ .string "Help me out here!$"
+
+Route25_SeaCottage_Text_RunCellSeparationOnPC::
+ .string "Wait till I get inside the\n"
+ .string "TELEPORTER.\p"
+ .string "When I do, go to my PC and run\n"
+ .string "the Cell Separation System.$"
+
+Route25_SeaCottage_Text_NoPleaseChief::
+ .string "No!?\n"
+ .string "Now don't be so cold!\p"
+ .string "Come on, you gotta help a guy in\n"
+ .string "deep, deep trouble!\p"
+ .string "What do you say, chief?\n"
+ .string "Please?\l"
+ .string "Okay?\l"
+ .string "All right!$"
+
+Route25_SeaCottage_Text_NoPleaseBeautiful::
+ .string "No!?\n"
+ .string "Now don't be so cold!\p"
+ .string "Come on, you gotta help a guy in\n"
+ .string "deep, deep trouble!\p"
+ .string "What do you say, beautiful?\n"
+ .string "Please?\l"
+ .string "Okay?\l"
+ .string "All right!$"
+
+Route25_SeaCottage_Text_ThanksBudTakeThis::
+ .string "BILL: Yeehah!\n"
+ .string "Thanks, bud! I owe you one!\p"
+ .string "So, did you come to see my\n"
+ .string "POKéMON collection?\p"
+ .string "You didn't?\n"
+ .string "That's a bummer.\p"
+ .string "I've got to thank you…\n"
+ .string "Oh, here, maybe this'll do.$"
+
+Route25_SeaCottage_Text_ThanksLadyTakeThis::
+ .string "BILL: Yeehah!\n"
+ .string "Thanks, lady! I owe you one!\p"
+ .string "So, did you come to see my\n"
+ .string "POKéMON collection?\p"
+ .string "You didn't?\n"
+ .string "That's a bummer.\p"
+ .string "I've got to thank you…\n"
+ .string "Oh, here, maybe this'll do.$"
+
+Route25_SeaCottage_Text_ReceivedSSTicketFromBill::
+ .string "{PLAYER} received an S.S. TICKET\n"
+ .string "from BILL.$"
+
+Route25_SeaCottage_Text_YouveGotTooMuchStuff::
+ .string "You've got too much stuff!$"
+
+Route25_SeaCottage_Text_SSAnnePartyYouGoInstead::
+ .string "That cruise ship S.S. ANNE is in\n"
+ .string "VERMILION CITY.\p"
+ .string "I hear there are lots of TRAINERS\n"
+ .string "on board, too.\p"
+ .string "They invited me to their party, but\n"
+ .string "I can't stand fancy do's.\p"
+ .string "Why don't you go instead of me?\n"
+ .string "Go on and have a good time.$"
+
+Route25_SeaCottage_Text_CheckOutRareMonsOnPC::
+ .string "BILL: Feel like checking out some\n"
+ .string "of my rare POKéMON on my PC?\p"
+ .string "Go on, check out my PC.$"
+
+Route25_SeaCottage_Text_TeleporterIsDisplayed::
+ .string "TELEPORTER is displayed on the PC\n"
+ .string "monitor.$"
+
+Route25_SeaCottage_Text_InitiatedTeleportersCellSeparator::
+ .string "{PLAYER} initiated the TELEPORTER's\n"
+ .string "Cell Separator.$"
+
+Route25_SeaCottage_Text_BillsFavoriteMonList::
+ .string "BILL's favorite POKéMON list!$"
+
+Route25_SeaCottage_Text_SeeWhichMon::
+ .string "Which POKéMON do you want to see?$"
+
diff --git a/data/maps/Route2_EastBuilding_Frlg/map.json b/data/maps/Route2_EastBuilding_Frlg/map.json
new file mode 100644
index 000000000000..8bf63ccf8563
--- /dev/null
+++ b/data/maps/Route2_EastBuilding_Frlg/map.json
@@ -0,0 +1,80 @@
+{
+ "id": "MAP_ROUTE2_EAST_BUILDING",
+ "name": "Route2_EastBuilding_Frlg",
+ "layout": "LAYOUT_ROUTE2_ENTRANCE",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route2_EastBuilding_EventScript_Aide",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 10,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route2_EastBuilding_EventScript_Rocker",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 10,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE2",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 7,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 8,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 7,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2",
+ "dest_warp_id": "6"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/Route2_EastBuilding_Frlg/scripts.inc b/data/maps/Route2_EastBuilding_Frlg/scripts.inc
new file mode 100644
index 000000000000..eed59e03fb00
--- /dev/null
+++ b/data/maps/Route2_EastBuilding_Frlg/scripts.inc
@@ -0,0 +1,72 @@
+.equ REQUIRED_SEEN_MONS, 10
+
+Route2_EastBuilding_Frlg_MapScripts::
+ .byte 0
+
+Route2_EastBuilding_EventScript_Aide::
+ lock
+ faceplayer
+ call Route2_EastBuilding_EventScript_GetAideRequestInfo
+ goto_if_set FLAG_GOT_HM05, Route2_EastBuilding_EventScript_AlreadyGotHM05
+ msgbox Route2_EastBuilding_Text_GiveHM05IfSeen10Mons, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, Aide_EventScript_DeclineCheckMons
+ setvar VAR_0x8004, 0
+ specialvar VAR_RESULT, GetFrlgPokedexCount
+ buffernumberstring STR_VAR_3, VAR_0x8006
+ call Route2_EastBuilding_EventScript_GetAideRequestInfo
+ goto_if_lt VAR_0x8006, REQUIRED_SEEN_MONS, Aide_EventScript_HaventCaughtEnough
+ msgbox Route2_EastBuilding_Text_GreatHereYouGo
+ checkitemspace ITEM_HM05
+ goto_if_eq VAR_RESULT, FALSE, Aide_EventScript_NoRoomForItem
+ giveitem_msg Route2_EastBuilding_Text_ReceivedHM05FromAide, ITEM_HM05
+ setflag FLAG_GOT_HM05
+ msgbox Route2_EastBuilding_Text_ExplainHM05
+ release
+ end
+
+Route2_EastBuilding_EventScript_AlreadyGotHM05::
+ msgbox Route2_EastBuilding_Text_ExplainHM05
+ release
+ end
+
+Route2_EastBuilding_EventScript_GetAideRequestInfo::
+ buffernumberstring STR_VAR_1, REQUIRED_SEEN_MONS
+ bufferitemname STR_VAR_2, ITEM_HM05
+ return
+
+Route2_EastBuilding_EventScript_Rocker::
+ msgbox Route2_EastBuilding_Text_CanGetThroughRockTunnel, MSGBOX_NPC
+ end
+
+Route2_EastBuilding_Text_GiveHM05IfSeen10Mons::
+ .string "Hi! Remember me?\n"
+ .string "I'm one of PROF. OAK's AIDES.\p"
+ .string "If your POKéDEX has complete data\n"
+ .string "on ten species, I'm supposed to\l"
+ .string "give you a reward.\p"
+ .string "PROF. OAK entrusted me with\n"
+ .string "HM05 for you.\p"
+ .string "So, {PLAYER}, let me ask you.\p"
+ .string "Have you gathered data on at least\n"
+ .string "ten kinds of POKéMON?$"
+
+Route2_EastBuilding_Text_GreatHereYouGo::
+ .string "Great! You have caught or owned\n"
+ .string "{STR_VAR_3} kinds of POKéMON!\p"
+ .string "Congratulations!\n"
+ .string "Here you go!$"
+
+Route2_EastBuilding_Text_ReceivedHM05FromAide::
+ .string "{PLAYER} received HM05\n"
+ .string "from the AIDE.$"
+
+Route2_EastBuilding_Text_ExplainHM05::
+ .string "HM05 contains the hidden move\n"
+ .string "FLASH.\p"
+ .string "FLASH lights up even the darkest\n"
+ .string "of caves and dungeons.$"
+
+Route2_EastBuilding_Text_CanGetThroughRockTunnel::
+ .string "Once a POKéMON learns FLASH, you\n"
+ .string "can get through ROCK TUNNEL.$"
+
diff --git a/data/maps/Route2_Frlg/map.json b/data/maps/Route2_Frlg/map.json
new file mode 100644
index 000000000000..9915a1872eba
--- /dev/null
+++ b/data/maps/Route2_Frlg/map.json
@@ -0,0 +1,216 @@
+{
+ "id": "MAP_ROUTE2",
+ "name": "Route2_Frlg",
+ "layout": "LAYOUT_ROUTE2",
+ "music": "MUS_RG_ROUTE1",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_2",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_PEWTER_CITY",
+ "offset": -12,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_VIRIDIAN_CITY",
+ "offset": -12,
+ "direction": "down"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 16,
+ "y": 62,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_14"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 15,
+ "y": 69,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 11,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_15"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 18,
+ "y": 26,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_16"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 17,
+ "y": 54,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route2_EventScript_ItemEther",
+ "flag": "FLAG_HIDE_ROUTE2_ETHER"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 17,
+ "y": 64,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route2_EventScript_ItemParalyzeHeal",
+ "flag": "FLAG_HIDE_ROUTE2_PARALYZE_HEAL"
+ },
+ {
+ "type": "clone",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 6,
+ "y": 85,
+ "target_local_id": "LOCALID_VIRIDIAN_BORDER_TREE",
+ "target_map": "MAP_VIRIDIAN_CITY"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 13,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2_VIRIDIAN_FOREST_NORTH_ENTRANCE",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 6,
+ "y": 13,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2_VIRIDIAN_FOREST_NORTH_ENTRANCE",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 51,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 17,
+ "y": 11,
+ "elevation": 3,
+ "dest_map": "MAP_DIGLETTS_CAVE_NORTH_ENTRANCE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 17,
+ "y": 22,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE2_HOUSE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 18,
+ "y": 46,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2_EAST_BUILDING",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 18,
+ "y": 41,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2_EAST_BUILDING",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 19,
+ "y": 41,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2_EAST_BUILDING",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 19,
+ "y": 46,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2_EAST_BUILDING",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 6,
+ "y": 51,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 14,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route2_EventScript_DiglettsCaveSign"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 73,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route2_EventScript_RouteSign"
+ }
+ ]
+}
diff --git a/data/maps/Route2_Frlg/scripts.inc b/data/maps/Route2_Frlg/scripts.inc
new file mode 100644
index 000000000000..119bc8274706
--- /dev/null
+++ b/data/maps/Route2_Frlg/scripts.inc
@@ -0,0 +1,18 @@
+Route2_Frlg_MapScripts::
+ .byte 0
+
+Route2_EventScript_RouteSign::
+ msgbox Route2_Text_RouteSign, MSGBOX_SIGN
+ end
+
+Route2_EventScript_DiglettsCaveSign::
+ msgbox Route2_Text_DiglettsCave, MSGBOX_SIGN
+ end
+
+Route2_Text_RouteSign::
+ .string "ROUTE 2\n"
+ .string "VIRIDIAN CITY - PEWTER CITY$"
+
+Route2_Text_DiglettsCave::
+ .string "DIGLETT'S CAVE$"
+
diff --git a/data/maps/Route2_House_Frlg/map.json b/data/maps/Route2_House_Frlg/map.json
new file mode 100644
index 000000000000..9cf2e6c6b27a
--- /dev/null
+++ b/data/maps/Route2_House_Frlg/map.json
@@ -0,0 +1,77 @@
+{
+ "id": "MAP_ROUTE2_HOUSE",
+ "name": "Route2_House_Frlg",
+ "layout": "LAYOUT_HOUSE2_FRLG",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 4,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route2_House_EventScript_Scientist",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GBA_KID",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route2_House_EventScript_Reyley",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE2",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE2",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE2",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/Route2_House_Frlg/scripts.inc b/data/maps/Route2_House_Frlg/scripts.inc
new file mode 100644
index 000000000000..d3aab6eb4777
--- /dev/null
+++ b/data/maps/Route2_House_Frlg/scripts.inc
@@ -0,0 +1,47 @@
+Route2_House_Frlg_MapScripts::
+ .byte 0
+
+Route2_House_EventScript_Scientist::
+ msgbox Route2_House_Text_FaintedMonsCanUseFieldMoves, MSGBOX_NPC
+ end
+
+Route2_House_EventScript_Reyley::
+ lock
+ faceplayer
+ setvar VAR_0x8008, INGAME_TRADE_MR_MIME
+ call EventScript_GetInGameTradeSpeciesInfo
+ goto_if_set FLAG_DID_MIMIEN_TRADE, Route2_House_EventScript_AlreadyTraded
+ msgbox Trade_Text_LookingForMonWannaTradeForMon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, Route2_House_EventScript_DeclineTrade
+ call EventScript_ChooseMonForInGameTrade
+ goto_if_ge VAR_0x8004, PARTY_SIZE, Route2_House_EventScript_DeclineTrade
+ call EventScript_GetInGameTradeSpecies
+ goto_if_ne VAR_RESULT, VAR_0x8009, Route2_House_EventScript_NotRequestedMon
+ call EventScript_DoInGameTrade
+ msgbox Trade_Text_HeyThanks
+ setflag FLAG_DID_MIMIEN_TRADE
+ release
+ end
+
+Route2_House_EventScript_DeclineTrade::
+ msgbox Trade_Text_AwwOhWell
+ release
+ end
+
+Route2_House_EventScript_NotRequestedMon::
+ bufferspeciesname STR_VAR_1, VAR_0x8009
+ msgbox Trade_Text_WhatThatsNoMon
+ release
+ end
+
+Route2_House_EventScript_AlreadyTraded::
+ msgbox Trade_Text_IsntMyOldMonGreat
+ release
+ end
+
+Route2_House_Text_FaintedMonsCanUseFieldMoves::
+ .string "A fainted POKéMON just has no\n"
+ .string "energy left to battle.\p"
+ .string "It can still use moves like CUT\n"
+ .string "outside of battle.$"
+
diff --git a/data/maps/Route2_ViridianForest_NorthEntrance_Frlg/map.json b/data/maps/Route2_ViridianForest_NorthEntrance_Frlg/map.json
new file mode 100644
index 000000000000..f52ecc4c881b
--- /dev/null
+++ b/data/maps/Route2_ViridianForest_NorthEntrance_Frlg/map.json
@@ -0,0 +1,94 @@
+{
+ "id": "MAP_ROUTE2_VIRIDIAN_FOREST_NORTH_ENTRANCE",
+ "name": "Route2_ViridianForest_NorthEntrance_Frlg",
+ "layout": "LAYOUT_ROUTE2_ENTRANCE",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 5,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route2_ViridianForest_NorthEntrance_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route2_ViridianForest_NorthEntrance_EventScript_OldMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 10,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route2_ViridianForest_NorthEntrance_EventScript_CooltrainerF",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_VIRIDIAN_FOREST",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 7,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_VIRIDIAN_FOREST",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 8,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_VIRIDIAN_FOREST",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 7,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/Route2_ViridianForest_NorthEntrance_Frlg/scripts.inc b/data/maps/Route2_ViridianForest_NorthEntrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..1778637c8d62
--- /dev/null
+++ b/data/maps/Route2_ViridianForest_NorthEntrance_Frlg/scripts.inc
@@ -0,0 +1,35 @@
+Route2_ViridianForest_NorthEntrance_Frlg_MapScripts::
+ .byte 0
+
+Route2_ViridianForest_NorthEntrance_EventScript_Youngster::
+ msgbox Route2_ViridianForest_NorthEntrance_Text_ManyMonsOnlyInForests, MSGBOX_NPC
+ end
+
+Route2_ViridianForest_NorthEntrance_EventScript_OldMan::
+ msgbox Route2_ViridianForest_NorthEntrance_Text_CanCutSkinnyTrees, MSGBOX_NPC
+ end
+
+Route2_ViridianForest_NorthEntrance_EventScript_CooltrainerF::
+ msgbox Route2_ViridianForest_NorthEntrance_Text_CanCancelEvolution, MSGBOX_NPC
+ end
+
+Route2_ViridianForest_NorthEntrance_Text_ManyMonsOnlyInForests::
+ .string "Many POKéMON live only in forests \n"
+ .string "and caves.\p"
+ .string "You need to be persistent and look\n"
+ .string "everywhere to get different kinds.$"
+
+Route2_ViridianForest_NorthEntrance_Text_CanCutSkinnyTrees::
+ .string "Have you noticed the skinny trees\n"
+ .string "on the roadside?\p"
+ .string "They can be cut down by a special\n"
+ .string "POKéMON move, I hear.$"
+
+Route2_ViridianForest_NorthEntrance_Text_CanCancelEvolution::
+ .string "Do you know the evolution-cancel\n"
+ .string "technique?\p"
+ .string "When a POKéMON is evolving, you\n"
+ .string "can stop the process.\p"
+ .string "It's a technique for raising\n"
+ .string "POKéMON the way they are.$"
+
diff --git a/data/maps/Route2_ViridianForest_SouthEntrance_Frlg/map.json b/data/maps/Route2_ViridianForest_SouthEntrance_Frlg/map.json
new file mode 100644
index 000000000000..506ebc342e67
--- /dev/null
+++ b/data/maps/Route2_ViridianForest_SouthEntrance_Frlg/map.json
@@ -0,0 +1,80 @@
+{
+ "id": "MAP_ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE",
+ "name": "Route2_ViridianForest_SouthEntrance_Frlg",
+ "layout": "LAYOUT_ROUTE2_ENTRANCE",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 10,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route2_ViridianForest_SouthEntrance_EventScript_Woman1",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route2_ViridianForest_SouthEntrance_EventScript_Woman2",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 7,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 8,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 7,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_VIRIDIAN_FOREST",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/Route2_ViridianForest_SouthEntrance_Frlg/scripts.inc b/data/maps/Route2_ViridianForest_SouthEntrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..6df492b7eaa3
--- /dev/null
+++ b/data/maps/Route2_ViridianForest_SouthEntrance_Frlg/scripts.inc
@@ -0,0 +1,21 @@
+Route2_ViridianForest_SouthEntrance_Frlg_MapScripts::
+ .byte 0
+
+Route2_ViridianForest_SouthEntrance_EventScript_Woman1::
+ msgbox Route2_ViridianForest_SouthEntrance_Text_ForestIsMaze, MSGBOX_NPC
+ end
+
+Route2_ViridianForest_SouthEntrance_EventScript_Woman2::
+ msgbox Route2_ViridianForest_SouthEntrance_Text_RattataHasWickedBite, MSGBOX_NPC
+ end
+
+Route2_ViridianForest_SouthEntrance_Text_ForestIsMaze::
+ .string "Are you going to VIRIDIAN FOREST?\n"
+ .string "It's a natural maze in there.\l"
+ .string "Be careful you don't get lost.$"
+
+Route2_ViridianForest_SouthEntrance_Text_RattataHasWickedBite::
+ .string "RATTATA may be small, but don't\n"
+ .string "underestimate its wicked bite.\p"
+ .string "Have you caught one already?$"
+
diff --git a/data/maps/Route3_Frlg/map.json b/data/maps/Route3_Frlg/map.json
new file mode 100644
index 000000000000..52531fd8e5f1
--- /dev/null
+++ b/data/maps/Route3_Frlg/map.json
@@ -0,0 +1,183 @@
+{
+ "id": "MAP_ROUTE3",
+ "name": "Route3_Frlg",
+ "layout": "LAYOUT_ROUTE3",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_3",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE4",
+ "offset": 60,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_PEWTER_CITY",
+ "offset": -10,
+ "direction": "left"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 70,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route3_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 40,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route3_EventScript_Robin",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 32,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "Route3_EventScript_James",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 30,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "Route3_EventScript_Sally",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 25,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route3_EventScript_Greg",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 29,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "Route3_EventScript_Calvin",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 19,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "Route3_EventScript_Janice",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 12,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route3_EventScript_Colton",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 17,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route3_EventScript_Ben",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 72,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route3_EventScript_RouteSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 26,
+ "y": 9,
+ "elevation": 3,
+ "item": "ITEM_ORAN_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE3_ORAN_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/Route3_Frlg/scripts.inc b/data/maps/Route3_Frlg/scripts.inc
new file mode 100644
index 000000000000..18ad64f0d47f
--- /dev/null
+++ b/data/maps/Route3_Frlg/scripts.inc
@@ -0,0 +1,115 @@
+Route3_Frlg_MapScripts::
+ .byte 0
+
+Route3_EventScript_Youngster::
+ msgbox Route3_Text_TunnelFromCeruleanTiring, MSGBOX_NPC
+ end
+
+Route3_EventScript_RouteSign::
+ msgbox Route3_Text_RouteSign, MSGBOX_SIGN
+ end
+
+Route3_Text_TunnelFromCeruleanTiring::
+ .string "Whew… I better take a rest…\n"
+ .string "Groan…\p"
+ .string "That tunnel from CERULEAN takes a\n"
+ .string "lot out of you!$"
+
+Route3_Text_ColtonIntro::
+ .string "Hey!\n"
+ .string "I saw you in VIRIDIAN FOREST!$"
+
+Route3_Text_ColtonDefeat::
+ .string "You beat me again!$"
+
+Route3_Text_ColtonPostBattle::
+ .string "There are other kinds of POKéMON\n"
+ .string "than the ones you find in forests.$"
+
+Route3_Text_BenIntro::
+ .string "Hi!\n"
+ .string "I like shorts!\p"
+ .string "They're delightfully comfy and\n"
+ .string "easy to wear!$"
+
+Route3_Text_BenDefeat::
+ .string "I don't believe it!$"
+
+Route3_Text_BenPostBattle::
+ .string "Are you using a POKéMON CENTER's\n"
+ .string "PC for storing your POKéMON?\p"
+ .string "Each BOX can hold up to\n"
+ .string "30 POKéMON.$"
+
+Route3_Text_JaniceIntro::
+ .string "Excuse me!\n"
+ .string "You looked at me, didn't you?$"
+
+Route3_Text_JaniceDefeat::
+ .string "You're mean!$"
+
+Route3_Text_JanicePostBattle::
+ .string "You shouldn't be staring if you\n"
+ .string "don't want to battle!$"
+
+Route3_Text_GregIntro::
+ .string "Are you a TRAINER?\n"
+ .string "Let's get with it right away!$"
+
+Route3_Text_GregDefeat::
+ .string "If I had new POKéMON, I would've\n"
+ .string "won!$"
+
+Route3_Text_GregPostBattle::
+ .string "If a POKéMON BOX on the PC gets\n"
+ .string "full, just switch to another BOX.$"
+
+Route3_Text_SallyIntro::
+ .string "That look you gave me…\n"
+ .string "It's so intriguing!$"
+
+Route3_Text_SallyDefeat::
+ .string "Be nice!$"
+
+Route3_Text_SallyPostBattle::
+ .string "You can avoid battles by not\n"
+ .string "letting TRAINERS see you.$"
+
+Route3_Text_CalvinIntro::
+ .string "Hey! You're not wearing shorts!\n"
+ .string "What's wrong with you?$"
+
+Route3_Text_CalvinDefeat::
+ .string "Lost!\n"
+ .string "Lost! Lost!$"
+
+Route3_Text_CalvinPostBattle::
+ .string "I always wear shorts, even in\n"
+ .string "winter. That's my policy.$"
+
+Route3_Text_JamesIntro::
+ .string "I'll battle you with the POKéMON\n"
+ .string "I just caught.$"
+
+Route3_Text_JamesDefeat::
+ .string "Done like dinner!$"
+
+Route3_Text_JamesPostBattle::
+ .string "Trained POKéMON are stronger than\n"
+ .string "the wild ones.$"
+
+Route3_Text_RobinIntro::
+ .string "Eek!\n"
+ .string "Did you touch me?$"
+
+Route3_Text_RobinDefeat::
+ .string "That's it?$"
+
+Route3_Text_RobinPostBattle::
+ .string "ROUTE 4 is at the foot of\n"
+ .string "MT. MOON.$"
+
+Route3_Text_RouteSign::
+ .string "ROUTE 3\n"
+ .string "MT. MOON AHEAD$"
+
diff --git a/data/maps/Route4_Frlg/map.json b/data/maps/Route4_Frlg/map.json
new file mode 100644
index 000000000000..ab3e0f9f9391
--- /dev/null
+++ b/data/maps/Route4_Frlg/map.json
@@ -0,0 +1,197 @@
+{
+ "id": "MAP_ROUTE4",
+ "name": "Route4_Frlg",
+ "layout": "LAYOUT_ROUTE4",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_4",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE3",
+ "offset": -60,
+ "direction": "down"
+ },
+ {
+ "map": "MAP_CERULEAN_CITY",
+ "offset": -10,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 9,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route4_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 75,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "Route4_EventScript_Crissy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 67,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route4_EventScript_ItemTM05",
+ "flag": "FLAG_HIDE_ROUTE4_TM05"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 15,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route4_EventScript_Boy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 47,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route4_EventScript_MegaPunchTutor",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 50,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route4_EventScript_MegaKickTutor",
+ "flag": "0"
+ },
+ {
+ "type": "clone",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 109,
+ "y": 3,
+ "target_local_id": "LOCALID_CERULEAN_CAVE_GUARD",
+ "target_map": "MAP_CERULEAN_CITY"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 19,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_MT_MOON_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 32,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_MT_MOON_B1F",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 12,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE4_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 18,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route4_EventScript_MtMoonSign"
+ },
+ {
+ "type": "sign",
+ "x": 34,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route4_EventScript_RouteSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 43,
+ "y": 2,
+ "elevation": 3,
+ "item": "ITEM_GREAT_BALL",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE4_GREAT_BALL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 5,
+ "y": 4,
+ "elevation": 3,
+ "item": "ITEM_PERSIM_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE4_PERSIM_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 67,
+ "y": 17,
+ "elevation": 3,
+ "item": "ITEM_RAZZ_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE4_RAZZ_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/Route4_Frlg/scripts.inc b/data/maps/Route4_Frlg/scripts.inc
new file mode 100644
index 000000000000..c93e60ba5443
--- /dev/null
+++ b/data/maps/Route4_Frlg/scripts.inc
@@ -0,0 +1,97 @@
+Route4_Frlg_MapScripts::
+ .byte 0
+
+Route4_EventScript_Unused::
+ end
+
+Route4_EventScript_Woman::
+ msgbox Route4_Text_TrippedOverGeodude, MSGBOX_NPC
+ end
+
+Route4_EventScript_MtMoonSign::
+ msgbox Route4_Text_MtMoonEntrance, MSGBOX_SIGN
+ end
+
+Route4_EventScript_RouteSign::
+ msgbox Route4_Text_RouteSign, MSGBOX_SIGN
+ end
+
+Route4_Text_TrippedOverGeodude::
+ .string "Ouch! I tripped over a rocky\n"
+ .string "POKéMON, GEODUDE!$"
+
+Route4_Text_CrissyIntro::
+ .string "I came to MT. MOON in search of\n"
+ .string "mushroom POKéMON.$"
+
+Route4_Text_CrissyDefeat::
+ .string "After all I did to catch them!$"
+
+Route4_Text_CrissyPostBattle::
+ .string "There might not be any more\n"
+ .string "mushrooms here.\p"
+ .string "I think I got them all.$"
+
+Route4_Text_MtMoonEntrance::
+ .string "MT. MOON\n"
+ .string "Tunnel Entrance$"
+
+Route4_Text_RouteSign::
+ .string "ROUTE 4\n"
+ .string "MT. MOON - CERULEAN CITY$"
+
+Text_MegaPunchTeach::
+ .string "A punch of roaring ferocity!\p"
+ .string "Packed with destructive power!\p"
+ .string "When the chips are down,\n"
+ .string "MEGA PUNCH is the ultimate attack!\l"
+ .string "You agree, yes?\p"
+ .string "Now!\n"
+ .string "Let me teach it to your POKéMON!$"
+
+Text_MegaPunchDeclined::
+ .string "You'll be back when you understand\n"
+ .string "the worth of MEGA PUNCH.$"
+
+Text_MegaPunchWhichMon::
+ .string "Fine!\n"
+ .string "Which POKéMON will learn it?$"
+
+Text_MegaPunchTaught::
+ .string "Now, we are comrades in the way of\n"
+ .string "punching!\p"
+ .string "You should go before you're seen\n"
+ .string "by the misguided fool who trains\l"
+ .string "only his silly kicking over there.$"
+
+Text_MegaKickTeach::
+ .string "A kick of brutal ferocity!\p"
+ .string "Packed with destructive power!\p"
+ .string "When you get right down to it,\n"
+ .string "MEGA KICK is the ultimate attack!\l"
+ .string "Don't you agree?\p"
+ .string "Okay!\n"
+ .string "I'll teach it to your POKéMON!$"
+
+Text_MegaKickDeclined::
+ .string "You'll come crawling back when you\n"
+ .string "realize the value of MEGA KICK.$"
+
+Text_MegaKickWhichMon::
+ .string "All right!\n"
+ .string "Which POKéMON wants to learn it?$"
+
+Text_MegaKickTaught::
+ .string "Now, we are soul mates in the way\n"
+ .string "of kicking!\p"
+ .string "You should run before you're seen\n"
+ .string "by the deluded nitwit who trains\l"
+ .string "only simple punching over there.$"
+
+Route4_Text_PeopleLikeAndRespectBrock::
+ .string "Oh, wow, that's the BOULDERBADGE!\n"
+ .string "You got it from BROCK, didn't you?\p"
+ .string "BROCK is cool. He's not just tough.\n"
+ .string "People like and respect him.\p"
+ .string "I want to become a GYM LEADER\n"
+ .string "like him.$"
diff --git a/data/maps/Route4_PokemonCenter_1F_Frlg/map.json b/data/maps/Route4_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..b373cd74234d
--- /dev/null
+++ b/data/maps/Route4_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,137 @@
+{
+ "id": "MAP_ROUTE4_POKEMON_CENTER_1F",
+ "name": "Route4_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_4",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_ROUTE4_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route4_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 1,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route4_PokemonCenter_1F_EventScript_MagikarpSalesman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 12,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route4_PokemonCenter_1F_EventScript_Gentleman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 5,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route4_PokemonCenter_1F_EventScript_Boy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 14,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route4_PokemonCenter_1F_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLIPBOARD",
+ "x": 12,
+ "y": 6,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route4_PokemonCenter_1F_EventScript_Newspaper",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE4",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE4",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 8,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE4",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_ROUTE4_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/Route4_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/Route4_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..f061535cce86
--- /dev/null
+++ b/data/maps/Route4_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,204 @@
+.equ MAGIKARP_PRICE, 500
+
+Route4_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, Route4_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ .byte 0
+
+Route4_PokemonCenter_1F_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_ROUTE4_POKEMON_CENTER_1F
+ setrespawn HEAL_LOCATION_ROUTE4
+ end
+
+Route4_PokemonCenter_1F_EventScript_Boy::
+ msgbox Route4_PokemonCenter_1F_Text_CanHaveSixMonsWithYou, MSGBOX_NPC
+ end
+
+Route4_PokemonCenter_1F_EventScript_Gentleman::
+ lock
+ msgbox Route4_PokemonCenter_1F_Text_TeamRocketAttacksCerulean
+ release
+ end
+
+Route4_PokemonCenter_1F_EventScript_MagikarpSalesman::
+ lock
+ faceplayer
+ goto_if_set FLAG_BOUGHT_MAGIKARP, Route4_PokemonCenter_1F_EventScript_AlreadyBoughtMagikarp
+ showmoneybox 0, 0
+ checkplayergender
+ goto_if_eq VAR_RESULT, MALE, Route4_PokemonCenter_1F_EventScript_AskBuyMagikarpMale
+ goto_if_eq VAR_RESULT, FEMALE, Route4_PokemonCenter_1F_EventScript_AskBuyMagikarpFemale
+ end
+
+Route4_PokemonCenter_1F_EventScript_AskBuyMagikarpMale::
+ msgbox Route4_PokemonCenter_1F_Text_LaddieBuyMagikarpForJust500, MSGBOX_YESNO
+ goto Route4_PokemonCenter_1F_EventScript_TryBuyMagikarp
+ end
+
+Route4_PokemonCenter_1F_EventScript_AskBuyMagikarpFemale::
+ msgbox Route4_PokemonCenter_1F_Text_SweetieBuyMagikarpForJust500, MSGBOX_YESNO
+ goto Route4_PokemonCenter_1F_EventScript_TryBuyMagikarp
+ end
+
+Route4_PokemonCenter_1F_EventScript_TryBuyMagikarp::
+ goto_if_eq VAR_RESULT, NO, Route4_PokemonCenter_1F_EventScript_DeclineMagikarp
+ checkmoney MAGIKARP_PRICE
+ goto_if_eq VAR_RESULT, FALSE, Route4_PokemonCenter_1F_EventScript_NotEnoughMoney
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ setvar VAR_TEMP_1, SPECIES_MAGIKARP
+ givemon SPECIES_MAGIKARP, 5
+ goto_if_eq VAR_RESULT, 0, Route4_PokemonCenter_1F_EventScript_BuyMagikarpParty
+ goto_if_eq VAR_RESULT, 1, Route4_PokemonCenter_1F_EventScript_BuyMagikarpPC
+ goto_if_eq VAR_RESULT, 2, Route4_PokemonCenter_1F_EventScript_NoRoomForMagikarp
+ end
+
+Route4_PokemonCenter_1F_EventScript_BuyMagikarpParty::
+ call Route4_PokemonCenter_1F_EventScript_PayForMagikarp
+ msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, Route4_PokemonCenter_1F_EventScript_EndPurchaseMagikarp
+ call Common_EventScript_GetGiftMonPartySlot
+ fadescreen FADE_TO_BLACK
+ hidemoneybox
+ special ChangePokemonNickname
+ waitstate
+ goto Route4_PokemonCenter_1F_EventScript_BoughtMagikarp
+ end
+
+Route4_PokemonCenter_1F_EventScript_BuyMagikarpPC::
+ call Route4_PokemonCenter_1F_EventScript_PayForMagikarp
+ msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, Route4_PokemonCenter_1F_EventScript_TransferMagikarpCloseMoneyBox
+ fadescreen FADE_TO_BLACK
+ hidemoneybox
+ special ChangePokemonNickname
+ waitstate
+ lock
+ faceplayer
+ goto Route4_PokemonCenter_1F_EventScript_TransferMagikarp
+ end
+
+Route4_PokemonCenter_1F_EventScript_TransferMagikarpCloseMoneyBox::
+ call Common_EventScript_TransferredToPC
+ goto Route4_PokemonCenter_1F_EventScript_EndPurchaseMagikarp
+ end
+
+Route4_PokemonCenter_1F_EventScript_TransferMagikarp::
+ call Common_EventScript_TransferredToPC
+ goto Route4_PokemonCenter_1F_EventScript_BoughtMagikarp
+ end
+
+Route4_PokemonCenter_1F_EventScript_EndPurchaseMagikarp::
+ hidemoneybox
+ goto Route4_PokemonCenter_1F_EventScript_BoughtMagikarp
+ end
+
+Route4_PokemonCenter_1F_EventScript_BoughtMagikarp::
+ setflag FLAG_BOUGHT_MAGIKARP
+ release
+ end
+
+Route4_PokemonCenter_1F_EventScript_PayForMagikarp::
+ removemoney MAGIKARP_PRICE
+ updatemoneybox
+ playfanfare MUS_LEVEL_UP
+ message Route4_PokemonCenter_1F_Text_PaidOutrageouslyForMagikarp
+ waitmessage
+ waitfanfare
+ bufferspeciesname STR_VAR_1, SPECIES_MAGIKARP
+ return
+
+Route4_PokemonCenter_1F_EventScript_DeclineMagikarp::
+ msgbox Route4_PokemonCenter_1F_Text_OnlyDoingThisAsFavorToYou
+ hidemoneybox
+ release
+ end
+
+Route4_PokemonCenter_1F_EventScript_NotEnoughMoney::
+ msgbox Route4_PokemonCenter_1F_Text_YoullNeedMoreMoney
+ hidemoneybox
+ release
+ end
+
+Route4_PokemonCenter_1F_EventScript_AlreadyBoughtMagikarp::
+ msgbox Route4_PokemonCenter_1F_Text_IDontGiveRefunds
+ release
+ end
+
+Route4_PokemonCenter_1F_EventScript_NoRoomForMagikarp::
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox Route4_PokemonCenter_1F_Text_NoRoomForMorePokemon
+ hidemoneybox
+ release
+ end
+
+Route4_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+Route4_PokemonCenter_1F_EventScript_Youngster::
+ msgbox Route4_PokemonCenter_1F_Text_ShouldStoreMonsUsingPC, MSGBOX_NPC
+ end
+
+Route4_PokemonCenter_1F_EventScript_Newspaper::
+ lock
+ msgbox Route4_PokemonCenter_1F_Text_ItsANewspaper
+ release
+ end
+
+Route4_PokemonCenter_1F_Text_CanHaveSixMonsWithYou::
+ .string "Okay, set six POKé BALLS in my\n"
+ .string "belt…\p"
+ .string "Yeah, that'll do it. At most, you\n"
+ .string "can have six POKéMON with you.$"
+
+Route4_PokemonCenter_1F_Text_TeamRocketAttacksCerulean::
+ .string "TEAM ROCKET attacks CERULEAN\n"
+ .string "citizens…\p"
+ .string "Not a day goes by without TEAM\n"
+ .string "ROCKET being in the news.$"
+
+Route4_PokemonCenter_1F_Text_LaddieBuyMagikarpForJust500::
+ .string "MAN: Hello there, laddie!\n"
+ .string "Have I got a deal just for you!\p"
+ .string "I'll let you have a secret POKéMON\n"
+ .string "- a MAGIKARP - for just ¥500!\p"
+ .string "So, you'll buy it, am I right?$"
+
+Route4_PokemonCenter_1F_Text_SweetieBuyMagikarpForJust500::
+ .string "MAN: Hello there, sweetie pie!\n"
+ .string "Have I got a deal just for you!\p"
+ .string "I'll let you have a secret POKéMON\n"
+ .string "- a MAGIKARP - for just ¥500!\p"
+ .string "So, you'll buy it, am I right?$"
+
+Route4_PokemonCenter_1F_Text_PaidOutrageouslyForMagikarp::
+ .string "{PLAYER} paid an outrageous ¥500\n"
+ .string "and bought the MAGIKARP…$"
+
+Route4_PokemonCenter_1F_Text_OnlyDoingThisAsFavorToYou::
+ .string "No? You say no? I'm only doing this\n"
+ .string "as a favor to you!$"
+
+Route4_PokemonCenter_1F_Text_NoRoomForMorePokemon::
+ .string "There's no more room for any more\n"
+ .string "POKéMON, it looks like.$"
+
+Route4_PokemonCenter_1F_Text_YoullNeedMoreMoney::
+ .string "You'll need more money than that!$"
+
+Route4_PokemonCenter_1F_Text_IDontGiveRefunds::
+ .string "MAN: Well, I don't give refunds.\n"
+ .string "You knew what you were getting!$"
+
+Route4_PokemonCenter_1F_Text_ShouldStoreMonsUsingPC::
+ .string "Sometimes, you'll have too many\n"
+ .string "POKéMON with you to add any more.\p"
+ .string "In that case, you should just\n"
+ .string "store some using any PC.$"
+
+Route4_PokemonCenter_1F_Text_ItsANewspaper::
+ .string "It's a newspaper.$"
+
diff --git a/data/maps/Route4_PokemonCenter_2F_Frlg/map.json b/data/maps/Route4_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..7bf3d0f4affa
--- /dev/null
+++ b/data/maps/Route4_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_ROUTE4_POKEMON_CENTER_2F",
+ "name": "Route4_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_4",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_ROUTE4_POKEMON_CENTER_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/Route4_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/Route4_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..ca80caeb1fee
--- /dev/null
+++ b/data/maps/Route4_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+Route4_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+Route4_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+Route4_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+Route4_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/Route5_Frlg/map.json b/data/maps/Route5_Frlg/map.json
new file mode 100644
index 000000000000..5e1c41680a49
--- /dev/null
+++ b/data/maps/Route5_Frlg/map.json
@@ -0,0 +1,75 @@
+{
+ "id": "MAP_ROUTE5",
+ "name": "Route5_Frlg",
+ "layout": "LAYOUT_ROUTE5",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_5",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_CERULEAN_CITY",
+ "offset": 0,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_SAFFRON_CITY_CONNECTION",
+ "offset": 0,
+ "direction": "down"
+ }
+ ],
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 31,
+ "y": 31,
+ "elevation": 0,
+ "dest_map": "MAP_UNDERGROUND_PATH_NORTH_ENTRANCE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 23,
+ "y": 25,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE5_POKEMON_DAY_CARE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 24,
+ "y": 32,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE5_SOUTH_ENTRANCE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 25,
+ "y": 32,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE5_SOUTH_ENTRANCE",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 32,
+ "y": 32,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route5_EventScript_UndergroundPathSign"
+ }
+ ]
+}
diff --git a/data/maps/Route5_Frlg/scripts.inc b/data/maps/Route5_Frlg/scripts.inc
new file mode 100644
index 000000000000..ff2d0756081c
--- /dev/null
+++ b/data/maps/Route5_Frlg/scripts.inc
@@ -0,0 +1,11 @@
+Route5_Frlg_MapScripts::
+ .byte 0
+
+Route5_EventScript_UndergroundPathSign::
+ msgbox Route5_Text_UndergroundPathSign, MSGBOX_SIGN
+ end
+
+Route5_Text_UndergroundPathSign::
+ .string "UNDERGROUND PATH\n"
+ .string "CERULEAN CITY - VERMILION CITY$"
+
diff --git a/data/maps/Route5_PokemonDayCare_Frlg/map.json b/data/maps/Route5_PokemonDayCare_Frlg/map.json
new file mode 100644
index 000000000000..9cc8cd9b42d7
--- /dev/null
+++ b/data/maps/Route5_PokemonDayCare_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_ROUTE5_POKEMON_DAY_CARE",
+ "name": "Route5_PokemonDayCare_Frlg",
+ "layout": "LAYOUT_ROUTE5_POKEMON_DAY_CARE",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_5",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route5_PokemonDayCare_EventScript_DaycareMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE5",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE5",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE5",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/Route5_PokemonDayCare_Frlg/scripts.inc b/data/maps/Route5_PokemonDayCare_Frlg/scripts.inc
new file mode 100644
index 000000000000..9f7c71b847f1
--- /dev/null
+++ b/data/maps/Route5_PokemonDayCare_Frlg/scripts.inc
@@ -0,0 +1,73 @@
+@ Handled by data/scripts/day_care.inc
+
+Route5_PokemonDayCare_Frlg_MapScripts::
+ .byte 0
+
+Route5_PokemonDayCare_Text_WantMeToRaiseMon::
+ .string "I run the DAY-CARE service.\p"
+ .string "Would you like me to raise one of\n"
+ .string "your POKéMON?$"
+
+Route5_PokemonDayCare_Text_ComeAgain::
+ .string "Come again.$"
+
+Route5_PokemonDayCare_Text_WhichMonShouldIRaise::
+ .string "Which POKéMON should I raise?$"
+
+Route5_PokemonDayCare_Text_ComeAnytimeYouLike::
+ .string "Fine.\n"
+ .string "Come anytime you like.$"
+
+Route5_PokemonDayCare_Text_LookAfterMonForAWhile::
+ .string "Fine, I'll look after your\n"
+ .string "{STR_VAR_1} for a while.$"
+
+Route5_PokemonDayCare_Text_ComeSeeMeInAWhile::
+ .string "Come see me in a while.$"
+
+Route5_PokemonDayCare_Text_MonNeedsToSpendMoreTime::
+ .string "You're back already?\p"
+ .string "Your {STR_VAR_1} needs to spend\n"
+ .string "some more time with me.$"
+
+Route5_PokemonDayCare_Text_OweMeXForMonsReturn::
+ .string "You owe me ¥{STR_VAR_2} for the return\n"
+ .string "of this POKéMON.$"
+
+Route5_PokemonDayCare_Text_ThankYouHeresMon::
+ .string "Thank you!\n"
+ .string "Here's your POKéMON.$"
+
+Route5_PokemonDayCare_Text_PlayerGotMonBack::
+ .string "{PLAYER} got {STR_VAR_1} back\n"
+ .string "from the DAY-CARE MAN.$"
+
+Route5_PokemonDayCare_Text_OnlyHaveOneMonWithYou::
+ .string "Oh? You only have one POKéMON\n"
+ .string "with you.$"
+
+Route5_PokemonDayCare_Text_WhatWillYouBattleWith::
+ .string "If you leave me that POKéMON,\n"
+ .string "what will you battle with?$"
+
+Route5_PokemonDayCare_Text_MonHasGrownByXLevels::
+ .string "Your {STR_VAR_1} has grown a lot.\n"
+ .string "Yes, quite a lot, I'd say.\p"
+ .string "Let me see…\n"
+ .string "By level, it's grown by {STR_VAR_2}.\p"
+ .string "Aren't I great?$"
+
+Route5_PokemonDayCare_Text_YouveGotNoRoomForIt::
+ .string "You can't take this POKéMON back\n"
+ .string "if you've got no room for it.$"
+
+Route5_PokemonDayCare_Text_DontHaveEnoughMoney::
+ .string "You don't have enough money.$"
+
+Route5_PokemonDayCare_Text_WantMeToTakeALookAtYours::
+ .string "きみの\n"
+ .string "みてみるかね?$"
+
+Route5_PokemonDayCare_Text_CantAcceptMonWithHM::
+ .string "わるいけど ひでんのわざを もった\n"
+ .string "ポケモンは あずかれないなぁ$"
diff --git a/data/maps/Route5_SouthEntrance_Frlg/map.json b/data/maps/Route5_SouthEntrance_Frlg/map.json
new file mode 100644
index 000000000000..a221828f59ab
--- /dev/null
+++ b/data/maps/Route5_SouthEntrance_Frlg/map.json
@@ -0,0 +1,94 @@
+{
+ "id": "MAP_ROUTE5_SOUTH_ENTRANCE",
+ "name": "Route5_SouthEntrance_Frlg",
+ "layout": "LAYOUT_SAFFRON_CITY_NORTH_SOUTH_ENTRANCE",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_5",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 1,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route5_SouthEntrance_EventScript_Guard",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "9"
+ },
+ {
+ "x": 4,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE5",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 4,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "9"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE5",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 3,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE5_ROUTE6_ROUTE7_ROUTE8_GATES",
+ "var_value": "0",
+ "script": "Route5_SouthEntrance_EventScript_GuardTriggerLeft"
+ },
+ {
+ "type": "trigger",
+ "x": 4,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE5_ROUTE6_ROUTE7_ROUTE8_GATES",
+ "var_value": "0",
+ "script": "Route5_SouthEntrance_EventScript_GuardTriggerMid"
+ },
+ {
+ "type": "trigger",
+ "x": 5,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE5_ROUTE6_ROUTE7_ROUTE8_GATES",
+ "var_value": "0",
+ "script": "Route5_SouthEntrance_EventScript_GuardTriggerRight"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/Route5_SouthEntrance_Frlg/scripts.inc b/data/maps/Route5_SouthEntrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..cef724c70724
--- /dev/null
+++ b/data/maps/Route5_SouthEntrance_Frlg/scripts.inc
@@ -0,0 +1,111 @@
+Route5_SouthEntrance_Frlg_MapScripts::
+ .byte 0
+
+Route5_SouthEntrance_EventScript_Guard::
+ msgbox Route5_SouthEntrance_Text_HiHowsItGoing, MSGBOX_NPC
+ end
+
+Route5_SouthEntrance_EventScript_GuardTriggerLeft::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto Route5_SouthEntrance_EventScript_GuardTrigger
+ end
+
+Route5_SouthEntrance_EventScript_GuardTriggerMid::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto Route5_SouthEntrance_EventScript_GuardTrigger
+ end
+
+Route5_SouthEntrance_EventScript_GuardTriggerRight::
+ lockall
+ setvar VAR_TEMP_1, 2
+ goto Route5_SouthEntrance_EventScript_GuardTrigger
+ end
+
+Route5_SouthEntrance_EventScript_GuardTrigger::
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ goto_if_set FLAG_GOT_TEA, Route5_SouthEntrance_EventScript_GiveTea
+ msgbox Route5_SouthEntrance_Text_ThirstyOnGuardDuty
+ closemessage
+ applymovement LOCALID_PLAYER, Route5_SouthEntrance_Movement_BlockPlayerEntry
+ waitmovement 0
+ releaseall
+ end
+
+Route5_SouthEntrance_EventScript_GiveTea::
+ removeitem ITEM_TEA
+ goto Route5_SouthEntrance_EventScript_GuardDrinkTea
+ end
+
+Route5_SouthEntrance_EventScript_GuardDrinkTea::
+ msgbox Route5_SouthEntrance_Text_ThatTeaLooksTasty
+ closemessage
+ call_if_eq VAR_TEMP_1, 0, Route5_SouthEntrance_EventScript_WalkToGuardLeft
+ call_if_eq VAR_TEMP_1, 1, Route5_SouthEntrance_EventScript_WalkToGuardMid
+ call_if_eq VAR_TEMP_1, 2, Route5_SouthEntrance_EventScript_WalkToGuardRight
+ msgbox Route5_SouthEntrance_Text_ThanksIllShareTeaWithGuards
+ setvar VAR_MAP_SCENE_ROUTE5_ROUTE6_ROUTE7_ROUTE8_GATES, 1
+ releaseall
+ end
+
+Route5_SouthEntrance_EventScript_WalkToGuardLeft::
+ applymovement LOCALID_PLAYER, Route5_SouthEntrance_Movement_WalkToGuardLeft
+ waitmovement 0
+ return
+
+Route5_SouthEntrance_EventScript_WalkToGuardMid::
+ applymovement LOCALID_PLAYER, Route5_SouthEntrance_Movement_WalkToGuardMid
+ waitmovement 0
+ return
+
+Route5_SouthEntrance_EventScript_WalkToGuardRight::
+ applymovement LOCALID_PLAYER, Route5_SouthEntrance_Movement_WalkToGuardRight
+ waitmovement 0
+ return
+
+Route5_SouthEntrance_Movement_WalkToGuardMid::
+ walk_left
+ step_end
+
+Route5_SouthEntrance_Movement_WalkToGuardRight::
+ walk_left
+ walk_left
+ step_end
+
+Route5_SouthEntrance_Movement_WalkToGuardLeft::
+ walk_in_place_left
+ step_end
+
+Route5_SouthEntrance_Movement_BlockPlayerEntry::
+ walk_up
+ step_end
+
+Route5_SouthEntrance_Text_ThirstyOnGuardDuty::
+ .string "I'm on guard duty.\n"
+ .string "Gee, I'm thirsty, though!\p"
+ .string "Oh, wait there, the road's closed.$"
+
+Route5_SouthEntrance_Text_ThatTeaLooksTasty::
+ .string "Oh, that TEA…\n"
+ .string "It looks awfully tasty…$"
+
+Route5_SouthEntrance_Text_ThanksIllShareTeaWithGuards::
+ .string "Huh? I can have this drink?\n"
+ .string "Gee, thanks!\l"
+ .string "… …\l"
+ .string "Glug, glug…\l"
+ .string "… …\l"
+ .string "Gulp…\l"
+ .string "If you want to go to SAFFRON\l"
+ .string "CITY…\l"
+ .string "… …\l"
+ .string "You can go on through.\p"
+ .string "I'll share this TEA with the other\n"
+ .string "guards!$"
+
+Route5_SouthEntrance_Text_HiHowsItGoing::
+ .string "Hi, how's it going?$"
+
diff --git a/data/maps/Route6_Frlg/map.json b/data/maps/Route6_Frlg/map.json
new file mode 100644
index 000000000000..7bb7672d5fe2
--- /dev/null
+++ b/data/maps/Route6_Frlg/map.json
@@ -0,0 +1,169 @@
+{
+ "id": "MAP_ROUTE6",
+ "name": "Route6_Frlg",
+ "layout": "LAYOUT_ROUTE6",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_6",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_SAFFRON_CITY_CONNECTION",
+ "offset": 0,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_VERMILION_CITY",
+ "offset": -12,
+ "direction": "down"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 3,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "Route6_EventScript_Keigo",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CAMPER_FRLG",
+ "x": 12,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route6_EventScript_Ricky",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 13,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route6_EventScript_Nancy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 20,
+ "y": 25,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route6_EventScript_Elijah",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 13,
+ "y": 32,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route6_EventScript_Isabelle",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CAMPER_FRLG",
+ "x": 13,
+ "y": 33,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route6_EventScript_Jeff",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 19,
+ "y": 13,
+ "elevation": 0,
+ "dest_map": "MAP_UNDERGROUND_PATH_SOUTH_ENTRANCE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 12,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE6_NORTH_ENTRANCE",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 13,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE6_NORTH_ENTRANCE",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 21,
+ "y": 15,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route6_EventScript_UndergroundPathSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 5,
+ "y": 5,
+ "elevation": 3,
+ "item": "ITEM_SITRUS_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE6_SITRUS_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 19,
+ "y": 5,
+ "elevation": 3,
+ "item": "ITEM_RARE_CANDY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE6_RARE_CANDY",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/Route6_Frlg/scripts.inc b/data/maps/Route6_Frlg/scripts.inc
new file mode 100644
index 000000000000..04d9f984145d
--- /dev/null
+++ b/data/maps/Route6_Frlg/scripts.inc
@@ -0,0 +1,80 @@
+Route6_Frlg_MapScripts::
+ .byte 0
+
+Route6_EventScript_UndergroundPathSign::
+ msgbox Route6_Text_UndergroundPathSign, MSGBOX_SIGN
+ end
+
+Route6_Text_RickyIntro::
+ .string "Who's there?\n"
+ .string "Quit listening in on us!$"
+
+Route6_Text_RickyDefeat::
+ .string "I just can't win!$"
+
+Route6_Text_RickyPostBattle::
+ .string "Whisper…\n"
+ .string "Whisper…$"
+
+Route6_Text_NancyIntro::
+ .string "Excuse me!\n"
+ .string "This is a private conversation!$"
+
+Route6_Text_NancyDefeat::
+ .string "Ugh!\n"
+ .string "I hate losing.$"
+
+Route6_Text_NancyPostBattle::
+ .string "Whisper…\n"
+ .string "Whisper…$"
+
+Route6_Text_KeigoIntro::
+ .string "There aren't many bugs out here.$"
+
+Route6_Text_KeigoDefeat::
+ .string "No!\n"
+ .string "You're kidding!$"
+
+Route6_Text_KeigoPostBattle::
+ .string "I like bugs, so I'm going back to\n"
+ .string "VIRIDIAN FOREST.$"
+
+Route6_Text_JeffIntro::
+ .string "Huh?\n"
+ .string "You want to talk to me?$"
+
+Route6_Text_JeffDefeat::
+ .string "This stinks…\n"
+ .string "I couldn't beat your challenge…$"
+
+Route6_Text_JeffPostBattle::
+ .string "I should bring more POKéMON with\n"
+ .string "me. I'll feel safer that way.$"
+
+Route6_Text_IsabelleIntro::
+ .string "Me?\n"
+ .string "Well, okay. I'll play!$"
+
+Route6_Text_IsabelleDefeat::
+ .string "Things just didn't work…$"
+
+Route6_Text_IsabellePostBattle::
+ .string "I want to get stronger.\n"
+ .string "What's your secret?$"
+
+Route6_Text_ElijahIntro::
+ .string "I've never seen you around.\n"
+ .string "Are you good?$"
+
+Route6_Text_ElijahDefeat::
+ .string "You're too good!$"
+
+Route6_Text_ElijahPostBattle::
+ .string "Are my POKéMON weak?\n"
+ .string "Or, am I just bad?\l"
+ .string "Which do you think?$"
+
+Route6_Text_UndergroundPathSign::
+ .string "UNDERGROUND PATH\n"
+ .string "CERULEAN CITY - VERMILION CITY$"
+
diff --git a/data/maps/Route6_NorthEntrance_Frlg/map.json b/data/maps/Route6_NorthEntrance_Frlg/map.json
new file mode 100644
index 000000000000..1b0f7dcfdc62
--- /dev/null
+++ b/data/maps/Route6_NorthEntrance_Frlg/map.json
@@ -0,0 +1,94 @@
+{
+ "id": "MAP_ROUTE6_NORTH_ENTRANCE",
+ "name": "Route6_NorthEntrance_Frlg",
+ "layout": "LAYOUT_SAFFRON_CITY_NORTH_SOUTH_ENTRANCE",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_6",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 7,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route6_NorthEntrance_EventScript_Guard",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "11"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "11"
+ },
+ {
+ "x": 4,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE6",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 5,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE6",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 3,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE5_ROUTE6_ROUTE7_ROUTE8_GATES",
+ "var_value": "0",
+ "script": "Route6_NorthEntrance_EventScript_GuardTriggerLeft"
+ },
+ {
+ "type": "trigger",
+ "x": 4,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE5_ROUTE6_ROUTE7_ROUTE8_GATES",
+ "var_value": "0",
+ "script": "Route6_NorthEntrance_EventScript_GuardTriggerMid"
+ },
+ {
+ "type": "trigger",
+ "x": 5,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE5_ROUTE6_ROUTE7_ROUTE8_GATES",
+ "var_value": "0",
+ "script": "Route6_NorthEntrance_EventScript_GuardTriggerRight"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/Route6_NorthEntrance_Frlg/scripts.inc b/data/maps/Route6_NorthEntrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..3c081ccae731
--- /dev/null
+++ b/data/maps/Route6_NorthEntrance_Frlg/scripts.inc
@@ -0,0 +1,111 @@
+Route6_NorthEntrance_Frlg_MapScripts::
+ .byte 0
+
+Route6_NorthEntrance_EventScript_Guard::
+ msgbox Route6_NorthEntrance_Text_HiHowsItGoing, MSGBOX_NPC
+ end
+
+Route6_NorthEntrance_EventScript_GuardTriggerLeft::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto Route6_NorthEntrance_EventScript_GuardTrigger
+ end
+
+Route6_NorthEntrance_EventScript_GuardTriggerMid::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto Route6_NorthEntrance_EventScript_GuardTrigger
+ end
+
+Route6_NorthEntrance_EventScript_GuardTriggerRight::
+ lockall
+ setvar VAR_TEMP_1, 2
+ goto Route6_NorthEntrance_EventScript_GuardTrigger
+ end
+
+Route6_NorthEntrance_EventScript_GuardTrigger::
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ goto_if_set FLAG_GOT_TEA, Route6_NorthEntrance_EventScript_GiveTea
+ msgbox Route6_NorthEntrance_Text_ThirstyOnGuardDuty
+ closemessage
+ applymovement LOCALID_PLAYER, Route6_NorthEntrance_Movement_BlockPlayerEntry
+ waitmovement 0
+ releaseall
+ end
+
+Route6_NorthEntrance_EventScript_GiveTea::
+ removeitem ITEM_TEA
+ goto Route6_NorthEntrance_EventScript_GuardDrinkTea
+ end
+
+Route6_NorthEntrance_EventScript_GuardDrinkTea::
+ msgbox Route6_NorthEntrance_Text_ThatTeaLooksTasty
+ closemessage
+ call_if_eq VAR_TEMP_1, 0, Route6_NorthEntrance_EventScript_WalkToGuardLeft
+ call_if_eq VAR_TEMP_1, 1, Route6_NorthEntrance_EventScript_WalkToGuardMid
+ call_if_eq VAR_TEMP_1, 2, Route6_NorthEntrance_EventScript_WalkToGuardRight
+ msgbox Route6_NorthEntrance_Text_ThanksIllShareTeaWithGuards
+ setvar VAR_MAP_SCENE_ROUTE5_ROUTE6_ROUTE7_ROUTE8_GATES, 1
+ releaseall
+ end
+
+Route6_NorthEntrance_EventScript_WalkToGuardLeft::
+ applymovement LOCALID_PLAYER, Route6_NorthEntrance_Movement_WalkToGuardLeft
+ waitmovement 0
+ return
+
+Route6_NorthEntrance_EventScript_WalkToGuardMid::
+ applymovement LOCALID_PLAYER, Route6_NorthEntrance_Movement_WalkToGuardMid
+ waitmovement 0
+ return
+
+Route6_NorthEntrance_EventScript_WalkToGuardRight::
+ applymovement LOCALID_PLAYER, Route6_NorthEntrance_Movement_WalkToGuardRight
+ waitmovement 0
+ return
+
+Route6_NorthEntrance_Movement_WalkToGuardLeft::
+ walk_right
+ walk_right
+ step_end
+
+Route6_NorthEntrance_Movement_WalkToGuardMid::
+ walk_right
+ step_end
+
+Route6_NorthEntrance_Movement_WalkToGuardRight::
+ walk_in_place_right
+ step_end
+
+Route6_NorthEntrance_Movement_BlockPlayerEntry::
+ walk_down
+ step_end
+
+Route6_NorthEntrance_Text_ThirstyOnGuardDuty::
+ .string "I'm on guard duty.\n"
+ .string "Gee, I'm thirsty, though!\p"
+ .string "Oh, wait there, the road's closed.$"
+
+Route6_NorthEntrance_Text_ThatTeaLooksTasty::
+ .string "Oh, that TEA…\n"
+ .string "It looks awfully tasty…$"
+
+Route6_NorthEntrance_Text_ThanksIllShareTeaWithGuards::
+ .string "Huh? I can have this drink?\n"
+ .string "Gee, thanks!\l"
+ .string "… …\l"
+ .string "Glug, glug…\l"
+ .string "… …\l"
+ .string "Gulp…\l"
+ .string "If you want to go to SAFFRON\l"
+ .string "CITY…\l"
+ .string "… …\l"
+ .string "You can go on through.\p"
+ .string "I'll share this TEA with the other\n"
+ .string "guards!$"
+
+Route6_NorthEntrance_Text_HiHowsItGoing::
+ .string "Hi, how's it going?$"
+
diff --git a/data/maps/Route6_UnusedHouse_Frlg/map.json b/data/maps/Route6_UnusedHouse_Frlg/map.json
new file mode 100644
index 000000000000..257ff5cead5f
--- /dev/null
+++ b/data/maps/Route6_UnusedHouse_Frlg/map.json
@@ -0,0 +1,22 @@
+{
+ "id": "MAP_ROUTE6_UNUSED_HOUSE",
+ "name": "Route6_UnusedHouse_Frlg",
+ "layout": "LAYOUT_HOUSE2_FRLG",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_6",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/Route6_UnusedHouse_Frlg/scripts.inc b/data/maps/Route6_UnusedHouse_Frlg/scripts.inc
new file mode 100644
index 000000000000..5296d2a1d878
--- /dev/null
+++ b/data/maps/Route6_UnusedHouse_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+Route6_UnusedHouse_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/Route7_EastEntrance_Frlg/map.json b/data/maps/Route7_EastEntrance_Frlg/map.json
new file mode 100644
index 000000000000..7c098cf106c7
--- /dev/null
+++ b/data/maps/Route7_EastEntrance_Frlg/map.json
@@ -0,0 +1,94 @@
+{
+ "id": "MAP_ROUTE7_EAST_ENTRANCE",
+ "name": "Route7_EastEntrance_Frlg",
+ "layout": "LAYOUT_SAFFRON_CITY_EAST_WEST_ENTRANCE",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_7",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route7_EastEntrance_EventScript_Guard",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE7",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE7",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 11,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "8"
+ },
+ {
+ "x": 11,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "8"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 4,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE5_ROUTE6_ROUTE7_ROUTE8_GATES",
+ "var_value": "0",
+ "script": "Route7_EastEntrance_EventScript_GuardTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE5_ROUTE6_ROUTE7_ROUTE8_GATES",
+ "var_value": "0",
+ "script": "Route7_EastEntrance_EventScript_GuardTriggerMid"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE5_ROUTE6_ROUTE7_ROUTE8_GATES",
+ "var_value": "0",
+ "script": "Route7_EastEntrance_EventScript_GuardTriggerBottom"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/Route7_EastEntrance_Frlg/scripts.inc b/data/maps/Route7_EastEntrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..4ecb4e6b4aa6
--- /dev/null
+++ b/data/maps/Route7_EastEntrance_Frlg/scripts.inc
@@ -0,0 +1,111 @@
+Route7_EastEntrance_Frlg_MapScripts::
+ .byte 0
+
+Route7_EastEntrance_EventScript_Guard::
+ msgbox Route7_EastEntrance_Text_HiHowsItGoing, MSGBOX_NPC
+ end
+
+Route7_EastEntrance_EventScript_GuardTriggerTop::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto Route7_EastEntrance_EventScript_GuardTrigger
+ end
+
+Route7_EastEntrance_EventScript_GuardTriggerMid::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto Route7_EastEntrance_EventScript_GuardTrigger
+ end
+
+Route7_EastEntrance_EventScript_GuardTriggerBottom::
+ lockall
+ setvar VAR_TEMP_1, 2
+ goto Route7_EastEntrance_EventScript_GuardTrigger
+ end
+
+Route7_EastEntrance_EventScript_GuardTrigger::
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ goto_if_set FLAG_GOT_TEA, Route7_EastEntrance_EventScript_GiveTea
+ msgbox Route7_EastEntrance_Text_ThirstyOnGuardDuty
+ closemessage
+ applymovement LOCALID_PLAYER, Route7_EastEntrance_Movement_BlockPlayerEntry
+ waitmovement 0
+ releaseall
+ end
+
+Route7_EastEntrance_EventScript_GiveTea::
+ removeitem ITEM_TEA
+ goto Route7_EastEntrance_EventScript_GuardDrinkTea
+ end
+
+Route7_EastEntrance_EventScript_GuardDrinkTea::
+ msgbox Route7_EastEntrance_Text_ThatTeaLooksTasty
+ closemessage
+ call_if_eq VAR_TEMP_1, 0, Route7_EastEntrance_WalkToGuardTop
+ call_if_eq VAR_TEMP_1, 1, Route7_EastEntrance_WalkToGuardMid
+ call_if_eq VAR_TEMP_1, 2, Route7_EastEntrance_WalkToGuardBottom
+ msgbox Route7_EastEntrance_Text_ThanksIllShareTeaWithGuards
+ setvar VAR_MAP_SCENE_ROUTE5_ROUTE6_ROUTE7_ROUTE8_GATES, 1
+ releaseall
+ end
+
+Route7_EastEntrance_WalkToGuardTop::
+ applymovement LOCALID_PLAYER, Route7_EastEntrance_Movement_WalkToGuardTop
+ waitmovement 0
+ return
+
+Route7_EastEntrance_WalkToGuardMid::
+ applymovement LOCALID_PLAYER, Route7_EastEntrance_Movement_WalkToGuardMid
+ waitmovement 0
+ return
+
+Route7_EastEntrance_WalkToGuardBottom::
+ applymovement LOCALID_PLAYER, Route7_EastEntrance_Movement_WalkToGuardBottom
+ waitmovement 0
+ return
+
+Route7_EastEntrance_Movement_WalkToGuardMid::
+ walk_up
+ step_end
+
+Route7_EastEntrance_Movement_WalkToGuardBottom::
+ walk_up
+ walk_up
+ step_end
+
+Route7_EastEntrance_Movement_WalkToGuardTop::
+ walk_in_place_up
+ step_end
+
+Route7_EastEntrance_Movement_BlockPlayerEntry::
+ walk_left
+ step_end
+
+Route7_EastEntrance_Text_ThirstyOnGuardDuty::
+ .string "I'm on guard duty.\n"
+ .string "Gee, I'm thirsty, though!\p"
+ .string "Oh, wait there, the road's closed.$"
+
+Route7_EastEntrance_Text_ThatTeaLooksTasty::
+ .string "Oh, that TEA…\n"
+ .string "It looks awfully tasty…$"
+
+Route7_EastEntrance_Text_ThanksIllShareTeaWithGuards::
+ .string "Huh? I can have this drink?\n"
+ .string "Gee, thanks!\l"
+ .string "… …\l"
+ .string "Glug, glug…\l"
+ .string "… …\l"
+ .string "Gulp…\l"
+ .string "If you want to go to SAFFRON\l"
+ .string "CITY…\l"
+ .string "… …\l"
+ .string "You can go on through.\p"
+ .string "I'll share this TEA with the other\n"
+ .string "guards!$"
+
+Route7_EastEntrance_Text_HiHowsItGoing::
+ .string "Hi, how's it going?$"
+
diff --git a/data/maps/Route7_Frlg/map.json b/data/maps/Route7_Frlg/map.json
new file mode 100644
index 000000000000..04d5bb29703a
--- /dev/null
+++ b/data/maps/Route7_Frlg/map.json
@@ -0,0 +1,76 @@
+{
+ "id": "MAP_ROUTE7",
+ "name": "Route7_Frlg",
+ "layout": "LAYOUT_ROUTE7",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_7",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_CELADON_CITY",
+ "offset": -10,
+ "direction": "left"
+ },
+ {
+ "map": "MAP_SAFFRON_CITY_CONNECTION",
+ "offset": -10,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "clone",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": -8,
+ "y": 12,
+ "target_local_id": "LOCALID_CELADON_BORDER_TREE",
+ "target_map": "MAP_CELADON_CITY"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 14,
+ "elevation": 0,
+ "dest_map": "MAP_UNDERGROUND_PATH_WEST_ENTRANCE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 15,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE7_EAST_ENTRANCE",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 14,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route7_EventScript_UndergroundPathSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 16,
+ "y": 15,
+ "elevation": 3,
+ "item": "ITEM_WEPEAR_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE7_WEPEAR_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/Route7_Frlg/scripts.inc b/data/maps/Route7_Frlg/scripts.inc
new file mode 100644
index 000000000000..9cfbcddc0e49
--- /dev/null
+++ b/data/maps/Route7_Frlg/scripts.inc
@@ -0,0 +1,11 @@
+Route7_Frlg_MapScripts::
+ .byte 0
+
+Route7_EventScript_UndergroundPathSign::
+ msgbox Route7_Text_UndergroundPathSign, MSGBOX_SIGN
+ end
+
+Route7_Text_UndergroundPathSign::
+ .string "UNDERGROUND PATH\n"
+ .string "CELADON CITY - LAVENDER TOWN$"
+
diff --git a/data/maps/Route8_Frlg/map.json b/data/maps/Route8_Frlg/map.json
new file mode 100644
index 000000000000..cf2b85860236
--- /dev/null
+++ b/data/maps/Route8_Frlg/map.json
@@ -0,0 +1,298 @@
+{
+ "id": "MAP_ROUTE8",
+ "name": "Route8_Frlg",
+ "layout": "LAYOUT_ROUTE8",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_8",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_SAFFRON_CITY_CONNECTION",
+ "offset": -10,
+ "direction": "left"
+ },
+ {
+ "map": "MAP_LAVENDER_TOWN",
+ "offset": 0,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 62,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "6",
+ "script": "Route8_EventScript_Julia",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 55,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route8_EventScript_Rich",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 51,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "Route8_EventScript_Glenn",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 29,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route8_EventScript_Paige",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 29,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "6",
+ "script": "Route8_EventScript_Leslie",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 29,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route8_EventScript_Andrea",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 29,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "6",
+ "script": "Route8_EventScript_Megan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 21,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route8_EventScript_Stan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 9,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "Route8_EventScript_Aidan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 33,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 47,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 40,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route8_EventScript_Eli",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 41,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route8_EventScript_Anne",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 14,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_LEFT_UP",
+ "movement_range_x": 5,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route8_EventScript_Ricardo",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 24,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_DOWN_LEFT",
+ "movement_range_x": 5,
+ "movement_range_y": 5,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route8_EventScript_Jaren",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 13,
+ "y": 4,
+ "elevation": 0,
+ "dest_map": "MAP_UNDERGROUND_PATH_EAST_ENTRANCE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 7,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE8_WEST_ENTRANCE",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 16,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route8_EventScript_UndergroundPathSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 42,
+ "y": 10,
+ "elevation": 3,
+ "item": "ITEM_RAWST_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE8_RAWST_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 38,
+ "y": 11,
+ "elevation": 3,
+ "item": "ITEM_LUM_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE8_LUM_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 42,
+ "y": 15,
+ "elevation": 3,
+ "item": "ITEM_LEPPA_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE8_LEPPA_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/Route8_Frlg/scripts.inc b/data/maps/Route8_Frlg/scripts.inc
new file mode 100644
index 000000000000..77e7159de8af
--- /dev/null
+++ b/data/maps/Route8_Frlg/scripts.inc
@@ -0,0 +1,169 @@
+Route8_Frlg_MapScripts::
+ .byte 0
+
+Route8_EventScript_UndergroundPathSign::
+ msgbox Route8_Text_UndergroundPathSign, MSGBOX_SIGN
+ end
+
+Route8_Text_AidanIntro::
+ .string "You look good at POKéMON, but how\n"
+ .string "is your chemistry grade?$"
+
+Route8_Text_AidanDefeat::
+ .string "Ow!\n"
+ .string "Meltdown!$"
+
+Route8_Text_AidanPostBattle::
+ .string "I am better at school than this!$"
+
+Route8_Text_StanIntro::
+ .string "All right!\n"
+ .string "Let's play a game!$"
+
+Route8_Text_StanDefeat::
+ .string "Drat!\n"
+ .string "Came up short!$"
+
+Route8_Text_StanPostBattle::
+ .string "Things didn't work today.$"
+
+Route8_Text_GlennIntro::
+ .string "You should be informed.\n"
+ .string "You need strategy to win at this!$"
+
+Route8_Text_GlennDefeat::
+ .string "It's not logical!$"
+
+Route8_Text_GlennPostBattle::
+ .string "Go with GRIMER first…and…\n"
+ .string "…and…then…$"
+
+Route8_Text_PaigeIntro::
+ .string "I like NIDORAN, so I collect them!$"
+
+Route8_Text_PaigeDefeat::
+ .string "Why?\n"
+ .string "Why??$"
+
+Route8_Text_PaigePostBattle::
+ .string "When POKéMON grow up, they get\n"
+ .string "ugly! They shouldn't evolve.$"
+
+Route8_Text_LeslieIntro::
+ .string "School is fun, but so are POKéMON.$"
+
+Route8_Text_LeslieDefeat::
+ .string "You made it clear to me that\n"
+ .string "I should stick with school.$"
+
+Route8_Text_LesliePostBattle::
+ .string "I was planning on getting some\n"
+ .string "fresh air for a change, but…\p"
+ .string "We're stuck here because of the\n"
+ .string "gates at SAFFRON.$"
+
+Route8_Text_AndreaIntro::
+ .string "MEOWTH is so cute, meow, meow,\n"
+ .string "meow!$"
+
+Route8_Text_AndreaDefeat::
+ .string "Meeeeyow!$"
+
+Route8_Text_AndreaPostBattle::
+ .string "I think PIDGEY and RATTATA are\n"
+ .string "cute, too!$"
+
+Route8_Text_MeganIntro::
+ .string "We must look silly standing here\n"
+ .string "like this.$"
+
+Route8_Text_MeganDefeat::
+ .string "Look what you did to my poor, cute\n"
+ .string "POKéMON!$"
+
+Route8_Text_MeganPostBattle::
+ .string "SAFFRON's gatekeeper won't let us\n"
+ .string "go through.\p"
+ .string "I know he's doing his job, but I\n"
+ .string "think he's mean.$"
+
+Route8_Text_RichIntro::
+ .string "I'm a rambling, gaming dude!$"
+
+Route8_Text_RichDefeat::
+ .string "Missed the big chance!$"
+
+Route8_Text_RichPostBattle::
+ .string "Playing games and POKéMON are like\n"
+ .string "eating peanuts! I just can't stop!$"
+
+Route8_Text_JuliaIntro::
+ .string "What's a cute, round, and fluffy\n"
+ .string "POKéMON?$"
+
+Route8_Text_JuliaDefeat::
+ .string "Stop!\p"
+ .string "Don't be so mean to my CLEFAIRY!$"
+
+Route8_Text_JuliaPostBattle::
+ .string "I read that CLEFAIRY evolves when\n"
+ .string "it's exposed to a MOON STONE.\p"
+ .string "I read that in a POKéMON JOURNAL.\n"
+ .string "I wonder if it's true?$"
+
+Route8_Text_UndergroundPathSign::
+ .string "UNDERGROUND PATH\n"
+ .string "CELADON CITY - LAVENDER TOWN$"
+
+Route8_Text_EliIntro::
+ .string "ELI: Twin power is fantastic.\n"
+ .string "Did you know?$"
+
+Route8_Text_EliDefeat::
+ .string "ELI: But…\n"
+ .string "We used our twin power…$"
+
+Route8_Text_EliPostBattle::
+ .string "ELI: I caught my POKéMON with\n"
+ .string "ANNE!$"
+
+Route8_Text_EliNotEnoughMons::
+ .string "ELI: We can't battle if you don't\n"
+ .string "have two POKéMON.$"
+
+Route8_Text_AnneIntro::
+ .string "ANNE: We'll shock you with our twin\n"
+ .string "power!$"
+
+Route8_Text_AnneDefeat::
+ .string "ANNE: Our twin power…$"
+
+Route8_Text_AnnePostBattle::
+ .string "ANNE: I'm raising POKéMON with\n"
+ .string "ELI.$"
+
+Route8_Text_AnneNotEnoughMons::
+ .string "ANNE: Hi, hi! Let's battle!\n"
+ .string "But bring two POKéMON.$"
+
+Route8_Text_RicardoIntro::
+ .string "My bike's acting up, man.$"
+
+Route8_Text_RicardoDefeat::
+ .string "Aww, man.\n"
+ .string "I'm not into this.$"
+
+Route8_Text_RicardoPostBattle::
+ .string "I got grass caught up in my\n"
+ .string "spokes, man.$"
+
+Route8_Text_JarenIntro::
+ .string "Clear the way, or I'll run you\n"
+ .string "down!$"
+
+Route8_Text_JarenDefeat::
+ .string "You for real, kid?$"
+
+Route8_Text_JarenPostBattle::
+ .string "Don't think you're all special and\n"
+ .string "all just because of this.$"
diff --git a/data/maps/Route8_WestEntrance_Frlg/map.json b/data/maps/Route8_WestEntrance_Frlg/map.json
new file mode 100644
index 000000000000..b0b7c9dfad17
--- /dev/null
+++ b/data/maps/Route8_WestEntrance_Frlg/map.json
@@ -0,0 +1,94 @@
+{
+ "id": "MAP_ROUTE8_WEST_ENTRANCE",
+ "name": "Route8_WestEntrance_Frlg",
+ "layout": "LAYOUT_SAFFRON_CITY_EAST_WEST_ENTRANCE",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_8",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_POLICEMAN",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route8_WestEntrance_EventScript_Guard",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "10"
+ },
+ {
+ "x": 1,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "10"
+ },
+ {
+ "x": 11,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE8",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 11,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE8",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 4,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE5_ROUTE6_ROUTE7_ROUTE8_GATES",
+ "var_value": "0",
+ "script": "Route8_WestEntrance_EventScript_GuardTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE5_ROUTE6_ROUTE7_ROUTE8_GATES",
+ "var_value": "0",
+ "script": "Route8_WestEntrance_EventScript_GuardTriggerMid"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_ROUTE5_ROUTE6_ROUTE7_ROUTE8_GATES",
+ "var_value": "0",
+ "script": "Route8_WestEntrance_EventScript_GuardTriggerBottom"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/Route8_WestEntrance_Frlg/scripts.inc b/data/maps/Route8_WestEntrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..c52be43f4dbc
--- /dev/null
+++ b/data/maps/Route8_WestEntrance_Frlg/scripts.inc
@@ -0,0 +1,123 @@
+Route8_WestEntrance_Frlg_MapScripts::
+ .byte 0
+
+Route8_WestEntrance_EventScript_Guard::
+ msgbox Route8_WestEntrance_Text_HiHowsItGoing, MSGBOX_NPC
+ end
+
+Route8_WestEntrance_EventScript_GuardTriggerTop::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto Route8_WestEntrance_EventScript_GuardTrigger
+ end
+
+Route8_WestEntrance_EventScript_GuardTriggerMid::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto Route8_WestEntrance_EventScript_GuardTrigger
+ end
+
+Route8_WestEntrance_EventScript_GuardTriggerBottom::
+ lockall
+ setvar VAR_TEMP_1, 2
+ goto Route8_WestEntrance_EventScript_GuardTrigger
+ end
+
+Route8_WestEntrance_EventScript_GuardTrigger::
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ goto_if_set FLAG_GOT_TEA, Route8_WestEntrance_EventScript_GiveTea
+ msgbox Route8_WestEntrance_Text_ThirstyOnGuardDuty
+ closemessage
+ applymovement LOCALID_PLAYER, Route8_WestEntrance_Movement_BlockPlayerEntry
+ waitmovement 0
+ releaseall
+ end
+
+Route8_WestEntrance_EventScript_GiveTea::
+ removeitem ITEM_TEA
+ goto Route8_WestEntrance_EventScript_GuardDrinkTea
+ end
+
+@ Unused
+Route8_WestEntrance_EventScript_GiveSodaPop::
+ removeitem ITEM_SODA_POP
+ goto Route8_WestEntrance_EventScript_GuardDrinkTea
+ end
+
+@ Unused
+Route8_WestEntrance_EventScript_GiveLemonade::
+ removeitem ITEM_LEMONADE
+ goto Route8_WestEntrance_EventScript_GuardDrinkTea
+ end
+
+Route8_WestEntrance_EventScript_GuardDrinkTea::
+ msgbox Route8_WestEntrance_Text_ThatTeaLooksTasty
+ closemessage
+ call_if_eq VAR_TEMP_1, 0, Route8_WestEntrance_EventScript_WalkToGuardTop
+ call_if_eq VAR_TEMP_1, 1, Route8_WestEntrance_EventScript_WalkToGuardMid
+ call_if_eq VAR_TEMP_1, 2, Route8_WestEntrance_EventScript_WalkToGuardBottom
+ msgbox Route8_WestEntrance_Text_ThanksIllShareTeaWithGuards
+ setvar VAR_MAP_SCENE_ROUTE5_ROUTE6_ROUTE7_ROUTE8_GATES, 1
+ releaseall
+ end
+
+Route8_WestEntrance_EventScript_WalkToGuardTop::
+ applymovement LOCALID_PLAYER, Route8_WestEntrance_Movement_WalkToGuardTop
+ waitmovement 0
+ return
+
+Route8_WestEntrance_EventScript_WalkToGuardMid::
+ applymovement LOCALID_PLAYER, Route8_WestEntrance_Movement_WalkToGuardMid
+ waitmovement 0
+ return
+
+Route8_WestEntrance_EventScript_WalkToGuardBottom::
+ applymovement LOCALID_PLAYER, Route8_WestEntrance_Movement_WalkToGuardBottom
+ waitmovement 0
+ return
+
+Route8_WestEntrance_Movement_WalkToGuardMid::
+ walk_up
+ step_end
+
+Route8_WestEntrance_Movement_WalkToGuardBottom::
+ walk_up
+ walk_up
+ step_end
+
+Route8_WestEntrance_Movement_WalkToGuardTop::
+ walk_in_place_up
+ step_end
+
+Route8_WestEntrance_Movement_BlockPlayerEntry::
+ walk_right
+ step_end
+
+Route8_WestEntrance_Text_ThirstyOnGuardDuty::
+ .string "I'm on guard duty.\n"
+ .string "Gee, I'm thirsty, though!\p"
+ .string "Oh, wait there, the road's closed.$"
+
+Route8_WestEntrance_Text_ThatTeaLooksTasty::
+ .string "Oh, that TEA…\n"
+ .string "It looks awfully tasty…$"
+
+Route8_WestEntrance_Text_ThanksIllShareTeaWithGuards::
+ .string "Huh? I can have this drink?\n"
+ .string "Gee, thanks!\l"
+ .string "… …\l"
+ .string "Glug, glug…\l"
+ .string "… …\l"
+ .string "Gulp…\l"
+ .string "If you want to go to SAFFRON\l"
+ .string "CITY…\l"
+ .string "… …\l"
+ .string "You can go on through.\p"
+ .string "I'll share this TEA with the other\n"
+ .string "guards!$"
+
+Route8_WestEntrance_Text_HiHowsItGoing::
+ .string "Hi, how's it going?$"
+
diff --git a/data/maps/Route9_Frlg/map.json b/data/maps/Route9_Frlg/map.json
new file mode 100644
index 000000000000..7de2a3cdfc3c
--- /dev/null
+++ b/data/maps/Route9_Frlg/map.json
@@ -0,0 +1,246 @@
+{
+ "id": "MAP_ROUTE9",
+ "name": "Route9_Frlg",
+ "layout": "LAYOUT_ROUTE9",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ROUTE_9",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_CERULEAN_CITY",
+ "offset": -10,
+ "direction": "left"
+ },
+ {
+ "map": "MAP_ROUTE10",
+ "offset": 0,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 14,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route9_EventScript_Alicia",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 20,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "Route9_EventScript_Jeremy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 61,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route9_EventScript_Alan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CAMPER_FRLG",
+ "x": 26,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route9_EventScript_Chris",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 26,
+ "y": 1,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "Route9_EventScript_Brent",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 49,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "Route9_EventScript_Conner",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 53,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 3,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "Route9_EventScript_Brice",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 60,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "Route9_EventScript_Caitlin",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CAMPER_FRLG",
+ "x": 36,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "Route9_EventScript_Drew",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_ROUTE9_CUT_TREE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 2,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 12,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route9_EventScript_ItemTM40",
+ "flag": "FLAG_HIDE_ROUTE9_TM40"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 65,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Route9_EventScript_ItemBurnHeal",
+ "flag": "FLAG_HIDE_ROUTE9_BURN_HEAL"
+ }
+ ],
+ "warp_events": [
+
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 29,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "Route9_EventScript_RouteSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 15,
+ "y": 7,
+ "elevation": 0,
+ "item": "ITEM_ETHER",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE9_ETHER",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 63,
+ "y": 2,
+ "elevation": 3,
+ "item": "ITEM_RARE_CANDY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE9_RARE_CANDY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 48,
+ "y": 2,
+ "elevation": 3,
+ "item": "ITEM_CHESTO_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_ROUTE9_CHESTO_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/Route9_Frlg/scripts.inc b/data/maps/Route9_Frlg/scripts.inc
new file mode 100644
index 000000000000..61b5e3122cea
--- /dev/null
+++ b/data/maps/Route9_Frlg/scripts.inc
@@ -0,0 +1,113 @@
+Route9_Frlg_MapScripts::
+ .byte 0
+
+Route9_EventScript_RouteSign::
+ msgbox Route9_Text_RouteSign, MSGBOX_SIGN
+ end
+
+Route9_Text_AliciaIntro::
+ .string "You have POKéMON with you!\n"
+ .string "You're mine!$"
+
+Route9_Text_AliciaDefeat::
+ .string "You deceived me…$"
+
+Route9_Text_AliciaPostBattle::
+ .string "The tunnel coming up is pitch-black\n"
+ .string "inside.\p"
+ .string "You'll need FLASH to get through\n"
+ .string "there.$"
+
+Route9_Text_ChrisIntro::
+ .string "Who's that walking there with those\n"
+ .string "good-looking POKéMON?$"
+
+Route9_Text_ChrisDefeat::
+ .string "Out like a light!$"
+
+Route9_Text_ChrisPostBattle::
+ .string "Keep walking!$"
+
+Route9_Text_DrewIntro::
+ .string "I'm taking the ROCK TUNNEL to\n"
+ .string "go to LAVENDER…$"
+
+Route9_Text_DrewDefeat::
+ .string "Can't measure up…$"
+
+Route9_Text_DrewPostBattle::
+ .string "Are you off to ROCK TUNNEL, too?$"
+
+Route9_Text_CaitlinIntro::
+ .string "Don't you dare patronize me!$"
+
+Route9_Text_CaitlinDefeat::
+ .string "No!\n"
+ .string "You're too much.$"
+
+Route9_Text_CaitlinPostBattle::
+ .string "You're obviously talented.\n"
+ .string "Good luck to you!$"
+
+Route9_Text_JeremyIntro::
+ .string "Bwahaha!\n"
+ .string "Great! I was bored, eh!$"
+
+Route9_Text_JeremyDefeat::
+ .string "Keep it coming, eh!\p"
+ .string "Oh wait.\n"
+ .string "I'm out of POKéMON!$"
+
+Route9_Text_JeremyPostBattle::
+ .string "You sure had guts standing up to\n"
+ .string "me there, eh?$"
+
+Route9_Text_BriceIntro::
+ .string "Hahaha!\n"
+ .string "Aren't you a little toughie!$"
+
+Route9_Text_BriceDefeat::
+ .string "What's that?$"
+
+Route9_Text_BricePostBattle::
+ .string "Hahaha!\n"
+ .string "Kids should be tough!$"
+
+Route9_Text_BrentIntro::
+ .string "I got up early every day to raise\n"
+ .string "my POKéMON from cocoons!$"
+
+Route9_Text_BrentDefeat::
+ .string "WHAT?\p"
+ .string "What a total waste of time!$"
+
+Route9_Text_BrentPostBattle::
+ .string "I have to collect more than bugs\n"
+ .string "to get stronger…$"
+
+Route9_Text_AlanIntro::
+ .string "Hahahaha!\n"
+ .string "Bring it on!$"
+
+Route9_Text_AlanDefeat::
+ .string "Hahahaha!\n"
+ .string "You beat me fair!$"
+
+Route9_Text_AlanPostBattle::
+ .string "Hahahaha!\n"
+ .string "Us hearty guys always laugh!$"
+
+Route9_Text_ConnerIntro::
+ .string "Go, my super BUG POKéMON!$"
+
+Route9_Text_ConnerDefeat::
+ .string "My bugs…$"
+
+Route9_Text_ConnerPostBattle::
+ .string "If you don't like BUG POKéMON,\n"
+ .string "you bug me!$"
+
+Route9_Text_RouteSign::
+ .string "ROUTE 9\n"
+ .string "CERULEAN CITY - ROCK TUNNEL$"
+
diff --git a/data/maps/RustboroCity_House1/scripts.inc b/data/maps/RustboroCity_House1/scripts.inc
index 88a33786c0a6..b12fce094a48 100644
--- a/data/maps/RustboroCity_House1/scripts.inc
+++ b/data/maps/RustboroCity_House1/scripts.inc
@@ -5,26 +5,7 @@ RustboroCity_House1_EventScript_Trader::
lock
faceplayer
goto_if_set FLAG_RUSTBORO_NPC_TRADE_COMPLETED, RustboroCity_House1_EventScript_TradeCompleted
- setvar VAR_0x8008, INGAME_TRADE_SEEDOT
- copyvar VAR_0x8004, VAR_0x8008
- specialvar VAR_RESULT, GetInGameTradeSpeciesInfo
- copyvar VAR_0x8009, VAR_RESULT
- msgbox RustboroCity_House1_Text_IllTradeIfYouWant, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, RustboroCity_House1_EventScript_DeclineTrade
- special ChoosePartyMon
- waitstate
- copyvar VAR_0x800A, VAR_0x8004
- goto_if_eq VAR_0x8004, PARTY_NOTHING_CHOSEN, RustboroCity_House1_EventScript_DeclineTrade
- copyvar VAR_0x8005, VAR_0x800A
- specialvar VAR_RESULT, GetTradeSpecies
- copyvar VAR_0x800B, VAR_RESULT
- goto_if_ne VAR_RESULT, VAR_0x8009, RustboroCity_House1_EventScript_NotRequestedMon
- copyvar VAR_0x8004, VAR_0x8008
- copyvar VAR_0x8005, VAR_0x800A
- special CreateInGameTradePokemon
- special DoInGameTradeScene
- waitstate
- msgbox RustboroCity_House1_Text_PleaseBeGoodToMyPokemon, MSGBOX_DEFAULT
+ ingame_trade INGAME_TRADE_SEEDOT, RustboroCity_House1_Text_IllTradeIfYouWant, RustboroCity_House1_EventScript_DeclineTrade, RustboroCity_House1_EventScript_NotRequestedMon, RustboroCity_House1_Text_PleaseBeGoodToMyPokemon
setflag FLAG_RUSTBORO_NPC_TRADE_COMPLETED
release
end
diff --git a/data/maps/SSAnne_1F_Corridor_Frlg/map.json b/data/maps/SSAnne_1F_Corridor_Frlg/map.json
new file mode 100644
index 000000000000..ec8aad26f40c
--- /dev/null
+++ b/data/maps/SSAnne_1F_Corridor_Frlg/map.json
@@ -0,0 +1,143 @@
+{
+ "id": "MAP_SSANNE_1F_CORRIDOR",
+ "name": "SSAnne_1F_Corridor_Frlg",
+ "layout": "LAYOUT_SSANNE_1F_CORRIDOR",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 18,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_1F_Corridor_EventScript_Sailor",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 12,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_1F_Corridor_EventScript_WorkerM",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_2F_CORRIDOR",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 2,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_KITCHEN",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 19,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_EXTERIOR",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 20,
+ "y": 0,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_EXTERIOR",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 3,
+ "y": 20,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_KITCHEN",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 28,
+ "y": 17,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_B1F_CORRIDOR",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 5,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_1F_ROOM1",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 8,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_1F_ROOM2",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 11,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_1F_ROOM3",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 14,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_1F_ROOM4",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 17,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_1F_ROOM5",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 23,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_1F_ROOM7",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 20,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_1F_ROOM6",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_1F_Corridor_Frlg/scripts.inc b/data/maps/SSAnne_1F_Corridor_Frlg/scripts.inc
new file mode 100644
index 000000000000..c5fc54d19408
--- /dev/null
+++ b/data/maps/SSAnne_1F_Corridor_Frlg/scripts.inc
@@ -0,0 +1,25 @@
+SSAnne_1F_Corridor_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_1F_Corridor_EventScript_WorkerM::
+ msgbox SSAnne_1F_Corridor_Text_LeStrongSilentType, MSGBOX_NPC
+ end
+
+SSAnne_1F_Corridor_EventScript_Sailor::
+ msgbox SSAnne_1F_Corridor_Text_PassengersAreRestless, MSGBOX_NPC
+ end
+
+SSAnne_1F_Corridor_Text_LeStrongSilentType::
+ .string "Bonjour!\n"
+ .string "I am le waiter on this ship!\p"
+ .string "I will be happy to serve you\n"
+ .string "anything you please!\p"
+ .string "… … …\n"
+ .string "Ah! Le strong silent type!$"
+
+SSAnne_1F_Corridor_Text_PassengersAreRestless::
+ .string "The passengers are restless from\n"
+ .string "this long voyage.\p"
+ .string "You might be challenged by the\n"
+ .string "more bored ones!$"
+
diff --git a/data/maps/SSAnne_1F_Room1_Frlg/map.json b/data/maps/SSAnne_1F_Room1_Frlg/map.json
new file mode 100644
index 000000000000..970bd0317661
--- /dev/null
+++ b/data/maps/SSAnne_1F_Room1_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_SSANNE_1F_ROOM1",
+ "name": "SSAnne_1F_Room1_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM1",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_1F_Room1_EventScript_Gentleman",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_1F_CORRIDOR",
+ "dest_warp_id": "6"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_1F_Room1_Frlg/scripts.inc b/data/maps/SSAnne_1F_Room1_Frlg/scripts.inc
new file mode 100644
index 000000000000..73f45d6b3a8a
--- /dev/null
+++ b/data/maps/SSAnne_1F_Room1_Frlg/scripts.inc
@@ -0,0 +1,13 @@
+SSAnne_1F_Room1_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_1F_Room1_EventScript_Gentleman::
+ msgbox SSAnne_1F_Room1_Text_ImAGlobalPoliceAgent, MSGBOX_NPC
+ end
+
+SSAnne_1F_Room1_Text_ImAGlobalPoliceAgent::
+ .string "Ssh…!\n"
+ .string "I'm a GLOBAL POLICE agent.\p"
+ .string "I'm on the trail of TEAM ROCKET.\n"
+ .string "They're up to nothing good!$"
+
diff --git a/data/maps/SSAnne_1F_Room2_Frlg/map.json b/data/maps/SSAnne_1F_Room2_Frlg/map.json
new file mode 100644
index 000000000000..315e52b94d67
--- /dev/null
+++ b/data/maps/SSAnne_1F_Room2_Frlg/map.json
@@ -0,0 +1,87 @@
+{
+ "id": "MAP_SSANNE_1F_ROOM2",
+ "name": "SSAnne_1F_Room2_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM1",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 5,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SSAnne_1F_Room2_EventScript_Ann",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 0,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SSAnne_1F_Room2_EventScript_Tyler",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 2,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SSAnne_1F_Room2_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_1F_Room2_EventScript_ItemTM31",
+ "flag": "FLAG_HIDE_SSANNE_1F_ROOM2_TM31"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_1F_CORRIDOR",
+ "dest_warp_id": "7"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_1F_Room2_Frlg/scripts.inc b/data/maps/SSAnne_1F_Room2_Frlg/scripts.inc
new file mode 100644
index 000000000000..36a764097f0c
--- /dev/null
+++ b/data/maps/SSAnne_1F_Room2_Frlg/scripts.inc
@@ -0,0 +1,48 @@
+SSAnne_1F_Room2_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_1F_Room2_EventScript_Woman::
+ msgbox SSAnne_1F_Room2_Text_CruisingAroundWorld, MSGBOX_NPC
+ end
+
+SSAnne_1F_Room2_EventScript_Ann::
+ trainerbattle_single TRAINER_LASS_ANN, SSAnne_1F_Room2_Text_AnnIntro, SSAnne_1F_Room2_Text_AnnDefeat
+ msgbox SSAnne_1F_Room2_Text_AnnPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SSAnne_1F_Room2_EventScript_Tyler::
+ trainerbattle_single TRAINER_YOUNGSTER_TYLER, SSAnne_1F_Room2_Text_TylerIntro, SSAnne_1F_Room2_Text_TylerDefeat
+ msgbox SSAnne_1F_Room2_Text_TylerPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SSAnne_1F_Room2_Text_TylerIntro::
+ .string "I love POKéMON!\n"
+ .string "Do you?$"
+
+SSAnne_1F_Room2_Text_TylerDefeat::
+ .string "Wow! \n"
+ .string "You're great!$"
+
+SSAnne_1F_Room2_Text_TylerPostBattle::
+ .string "Listen, listen!\n"
+ .string "Let me be your friend, okay?\p"
+ .string "Then we can trade POKéMON and\n"
+ .string "do stuff.$"
+
+SSAnne_1F_Room2_Text_AnnIntro::
+ .string "I collected these POKéMON\n"
+ .string "from all around the world!$"
+
+SSAnne_1F_Room2_Text_AnnDefeat::
+ .string "Oh, no!\n"
+ .string "I went around the world for these!$"
+
+SSAnne_1F_Room2_Text_AnnPostBattle::
+ .string "You hurt my poor POKéMON!\p"
+ .string "I demand that you heal them at a\n"
+ .string "POKéMON CENTER!$"
+
+SSAnne_1F_Room2_Text_CruisingAroundWorld::
+ .string "We are cruising around the world,\n"
+ .string "my children and I.$"
+
diff --git a/data/maps/SSAnne_1F_Room3_Frlg/map.json b/data/maps/SSAnne_1F_Room3_Frlg/map.json
new file mode 100644
index 000000000000..dd61cb8abe4c
--- /dev/null
+++ b/data/maps/SSAnne_1F_Room3_Frlg/map.json
@@ -0,0 +1,73 @@
+{
+ "id": "MAP_SSANNE_1F_ROOM3",
+ "name": "SSAnne_1F_Room3_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM1",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 3,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_LEFT_UP",
+ "movement_range_x": 2,
+ "movement_range_y": 3,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_1F_Room3_EventScript_LittleGirl",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WIGGLYTUFF",
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_1F_Room3_EventScript_Wigglytuff",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 0,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_1F_Room3_EventScript_BaldingMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_1F_CORRIDOR",
+ "dest_warp_id": "8"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_1F_Room3_Frlg/scripts.inc b/data/maps/SSAnne_1F_Room3_Frlg/scripts.inc
new file mode 100644
index 000000000000..c253892b9914
--- /dev/null
+++ b/data/maps/SSAnne_1F_Room3_Frlg/scripts.inc
@@ -0,0 +1,32 @@
+SSAnne_1F_Room3_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_1F_Room3_EventScript_LittleGirl::
+ msgbox SSAnne_1F_Room3_Text_AlwaysTravelWithWigglytuff, MSGBOX_NPC
+ end
+
+SSAnne_1F_Room3_EventScript_BaldingMan::
+ msgbox SSAnne_1F_Room3_Text_CruiseIsElegantAndCozy, MSGBOX_NPC
+ end
+
+SSAnne_1F_Room3_EventScript_Wigglytuff::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_WIGGLYTUFF, CRY_MODE_NORMAL
+ msgbox SSAnne_1F_Room3_Text_Wigglytuff
+ waitmoncry
+ release
+ end
+
+SSAnne_1F_Room3_Text_CruiseIsElegantAndCozy::
+ .string "A world cruise is so elegant yet\n"
+ .string "cozy!$"
+
+SSAnne_1F_Room3_Text_AlwaysTravelWithWigglytuff::
+ .string "I always travel with WIGGLYTUFF.\n"
+ .string "I never leave home without it.$"
+
+SSAnne_1F_Room3_Text_Wigglytuff::
+ .string "WIGGLYTUFF: Puup pupuu!$"
+
diff --git a/data/maps/SSAnne_1F_Room4_Frlg/map.json b/data/maps/SSAnne_1F_Room4_Frlg/map.json
new file mode 100644
index 000000000000..f5d9c67482b2
--- /dev/null
+++ b/data/maps/SSAnne_1F_Room4_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_SSANNE_1F_ROOM4",
+ "name": "SSAnne_1F_Room4_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM1",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 2,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_1F_Room4_EventScript_Woman",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_1F_CORRIDOR",
+ "dest_warp_id": "9"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_1F_Room4_Frlg/scripts.inc b/data/maps/SSAnne_1F_Room4_Frlg/scripts.inc
new file mode 100644
index 000000000000..d5bdc2d82dc8
--- /dev/null
+++ b/data/maps/SSAnne_1F_Room4_Frlg/scripts.inc
@@ -0,0 +1,25 @@
+SSAnne_1F_Room4_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_1F_Room4_EventScript_Woman::
+ lock
+ faceplayer
+ checkplayergender
+ goto_if_eq VAR_RESULT, MALE, SSAnne_1F_Room4_EventScript_WomanPlayerMale
+ msgbox SSAnne_1F_Room4_Text_WaitressCherryPiePlease
+ release
+ end
+
+SSAnne_1F_Room4_EventScript_WomanPlayerMale::
+ msgbox SSAnne_1F_Room4_Text_WaiterCherryPiePlease
+ release
+ end
+
+SSAnne_1F_Room4_Text_WaiterCherryPiePlease::
+ .string "Waiter, I would like a cherry pie,\n"
+ .string "please!$"
+
+SSAnne_1F_Room4_Text_WaitressCherryPiePlease::
+ .string "Waitress, I would like a cherry\n"
+ .string "pie, please!$"
+
diff --git a/data/maps/SSAnne_1F_Room5_Frlg/map.json b/data/maps/SSAnne_1F_Room5_Frlg/map.json
new file mode 100644
index 000000000000..cf1c53a4ec6c
--- /dev/null
+++ b/data/maps/SSAnne_1F_Room5_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_SSANNE_1F_ROOM5",
+ "name": "SSAnne_1F_Room5_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM1",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 2,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "SSAnne_1F_Room5_EventScript_Arthur",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_1F_CORRIDOR",
+ "dest_warp_id": "10"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_1F_Room5_Frlg/scripts.inc b/data/maps/SSAnne_1F_Room5_Frlg/scripts.inc
new file mode 100644
index 000000000000..fa1bcf87aeb6
--- /dev/null
+++ b/data/maps/SSAnne_1F_Room5_Frlg/scripts.inc
@@ -0,0 +1,20 @@
+SSAnne_1F_Room5_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_1F_Room5_EventScript_Arthur::
+ trainerbattle_single TRAINER_GENTLEMAN_ARTHUR, SSAnne_1F_Room5_Text_ArthurIntro, SSAnne_1F_Room5_Text_ArthurDefeat
+ msgbox SSAnne_1F_Room5_Text_ArthurPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SSAnne_1F_Room5_Text_ArthurIntro::
+ .string "You insolent pup!\n"
+ .string "How dare you barge in!$"
+
+SSAnne_1F_Room5_Text_ArthurDefeat::
+ .string "Humph! You rude child!\n"
+ .string "You have no sense of courtesy!$"
+
+SSAnne_1F_Room5_Text_ArthurPostBattle::
+ .string "I wish to be left alone!\n"
+ .string "Get out!$"
+
diff --git a/data/maps/SSAnne_1F_Room6_Frlg/map.json b/data/maps/SSAnne_1F_Room6_Frlg/map.json
new file mode 100644
index 000000000000..d51d0ea93d54
--- /dev/null
+++ b/data/maps/SSAnne_1F_Room6_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_SSANNE_1F_ROOM6",
+ "name": "SSAnne_1F_Room6_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM1",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 3,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_1F_Room6_EventScript_Woman",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_1F_CORRIDOR",
+ "dest_warp_id": "12"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_1F_Room6_Frlg/scripts.inc b/data/maps/SSAnne_1F_Room6_Frlg/scripts.inc
new file mode 100644
index 000000000000..516376017da1
--- /dev/null
+++ b/data/maps/SSAnne_1F_Room6_Frlg/scripts.inc
@@ -0,0 +1,42 @@
+SSAnne_1F_Room6_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_1F_Room6_EventScript_Woman::
+ lock
+ faceplayer
+ msgbox SSAnne_1F_Room6_Text_TakeAShortRest, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, SSAnne_1F_Room6_EventScript_DeclineHeal
+ closemessage
+ call Common_EventScript_OutOfCenterPartyHeal
+ msgbox SSAnne_1F_Room6_Text_GladEveryoneIsRefreshed
+ release
+ end
+
+SSAnne_1F_Room6_EventScript_DeclineHeal::
+ checkplayergender
+ goto_if_eq VAR_RESULT, MALE, SSAnne_1F_Room6_EventScript_DeclineHealMale
+ msgbox SSAnne_1F_Room6_Text_SorryYouLookLikeMySister
+ release
+ end
+
+SSAnne_1F_Room6_EventScript_DeclineHealMale::
+ msgbox SSAnne_1F_Room6_Text_SorryYouLookLikeMyBrother
+ release
+ end
+
+SSAnne_1F_Room6_Text_TakeAShortRest::
+ .string "You look tired. Would you like to\n"
+ .string "take a short rest?$"
+
+SSAnne_1F_Room6_Text_GladEveryoneIsRefreshed::
+ .string "I'm glad to see that everyone is\n"
+ .string "looking refreshed and chipper.$"
+
+SSAnne_1F_Room6_Text_SorryYouLookLikeMyBrother::
+ .string "Oh, I'm sorry for fussing over you.\n"
+ .string "You look like my little brother…$"
+
+SSAnne_1F_Room6_Text_SorryYouLookLikeMySister::
+ .string "Oh, I'm sorry for fussing over you.\n"
+ .string "You look like my little sister…$"
+
diff --git a/data/maps/SSAnne_1F_Room7_Frlg/map.json b/data/maps/SSAnne_1F_Room7_Frlg/map.json
new file mode 100644
index 000000000000..da2e98d559aa
--- /dev/null
+++ b/data/maps/SSAnne_1F_Room7_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_SSANNE_1F_ROOM7",
+ "name": "SSAnne_1F_Room7_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM1",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 4,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SSAnne_1F_Room7_EventScript_Thomas",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_1F_CORRIDOR",
+ "dest_warp_id": "11"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_1F_Room7_Frlg/scripts.inc b/data/maps/SSAnne_1F_Room7_Frlg/scripts.inc
new file mode 100644
index 000000000000..f15e2eb53059
--- /dev/null
+++ b/data/maps/SSAnne_1F_Room7_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+SSAnne_1F_Room7_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_1F_Room7_EventScript_Thomas::
+ trainerbattle_single TRAINER_GENTLEMAN_THOMAS, SSAnne_1F_Room7_Text_ThomasIntro, SSAnne_1F_Room7_Text_ThomasDefeat
+ msgbox SSAnne_1F_Room7_Text_ThomasPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SSAnne_1F_Room7_Text_ThomasIntro::
+ .string "I am but a solitary traveler…\p"
+ .string "My sole companions and friends are\n"
+ .string "POKéMON I caught on my journeys…$"
+
+SSAnne_1F_Room7_Text_ThomasDefeat::
+ .string "My, my friends…$"
+
+SSAnne_1F_Room7_Text_ThomasPostBattle::
+ .string "You should be nice to friends!$"
+
diff --git a/data/maps/SSAnne_2F_Corridor_Frlg/map.json b/data/maps/SSAnne_2F_Corridor_Frlg/map.json
new file mode 100644
index 000000000000..f46a7b2fe37d
--- /dev/null
+++ b/data/maps/SSAnne_2F_Corridor_Frlg/map.json
@@ -0,0 +1,146 @@
+{
+ "id": "MAP_SSANNE_2F_CORRIDOR",
+ "name": "SSAnne_2F_Corridor_Frlg",
+ "layout": "LAYOUT_SSANNE_2F_CORRIDOR",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "local_id": "LOCALID_SS_ANNE_RIVAL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLUE",
+ "x": 30,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_SS_ANNE_RIVAL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 2,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_2F_Corridor_EventScript_Sailor",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_1F_CORRIDOR",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 3,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_3F_CORRIDOR",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 30,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_CAPTAINS_OFFICE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 6,
+ "y": 10,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_2F_ROOM1",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 10,
+ "y": 10,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_2F_ROOM2",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 14,
+ "y": 10,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_2F_ROOM3",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 18,
+ "y": 10,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_2F_ROOM4",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 22,
+ "y": 10,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_2F_ROOM5",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 26,
+ "y": 10,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_2F_ROOM6",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 30,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_S_S_ANNE_2F_CORRIDOR",
+ "var_value": "0",
+ "script": "SSAnne_2F_Corridor_EventScript_RivalTriggerLeft"
+ },
+ {
+ "type": "trigger",
+ "x": 31,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_S_S_ANNE_2F_CORRIDOR",
+ "var_value": "0",
+ "script": "SSAnne_2F_Corridor_EventScript_RivalTriggerMid"
+ },
+ {
+ "type": "trigger",
+ "x": 32,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_S_S_ANNE_2F_CORRIDOR",
+ "var_value": "0",
+ "script": "SSAnne_2F_Corridor_EventScript_RivalTriggerRight"
+ }
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/SSAnne_2F_Corridor_Frlg/scripts.inc b/data/maps/SSAnne_2F_Corridor_Frlg/scripts.inc
new file mode 100644
index 000000000000..ba17c89a2fbc
--- /dev/null
+++ b/data/maps/SSAnne_2F_Corridor_Frlg/scripts.inc
@@ -0,0 +1,207 @@
+SSAnne_2F_Corridor_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_2F_Corridor_EventScript_RivalTriggerLeft::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto SSAnne_2F_Corridor_EventScript_RivalTrigger
+ end
+
+SSAnne_2F_Corridor_EventScript_RivalTriggerMid::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto SSAnne_2F_Corridor_EventScript_RivalTrigger
+ end
+
+SSAnne_2F_Corridor_EventScript_RivalTriggerRight::
+ lockall
+ setvar VAR_TEMP_1, 2
+ goto SSAnne_2F_Corridor_EventScript_RivalTrigger
+ end
+
+SSAnne_2F_Corridor_EventScript_RivalTrigger::
+ textcolor NPC_TEXT_COLOR_MALE
+ playse SE_EXIT
+ delay 5
+ playbgm MUS_RG_ENCOUNTER_RIVAL, 0
+ addobject LOCALID_SS_ANNE_RIVAL
+ delay 10
+ applymovement LOCALID_SS_ANNE_RIVAL, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ delay 20
+ call_if_eq VAR_TEMP_1, 0, SSAnne_2F_Corridor_EventScript_RivalApproachLeft
+ call_if_eq VAR_TEMP_1, 1, SSAnne_2F_Corridor_EventScript_RivalApproachMid
+ call_if_eq VAR_TEMP_1, 2, SSAnne_2F_Corridor_EventScript_RivalApproachRight
+ msgbox SSAnne_2F_Corridor_Text_RivalIntro
+ setvar VAR_LAST_TALKED, LOCALID_SS_ANNE_RIVAL
+ call_if_eq VAR_STARTER_MON, 2, SSAnne_2F_Corridor_EventScript_RivalSquirtle
+ call_if_eq VAR_STARTER_MON, 1, SSAnne_2F_Corridor_EventScript_RivalBulbasaur
+ call_if_eq VAR_STARTER_MON, 0, SSAnne_2F_Corridor_EventScript_RivalCharmander
+ msgbox SSAnne_2F_Corridor_Text_RivalPostBattle
+ closemessage
+ delay 10
+ playbgm MUS_RG_RIVAL_EXIT, 0
+ call_if_eq VAR_TEMP_1, 0, SSAnne_2F_Corridor_EventScript_RivalExitLeft
+ call_if_eq VAR_TEMP_1, 1, SSAnne_2F_Corridor_EventScript_RivalExitMid
+ call_if_eq VAR_TEMP_1, 2, SSAnne_2F_Corridor_EventScript_RivalExitRight
+ fadedefaultbgm
+ removeobject LOCALID_SS_ANNE_RIVAL
+ setvar VAR_MAP_SCENE_S_S_ANNE_2F_CORRIDOR, 1
+ releaseall
+ end
+
+SSAnne_2F_Corridor_EventScript_RivalApproachLeft::
+ applymovement LOCALID_SS_ANNE_RIVAL, SSAnne_2F_Corridor_Movement_RivalApproachLeft
+ waitmovement 0
+ return
+
+SSAnne_2F_Corridor_EventScript_RivalApproachMid::
+ applymovement LOCALID_SS_ANNE_RIVAL, SSAnne_2F_Corridor_Movement_RivalApproachMid
+ applymovement LOCALID_PLAYER, SSAnne_2F_Corridor_Movement_PlayerFaceRivalMid
+ waitmovement 0
+ return
+
+SSAnne_2F_Corridor_EventScript_RivalApproachRight::
+ applymovement LOCALID_PLAYER, SSAnne_2F_Corridor_Movement_PlayerFaceRivalRight
+ applymovement LOCALID_SS_ANNE_RIVAL, SSAnne_2F_Corridor_Movement_RivalApproachRight
+ waitmovement 0
+ return
+
+SSAnne_2F_Corridor_EventScript_RivalSquirtle::
+ trainerbattle_no_intro TRAINER_RIVAL_SS_ANNE_SQUIRTLE, SSAnne_2F_Corridor_Text_RivalDefeat
+ return
+
+SSAnne_2F_Corridor_EventScript_RivalBulbasaur::
+ trainerbattle_no_intro TRAINER_RIVAL_SS_ANNE_BULBASAUR, SSAnne_2F_Corridor_Text_RivalDefeat
+ return
+
+SSAnne_2F_Corridor_EventScript_RivalCharmander::
+ trainerbattle_no_intro TRAINER_RIVAL_SS_ANNE_CHARMANDER, SSAnne_2F_Corridor_Text_RivalDefeat
+ return
+
+SSAnne_2F_Corridor_EventScript_RivalExitLeft::
+ applymovement LOCALID_SS_ANNE_RIVAL, SSAnne_2F_Corridor_Movement_RivalExitLeft
+ waitmovement 0
+ return
+
+SSAnne_2F_Corridor_EventScript_RivalExitMid::
+ applymovement LOCALID_SS_ANNE_RIVAL, SSAnne_2F_Corridor_Movement_RivalExitMid
+ waitmovement 0
+ return
+
+SSAnne_2F_Corridor_EventScript_RivalExitRight::
+ applymovement LOCALID_SS_ANNE_RIVAL, SSAnne_2F_Corridor_Movement_RivalExitRight
+ waitmovement 0
+ return
+
+SSAnne_2F_Corridor_Movement_PlayerFaceRivalRight::
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ walk_in_place_faster_left
+ step_end
+
+SSAnne_2F_Corridor_Movement_PlayerFaceRivalMid::
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ walk_in_place_faster_left
+ step_end
+
+SSAnne_2F_Corridor_Movement_RivalApproachLeft::
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+SSAnne_2F_Corridor_Movement_RivalApproachMid::
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_in_place_faster_right
+ step_end
+
+SSAnne_2F_Corridor_Movement_RivalApproachRight::
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_right
+ delay_4
+ step_end
+
+SSAnne_2F_Corridor_Movement_RivalExitLeft::
+ walk_right
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+SSAnne_2F_Corridor_Movement_RivalExitMid::
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+SSAnne_2F_Corridor_Movement_RivalExitRight::
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+SSAnne_2F_Corridor_EventScript_Sailor::
+ msgbox SSAnne_2F_Corridor_Text_ThisShipIsLuxuryLiner, MSGBOX_NPC
+ end
+
+SSAnne_2F_Corridor_Text_ThisShipIsLuxuryLiner::
+ .string "This ship, she is a luxury liner for\n"
+ .string "TRAINERS of the world!\p"
+ .string "At every port, we hold parties with\n"
+ .string "invited TRAINERS.$"
+
+SSAnne_2F_Corridor_Text_RivalIntro::
+ .string "{RIVAL}: Bonjour!\n"
+ .string "{PLAYER}!\p"
+ .string "Imagine seeing you here!\n"
+ .string "{PLAYER}, were you really invited?\p"
+ .string "So how's your POKéDEX coming?\p"
+ .string "I already caught 40 kinds, pal.\n"
+ .string "Different kinds are everywhere.\p"
+ .string "Crawl around in grassy areas, and\n"
+ .string "look hard for them.$"
+
+SSAnne_2F_Corridor_Text_RivalDefeat::
+ .string "Humph!\p"
+ .string "At least you're raising your\n"
+ .string "POKéMON!$"
+
+SSAnne_2F_Corridor_Text_RivalVictory::
+ .string "{PLAYER}..!\n"
+ .string "ふなよい してるのか!\p"
+ .string "もっと からだ\n"
+ .string "きたえた ほうが いいぜ!$"
+
+SSAnne_2F_Corridor_Text_RivalPostBattle::
+ .string "{RIVAL}: I heard there was a CUT\n"
+ .string "master on board.\p"
+ .string "But he was just a seasick old man!\p"
+ .string "CUT itself is really useful.\n"
+ .string "Yup, it'll be handy.\p"
+ .string "You should go see him, too.\n"
+ .string "Smell ya!$"
+
diff --git a/data/maps/SSAnne_2F_Room1_Frlg/map.json b/data/maps/SSAnne_2F_Room1_Frlg/map.json
new file mode 100644
index 000000000000..47459f44e49d
--- /dev/null
+++ b/data/maps/SSAnne_2F_Room1_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_SSANNE_2F_ROOM1",
+ "name": "SSAnne_2F_Room1_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM2",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 1,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_2F_Room1_EventScript_Gentleman",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_2F_CORRIDOR",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_2F_Room1_Frlg/scripts.inc b/data/maps/SSAnne_2F_Room1_Frlg/scripts.inc
new file mode 100644
index 000000000000..9ac61152587e
--- /dev/null
+++ b/data/maps/SSAnne_2F_Room1_Frlg/scripts.inc
@@ -0,0 +1,22 @@
+SSAnne_2F_Room1_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_2F_Room1_EventScript_Gentleman::
+ lock
+ faceplayer
+ message SSAnne_2F_Room1_Text_SleepingMonLookedLikeThis
+ waitmessage
+ setvar VAR_0x8004, SPECIES_SNORLAX
+ special SetSeenMon
+ showmonpic SPECIES_SNORLAX, 10, 3
+ waitbuttonpress
+ hidemonpic
+ release
+ end
+
+SSAnne_2F_Room1_Text_SleepingMonLookedLikeThis::
+ .string "I've journeyed far and wide, but in\n"
+ .string "all my travels I've never seen\l"
+ .string "any POKéMON sleep like this one!\p"
+ .string "It was something like this!$"
+
diff --git a/data/maps/SSAnne_2F_Room2_Frlg/map.json b/data/maps/SSAnne_2F_Room2_Frlg/map.json
new file mode 100644
index 000000000000..b4545078ff87
--- /dev/null
+++ b/data/maps/SSAnne_2F_Room2_Frlg/map.json
@@ -0,0 +1,73 @@
+{
+ "id": "MAP_SSANNE_2F_ROOM2",
+ "name": "SSAnne_2F_Room2_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM2",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 5,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SSAnne_2F_Room2_EventScript_Dale",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 1,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SSAnne_2F_Room2_EventScript_Brooks",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 3,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_2F_Room2_EventScript_ItemStardust",
+ "flag": "FLAG_HIDE_SSANNE_2F_ROOM2_STARDUST"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_2F_CORRIDOR",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_2F_Room2_Frlg/scripts.inc b/data/maps/SSAnne_2F_Room2_Frlg/scripts.inc
new file mode 100644
index 000000000000..70ae461db2c6
--- /dev/null
+++ b/data/maps/SSAnne_2F_Room2_Frlg/scripts.inc
@@ -0,0 +1,36 @@
+SSAnne_2F_Room2_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_2F_Room2_EventScript_Dale::
+ trainerbattle_single TRAINER_FISHERMAN_DALE, SSAnne_2F_Room2_Text_DaleIntro, SSAnne_2F_Room2_Text_DaleDefeat
+ msgbox SSAnne_2F_Room2_Text_DalePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SSAnne_2F_Room2_EventScript_Brooks::
+ trainerbattle_single TRAINER_GENTLEMAN_BROOKS, SSAnne_2F_Room2_Text_BrooksIntro, SSAnne_2F_Room2_Text_BrooksDefeat
+ msgbox SSAnne_2F_Room2_Text_BrooksPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SSAnne_2F_Room2_Text_BrooksIntro::
+ .string "Competing against the young keeps\n"
+ .string "me youthful.$"
+
+SSAnne_2F_Room2_Text_BrooksDefeat::
+ .string "Good match!\n"
+ .string "Ah, I feel young again!$"
+
+SSAnne_2F_Room2_Text_BrooksPostBattle::
+ .string "Fifteen years ago, I would\n"
+ .string "have won!$"
+
+SSAnne_2F_Room2_Text_DaleIntro::
+ .string "Check out what I fished up!$"
+
+SSAnne_2F_Room2_Text_DaleDefeat::
+ .string "I'm all out!$"
+
+SSAnne_2F_Room2_Text_DalePostBattle::
+ .string "Party?\p"
+ .string "The cruise ship's party should be\n"
+ .string "over by now.$"
+
diff --git a/data/maps/SSAnne_2F_Room3_Frlg/map.json b/data/maps/SSAnne_2F_Room3_Frlg/map.json
new file mode 100644
index 000000000000..1b670ecc753e
--- /dev/null
+++ b/data/maps/SSAnne_2F_Room3_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_SSANNE_2F_ROOM3",
+ "name": "SSAnne_2F_Room3_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM2",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_2F_Room3_EventScript_Gentleman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 3,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_2F_Room3_EventScript_OldMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_2F_CORRIDOR",
+ "dest_warp_id": "5"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_2F_Room3_Frlg/scripts.inc b/data/maps/SSAnne_2F_Room3_Frlg/scripts.inc
new file mode 100644
index 000000000000..95403cdd1b4d
--- /dev/null
+++ b/data/maps/SSAnne_2F_Room3_Frlg/scripts.inc
@@ -0,0 +1,23 @@
+SSAnne_2F_Room3_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_2F_Room3_EventScript_Gentleman::
+ msgbox SSAnne_2F_Room3_Text_SeenMonsFerryPeople, MSGBOX_NPC
+ end
+
+SSAnne_2F_Room3_EventScript_OldMan::
+ msgbox SSAnne_2F_Room3_Text_SomeTreesCanBeCutDown, MSGBOX_NPC
+ end
+
+SSAnne_2F_Room3_Text_SeenMonsFerryPeople::
+ .string "Ah, yes, I have seen some POKéMON\n"
+ .string "ferry people across the water!$"
+
+SSAnne_2F_Room3_Text_SomeTreesCanBeCutDown::
+ .string "Small trees can be chopped down\n"
+ .string "using the move CUT.\p"
+ .string "But remember this!\n"
+ .string "CUT is an HM technique.\p"
+ .string "Once learned, it is not so easily\n"
+ .string "discarded.$"
+
diff --git a/data/maps/SSAnne_2F_Room4_Frlg/map.json b/data/maps/SSAnne_2F_Room4_Frlg/map.json
new file mode 100644
index 000000000000..76babe94c6a7
--- /dev/null
+++ b/data/maps/SSAnne_2F_Room4_Frlg/map.json
@@ -0,0 +1,73 @@
+{
+ "id": "MAP_SSANNE_2F_ROOM4",
+ "name": "SSAnne_2F_Room4_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM2",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 0,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SSAnne_2F_Room4_EventScript_Lamar",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 3,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SSAnne_2F_Room4_EventScript_Dawn",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 2,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_2F_Room4_EventScript_ItemXAttack",
+ "flag": "FLAG_HIDE_SSANNE_2F_ROOM4_X_ATTACK"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_2F_CORRIDOR",
+ "dest_warp_id": "6"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_2F_Room4_Frlg/scripts.inc b/data/maps/SSAnne_2F_Room4_Frlg/scripts.inc
new file mode 100644
index 000000000000..34cc526bf95c
--- /dev/null
+++ b/data/maps/SSAnne_2F_Room4_Frlg/scripts.inc
@@ -0,0 +1,35 @@
+SSAnne_2F_Room4_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_2F_Room4_EventScript_Lamar::
+ trainerbattle_single TRAINER_GENTLEMAN_LAMAR, SSAnne_2F_Room4_Text_LamarIntro, SSAnne_2F_Room4_Text_LamarDefeat
+ msgbox SSAnne_2F_Room4_Text_LamarPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SSAnne_2F_Room4_EventScript_Dawn::
+ trainerbattle_single TRAINER_LASS_DAWN, SSAnne_2F_Room4_Text_DawnIntro, SSAnne_2F_Room4_Text_DawnDefeat
+ msgbox SSAnne_2F_Room4_Text_DawnPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SSAnne_2F_Room4_Text_LamarIntro::
+ .string "Which do you find more worthy,\n"
+ .string "a strong or a rare POKéMON?$"
+
+SSAnne_2F_Room4_Text_LamarDefeat::
+ .string "I must salute you!$"
+
+SSAnne_2F_Room4_Text_LamarPostBattle::
+ .string "Personally, I prefer strong and\n"
+ .string "rare POKéMON.$"
+
+SSAnne_2F_Room4_Text_DawnIntro::
+ .string "I don't believe I saw you at the\n"
+ .string "party?$"
+
+SSAnne_2F_Room4_Text_DawnDefeat::
+ .string "Take it easy!$"
+
+SSAnne_2F_Room4_Text_DawnPostBattle::
+ .string "Oh, I adore your strong POKéMON!\n"
+ .string "Oh, how I envy you for them!$"
+
diff --git a/data/maps/SSAnne_2F_Room5_Frlg/map.json b/data/maps/SSAnne_2F_Room5_Frlg/map.json
new file mode 100644
index 000000000000..9ce11044e893
--- /dev/null
+++ b/data/maps/SSAnne_2F_Room5_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_SSANNE_2F_ROOM5",
+ "name": "SSAnne_2F_Room5_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM2",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 5,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_2F_Room5_EventScript_Gentleman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_BOY_FRLG",
+ "x": 3,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_2F_Room5_EventScript_LittleBoy",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_2F_CORRIDOR",
+ "dest_warp_id": "7"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_2F_Room5_Frlg/scripts.inc b/data/maps/SSAnne_2F_Room5_Frlg/scripts.inc
new file mode 100644
index 000000000000..88b1174aa206
--- /dev/null
+++ b/data/maps/SSAnne_2F_Room5_Frlg/scripts.inc
@@ -0,0 +1,22 @@
+SSAnne_2F_Room5_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_2F_Room5_EventScript_Gentleman::
+ msgbox SSAnne_2F_Room5_Text_HaveYouGoneToSafariZone, MSGBOX_NPC
+ end
+
+SSAnne_2F_Room5_EventScript_LittleBoy::
+ msgbox SSAnne_2F_Room5_Text_WeThinkSafariZoneIsAwesome, MSGBOX_NPC
+ end
+
+SSAnne_2F_Room5_Text_HaveYouGoneToSafariZone::
+ .string "Have you gone to the SAFARI ZONE\n"
+ .string "in FUCHSIA CITY?\p"
+ .string "There are many kinds of rare\n"
+ .string "POKéMON.$"
+
+SSAnne_2F_Room5_Text_WeThinkSafariZoneIsAwesome::
+ .string "Me and my daddy think the SAFARI\n"
+ .string "ZONE is awesome!\l"
+ .string "I wish we could go there again.$"
+
diff --git a/data/maps/SSAnne_2F_Room6_Frlg/map.json b/data/maps/SSAnne_2F_Room6_Frlg/map.json
new file mode 100644
index 000000000000..527502770c17
--- /dev/null
+++ b/data/maps/SSAnne_2F_Room6_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_SSANNE_2F_ROOM6",
+ "name": "SSAnne_2F_Room6_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM2",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_3_FRLG",
+ "x": 1,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_2F_Room6_EventScript_Woman2",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_2F_Room6_EventScript_Woman1",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_2F_CORRIDOR",
+ "dest_warp_id": "8"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_2F_Room6_Frlg/scripts.inc b/data/maps/SSAnne_2F_Room6_Frlg/scripts.inc
new file mode 100644
index 000000000000..24af679789fe
--- /dev/null
+++ b/data/maps/SSAnne_2F_Room6_Frlg/scripts.inc
@@ -0,0 +1,18 @@
+SSAnne_2F_Room6_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_2F_Room6_EventScript_Woman1::
+ msgbox SSAnne_2F_Room6_Text_CaptainIsAwfullySick, MSGBOX_NPC
+ end
+
+SSAnne_2F_Room6_EventScript_Woman2::
+ msgbox SSAnne_2F_Room6_Text_ManyPeopleGetSeasick, MSGBOX_NPC
+ end
+
+SSAnne_2F_Room6_Text_CaptainIsAwfullySick::
+ .string "The CAPTAIN said he's awfully sick.\n"
+ .string "He was all pale.$"
+
+SSAnne_2F_Room6_Text_ManyPeopleGetSeasick::
+ .string "I hear many people get seasick.$"
+
diff --git a/data/maps/SSAnne_3F_Corridor_Frlg/map.json b/data/maps/SSAnne_3F_Corridor_Frlg/map.json
new file mode 100644
index 000000000000..e6a9cc7246e5
--- /dev/null
+++ b/data/maps/SSAnne_3F_Corridor_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_SSANNE_3F_CORRIDOR",
+ "name": "SSAnne_3F_Corridor_Frlg",
+ "layout": "LAYOUT_SSANNE_3F_CORRIDOR",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 10,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 3,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_3F_Corridor_EventScript_Sailor",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_DECK",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 18,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_2F_CORRIDOR",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 0,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_DECK",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_3F_Corridor_Frlg/scripts.inc b/data/maps/SSAnne_3F_Corridor_Frlg/scripts.inc
new file mode 100644
index 000000000000..79b34459e4c6
--- /dev/null
+++ b/data/maps/SSAnne_3F_Corridor_Frlg/scripts.inc
@@ -0,0 +1,13 @@
+SSAnne_3F_Corridor_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_3F_Corridor_EventScript_Sailor::
+ msgbox SSAnne_3F_Corridor_Text_CaptainTeachesCutToMons, MSGBOX_NPC
+ end
+
+SSAnne_3F_Corridor_Text_CaptainTeachesCutToMons::
+ .string "Our CAPTAIN is a sword master.\n"
+ .string "He's awesome at using CUT.\p"
+ .string "They say he even teaches CUT\n"
+ .string "to POKéMON!$"
+
diff --git a/data/maps/SSAnne_B1F_Corridor_Frlg/map.json b/data/maps/SSAnne_B1F_Corridor_Frlg/map.json
new file mode 100644
index 000000000000..df763d38e2fa
--- /dev/null
+++ b/data/maps/SSAnne_B1F_Corridor_Frlg/map.json
@@ -0,0 +1,80 @@
+{
+ "id": "MAP_SSANNE_B1F_CORRIDOR",
+ "name": "SSAnne_B1F_Corridor_Frlg",
+ "layout": "LAYOUT_SSANNE_B1F_CORRIDOR",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 19,
+ "y": 3,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_1F_CORRIDOR",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 2,
+ "y": 2,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_B1F_ROOM1",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 6,
+ "y": 2,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_B1F_ROOM2",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 10,
+ "y": 2,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_B1F_ROOM3",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 14,
+ "y": 2,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_B1F_ROOM4",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 18,
+ "y": 2,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_B1F_ROOM5",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 21,
+ "y": 5,
+ "elevation": 3,
+ "item": "ITEM_HYPER_POTION",
+ "flag": "FLAG_HIDDEN_ITEM_SSANNE_B1F_CORRIDOR_HYPER_POTION",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/SSAnne_B1F_Corridor_Frlg/scripts.inc b/data/maps/SSAnne_B1F_Corridor_Frlg/scripts.inc
new file mode 100644
index 000000000000..7bc760a16367
--- /dev/null
+++ b/data/maps/SSAnne_B1F_Corridor_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+SSAnne_B1F_Corridor_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/SSAnne_B1F_Room1_Frlg/map.json b/data/maps/SSAnne_B1F_Room1_Frlg/map.json
new file mode 100644
index 000000000000..9303779805c9
--- /dev/null
+++ b/data/maps/SSAnne_B1F_Room1_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_SSANNE_B1F_ROOM1",
+ "name": "SSAnne_B1F_Room1_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM2",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 5,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SSAnne_B1F_Room1_EventScript_Barny",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 3,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SSAnne_B1F_Room1_EventScript_Phillip",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_B1F_CORRIDOR",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_B1F_Room1_Frlg/scripts.inc b/data/maps/SSAnne_B1F_Room1_Frlg/scripts.inc
new file mode 100644
index 000000000000..1039dea99ea1
--- /dev/null
+++ b/data/maps/SSAnne_B1F_Room1_Frlg/scripts.inc
@@ -0,0 +1,39 @@
+SSAnne_B1F_Room1_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_B1F_Room1_EventScript_Barny::
+ trainerbattle_single TRAINER_FISHERMAN_BARNY, SSAnne_B1F_Room1_Text_BarnyIntro, SSAnne_B1F_Room1_Text_BarnyDefeat
+ msgbox SSAnne_B1F_Room1_Text_BarnyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SSAnne_B1F_Room1_EventScript_Phillip::
+ trainerbattle_single TRAINER_SAILOR_PHILLIP, SSAnne_B1F_Room1_Text_PhillipIntro, SSAnne_B1F_Room1_Text_PhillipDefeat
+ msgbox SSAnne_B1F_Room1_Text_PhillipPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SSAnne_B1F_Room1_Text_PhillipIntro::
+ .string "Matey, you're walking the plank if\n"
+ .string "you lose!$"
+
+SSAnne_B1F_Room1_Text_PhillipDefeat::
+ .string "Argh!\n"
+ .string "Beaten by a kid!$"
+
+SSAnne_B1F_Room1_Text_PhillipPostBattle::
+ .string "When we're out at sea, jellyfish\n"
+ .string "POKéMON sometimes drift by.$"
+
+SSAnne_B1F_Room1_Text_BarnyIntro::
+ .string "Hello, stranger!\p"
+ .string "I can't tell if you're from the seas\n"
+ .string "or mountains, but stop and chat.\p"
+ .string "All my POKéMON are from the sea.$"
+
+SSAnne_B1F_Room1_Text_BarnyDefeat::
+ .string "Darn!\n"
+ .string "I let that one get away!$"
+
+SSAnne_B1F_Room1_Text_BarnyPostBattle::
+ .string "I was going to make you my\n"
+ .string "assistant, too!$"
+
diff --git a/data/maps/SSAnne_B1F_Room2_Frlg/map.json b/data/maps/SSAnne_B1F_Room2_Frlg/map.json
new file mode 100644
index 000000000000..a02b5e236ae2
--- /dev/null
+++ b/data/maps/SSAnne_B1F_Room2_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_SSANNE_B1F_ROOM2",
+ "name": "SSAnne_B1F_Room2_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM2",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 3,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SSAnne_B1F_Room2_EventScript_Huey",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 3,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_B1F_Room2_EventScript_ItemTM44",
+ "flag": "FLAG_HIDE_SSANNE_B1F_ROOM2_TM44"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_B1F_CORRIDOR",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_B1F_Room2_Frlg/scripts.inc b/data/maps/SSAnne_B1F_Room2_Frlg/scripts.inc
new file mode 100644
index 000000000000..577799e08549
--- /dev/null
+++ b/data/maps/SSAnne_B1F_Room2_Frlg/scripts.inc
@@ -0,0 +1,18 @@
+SSAnne_B1F_Room2_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_B1F_Room2_EventScript_Huey::
+ trainerbattle_single TRAINER_SAILOR_HUEY, SSAnne_B1F_Room2_Text_HueyIntro, SSAnne_B1F_Room2_Text_HueyDefeat
+ msgbox SSAnne_B1F_Room2_Text_HueyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SSAnne_B1F_Room2_Text_HueyIntro::
+ .string "Even us sailors have POKéMON, too!$"
+
+SSAnne_B1F_Room2_Text_HueyDefeat::
+ .string "Okay, you're not bad.$"
+
+SSAnne_B1F_Room2_Text_HueyPostBattle::
+ .string "We caught all our POKéMON while\n"
+ .string "we were out at sea.$"
+
diff --git a/data/maps/SSAnne_B1F_Room3_Frlg/map.json b/data/maps/SSAnne_B1F_Room3_Frlg/map.json
new file mode 100644
index 000000000000..942c7cb3662a
--- /dev/null
+++ b/data/maps/SSAnne_B1F_Room3_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_SSANNE_B1F_ROOM3",
+ "name": "SSAnne_B1F_Room3_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM2",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SSAnne_B1F_Room3_EventScript_Dylan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 1,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_B1F_Room3_EventScript_ItemEther",
+ "flag": "FLAG_HIDE_SSANNE_B1F_ROOM3_ETHER"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_B1F_CORRIDOR",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_B1F_Room3_Frlg/scripts.inc b/data/maps/SSAnne_B1F_Room3_Frlg/scripts.inc
new file mode 100644
index 000000000000..4fe08fa5fbe1
--- /dev/null
+++ b/data/maps/SSAnne_B1F_Room3_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+SSAnne_B1F_Room3_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_B1F_Room3_EventScript_Dylan::
+ trainerbattle_single TRAINER_SAILOR_DYLAN, SSAnne_B1F_Room3_Text_DylanIntro, SSAnne_B1F_Room3_Text_DylanDefeat
+ msgbox SSAnne_B1F_Room3_Text_DylanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SSAnne_B1F_Room3_Text_DylanIntro::
+ .string "I like feisty kids like you!$"
+
+SSAnne_B1F_Room3_Text_DylanDefeat::
+ .string "Argh!\n"
+ .string "Lost it!$"
+
+SSAnne_B1F_Room3_Text_DylanPostBattle::
+ .string "Sea POKéMON live in deep water.\n"
+ .string "You'll need a ROD to fish them up!$"
+
diff --git a/data/maps/SSAnne_B1F_Room4_Frlg/map.json b/data/maps/SSAnne_B1F_Room4_Frlg/map.json
new file mode 100644
index 000000000000..304395c92adb
--- /dev/null
+++ b/data/maps/SSAnne_B1F_Room4_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_SSANNE_B1F_ROOM4",
+ "name": "SSAnne_B1F_Room4_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM2",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 3,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SSAnne_B1F_Room4_EventScript_Duncan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 2,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SSAnne_B1F_Room4_EventScript_Leonard",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_B1F_CORRIDOR",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_B1F_Room4_Frlg/scripts.inc b/data/maps/SSAnne_B1F_Room4_Frlg/scripts.inc
new file mode 100644
index 000000000000..0f03863ff39c
--- /dev/null
+++ b/data/maps/SSAnne_B1F_Room4_Frlg/scripts.inc
@@ -0,0 +1,36 @@
+SSAnne_B1F_Room4_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_B1F_Room4_EventScript_Leonard::
+ trainerbattle_single TRAINER_SAILOR_LEONARD, SSAnne_B1F_Room4_Text_LeonardIntro, SSAnne_B1F_Room4_Text_LeonardDefeat
+ msgbox SSAnne_B1F_Room4_Text_LeonardPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SSAnne_B1F_Room4_EventScript_Duncan::
+ trainerbattle_single TRAINER_SAILOR_DUNCAN, SSAnne_B1F_Room4_Text_DuncanIntro, SSAnne_B1F_Room4_Text_DuncanDefeat
+ msgbox SSAnne_B1F_Room4_Text_DuncanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SSAnne_B1F_Room4_Text_LeonardIntro::
+ .string "You know what they say about\n"
+ .string "sailors and battling!$"
+
+SSAnne_B1F_Room4_Text_LeonardDefeat::
+ .string "Right!\n"
+ .string "Good battle, mate!$"
+
+SSAnne_B1F_Room4_Text_LeonardPostBattle::
+ .string "Hahaha!\n"
+ .string "Want to be a sailor, mate?$"
+
+SSAnne_B1F_Room4_Text_DuncanIntro::
+ .string "Come on, then!\n"
+ .string "My sailor's pride is at stake!$"
+
+SSAnne_B1F_Room4_Text_DuncanDefeat::
+ .string "Your spirit sank me!$"
+
+SSAnne_B1F_Room4_Text_DuncanPostBattle::
+ .string "Did you see the FISHING GURU in\n"
+ .string "VERMILION CITY?$"
+
diff --git a/data/maps/SSAnne_B1F_Room5_Frlg/map.json b/data/maps/SSAnne_B1F_Room5_Frlg/map.json
new file mode 100644
index 000000000000..0d72ea4daf78
--- /dev/null
+++ b/data/maps/SSAnne_B1F_Room5_Frlg/map.json
@@ -0,0 +1,73 @@
+{
+ "id": "MAP_SSANNE_B1F_ROOM5",
+ "name": "SSAnne_B1F_Room5_Frlg",
+ "layout": "LAYOUT_SSANNE_ROOM2",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 3,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_B1F_Room5_EventScript_Boy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MACHOKE",
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_B1F_Room5_EventScript_Machoke",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 2,
+ "y": 2,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_B1F_Room5_EventScript_ItemSuperPotion",
+ "flag": "FLAG_HIDE_SSANNE_B1F_ROOM5_SUPER_POTION"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_B1F_CORRIDOR",
+ "dest_warp_id": "5"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_B1F_Room5_Frlg/scripts.inc b/data/maps/SSAnne_B1F_Room5_Frlg/scripts.inc
new file mode 100644
index 000000000000..815bb0e0b108
--- /dev/null
+++ b/data/maps/SSAnne_B1F_Room5_Frlg/scripts.inc
@@ -0,0 +1,25 @@
+SSAnne_B1F_Room5_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_B1F_Room5_EventScript_Boy::
+ msgbox SSAnne_B1F_Room5_Text_MachokeHasStrengthToMoveRocks, MSGBOX_NPC
+ end
+
+SSAnne_B1F_Room5_EventScript_Machoke::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_MACHOKE, CRY_MODE_NORMAL
+ msgbox SSAnne_B1F_Room5_Text_Machoke
+ waitmoncry
+ release
+ end
+
+SSAnne_B1F_Room5_Text_MachokeHasStrengthToMoveRocks::
+ .string "My buddy MACHOKE is super strong!\p"
+ .string "He has enough STRENGTH to move\n"
+ .string "big rocks!$"
+
+SSAnne_B1F_Room5_Text_Machoke::
+ .string "MACHOKE: Gwoh! Goggoh!$"
+
diff --git a/data/maps/SSAnne_CaptainsOffice_Frlg/map.json b/data/maps/SSAnne_CaptainsOffice_Frlg/map.json
new file mode 100644
index 000000000000..a41ca64400b4
--- /dev/null
+++ b/data/maps/SSAnne_CaptainsOffice_Frlg/map.json
@@ -0,0 +1,73 @@
+{
+ "id": "MAP_SSANNE_CAPTAINS_OFFICE",
+ "name": "SSAnne_CaptainsOffice_Frlg",
+ "layout": "LAYOUT_SSANNE_CAPTAINS_OFFICE",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "local_id": "LOCALID_SS_ANNE_CAPTAIN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CAPTAIN",
+ "x": 5,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_CaptainsOffice_EventScript_Captain",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_2F_CORRIDOR",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SSAnne_CaptainsOffice_EventScript_Book"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 3,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SSAnne_CaptainsOffice_EventScript_TrashCan"
+ },
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 3,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SSAnne_CaptainsOffice_EventScript_Book"
+ }
+ ]
+}
diff --git a/data/maps/SSAnne_CaptainsOffice_Frlg/scripts.inc b/data/maps/SSAnne_CaptainsOffice_Frlg/scripts.inc
new file mode 100644
index 000000000000..4369c0a8292e
--- /dev/null
+++ b/data/maps/SSAnne_CaptainsOffice_Frlg/scripts.inc
@@ -0,0 +1,101 @@
+SSAnne_CaptainsOffice_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_CaptainsOffice_EventScript_Captain::
+ lock
+ goto_if_set FLAG_GOT_HM01, SSAnne_CaptainsOffice_EventScript_AlreadyGotCut
+ msgbox SSAnne_CaptainsOffice_Text_CaptainIFeelSeasick
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ message SSAnne_CaptainsOffice_Text_RubbedCaptainsBack
+ waitmessage
+ playfanfare MUS_HEAL
+ waitfanfare
+ call EventScript_RestorePrevTextColor
+ delay 50
+ applymovement LOCALID_SS_ANNE_CAPTAIN, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox SSAnne_CaptainsOffice_Text_ThankYouHaveHMForCut
+ giveitem_msg SSAnne_CaptainsOffice_Text_ObtainedHM01FromCaptain, ITEM_HM01, 1, MUS_RG_OBTAIN_KEY_ITEM
+ msgbox SSAnne_CaptainsOffice_Text_ExplainCut
+ setflag FLAG_GOT_HM01
+ setvar VAR_MAP_SCENE_VERMILION_CITY, 1
+ release
+ end
+
+@ Unused
+SSAnne_CaptainsOffice_EventScript_NoRoomForCut::
+ msgbox SSAnne_CaptainsOffice_Text_YouHaveNoRoomForThis
+ closemessage
+ applymovement LOCALID_SS_ANNE_CAPTAIN, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+SSAnne_CaptainsOffice_EventScript_AlreadyGotCut::
+ applymovement LOCALID_SS_ANNE_CAPTAIN, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox SSAnne_CaptainsOffice_Text_SSAnneWillSetSailSoon
+ release
+ end
+
+SSAnne_CaptainsOffice_EventScript_TrashCan::
+ msgbox SSAnne_CaptainsOffice_Text_YuckShouldntHaveLooked, MSGBOX_SIGN
+ end
+
+SSAnne_CaptainsOffice_EventScript_Book::
+ msgbox SSAnne_CaptainsOffice_Text_HowToConquerSeasickness, MSGBOX_SIGN
+ end
+
+SSAnne_CaptainsOffice_Text_CaptainIFeelSeasick::
+ .string "CAPTAIN: Ooargh…\n"
+ .string "I feel hideous…\l"
+ .string "Urrp! Seasick…$"
+
+SSAnne_CaptainsOffice_Text_RubbedCaptainsBack::
+ .string "{PLAYER} rubbed the CAPTAIN's\n"
+ .string "back!\p"
+ .string "Rub-rub…\n"
+ .string "Rub-rub…$"
+
+SSAnne_CaptainsOffice_Text_ThankYouHaveHMForCut::
+ .string "CAPTAIN: Whew! Thank you!\n"
+ .string "I'm feeling much better now.\p"
+ .string "You want to see my hidden CUT\n"
+ .string "technique?\p"
+ .string "I could show you my prized CUT\n"
+ .string "technique if I weren't so ill…\p"
+ .string "I know! You can have this!\n"
+ .string "This HIDDEN MACHINE!\p"
+ .string "Teach CUT to your POKéMON, and\n"
+ .string "you can see it CUT anytime!$"
+
+SSAnne_CaptainsOffice_Text_ObtainedHM01FromCaptain::
+ .string "{PLAYER} obtained HM01\n"
+ .string "from the CAPTAIN!$"
+
+SSAnne_CaptainsOffice_Text_ExplainCut::
+ .string "Using CUT, you can chop down\n"
+ .string "small trees.\p"
+ .string "Why not try it with the trees\n"
+ .string "around VERMILION CITY?$"
+
+SSAnne_CaptainsOffice_Text_SSAnneWillSetSailSoon::
+ .string "CAPTAIN: …Whew!\p"
+ .string "Now that I'm not sick anymore,\n"
+ .string "I guess it's time.\p"
+ .string "The S.S. ANNE will set sail soon!\p"
+ .string "Farewell, until our return to\n"
+ .string "VERMILION CITY!$"
+
+SSAnne_CaptainsOffice_Text_YouHaveNoRoomForThis::
+ .string "Oh, no!\n"
+ .string "You have no room for this!$"
+
+SSAnne_CaptainsOffice_Text_YuckShouldntHaveLooked::
+ .string "Yuck!\n"
+ .string "Shouldn't have looked!$"
+
+SSAnne_CaptainsOffice_Text_HowToConquerSeasickness::
+ .string "How to Conquer Seasickness…\n"
+ .string "The CAPTAIN's reading this!$"
+
diff --git a/data/maps/SSAnne_Deck_Frlg/map.json b/data/maps/SSAnne_Deck_Frlg/map.json
new file mode 100644
index 000000000000..96ee918d5dc5
--- /dev/null
+++ b/data/maps/SSAnne_Deck_Frlg/map.json
@@ -0,0 +1,108 @@
+{
+ "id": "MAP_SSANNE_DECK",
+ "name": "SSAnne_Deck_Frlg",
+ "layout": "LAYOUT_SSANNE_DECK",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 12,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SSAnne_Deck_EventScript_Trevor",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 14,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_Deck_EventScript_BaldingMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 13,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_LEFT_AND_RIGHT",
+ "movement_range_x": 4,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_Deck_EventScript_Sailor",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 6,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SSAnne_Deck_EventScript_Edmond",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 11,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_Deck_EventScript_Youngster",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 16,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_3F_CORRIDOR",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 16,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_3F_CORRIDOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SSAnne_Deck_Frlg/scripts.inc b/data/maps/SSAnne_Deck_Frlg/scripts.inc
new file mode 100644
index 000000000000..9bef97aaf4e8
--- /dev/null
+++ b/data/maps/SSAnne_Deck_Frlg/scripts.inc
@@ -0,0 +1,60 @@
+SSAnne_Deck_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_Deck_EventScript_Youngster::
+ msgbox SSAnne_Deck_Text_ShipDepartingSoon, MSGBOX_NPC
+ end
+
+SSAnne_Deck_EventScript_BaldingMan::
+ msgbox SSAnne_Deck_Text_FeelSeasick, MSGBOX_NPC
+ end
+
+SSAnne_Deck_EventScript_Sailor::
+ msgbox SSAnne_Deck_Text_ScrubbingDecksHardWork, MSGBOX_NPC
+ end
+
+SSAnne_Deck_EventScript_Edmond::
+ trainerbattle_single TRAINER_SAILOR_EDMOND, SSAnne_Deck_Text_EdmondIntro, SSAnne_Deck_Text_EdmondDefeat
+ msgbox SSAnne_Deck_Text_EdmondPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SSAnne_Deck_EventScript_Trevor::
+ trainerbattle_single TRAINER_SAILOR_TREVOR, SSAnne_Deck_Text_TrevorIntro, SSAnne_Deck_Text_TrevorDefeat
+ msgbox SSAnne_Deck_Text_TrevorPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SSAnne_Deck_Text_ShipDepartingSoon::
+ .string "The party's over.\n"
+ .string "The ship will be departing soon.$"
+
+SSAnne_Deck_Text_ScrubbingDecksHardWork::
+ .string "Whew!\n"
+ .string "Scrubbing decks is hard work!$"
+
+SSAnne_Deck_Text_FeelSeasick::
+ .string "Urf… I feel ill…\p"
+ .string "I got seasick, so I stepped out to\n"
+ .string "get some air…$"
+
+SSAnne_Deck_Text_EdmondIntro::
+ .string "Hey, matey!\p"
+ .string "Let's do a little jig!$"
+
+SSAnne_Deck_Text_EdmondDefeat::
+ .string "You're impressive!$"
+
+SSAnne_Deck_Text_EdmondPostBattle::
+ .string "How many kinds of POKéMON do you\n"
+ .string "think there are in this big world?$"
+
+SSAnne_Deck_Text_TrevorIntro::
+ .string "Ahoy, there!\n"
+ .string "Are you seasick?$"
+
+SSAnne_Deck_Text_TrevorDefeat::
+ .string "I was just careless!$"
+
+SSAnne_Deck_Text_TrevorPostBattle::
+ .string "My pa said there are 100 kinds of\n"
+ .string "POKéMON. I think there are more.$"
+
diff --git a/data/maps/SSAnne_Exterior_Frlg/map.json b/data/maps/SSAnne_Exterior_Frlg/map.json
new file mode 100644
index 000000000000..59c99f191f8a
--- /dev/null
+++ b/data/maps/SSAnne_Exterior_Frlg/map.json
@@ -0,0 +1,87 @@
+{
+ "id": "MAP_SSANNE_EXTERIOR",
+ "name": "SSAnne_Exterior_Frlg",
+ "layout": "LAYOUT_SSANNE_EXTERIOR",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "local_id": "LOCALID_SS_ANNE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SS_ANNE",
+ "x": 30,
+ "y": 16,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_SS_ANNE"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 31,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 32,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 32,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_1F_CORRIDOR",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 33,
+ "y": 15,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_1F_CORRIDOR",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 33,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 58,
+ "y": 28,
+ "elevation": 3,
+ "item": "ITEM_LAVA_COOKIE",
+ "flag": "FLAG_HIDDEN_ITEM_SSANNE_EXTERIOR_LAVA_COOKIE",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/SSAnne_Exterior_Frlg/scripts.inc b/data/maps/SSAnne_Exterior_Frlg/scripts.inc
new file mode 100644
index 000000000000..16e931943c86
--- /dev/null
+++ b/data/maps/SSAnne_Exterior_Frlg/scripts.inc
@@ -0,0 +1,65 @@
+SSAnne_Exterior_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SSAnne_Exterior_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, SSAnne_Exterior_OnFrame
+ .byte 0
+
+SSAnne_Exterior_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_SSANNE_EXTERIOR
+ end
+
+SSAnne_Exterior_OnFrame::
+ map_script_2 VAR_MAP_SCENE_VERMILION_CITY, 1, SSAnne_Exterior_ExitSSAnne
+ .2byte 0
+
+SSAnne_Exterior_ExitSSAnne::
+ lockall
+ getplayerxy VAR_0x8004, VAR_0x8005
+ call_if_le VAR_0x8005, 6, SSAnne_Exterior_WalkDown
+ call_if_ge VAR_0x8005, 7, SSAnne_Exterior_WalkInPlaceDown
+ fadenewbgm MUS_SURF
+ delay 50
+ special DoSSAnneDepartureCutscene
+ waitstate
+ removeobject LOCALID_SS_ANNE
+ applymovement LOCALID_PLAYER, SSAnne_Exterior_Movement_Exit
+ waitmovement 0
+ setvar VAR_MAP_SCENE_VERMILION_CITY, 2
+ setvar VAR_VERMILION_CITY_TICKET_CHECK_TRIGGER, 0
+ warp MAP_VERMILION_CITY, 23, 34
+ waitstate
+ releaseall
+ end
+
+SSAnne_Exterior_WalkDown::
+ applymovement LOCALID_PLAYER, SSAnne_Exterior_Movement_WalkDown
+ waitmovement 0
+ return
+
+SSAnne_Exterior_WalkInPlaceDown::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ return
+
+SSAnne_Exterior_Movement_Exit::
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+SSAnne_Exterior_Movement_WalkDown::
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ step_end
diff --git a/data/maps/SSAnne_Kitchen_Frlg/map.json b/data/maps/SSAnne_Kitchen_Frlg/map.json
new file mode 100644
index 000000000000..cb9cef62ada2
--- /dev/null
+++ b/data/maps/SSAnne_Kitchen_Frlg/map.json
@@ -0,0 +1,176 @@
+{
+ "id": "MAP_SSANNE_KITCHEN",
+ "name": "SSAnne_Kitchen_Frlg",
+ "layout": "LAYOUT_SSANNE_KITCHEN",
+ "music": "MUS_RG_SS_ANNE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_S_S_ANNE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHEF",
+ "x": 1,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_Kitchen_EventScript_Chef1",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHEF",
+ "x": 6,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_Kitchen_EventScript_Chef2",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHEF",
+ "x": 10,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_Kitchen_EventScript_Chef3",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHEF",
+ "x": 8,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_Kitchen_EventScript_Chef4",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHEF",
+ "x": 14,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_Kitchen_EventScript_Chef5",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHEF",
+ "x": 14,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_Kitchen_EventScript_Chef6",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHEF",
+ "x": 14,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_Kitchen_EventScript_Chef7",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 1,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SSAnne_Kitchen_EventScript_ItemGreatBall",
+ "flag": "FLAG_HIDE_SSANNE_KITCHEN_GREAT_BALL"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_SSANNE_1F_CORRIDOR",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 14,
+ "y": 8,
+ "elevation": 0,
+ "item": "ITEM_CHESTO_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_SSANNE_KITCHEN_CHESTO_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 14,
+ "y": 4,
+ "elevation": 0,
+ "item": "ITEM_PECHA_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_SSANNE_KITCHEN_PECHA_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 14,
+ "y": 6,
+ "elevation": 0,
+ "item": "ITEM_CHERI_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_SSANNE_KITCHEN_CHERI_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/SSAnne_Kitchen_Frlg/scripts.inc b/data/maps/SSAnne_Kitchen_Frlg/scripts.inc
new file mode 100644
index 000000000000..af430ac3a5f8
--- /dev/null
+++ b/data/maps/SSAnne_Kitchen_Frlg/scripts.inc
@@ -0,0 +1,99 @@
+SSAnne_Kitchen_Frlg_MapScripts::
+ .byte 0
+
+SSAnne_Kitchen_EventScript_Chef1::
+ msgbox SSAnne_Kitchen_Text_BusyOutOfTheWay, MSGBOX_NPC
+ end
+
+SSAnne_Kitchen_EventScript_Chef2::
+ msgbox SSAnne_Kitchen_Text_SawOddBerryInTrash, MSGBOX_NPC
+ end
+
+SSAnne_Kitchen_EventScript_Chef3::
+ msgbox SSAnne_Kitchen_Text_SoBusyImDizzy, MSGBOX_NPC
+ end
+
+SSAnne_Kitchen_EventScript_Chef4::
+ lock
+ faceplayer
+ msgbox SSAnne_Kitchen_Text_IAmLeChefMainCourseIs
+ random 3
+ copyvar VAR_0x8008, VAR_RESULT
+ call_if_eq VAR_0x8008, 0, SSAnne_Kitchen_EventScript_SalmonDuSalad
+ call_if_eq VAR_0x8008, 1, SSAnne_Kitchen_EventScript_EelsAuBarbecue
+ call_if_eq VAR_0x8008, 2, SSAnne_Kitchen_EventScript_PrimeBeefsteak
+ release
+ end
+
+SSAnne_Kitchen_EventScript_SalmonDuSalad::
+ msgbox SSAnne_Kitchen_Text_SalmonDuSalad
+ return
+
+SSAnne_Kitchen_EventScript_EelsAuBarbecue::
+ msgbox SSAnne_Kitchen_Text_EelsAuBarbecue
+ return
+
+SSAnne_Kitchen_EventScript_PrimeBeefsteak::
+ msgbox SSAnne_Kitchen_Text_PrimeBeefsteak
+ return
+
+SSAnne_Kitchen_EventScript_Chef5::
+ msgbox SSAnne_Kitchen_Text_PeelSpudsEveryDay, MSGBOX_NPC
+ end
+
+SSAnne_Kitchen_EventScript_Chef6::
+ msgbox SSAnne_Kitchen_Text_HearAboutSnorlaxItsAGlutton, MSGBOX_NPC
+ end
+
+SSAnne_Kitchen_EventScript_Chef7::
+ msgbox SSAnne_Kitchen_Text_OnlyGetToPeelOnions, MSGBOX_NPC
+ end
+
+SSAnne_Kitchen_Text_BusyOutOfTheWay::
+ .string "You, mon petit!\n"
+ .string "We're busy here!\l"
+ .string "Out of the way!$"
+
+SSAnne_Kitchen_Text_SawOddBerryInTrash::
+ .string "I saw an odd BERRY in the trash.\n"
+ .string "I wonder what that was?$"
+
+SSAnne_Kitchen_Text_SoBusyImDizzy::
+ .string "I'm so busy I'm getting dizzy!\n"
+ .string "You have to give me room here!$"
+
+SSAnne_Kitchen_Text_PeelSpudsEveryDay::
+ .string "Hum-de-hum-de-ho…\p"
+ .string "I peel spuds every day!\n"
+ .string "Hum-hum…$"
+
+SSAnne_Kitchen_Text_HearAboutSnorlaxItsAGlutton::
+ .string "Did you hear about SNORLAX?\n"
+ .string "It's a glutton.\p"
+ .string "No other POKéMON eats and sleeps\n"
+ .string "the way SNORLAX can and does!$"
+
+SSAnne_Kitchen_Text_OnlyGetToPeelOnions::
+ .string "Snivel… Sniff…\p"
+ .string "I only get to peel onions…\n"
+ .string "Snivel…$"
+
+SSAnne_Kitchen_Text_IAmLeChefMainCourseIs::
+ .string "Er-hem!\n"
+ .string "Indeed I am le CHEF!\p"
+ .string "Le main course is$"
+
+SSAnne_Kitchen_Text_SalmonDuSalad::
+ .string "Salmon du Salad!\p"
+ .string "Les guests may gripe it's fish\n"
+ .string "again, however!$"
+
+SSAnne_Kitchen_Text_EelsAuBarbecue::
+ .string "Eels au Barbecue!\p"
+ .string "Les guests will mutiny, I fear.$"
+
+SSAnne_Kitchen_Text_PrimeBeefsteak::
+ .string "Prime Beefsteak!\p"
+ .string "But, have I enough fillets du\n"
+ .string "beef?$"
+
diff --git a/data/maps/SafariZone_Center_Frlg/map.json b/data/maps/SafariZone_Center_Frlg/map.json
new file mode 100644
index 000000000000..67dbe07ede90
--- /dev/null
+++ b/data/maps/SafariZone_Center_Frlg/map.json
@@ -0,0 +1,166 @@
+{
+ "id": "MAP_SAFARI_ZONE_CENTER",
+ "name": "SafariZone_Center_Frlg",
+ "layout": "LAYOUT_SAFARI_ZONE_CENTER",
+ "music": "MUS_EVOLUTION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_KANTO_SAFARI_ZONE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 24,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_Center_EventScript_ItemNugget",
+ "flag": "FLAG_HIDE_SAFARI_ZONE_CENTER_NUGGET"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 25,
+ "y": 30,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 26,
+ "y": 30,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 27,
+ "y": 30,
+ "elevation": 3,
+ "dest_map": "MAP_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 25,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_NORTH_FRLG",
+ "dest_warp_id": "9"
+ },
+ {
+ "x": 26,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_NORTH_FRLG",
+ "dest_warp_id": "10"
+ },
+ {
+ "x": 27,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_SAFARI_ZONE_NORTH_FRLG",
+ "dest_warp_id": "11"
+ },
+ {
+ "x": 8,
+ "y": 17,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_WEST",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 8,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_WEST",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 8,
+ "y": 19,
+ "elevation": 0,
+ "dest_map": "MAP_SAFARI_ZONE_WEST",
+ "dest_warp_id": "8"
+ },
+ {
+ "x": 43,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_EAST",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 43,
+ "y": 16,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_EAST",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 43,
+ "y": 17,
+ "elevation": 0,
+ "dest_map": "MAP_SAFARI_ZONE_EAST",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 29,
+ "y": 25,
+ "elevation": 0,
+ "dest_map": "MAP_SAFARI_ZONE_CENTER_REST_HOUSE",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 30,
+ "y": 26,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SafariZone_Center_EventScript_RestHouseSign"
+ },
+ {
+ "type": "sign",
+ "x": 25,
+ "y": 27,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SafariZone_Center_EventScript_TrainerTips"
+ },
+ {
+ "type": "hidden_item",
+ "x": 27,
+ "y": 15,
+ "elevation": 3,
+ "item": "ITEM_LEAF_STONE",
+ "flag": "FLAG_HIDDEN_ITEM_SAFARI_ZONE_CENTER_LEAF_STONE",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 33,
+ "y": 20,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SafariZone_Center_EventScript_AreaSign"
+ }
+ ]
+}
diff --git a/data/maps/SafariZone_Center_Frlg/scripts.inc b/data/maps/SafariZone_Center_Frlg/scripts.inc
new file mode 100644
index 000000000000..51305a1e7a0b
--- /dev/null
+++ b/data/maps/SafariZone_Center_Frlg/scripts.inc
@@ -0,0 +1,31 @@
+SafariZone_Center_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SafariZone_Center_OnTransition
+ .byte 0
+
+SafariZone_Center_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_SAFARI_ZONE_CENTER
+ end
+
+SafariZone_Center_EventScript_RestHouseSign::
+ msgbox SafariZone_Center_Text_RestHouse, MSGBOX_SIGN
+ end
+
+SafariZone_Center_EventScript_TrainerTips::
+ msgbox SafariZone_Center_Text_PressStartToCheckTime, MSGBOX_SIGN
+ end
+
+SafariZone_Center_EventScript_AreaSign::
+ msgbox SafariZone_Center_Text_CenterArea, MSGBOX_SIGN
+ end
+
+SafariZone_Center_Text_RestHouse::
+ .string "REST HOUSE$"
+
+SafariZone_Center_Text_PressStartToCheckTime::
+ .string "TRAINER TIPS\p"
+ .string "Press START to check\n"
+ .string "remaining time.$"
+
+SafariZone_Center_Text_CenterArea::
+ .string "CENTER AREA$"
+
diff --git a/data/maps/SafariZone_Center_RestHouse_Frlg/map.json b/data/maps/SafariZone_Center_RestHouse_Frlg/map.json
new file mode 100644
index 000000000000..860c83ec16af
--- /dev/null
+++ b/data/maps/SafariZone_Center_RestHouse_Frlg/map.json
@@ -0,0 +1,73 @@
+{
+ "id": "MAP_SAFARI_ZONE_CENTER_REST_HOUSE",
+ "name": "SafariZone_Center_RestHouse_Frlg",
+ "layout": "LAYOUT_SAFARI_ZONE_REST_HOUSE_FRLG",
+ "music": "MUS_EVOLUTION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_KANTO_SAFARI_ZONE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 3,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_Center_RestHouse_EventScript_Scientist",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 7,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_Center_RestHouse_EventScript_Sara",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_CENTER",
+ "dest_warp_id": "12"
+ },
+ {
+ "x": 4,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_CENTER",
+ "dest_warp_id": "12"
+ },
+ {
+ "x": 5,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_CENTER",
+ "dest_warp_id": "12"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SafariZone_Center_RestHouse_Frlg/scripts.inc b/data/maps/SafariZone_Center_RestHouse_Frlg/scripts.inc
new file mode 100644
index 000000000000..ae62fe4ccd3b
--- /dev/null
+++ b/data/maps/SafariZone_Center_RestHouse_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+SafariZone_Center_RestHouse_Frlg_MapScripts::
+ .byte 0
+
+SafariZone_Center_RestHouse_EventScript_Sara::
+ msgbox SafariZone_Center_Text_WhereDidErikGo, MSGBOX_NPC
+ end
+
+SafariZone_Center_RestHouse_EventScript_Scientist::
+ msgbox SafariZone_Center_Text_CatchingMonsAsGifts, MSGBOX_NPC
+ end
+
+SafariZone_Center_Text_WhereDidErikGo::
+ .string "SARA: Where did my boyfriend,\n"
+ .string "ERIK, go?$"
+
+SafariZone_Center_Text_CatchingMonsAsGifts::
+ .string "I'm catching POKéMON to take home\n"
+ .string "as gifts.$"
+
diff --git a/data/maps/SafariZone_East_Frlg/map.json b/data/maps/SafariZone_East_Frlg/map.json
new file mode 100644
index 000000000000..ff1c2a5317c5
--- /dev/null
+++ b/data/maps/SafariZone_East_Frlg/map.json
@@ -0,0 +1,156 @@
+{
+ "id": "MAP_SAFARI_ZONE_EAST",
+ "name": "SafariZone_East_Frlg",
+ "layout": "LAYOUT_SAFARI_ZONE_EAST",
+ "music": "MUS_EVOLUTION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_KANTO_SAFARI_ZONE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 13,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_East_EventScript_ItemMaxPotion",
+ "flag": "FLAG_HIDE_SAFARI_ZONE_EAST_MAX_POTION"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 37,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_East_EventScript_ItemFullRestore",
+ "flag": "FLAG_HIDE_SAFARI_ZONE_EAST_FULL_RESTORE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 31,
+ "y": 18,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_East_EventScript_ItemTM11",
+ "flag": "FLAG_HIDE_SAFARI_ZONE_EAST_TM11"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 36,
+ "y": 17,
+ "elevation": 4,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_East_EventScript_ItemLeafStone",
+ "flag": "FLAG_HIDE_SAFARI_ZONE_EAST_LEAF_STONE"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_NORTH_FRLG",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 8,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_NORTH_FRLG",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 8,
+ "y": 11,
+ "elevation": 0,
+ "dest_map": "MAP_SAFARI_ZONE_NORTH_FRLG",
+ "dest_warp_id": "8"
+ },
+ {
+ "x": 8,
+ "y": 26,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_CENTER",
+ "dest_warp_id": "9"
+ },
+ {
+ "x": 8,
+ "y": 27,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_CENTER",
+ "dest_warp_id": "10"
+ },
+ {
+ "x": 8,
+ "y": 28,
+ "elevation": 0,
+ "dest_map": "MAP_SAFARI_ZONE_CENTER",
+ "dest_warp_id": "11"
+ },
+ {
+ "x": 40,
+ "y": 14,
+ "elevation": 0,
+ "dest_map": "MAP_SAFARI_ZONE_EAST_REST_HOUSE",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 18,
+ "y": 27,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SafariZone_East_EventScript_AreaSign"
+ },
+ {
+ "type": "sign",
+ "x": 43,
+ "y": 15,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SafariZone_East_EventScript_RestHouseSign"
+ },
+ {
+ "type": "sign",
+ "x": 17,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SafariZone_East_EventScript_TrainerTips"
+ }
+ ]
+}
diff --git a/data/maps/SafariZone_East_Frlg/scripts.inc b/data/maps/SafariZone_East_Frlg/scripts.inc
new file mode 100644
index 000000000000..51911aa03477
--- /dev/null
+++ b/data/maps/SafariZone_East_Frlg/scripts.inc
@@ -0,0 +1,27 @@
+SafariZone_East_Frlg_MapScripts::
+ .byte 0
+
+SafariZone_East_EventScript_RestHouseSign::
+ msgbox SafariZone_East_Text_RestHouse, MSGBOX_SIGN
+ end
+
+SafariZone_East_EventScript_TrainerTips::
+ msgbox SafariZone_East_Text_TimeDeclinesOnlyWhileYouWalk, MSGBOX_SIGN
+ end
+
+SafariZone_East_EventScript_AreaSign::
+ msgbox SafariZone_East_Text_AreaSign, MSGBOX_SIGN
+ end
+
+SafariZone_East_Text_RestHouse::
+ .string "REST HOUSE$"
+
+SafariZone_East_Text_TimeDeclinesOnlyWhileYouWalk::
+ .string "TRAINER TIPS\p"
+ .string "The remaining time declines only\n"
+ .string "while you walk.$"
+
+SafariZone_East_Text_AreaSign::
+ .string "AREA 1\n"
+ .string "WEST: CENTER AREA$"
+
diff --git a/data/maps/SafariZone_East_RestHouse_Frlg/map.json b/data/maps/SafariZone_East_RestHouse_Frlg/map.json
new file mode 100644
index 000000000000..8ecc17ef0f5e
--- /dev/null
+++ b/data/maps/SafariZone_East_RestHouse_Frlg/map.json
@@ -0,0 +1,87 @@
+{
+ "id": "MAP_SAFARI_ZONE_EAST_REST_HOUSE",
+ "name": "SafariZone_East_RestHouse_Frlg",
+ "layout": "LAYOUT_SAFARI_ZONE_REST_HOUSE_FRLG",
+ "music": "MUS_EVOLUTION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_KANTO_SAFARI_ZONE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 3,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_East_RestHouse_EventScript_Scientist",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 6,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_East_RestHouse_EventScript_Rocker",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 7,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_East_RestHouse_EventScript_BaldingMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_EAST",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 4,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_EAST",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 5,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_EAST",
+ "dest_warp_id": "6"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SafariZone_East_RestHouse_Frlg/scripts.inc b/data/maps/SafariZone_East_RestHouse_Frlg/scripts.inc
new file mode 100644
index 000000000000..72dd37dc18f1
--- /dev/null
+++ b/data/maps/SafariZone_East_RestHouse_Frlg/scripts.inc
@@ -0,0 +1,27 @@
+SafariZone_East_RestHouse_Frlg_MapScripts::
+ .byte 0
+
+SafariZone_East_RestHouse_EventScript_Rocker::
+ msgbox SafariZone_East_Text_CaughtChanseyAllWorthwhile, MSGBOX_NPC
+ end
+
+SafariZone_East_RestHouse_EventScript_Scientist::
+ msgbox SafariZone_East_Text_HowManyDidYouCatch, MSGBOX_NPC
+ end
+
+SafariZone_East_RestHouse_EventScript_BaldingMan::
+ msgbox SafariZone_East_Text_TiredFromAllTheFun, MSGBOX_NPC
+ end
+
+SafariZone_East_Text_HowManyDidYouCatch::
+ .string "How many did you catch?\n"
+ .string "I'm bushed from the effort!$"
+
+SafariZone_East_Text_CaughtChanseyAllWorthwhile::
+ .string "I caught a CHANSEY!\p"
+ .string "That makes this all worthwhile.$"
+
+SafariZone_East_Text_TiredFromAllTheFun::
+ .string "Whew!\n"
+ .string "I'm tired from all the fun!$"
+
diff --git a/data/maps/SafariZone_North_Frlg/map.json b/data/maps/SafariZone_North_Frlg/map.json
new file mode 100644
index 000000000000..bd5eb8d784dc
--- /dev/null
+++ b/data/maps/SafariZone_North_Frlg/map.json
@@ -0,0 +1,200 @@
+{
+ "id": "MAP_SAFARI_ZONE_NORTH_FRLG",
+ "name": "SafariZone_North_Frlg",
+ "layout": "LAYOUT_SAFARI_ZONE_NORTH_FRLG",
+ "music": "MUS_EVOLUTION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_KANTO_SAFARI_ZONE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 33,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_North_EventScript_ItemProtein",
+ "flag": "FLAG_HIDE_SAFARI_ZONE_NORTH_PROTEIN"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 28,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_North_EventScript_ItemTM47",
+ "flag": "FLAG_HIDE_SAFARI_ZONE_NORTH_TM47"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 29,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_North_EventScript_ItemQuickClaw",
+ "flag": "FLAG_HIDE_SAFARI_ZONE_NORTH_QUICK_CLAW"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 10,
+ "y": 34,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_WEST",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 11,
+ "y": 34,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_WEST",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 12,
+ "y": 34,
+ "elevation": 0,
+ "dest_map": "MAP_SAFARI_ZONE_WEST",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 20,
+ "y": 34,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_WEST",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 21,
+ "y": 34,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_WEST",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 22,
+ "y": 34,
+ "elevation": 0,
+ "dest_map": "MAP_SAFARI_ZONE_WEST",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 48,
+ "y": 31,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_EAST",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 48,
+ "y": 32,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_EAST",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 48,
+ "y": 33,
+ "elevation": 0,
+ "dest_map": "MAP_SAFARI_ZONE_EAST",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 30,
+ "y": 34,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_CENTER",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 31,
+ "y": 34,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_CENTER",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 32,
+ "y": 34,
+ "elevation": 0,
+ "dest_map": "MAP_SAFARI_ZONE_CENTER",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 43,
+ "y": 8,
+ "elevation": 0,
+ "dest_map": "MAP_SAFARI_ZONE_NORTH_REST_HOUSE",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 13,
+ "y": 27,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SafariZone_North_EventScript_TrainerTips1"
+ },
+ {
+ "type": "sign",
+ "x": 23,
+ "y": 31,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SafariZone_North_EventScript_AreaSign"
+ },
+ {
+ "type": "sign",
+ "x": 29,
+ "y": 32,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SafariZone_North_EventScript_TrainerTips2"
+ },
+ {
+ "type": "sign",
+ "x": 34,
+ "y": 28,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SafariZone_North_EventScript_TrainerTips3"
+ },
+ {
+ "type": "sign",
+ "x": 44,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SafariZone_North_EventScript_RestHouseSign"
+ }
+ ]
+}
diff --git a/data/maps/SafariZone_North_Frlg/scripts.inc b/data/maps/SafariZone_North_Frlg/scripts.inc
new file mode 100644
index 000000000000..936fa03acf06
--- /dev/null
+++ b/data/maps/SafariZone_North_Frlg/scripts.inc
@@ -0,0 +1,44 @@
+SafariZone_North_Frlg_MapScripts::
+ .byte 0
+
+SafariZone_North_EventScript_RestHouseSign::
+ msgbox SafariZone_North_Text_RestHouse, MSGBOX_SIGN
+ end
+
+SafariZone_North_EventScript_TrainerTips1::
+ msgbox SafariZone_North_Text_SecretHouseStillAhead, MSGBOX_SIGN
+ end
+
+SafariZone_North_EventScript_AreaSign::
+ msgbox SafariZone_North_Text_Area2, MSGBOX_SIGN
+ end
+
+SafariZone_North_EventScript_TrainerTips2::
+ msgbox SafariZone_North_Text_ZigzagThroughTallGrass, MSGBOX_SIGN
+ end
+
+SafariZone_North_EventScript_TrainerTips3::
+ msgbox SafariZone_North_Text_WinFreeHMFindSecretHouse, MSGBOX_SIGN
+ end
+
+SafariZone_North_Text_RestHouse::
+ .string "REST HOUSE$"
+
+SafariZone_North_Text_SecretHouseStillAhead::
+ .string "TRAINER TIPS\p"
+ .string "The SECRET HOUSE is still ahead.$"
+
+SafariZone_North_Text_Area2::
+ .string "AREA 2$"
+
+SafariZone_North_Text_ZigzagThroughTallGrass::
+ .string "TRAINER TIPS\p"
+ .string "POKéMON hide in tall grass.\p"
+ .string "Zigzag through grassy areas to\n"
+ .string "flush them out.$"
+
+SafariZone_North_Text_WinFreeHMFindSecretHouse::
+ .string "TRAINER TIPS\p"
+ .string "Win a free HM for finding the\n"
+ .string "SECRET HOUSE.$"
+
diff --git a/data/maps/SafariZone_North_RestHouse_Frlg/map.json b/data/maps/SafariZone_North_RestHouse_Frlg/map.json
new file mode 100644
index 000000000000..8c9a1d000b61
--- /dev/null
+++ b/data/maps/SafariZone_North_RestHouse_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_SAFARI_ZONE_NORTH_REST_HOUSE",
+ "name": "SafariZone_North_RestHouse_Frlg",
+ "layout": "LAYOUT_SAFARI_ZONE_REST_HOUSE_FRLG",
+ "music": "MUS_EVOLUTION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_KANTO_SAFARI_ZONE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 3,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_North_RestHouse_EventScript_Gentleman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 7,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_North_RestHouse_EventScript_Scientist",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_North_RestHouse_EventScript_Fisher",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 11,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_North_RestHouse_EventScript_BaldingMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_NORTH_FRLG",
+ "dest_warp_id": "12"
+ },
+ {
+ "x": 4,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_NORTH_FRLG",
+ "dest_warp_id": "12"
+ },
+ {
+ "x": 5,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_NORTH_FRLG",
+ "dest_warp_id": "12"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SafariZone_North_RestHouse_Frlg/scripts.inc b/data/maps/SafariZone_North_RestHouse_Frlg/scripts.inc
new file mode 100644
index 000000000000..5a66e099171a
--- /dev/null
+++ b/data/maps/SafariZone_North_RestHouse_Frlg/scripts.inc
@@ -0,0 +1,30 @@
+SafariZone_North_RestHouse_Frlg_MapScripts::
+ .byte 0
+
+SafariZone_North_RestHouse_EventScript_Fisher::
+ msgbox SafariZone_East_Text_PrizeInDeepestPartOfSafariZone, MSGBOX_NPC
+ end
+
+SafariZone_North_RestHouse_EventScript_Scientist::
+ msgbox SafariZone_East_Text_KeepAnyItemFoundOnSafari, MSGBOX_NPC
+ end
+
+SafariZone_North_RestHouse_EventScript_Gentleman::
+ msgbox SafariZone_East_Text_MyEeveeEvolvedIntoFlareon, MSGBOX_NPC
+ end
+
+SafariZone_East_Text_KeepAnyItemFoundOnSafari::
+ .string "You can keep any item you find in\n"
+ .string "the SAFARI ZONE.\p"
+ .string "But, you'll run out of time if you\n"
+ .string "try for all of them at once.$"
+
+SafariZone_East_Text_PrizeInDeepestPartOfSafariZone::
+ .string "Go to the deepest part of the\n"
+ .string "SAFARI ZONE. You will win a prize!$"
+
+SafariZone_East_Text_MyEeveeEvolvedIntoFlareon::
+ .string "My EEVEE evolved into FLAREON.\p"
+ .string "But, a friend's EEVEE turned into a\n"
+ .string "VAPOREON. I wonder why?$"
+
diff --git a/data/maps/SafariZone_SecretHouse_Frlg/map.json b/data/maps/SafariZone_SecretHouse_Frlg/map.json
new file mode 100644
index 000000000000..0983aeb2c22a
--- /dev/null
+++ b/data/maps/SafariZone_SecretHouse_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_SAFARI_ZONE_SECRET_HOUSE",
+ "name": "SafariZone_SecretHouse_Frlg",
+ "layout": "LAYOUT_SAFARI_ZONE_SECRET_HOUSE",
+ "music": "MUS_EVOLUTION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_KANTO_SAFARI_ZONE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 6,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_SecretHouse_EventScript_Attendant",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_WEST",
+ "dest_warp_id": "9"
+ },
+ {
+ "x": 4,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_WEST",
+ "dest_warp_id": "9"
+ },
+ {
+ "x": 5,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_WEST",
+ "dest_warp_id": "9"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SafariZone_SecretHouse_Frlg/scripts.inc b/data/maps/SafariZone_SecretHouse_Frlg/scripts.inc
new file mode 100644
index 000000000000..cb93e514dc14
--- /dev/null
+++ b/data/maps/SafariZone_SecretHouse_Frlg/scripts.inc
@@ -0,0 +1,54 @@
+SafariZone_SecretHouse_Frlg_MapScripts::
+ .byte 0
+
+SafariZone_SecretHouse_EventScript_Attendant::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_HM03, SafariZone_SecretHouse_EventScript_ExplainSurf
+ msgbox SafariZone_SecretHouse_Text_CongratsYouveWon
+ checkitemspace ITEM_HM03
+ goto_if_eq VAR_RESULT, FALSE, SafariZone_SecretHouse_EventScript_NoRoomForHM03
+ giveitem_msg SafariZone_SecretHouse_Text_ReceivedHM03FromAttendant, ITEM_HM03
+ msgbox SafariZone_SecretHouse_Text_ExplainSurf
+ setflag FLAG_GOT_HM03
+ release
+ end
+
+SafariZone_SecretHouse_EventScript_NoRoomForHM03::
+ msgbox SafariZone_SecretHouse_Text_DontHaveRoomForPrize
+ release
+ end
+
+SafariZone_SecretHouse_EventScript_ExplainSurf::
+ msgbox SafariZone_SecretHouse_Text_ExplainSurf
+ release
+ end
+
+SafariZone_SecretHouse_Text_CongratsYouveWon::
+ .string "Ah! Finally!\p"
+ .string "You're the first person to reach\n"
+ .string "the SECRET HOUSE!\p"
+ .string "Although I made a campaign\n"
+ .string "for our grand opening,\p"
+ .string "I was getting worried that no one\n"
+ .string "would win our campaign prize.\p"
+ .string "Congratulations!\n"
+ .string "You have won!$"
+
+SafariZone_SecretHouse_Text_ReceivedHM03FromAttendant::
+ .string "{PLAYER} received HM03\n"
+ .string "from the attendant!$"
+
+SafariZone_SecretHouse_Text_ExplainSurf::
+ .string "HM03 is SURF.\p"
+ .string "POKéMON will be able to ferry you\n"
+ .string "across water using it.\p"
+ .string "And, this HM isn't disposable, so\n"
+ .string "you can use it over and over.\p"
+ .string "You're super lucky for winning this\n"
+ .string "fabulous prize!$"
+
+SafariZone_SecretHouse_Text_DontHaveRoomForPrize::
+ .string "You don't have room for this\n"
+ .string "fabulous prize!$"
+
diff --git a/data/maps/SafariZone_West_Frlg/map.json b/data/maps/SafariZone_West_Frlg/map.json
new file mode 100644
index 000000000000..097ae9cf2916
--- /dev/null
+++ b/data/maps/SafariZone_West_Frlg/map.json
@@ -0,0 +1,202 @@
+{
+ "id": "MAP_SAFARI_ZONE_WEST",
+ "name": "SafariZone_West_Frlg",
+ "layout": "LAYOUT_SAFARI_ZONE_WEST",
+ "music": "MUS_EVOLUTION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_KANTO_SAFARI_ZONE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 28,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_West_EventScript_ItemGoldTeeth",
+ "flag": "FLAG_HIDE_SAFARI_ZONE_WEST_GOLD_TEETH"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 17,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_West_EventScript_ItemTM32",
+ "flag": "FLAG_HIDE_SAFARI_ZONE_WEST_TM32"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 16,
+ "y": 27,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_West_EventScript_ItemMaxPotion",
+ "flag": "FLAG_HIDE_SAFARI_ZONE_WEST_MAX_POTION"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 27,
+ "y": 24,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_West_EventScript_ItemMaxRevive",
+ "flag": "FLAG_HIDE_SAFARI_ZONE_WEST_MAX_REVIVE"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 30,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_NORTH_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 31,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_NORTH_FRLG",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 32,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_SAFARI_ZONE_NORTH_FRLG",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 37,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_NORTH_FRLG",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 38,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_NORTH_FRLG",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 39,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_SAFARI_ZONE_NORTH_FRLG",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 40,
+ "y": 26,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_CENTER",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 40,
+ "y": 27,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_CENTER",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 40,
+ "y": 28,
+ "elevation": 0,
+ "dest_map": "MAP_SAFARI_ZONE_CENTER",
+ "dest_warp_id": "8"
+ },
+ {
+ "x": 12,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_SAFARI_ZONE_SECRET_HOUSE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 19,
+ "y": 18,
+ "elevation": 0,
+ "dest_map": "MAP_SAFARI_ZONE_WEST_REST_HOUSE",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 27,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SafariZone_West_EventScript_LostTeethNotice"
+ },
+ {
+ "type": "sign",
+ "x": 36,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SafariZone_West_EventScript_TrainerTips"
+ },
+ {
+ "type": "sign",
+ "x": 35,
+ "y": 26,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SafariZone_West_EventScript_AreaSign"
+ },
+ {
+ "type": "sign",
+ "x": 22,
+ "y": 19,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SafariZone_West_EventScript_RestHouseSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 13,
+ "y": 11,
+ "elevation": 3,
+ "item": "ITEM_REVIVE",
+ "flag": "FLAG_HIDDEN_ITEM_SAFARI_ZONE_WEST_REVIVE",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/SafariZone_West_Frlg/scripts.inc b/data/maps/SafariZone_West_Frlg/scripts.inc
new file mode 100644
index 000000000000..867cf4636a2c
--- /dev/null
+++ b/data/maps/SafariZone_West_Frlg/scripts.inc
@@ -0,0 +1,39 @@
+SafariZone_West_Frlg_MapScripts::
+ .byte 0
+
+SafariZone_West_EventScript_RestHouseSign::
+ msgbox SafariZone_West_Text_RestHouse, MSGBOX_SIGN
+ end
+
+SafariZone_West_EventScript_LostTeethNotice::
+ msgbox SafariZone_West_Text_PleaseFindWardensLostTeeth, MSGBOX_SIGN
+ end
+
+SafariZone_West_EventScript_TrainerTips::
+ msgbox SafariZone_West_Text_SearchForSecretHouse, MSGBOX_SIGN
+ end
+
+SafariZone_West_EventScript_AreaSign::
+ msgbox SafariZone_West_Text_AreaSign, MSGBOX_SIGN
+ end
+
+SafariZone_West_Text_RestHouse::
+ .string "REST HOUSE$"
+
+SafariZone_West_Text_PleaseFindWardensLostTeeth::
+ .string "REQUEST NOTICE\p"
+ .string "Please find the SAFARI WARDEN's\n"
+ .string "lost GOLD TEETH.\l"
+ .string "They're around here somewhere.\p"
+ .string "Reward offered!\n"
+ .string "Contact: WARDEN$"
+
+SafariZone_West_Text_SearchForSecretHouse::
+ .string "TRAINER TIPS\p"
+ .string "Zone Exploration Campaign!\n"
+ .string "The Search for the SECRET HOUSE!$"
+
+SafariZone_West_Text_AreaSign::
+ .string "AREA 3\n"
+ .string "EAST: CENTER AREA$"
+
diff --git a/data/maps/SafariZone_West_RestHouse_Frlg/map.json b/data/maps/SafariZone_West_RestHouse_Frlg/map.json
new file mode 100644
index 000000000000..dd74813fea73
--- /dev/null
+++ b/data/maps/SafariZone_West_RestHouse_Frlg/map.json
@@ -0,0 +1,87 @@
+{
+ "id": "MAP_SAFARI_ZONE_WEST_REST_HOUSE",
+ "name": "SafariZone_West_RestHouse_Frlg",
+ "layout": "LAYOUT_SAFARI_ZONE_REST_HOUSE_FRLG",
+ "music": "MUS_EVOLUTION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_KANTO_SAFARI_ZONE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 3,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_West_RestHouse_EventScript_Scientist",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 2,
+ "y": 2,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_West_RestHouse_EventScript_Man",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 7,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SafariZone_West_RestHouse_EventScript_CooltrainerF",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_WEST",
+ "dest_warp_id": "10"
+ },
+ {
+ "x": 4,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_WEST",
+ "dest_warp_id": "10"
+ },
+ {
+ "x": 5,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SAFARI_ZONE_WEST",
+ "dest_warp_id": "10"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SafariZone_West_RestHouse_Frlg/scripts.inc b/data/maps/SafariZone_West_RestHouse_Frlg/scripts.inc
new file mode 100644
index 000000000000..201c5e41586d
--- /dev/null
+++ b/data/maps/SafariZone_West_RestHouse_Frlg/scripts.inc
@@ -0,0 +1,37 @@
+SafariZone_West_RestHouse_Frlg_MapScripts::
+ .byte 0
+
+SafariZone_West_RestHouse_EventScript_Man::
+ msgbox SafariZone_West_Text_BaitMakesMonStickAround, MSGBOX_NPC
+ end
+
+SafariZone_West_RestHouse_EventScript_Scientist::
+ msgbox SafariZone_West_Text_RocksMakeMonRunButEasierCatch, MSGBOX_NPC
+ end
+
+SafariZone_West_RestHouse_EventScript_CooltrainerF::
+ msgbox SafariZone_West_Text_HikedLotsDidntSeeMonIWanted, MSGBOX_NPC
+ end
+
+SafariZone_West_Text_KogaPatrolsSafariEverySoOften::
+ .string "The SAFARI ZONE's huge, wouldn't\n"
+ .string "you say?\p"
+ .string "FUCHSIA's GYM LEADER, KOGA, \n"
+ .string "patrols the grounds every so often.\p"
+ .string "Thanks to him, we can play here\n"
+ .string "knowing that we're safe.$"
+
+SafariZone_West_Text_RocksMakeMonRunButEasierCatch::
+ .string "Tossing ROCKS at POKéMON might\n"
+ .string "make them run, but they'll be\l"
+ .string "easier to catch.$"
+
+SafariZone_West_Text_BaitMakesMonStickAround::
+ .string "Using BAIT will make POKéMON more\n"
+ .string "likely to stick around if they get\l"
+ .string "busy eating.$"
+
+SafariZone_West_Text_HikedLotsDidntSeeMonIWanted::
+ .string "I hiked a lot, but I didn't see any\n"
+ .string "POKéMON I wanted.$"
+
diff --git a/data/maps/SaffronCity_Connection_Frlg/map.json b/data/maps/SaffronCity_Connection_Frlg/map.json
new file mode 100644
index 000000000000..4c80a344419e
--- /dev/null
+++ b/data/maps/SaffronCity_Connection_Frlg/map.json
@@ -0,0 +1,43 @@
+{
+ "id": "MAP_SAFFRON_CITY_CONNECTION",
+ "name": "SaffronCity_Connection_Frlg",
+ "layout": "LAYOUT_SAFFRON_CITY_CONNECTION",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SAFFRON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE5",
+ "offset": 0,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_ROUTE6",
+ "offset": 12,
+ "direction": "down"
+ },
+ {
+ "map": "MAP_ROUTE7",
+ "offset": 10,
+ "direction": "left"
+ },
+ {
+ "map": "MAP_ROUTE8",
+ "offset": 10,
+ "direction": "right"
+ }
+ ],
+ "object_events": [],
+ "warp_events": [],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SaffronCity_Connection_Frlg/scripts.inc b/data/maps/SaffronCity_Connection_Frlg/scripts.inc
new file mode 100644
index 000000000000..03c216ad7e42
--- /dev/null
+++ b/data/maps/SaffronCity_Connection_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+SaffronCity_Connection_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/SaffronCity_CopycatsHouse_1F_Frlg/map.json b/data/maps/SaffronCity_CopycatsHouse_1F_Frlg/map.json
new file mode 100644
index 000000000000..3b5da2197671
--- /dev/null
+++ b/data/maps/SaffronCity_CopycatsHouse_1F_Frlg/map.json
@@ -0,0 +1,94 @@
+{
+ "id": "MAP_SAFFRON_CITY_COPYCATS_HOUSE_1F",
+ "name": "SaffronCity_CopycatsHouse_1F_Frlg",
+ "layout": "LAYOUT_SAFFRON_CITY_COPYCATS_HOUSE_1F",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SAFFRON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 8,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_CopycatsHouse_1F_EventScript_CopycatsDad",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_3_FRLG",
+ "x": 3,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_CopycatsHouse_1F_EventScript_CopycatsMom",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANSEY",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_CopycatsHouse_1F_EventScript_Chansey",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_COPYCATS_HOUSE_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SaffronCity_CopycatsHouse_1F_Frlg/scripts.inc b/data/maps/SaffronCity_CopycatsHouse_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..e63bcc8bbab9
--- /dev/null
+++ b/data/maps/SaffronCity_CopycatsHouse_1F_Frlg/scripts.inc
@@ -0,0 +1,34 @@
+SaffronCity_CopycatsHouse_1F_Frlg_MapScripts::
+ .byte 0
+
+SaffronCity_CopycatsHouse_1F_EventScript_CopycatsMom::
+ msgbox SaffronCity_CopycatsHouse_1F_Text_DaughterIsSelfCentered, MSGBOX_NPC
+ end
+
+SaffronCity_CopycatsHouse_1F_EventScript_CopycatsDad::
+ msgbox SaffronCity_CopycatsHouse_1F_Text_DaughterLikesToMimicPeople, MSGBOX_NPC
+ end
+
+SaffronCity_CopycatsHouse_1F_EventScript_Chansey::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_CHANSEY, CRY_MODE_NORMAL
+ msgbox SaffronCity_CopycatsHouse_1F_Text_Chansey
+ waitmoncry
+ release
+ end
+
+SaffronCity_CopycatsHouse_1F_Text_DaughterIsSelfCentered::
+ .string "My daughter is so self-centered.\n"
+ .string "She has but a few friends.$"
+
+SaffronCity_CopycatsHouse_1F_Text_DaughterLikesToMimicPeople::
+ .string "My daughter likes to mimic people.\n"
+ .string "It's rather vexing.\p"
+ .string "Her mimicry has earned her the\n"
+ .string "nickname COPYCAT around here.$"
+
+SaffronCity_CopycatsHouse_1F_Text_Chansey::
+ .string "CHANSEY: Chaan! Sii!$"
+
diff --git a/data/maps/SaffronCity_CopycatsHouse_2F_Frlg/map.json b/data/maps/SaffronCity_CopycatsHouse_2F_Frlg/map.json
new file mode 100644
index 000000000000..8b15c00146da
--- /dev/null
+++ b/data/maps/SaffronCity_CopycatsHouse_2F_Frlg/map.json
@@ -0,0 +1,114 @@
+{
+ "id": "MAP_SAFFRON_CITY_COPYCATS_HOUSE_2F",
+ "name": "SaffronCity_CopycatsHouse_2F_Frlg",
+ "layout": "LAYOUT_SAFFRON_CITY_COPYCATS_HOUSE_2F",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SAFFRON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_DODUO",
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_CopycatsHouse_2F_EventScript_Doduo",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PIKACHU_FRLG",
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_CopycatsHouse_2F_EventScript_Doll",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_JIGGLYPUFF",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_CopycatsHouse_2F_EventScript_Doll",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 9,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_CopycatsHouse_2F_EventScript_Copycat",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_COPYCATS_HOUSE_1F",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 1,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_CopycatsHouse_2F_EventScript_Computer"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_CopycatsHouse_2F_EventScript_Game"
+ },
+ {
+ "type": "hidden_item",
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "item": "ITEM_NUGGET",
+ "flag": "FLAG_HIDDEN_ITEM_SAFFRON_CITY_COPYCATS_HOUSE_2F_NUGGET",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/SaffronCity_CopycatsHouse_2F_Frlg/scripts.inc b/data/maps/SaffronCity_CopycatsHouse_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..74fc5d80c7b4
--- /dev/null
+++ b/data/maps/SaffronCity_CopycatsHouse_2F_Frlg/scripts.inc
@@ -0,0 +1,119 @@
+SaffronCity_CopycatsHouse_2F_Frlg_MapScripts::
+ .byte 0
+
+SaffronCity_CopycatsHouse_2F_EventScript_Doduo::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_DODUO, CRY_MODE_NORMAL
+ msgbox SaffronCity_CopycatsHouse_2F_Text_Doduo
+ waitmoncry
+ release
+ end
+
+SaffronCity_CopycatsHouse_2F_EventScript_Doll::
+ lock
+ msgbox SaffronCity_CopycatsHouse_2F_Text_RareMonOnlyDoll
+ release
+ end
+
+SaffronCity_CopycatsHouse_2F_EventScript_Copycat::
+ lock
+ faceplayer
+ checkitem ITEM_POKE_DOLL
+ goto_if_eq VAR_RESULT, TRUE, EventScript_MimicTutor
+ checkplayergender
+ call_if_eq VAR_RESULT, MALE, SaffronCity_CopycatsHouse_2F_EventScript_MimicPlayerMale
+ call_if_eq VAR_RESULT, FEMALE, SaffronCity_CopycatsHouse_2F_EventScript_MimicPlayerFemale
+ release
+ end
+
+SaffronCity_CopycatsHouse_2F_EventScript_MimicPlayerMale::
+ msgbox SaffronCity_CopycatsHouse_2F_Text_MimickingFavoriteHobbyMale
+ return
+
+SaffronCity_CopycatsHouse_2F_EventScript_MimicPlayerFemale::
+ msgbox SaffronCity_CopycatsHouse_2F_Text_MimickingFavoriteHobbyFemale
+ return
+
+SaffronCity_CopycatsHouse_2F_EventScript_Computer::
+ msgbox SaffronCity_CopycatsHouse_2F_Text_MySecrets, MSGBOX_SIGN
+ end
+
+SaffronCity_CopycatsHouse_2F_EventScript_Game::
+ msgbox SaffronCity_CopycatsHouse_2F_Text_MarioWearingABucket, MSGBOX_SIGN
+ end
+
+SaffronCity_CopycatsHouse_2F_Text_MimickingFavoriteHobbyMale::
+ .string "{PLAYER}: Hi!\n"
+ .string "Do you like POKéMON?\p"
+ .string "{PLAYER}: Uh, no, I just asked you.\p"
+ .string "{PLAYER}: Huh?\n"
+ .string "You're strange!\p"
+ .string "COPYCAT: Hmm? Quit mimicking?\n"
+ .string "But, that's my favorite hobby!$"
+
+SaffronCity_CopycatsHouse_2F_Text_MimickingFavoriteHobbyFemale::
+ .string "{PLAYER}: Hi.\n"
+ .string "You must like POKéMON.\p"
+ .string "{PLAYER}: No, not me.\n"
+ .string "I asked you.\p"
+ .string "{PLAYER}: Pardon?\n"
+ .string "You're weird!\l"
+ .string " \l"
+ .string "COPYCAT: Hmm? Quit mimicking?\l"
+ .string "But that's my favorite hobby!$"
+
+Text_MimicTeach::
+ .string "Oh wow!\n"
+ .string "A POKé DOLL!\p"
+ .string "For me?\n"
+ .string "Thank you!\p"
+ .string "You know what?\n"
+ .string "I can teach the move MIMIC.$"
+
+Text_MimicDeclined::
+ .string "Don't you like MIMIC?$"
+
+Text_MimicWhichMon::
+ .string "I really love MIMIC!\n"
+ .string "Who's going to learn it?$"
+
+Text_MimicTaughtMale::
+ .string "{PLAYER}: Hi!\n"
+ .string "Thanks for earlier!\p"
+ .string "{PLAYER}: Pardon?\p"
+ .string "{PLAYER}: Is it that fun to mimic my\n"
+ .string "every move?\p"
+ .string "COPYCAT: You bet!\n"
+ .string "It's a scream!$"
+
+Text_MimicTaughtFemale::
+ .string "{PLAYER}: Hi!\n"
+ .string "Thanks for what you did for us.\p"
+ .string "{PLAYER}: Pardon?\p"
+ .string "{PLAYER}: Is it really that fun to\n"
+ .string "copy what I say and do?\p"
+ .string "COPYCAT: You bet!\n"
+ .string "It's a scream!$"
+
+SaffronCity_CopycatsHouse_2F_Text_Doduo::
+ .string "DODUO: Giiih!\p"
+ .string "PRETTY MIRROR LOOK AT ME,\n"
+ .string "SEE HOW PRETTY I CAN BE?$"
+
+SaffronCity_CopycatsHouse_2F_Text_RareMonOnlyDoll::
+ .string "This is a rare POKéMON!\n"
+ .string "Huh? It's only a doll!$"
+
+SaffronCity_CopycatsHouse_2F_Text_MarioWearingABucket::
+ .string "A game with MARIO wearing a bucket\n"
+ .string "on his head!$"
+
+SaffronCity_CopycatsHouse_2F_Text_MySecrets::
+ .string "…\p"
+ .string "My Secrets!\p"
+ .string "Skill: Mimicry!\n"
+ .string "Hobby: Collecting dolls!\l"
+ .string "Favorite POKéMON: CLEFAIRY!$"
+
diff --git a/data/maps/SaffronCity_Dojo_Frlg/map.json b/data/maps/SaffronCity_Dojo_Frlg/map.json
new file mode 100644
index 000000000000..ed7c07bc78a9
--- /dev/null
+++ b/data/maps/SaffronCity_Dojo_Frlg/map.json
@@ -0,0 +1,196 @@
+{
+ "id": "MAP_SAFFRON_CITY_DOJO",
+ "name": "SaffronCity_Dojo_Frlg",
+ "layout": "LAYOUT_SAFFRON_CITY_DOJO",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SAFFRON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 11,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "7",
+ "script": "SaffronCity_Dojo_EventScript_Hitoshi",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 1,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "7",
+ "script": "SaffronCity_Dojo_EventScript_Hideki",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 11,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "7",
+ "script": "SaffronCity_Dojo_EventScript_Aaron",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 1,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "7",
+ "script": "SaffronCity_Dojo_EventScript_Mike",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_KARATE_MASTER",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 6,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SaffronCity_Dojo_EventScript_MasterKoichi",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 5,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_Dojo_EventScript_HitmonleeBall",
+ "flag": "FLAG_HIDE_DOJO_HITMONLEE_BALL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 7,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_Dojo_EventScript_HitmonchanBall",
+ "flag": "FLAG_HIDE_DOJO_HITMONCHAN_BALL"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 6,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 7,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 5,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_SAFFRON_CITY_DOJO",
+ "var_value": "0",
+ "script": "SaffronCity_Dojo_EventScript_TriggerMasterBattleLeft"
+ },
+ {
+ "type": "trigger",
+ "x": 7,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_SAFFRON_CITY_DOJO",
+ "var_value": "0",
+ "script": "SaffronCity_Dojo_EventScript_TriggerMasterBattleRight"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_Dojo_EventScript_Statue"
+ },
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_Dojo_EventScript_Statue"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_Dojo_EventScript_LeftScroll"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_Dojo_EventScript_RightScroll"
+ }
+ ]
+}
diff --git a/data/maps/SaffronCity_Dojo_Frlg/scripts.inc b/data/maps/SaffronCity_Dojo_Frlg/scripts.inc
new file mode 100644
index 000000000000..af2cc934504a
--- /dev/null
+++ b/data/maps/SaffronCity_Dojo_Frlg/scripts.inc
@@ -0,0 +1,253 @@
+SaffronCity_Dojo_Frlg_MapScripts::
+ .byte 0
+
+SaffronCity_Dojo_EventScript_TriggerMasterBattleLeft::
+ lockall
+ setvar VAR_MAP_SCENE_SAFFRON_CITY_DOJO, 1
+ applymovement LOCALID_KARATE_MASTER, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ releaseall
+ end
+
+SaffronCity_Dojo_EventScript_TriggerMasterBattleRight::
+ lockall
+ setvar VAR_MAP_SCENE_SAFFRON_CITY_DOJO, 1
+ applymovement LOCALID_KARATE_MASTER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ releaseall
+ end
+
+SaffronCity_Dojo_EventScript_HitmonleeBall::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_HITMON_FROM_DOJO, SaffronCity_Dojo_EventScript_AlreadyGotHitmon
+ showmonpic SPECIES_HITMONLEE, 10, 3
+ setvar VAR_TEMP_1, SPECIES_HITMONLEE
+ applymovement LOCALID_KARATE_MASTER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox SaffronCity_Dojo_Text_YouWantHitmonlee, MSGBOX_YESNO
+ call EventScript_RestorePrevTextColor
+ goto_if_eq VAR_RESULT, YES, SaffronCity_Dojo_EventScript_GiveHitmon
+ hidemonpic
+ release
+ end
+
+SaffronCity_Dojo_EventScript_AlreadyGotHitmon::
+ msgbox SaffronCity_Dojo_Text_BetterNotGetGreedy
+ release
+ end
+
+SaffronCity_Dojo_EventScript_HitmonchanBall::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_HITMON_FROM_DOJO, SaffronCity_Dojo_EventScript_AlreadyGotHitmon
+ showmonpic SPECIES_HITMONCHAN, 10, 3
+ setvar VAR_TEMP_1, SPECIES_HITMONCHAN
+ applymovement LOCALID_KARATE_MASTER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox SaffronCity_Dojo_Text_YouWantHitmonchan, MSGBOX_YESNO
+ call EventScript_RestorePrevTextColor
+ goto_if_eq VAR_RESULT, YES, SaffronCity_Dojo_EventScript_GiveHitmon
+ hidemonpic
+ release
+ end
+
+SaffronCity_Dojo_EventScript_GiveHitmon::
+ hidemonpic
+ givemon VAR_TEMP_1, 25
+ goto_if_eq VAR_RESULT, 0, SaffronCity_Dojo_EventScript_ReceivedHitmonParty
+ goto_if_eq VAR_RESULT, 1, SaffronCity_Dojo_EventScript_ReceivedHitmonPC
+ goto_if_eq VAR_RESULT, 2, Common_EventScript_NoMoreRoomForPokemon
+ release
+ end
+
+SaffronCity_Dojo_EventScript_ReceivedHitmonParty::
+ removeobject VAR_LAST_TALKED
+ bufferspeciesname STR_VAR_1, VAR_TEMP_1
+ playfanfare MUS_LEVEL_UP
+ message SaffronCity_Dojo_Text_ReceivedMonFromKarateMaster
+ waitmessage
+ waitfanfare
+ setflag FLAG_GOT_HITMON_FROM_DOJO
+ msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, SaffronCity_Dojo_EventScript_EndGiveMon
+ call Common_EventScript_GetGiftMonPartySlot
+ call Common_EventScript_NameReceivedPartyMon
+ goto SaffronCity_Dojo_EventScript_EndGiveMon
+ end
+
+SaffronCity_Dojo_EventScript_ReceivedHitmonPC::
+ removeobject VAR_LAST_TALKED
+ bufferspeciesname STR_VAR_1, VAR_TEMP_1
+ playfanfare MUS_LEVEL_UP
+ message SaffronCity_Dojo_Text_ReceivedMonFromKarateMaster
+ waitmessage
+ waitfanfare
+ setflag FLAG_GOT_HITMON_FROM_DOJO
+ msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, SaffronCity_Dojo_EventScript_TransferredHitmonToPC
+ call Common_EventScript_NameReceivedBoxMon
+ goto SaffronCity_Dojo_EventScript_TransferredHitmonToPC
+ end
+
+SaffronCity_Dojo_EventScript_TransferredHitmonToPC::
+ call Common_EventScript_TransferredToPC
+ goto SaffronCity_Dojo_EventScript_EndGiveMon
+ end
+
+SaffronCity_Dojo_EventScript_EndGiveMon::
+ release
+ end
+
+SaffronCity_Dojo_EventScript_Statue::
+ msgbox SaffronCity_Dojo_Text_FightingDojo, MSGBOX_SIGN
+ end
+
+SaffronCity_Dojo_EventScript_LeftScroll::
+ msgbox SaffronCity_Dojo_Text_EnemiesOnEverySide, MSGBOX_SIGN
+ end
+
+SaffronCity_Dojo_EventScript_RightScroll::
+ msgbox SaffronCity_Dojo_Text_GoesAroundComesAround, MSGBOX_SIGN
+ end
+
+SaffronCity_Dojo_EventScript_Hitoshi::
+ trainerbattle_single TRAINER_BLACK_BELT_HITOSHI, SaffronCity_Dojo_Text_HitoshiIntro, SaffronCity_Dojo_Text_HitoshiDefeat
+ msgbox SaffronCity_Dojo_Text_HitoshiPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SaffronCity_Dojo_EventScript_Hideki::
+ trainerbattle_single TRAINER_BLACK_BELT_HIDEKI, SaffronCity_Dojo_Text_HidekiIntro, SaffronCity_Dojo_Text_HidekiDefeat
+ msgbox SaffronCity_Dojo_Text_HidekiPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SaffronCity_Dojo_EventScript_Aaron::
+ trainerbattle_single TRAINER_BLACK_BELT_AARON, SaffronCity_Dojo_Text_AaronIntro, SaffronCity_Dojo_Text_AaronDefeat
+ msgbox SaffronCity_Dojo_Text_AaronPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SaffronCity_Dojo_EventScript_Mike::
+ trainerbattle_single TRAINER_BLACK_BELT_MIKE, SaffronCity_Dojo_Text_MikeIntro, SaffronCity_Dojo_Text_MikeDefeat
+ msgbox SaffronCity_Dojo_Text_MikePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SaffronCity_Dojo_EventScript_MasterKoichi::
+ trainerbattle_single TRAINER_BLACK_BELT_KOICHI, SaffronCity_Dojo_Text_MasterKoichiIntro, SaffronCity_Dojo_Text_MasterKoichiDefeat, SaffronCity_Dojo_EventScript_DefeatedMasterKoichi
+ goto_if_set FLAG_GOT_HITMON_FROM_DOJO, SaffronCity_Dojo_EventScript_MasterKoichiAlreadyGotHitmon
+ msgbox SaffronCity_Dojo_Text_ChoosePrizedFightingMon, MSGBOX_AUTOCLOSE
+ end
+
+SaffronCity_Dojo_EventScript_MasterKoichiAlreadyGotHitmon::
+ msgbox SaffronCity_Dojo_Text_StayAndTrainWithUs
+ release
+ end
+
+SaffronCity_Dojo_EventScript_DefeatedMasterKoichi::
+ setvar VAR_MAP_SCENE_SAFFRON_CITY_DOJO, 1
+ release
+ end
+
+SaffronCity_Dojo_Text_MasterKoichiIntro::
+ .string "Grunt!\p"
+ .string "I am the KARATE MASTER!\n"
+ .string "I am the LEADER here!\p"
+ .string "You wish to challenge us?\n"
+ .string "Expect no mercy!\p"
+ .string "Fwaaa!$"
+
+SaffronCity_Dojo_Text_MasterKoichiDefeat::
+ .string "Hwa!\n"
+ .string "Arrgh! Beaten!$"
+
+SaffronCity_Dojo_Text_ChoosePrizedFightingMon::
+ .string "Indeed, I have lost!\p"
+ .string "But, I beseech you, do not take\n"
+ .string "our emblem as your trophy!\p"
+ .string "In return, I will give you a prized\n"
+ .string "FIGHTING POKéMON!\p"
+ .string "Choose whichever one you like!$"
+
+SaffronCity_Dojo_Text_StayAndTrainWithUs::
+ .string "Grunt!\n"
+ .string "Stay and train at karate with us!$"
+
+SaffronCity_Dojo_Text_MikeIntro::
+ .string "Hoargh!\n"
+ .string "Take your shoes off!$"
+
+SaffronCity_Dojo_Text_MikeDefeat::
+ .string "I give up!$"
+
+SaffronCity_Dojo_Text_MikePostBattle::
+ .string "You wait 'til you see our MASTER!\n"
+ .string "I'm a small fry compared to him!$"
+
+SaffronCity_Dojo_Text_HidekiIntro::
+ .string "I hear you're good!\n"
+ .string "Show me!$"
+
+SaffronCity_Dojo_Text_HidekiDefeat::
+ .string "Judge!\n"
+ .string "One point!$"
+
+SaffronCity_Dojo_Text_HidekiPostBattle::
+ .string "Our MASTER is a pro fighter.\n"
+ .string "Be prepared to lose!$"
+
+SaffronCity_Dojo_Text_AaronIntro::
+ .string "Hiyah!\n"
+ .string "I have no fear for anything tough!\p"
+ .string "I shatter boulders for training\n"
+ .string "every day!$"
+
+SaffronCity_Dojo_Text_AaronDefeat::
+ .string "Yow!\n"
+ .string "Stubbed fingers!$"
+
+SaffronCity_Dojo_Text_AaronPostBattle::
+ .string "The only thing that frightens us is\n"
+ .string "psychic power!$"
+
+SaffronCity_Dojo_Text_HitoshiIntro::
+ .string "Hwaah!\p"
+ .string "You're trespassing in our\n"
+ .string "FIGHTING DOJO!$"
+
+SaffronCity_Dojo_Text_HitoshiDefeat::
+ .string "Oof!\n"
+ .string "I give up!$"
+
+SaffronCity_Dojo_Text_HitoshiPostBattle::
+ .string "The prime fighters across the land\n"
+ .string "train here.$"
+
+SaffronCity_Dojo_Text_YouWantHitmonlee::
+ .string "You want the hard-kicking\n"
+ .string "HITMONLEE?$"
+
+SaffronCity_Dojo_Text_ReceivedMonFromKarateMaster::
+ .string "{PLAYER} received the {STR_VAR_1}\n"
+ .string "from the KARATE MASTER.$"
+
+SaffronCity_Dojo_Text_YouWantHitmonchan::
+ .string "You want the piston-punching\n"
+ .string "HITMONCHAN?$"
+
+SaffronCity_Dojo_Text_ReceivedMonFromKarateMaster2::
+ .string "{PLAYER}は カラテ だいおう から\n"
+ .string "{STR_VAR_1}を もらった!$"
+
+SaffronCity_Dojo_Text_BetterNotGetGreedy::
+ .string "Better not get greedy…$"
+
+SaffronCity_Dojo_Text_EnemiesOnEverySide::
+ .string "Enemies on every side!$"
+
+SaffronCity_Dojo_Text_GoesAroundComesAround::
+ .string "What goes around comes around.$"
+
+SaffronCity_Dojo_Text_FightingDojo::
+ .string "FIGHTING DOJO$"
+
diff --git a/data/maps/SaffronCity_Frlg/map.json b/data/maps/SaffronCity_Frlg/map.json
new file mode 100644
index 000000000000..145a34842a07
--- /dev/null
+++ b/data/maps/SaffronCity_Frlg/map.json
@@ -0,0 +1,437 @@
+{
+ "id": "MAP_SAFFRON_CITY",
+ "name": "SaffronCity_Frlg",
+ "layout": "LAYOUT_SAFFRON_CITY",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SAFFRON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE5",
+ "offset": 0,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_ROUTE6",
+ "offset": 12,
+ "direction": "down"
+ },
+ {
+ "map": "MAP_ROUTE7",
+ "offset": 10,
+ "direction": "left"
+ },
+ {
+ "map": "MAP_ROUTE8",
+ "offset": 10,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 22,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_EventScript_RocketGrunt1",
+ "flag": "FLAG_HIDE_SAFFRON_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 26,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 4,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_EventScript_RocketGrunt2",
+ "flag": "FLAG_HIDE_SAFFRON_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 46,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_EventScript_RocketGrunt3",
+ "flag": "FLAG_HIDE_SAFFRON_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 27,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_EventScript_RocketGrunt4",
+ "flag": "FLAG_HIDE_SAFFRON_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 25,
+ "y": 33,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 7,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_EventScript_RocketGrunt5",
+ "flag": "FLAG_HIDE_SAFFRON_ROCKETS"
+ },
+ {
+ "local_id": "LOCALID_SAFFRON_DOOR_GUARD_GRUNT",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 34,
+ "y": 31,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_EventScript_DoorGuardGrunt",
+ "flag": "FLAG_HIDE_SAFFRON_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 30,
+ "y": 39,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 5,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_EventScript_RocketGrunt7",
+ "flag": "FLAG_HIDE_SAFFRON_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 48,
+ "y": 24,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 4,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_EventScript_RocketGrunt6",
+ "flag": "FLAG_HIDE_SAFFRON_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 37,
+ "y": 32,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_EventScript_Youngster",
+ "flag": "FLAG_HIDE_SAFFRON_CIVILIANS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 21,
+ "y": 23,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_EventScript_WorkerM",
+ "flag": "FLAG_HIDE_SAFFRON_CIVILIANS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 39,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_EventScript_Man",
+ "flag": "FLAG_HIDE_SAFFRON_CIVILIANS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 44,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_EventScript_Boy",
+ "flag": "FLAG_HIDE_SAFFRON_CIVILIANS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PIDGEOT",
+ "x": 45,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_EventScript_Pidgeot",
+ "flag": "FLAG_HIDE_SAFFRON_CIVILIANS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 32,
+ "y": 39,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 5,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_EventScript_Lass",
+ "flag": "FLAG_HIDE_SAFFRON_CIVILIANS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BATTLE_GIRL",
+ "x": 47,
+ "y": 24,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_EventScript_BattleGirl",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 33,
+ "y": 30,
+ "elevation": 0,
+ "dest_map": "MAP_SILPH_CO_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 22,
+ "y": 14,
+ "elevation": 0,
+ "dest_map": "MAP_SAFFRON_CITY_COPYCATS_HOUSE_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 40,
+ "y": 12,
+ "elevation": 0,
+ "dest_map": "MAP_SAFFRON_CITY_DOJO",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 46,
+ "y": 12,
+ "elevation": 0,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 27,
+ "y": 21,
+ "elevation": 0,
+ "dest_map": "MAP_SAFFRON_CITY_HOUSE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 40,
+ "y": 21,
+ "elevation": 0,
+ "dest_map": "MAP_SAFFRON_CITY_MART",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 24,
+ "y": 38,
+ "elevation": 0,
+ "dest_map": "MAP_SAFFRON_CITY_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 43,
+ "y": 38,
+ "elevation": 0,
+ "dest_map": "MAP_SAFFRON_CITY_MR_PSYCHICS_HOUSE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 8,
+ "y": 27,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE7_EAST_ENTRANCE",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 34,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE5_SOUTH_ENTRANCE",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 58,
+ "y": 27,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE8_WEST_ENTRANCE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 34,
+ "y": 46,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE6_NORTH_ENTRANCE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 35,
+ "y": 46,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE6_NORTH_ENTRANCE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 35,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE5_SOUTH_ENTRANCE",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 47,
+ "y": 21,
+ "elevation": 0,
+ "dest_map": "MAP_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 29,
+ "y": 14,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_EventScript_CitySign"
+ },
+ {
+ "type": "sign",
+ "x": 42,
+ "y": 14,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_EventScript_DojoSign"
+ },
+ {
+ "type": "sign",
+ "x": 13,
+ "y": 25,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_EventScript_SilphProductSign"
+ },
+ {
+ "type": "sign",
+ "x": 18,
+ "y": 30,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_EventScript_TrainerTips2"
+ },
+ {
+ "type": "sign",
+ "x": 29,
+ "y": 31,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_EventScript_SilphCoSign"
+ },
+ {
+ "type": "sign",
+ "x": 54,
+ "y": 25,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_EventScript_TrainerTips1"
+ },
+ {
+ "type": "sign",
+ "x": 50,
+ "y": 14,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_EventScript_GymSign"
+ },
+ {
+ "type": "sign",
+ "x": 40,
+ "y": 38,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_EventScript_MrPsychicsHouseSign"
+ },
+ {
+ "type": "sign",
+ "x": 49,
+ "y": 22,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_EventScript_TrainerFanClubSign"
+ }
+ ],
+ "connections_no_include": true
+}
diff --git a/data/maps/SaffronCity_Frlg/scripts.inc b/data/maps/SaffronCity_Frlg/scripts.inc
new file mode 100644
index 000000000000..7be4041b5bc3
--- /dev/null
+++ b/data/maps/SaffronCity_Frlg/scripts.inc
@@ -0,0 +1,240 @@
+SaffronCity_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SaffronCity_OnTransition
+ .byte 0
+
+SaffronCity_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_SAFFRON_CITY
+ call_if_unset FLAG_RESCUED_MR_FUJI, SaffronCity_EventScript_MoveDoorGuardGrunt
+ end
+
+SaffronCity_EventScript_MoveDoorGuardGrunt::
+ setobjectxyperm LOCALID_SAFFRON_DOOR_GUARD_GRUNT, 33, 31
+ return
+
+SaffronCity_EventScript_RocketGrunt1::
+ msgbox SaffronCity_Text_WhatDoYouWantGetLost, MSGBOX_NPC
+ end
+
+SaffronCity_EventScript_RocketGrunt2::
+ msgbox SaffronCity_Text_BossTakeTownForTeamRocket, MSGBOX_NPC
+ end
+
+SaffronCity_EventScript_RocketGrunt3::
+ msgbox SaffronCity_Text_DontGetDefiantOrIllHurtYou, MSGBOX_NPC
+ end
+
+SaffronCity_EventScript_RocketGrunt4::
+ msgbox SaffronCity_Text_SaffronBelongsToTeamRocket, MSGBOX_NPC
+ end
+
+SaffronCity_EventScript_RocketGrunt5::
+ msgbox SaffronCity_Text_CriminalLifeMakesMeFeelAlive, MSGBOX_NPC
+ end
+
+SaffronCity_EventScript_RocketGrunt6::
+ msgbox SaffronCity_Text_WatchWhereYoureWalking, MSGBOX_NPC
+ end
+
+SaffronCity_EventScript_RocketGrunt7::
+ msgbox SaffronCity_Text_WeCanExploitMonsAroundWorld, MSGBOX_NPC
+ end
+
+SaffronCity_EventScript_DoorGuardGrunt::
+ lock
+ goto_if_set FLAG_RESCUED_MR_FUJI, SaffronCity_EventScript_DoorGuardAsleep
+ applymovement LOCALID_SAFFRON_DOOR_GUARD_GRUNT, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox SaffronCity_Text_ImASecurityGuard
+ release
+ end
+
+SaffronCity_EventScript_DoorGuardAsleep::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox SaffronCity_Text_HesTakingASnooze
+ release
+ end
+
+SaffronCity_EventScript_WorkerM::
+ msgbox SaffronCity_Text_YouBeatTeamRocket, MSGBOX_NPC
+ end
+
+SaffronCity_EventScript_Youngster::
+ msgbox SaffronCity_Text_SafeToGoOutAgain, MSGBOX_NPC
+ end
+
+SaffronCity_EventScript_Lass::
+ msgbox SaffronCity_Text_PeopleComingBackToSaffron, MSGBOX_NPC
+ end
+
+SaffronCity_EventScript_Boy::
+ msgbox SaffronCity_Text_FlewHereOnPidgeot, MSGBOX_NPC
+ end
+
+SaffronCity_EventScript_Pidgeot::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_PIDGEOT, CRY_MODE_NORMAL
+ msgbox SaffronCity_Text_Pidgeot
+ waitmoncry
+ release
+ end
+
+SaffronCity_EventScript_Man::
+ msgbox SaffronCity_Text_SawRocketBossEscaping, MSGBOX_NPC
+ end
+
+SaffronCity_EventScript_CitySign::
+ msgbox SaffronCity_Text_CitySign, MSGBOX_SIGN
+ end
+
+SaffronCity_EventScript_DojoSign::
+ msgbox SaffronCity_Text_FightingDojo, MSGBOX_SIGN
+ end
+
+SaffronCity_EventScript_GymSign::
+ lockall
+ famechecker FAMECHECKER_SABRINA, 0
+ msgbox SaffronCity_Text_GymSign
+ releaseall
+ end
+
+SaffronCity_EventScript_TrainerTips1::
+ msgbox SaffronCity_Text_FullHealCuresStatus, MSGBOX_SIGN
+ end
+
+SaffronCity_EventScript_TrainerTips2::
+ msgbox SaffronCity_Text_GreatBallImprovedCatchRate, MSGBOX_SIGN
+ end
+
+SaffronCity_EventScript_SilphCoSign::
+ msgbox SaffronCity_Text_SilphCoSign, MSGBOX_SIGN
+ end
+
+SaffronCity_EventScript_MrPsychicsHouseSign::
+ msgbox SaffronCity_Text_MrPsychicsHouse, MSGBOX_SIGN
+ end
+
+SaffronCity_EventScript_SilphProductSign::
+ msgbox SaffronCity_Text_SilphsLatestProduct, MSGBOX_SIGN
+ end
+
+SaffronCity_EventScript_TrainerFanClubSign::
+ msgbox SaffronCity_Text_TrainerFanClubSign, MSGBOX_SIGN
+ end
+
+SaffronCity_Text_WhatDoYouWantGetLost::
+ .string "What do you want?\n"
+ .string "Get lost!$"
+
+SaffronCity_Text_BossTakeTownForTeamRocket::
+ .string "BOSS said he'll take this town\n"
+ .string "in the name of TEAM ROCKET!$"
+
+SaffronCity_Text_DontGetDefiantOrIllHurtYou::
+ .string "Don't get defiant!\n"
+ .string "Or I'll have to hurt you!$"
+
+SaffronCity_Text_SaffronBelongsToTeamRocket::
+ .string "SAFFRON belongs to TEAM ROCKET!$"
+
+SaffronCity_Text_CriminalLifeMakesMeFeelAlive::
+ .string "My life as a criminal makes me feel\n"
+ .string "so alive!$"
+
+SaffronCity_Text_WatchWhereYoureWalking::
+ .string "Ow!\n"
+ .string "Watch where you're walking!$"
+
+SaffronCity_Text_WeCanExploitMonsAroundWorld::
+ .string "With SILPH under control, we can\n"
+ .string "exploit POKéMON around the world!\p"
+ .string "We'll get stinking rich, yeahah!$"
+
+SaffronCity_Text_YouBeatTeamRocket::
+ .string "You beat TEAM ROCKET all alone?\n"
+ .string "That's amazing!$"
+
+SaffronCity_Text_SafeToGoOutAgain::
+ .string "Yeah! TEAM ROCKET is gone!\n"
+ .string "It's safe to go out again!$"
+
+SaffronCity_Text_PeopleComingBackToSaffron::
+ .string "People fled from here in droves\n"
+ .string "when those ROCKETS came.\p"
+ .string "They should be flocking back to\n"
+ .string "SAFFRON now.$"
+
+SaffronCity_Text_FlewHereOnPidgeot::
+ .string "I flew here on my PIDGEOT when\n"
+ .string "I read about SILPH.\p"
+ .string "It's already over?\n"
+ .string "I missed the media action…$"
+
+SaffronCity_Text_Pidgeot::
+ .string "PIDGEOT: Bi bibii!$"
+
+SaffronCity_Text_SawRocketBossEscaping::
+ .string "I saw the ROCKET BOSS escaping\n"
+ .string "SILPH's building.$"
+
+SaffronCity_Text_ImASecurityGuard::
+ .string "I'm a security guard.\p"
+ .string "Suspicious kids I don't allow in!$"
+
+SaffronCity_Text_HesTakingASnooze::
+ .string "…\n"
+ .string "Snore…\p"
+ .string "Hah! He's taking a snooze!$"
+
+SaffronCity_Text_CitySign::
+ .string "SAFFRON CITY\n"
+ .string "Shining, Golden Land of Commerce$"
+
+SaffronCity_Text_FightingDojo::
+ .string "FIGHTING DOJO$"
+
+SaffronCity_Text_GymSign::
+ .string "SAFFRON CITY POKéMON GYM\n"
+ .string "LEADER: SABRINA\l"
+ .string "The Master of PSYCHIC POKéMON!$"
+
+SaffronCity_Text_FullHealCuresStatus::
+ .string "TRAINER TIPS\p"
+ .string "FULL HEAL cures all ailments like\n"
+ .string "burns, paralysis, poisoning,\l"
+ .string "freezing, and sleep.\p"
+ .string "It costs a bit more, but it's more\n"
+ .string "convenient than buying other items.$"
+
+SaffronCity_Text_GreatBallImprovedCatchRate::
+ .string "TRAINER TIPS\p"
+ .string "The new GREAT BALL offers improved\n"
+ .string "catching rates.\p"
+ .string "Try it on those hard-to-catch\n"
+ .string "POKéMON.$"
+
+SaffronCity_Text_SilphCoSign::
+ .string "SILPH CO. OFFICE BUILDING$"
+
+SaffronCity_Text_MrPsychicsHouse::
+ .string "MR. PSYCHIC'S HOUSE$"
+
+SaffronCity_Text_SilphsLatestProduct::
+ .string "SILPH's latest product!\n"
+ .string "Release to be determined…$"
+
+SaffronCity_Text_TrainerFanClubSign::
+ .string "POKéMON TRAINER FAN CLUB\p"
+ .string "Many TRAINERS have scribbled their\n"
+ .string "names on this sign.$"
+
+SaffronCity_Text_HowCanClubNotRecognizeLance::
+ .string "This FAN CLUB…\n"
+ .string "No one here has a clue!\p"
+ .string "How could they not recognize\n"
+ .string "the brilliance that is LANCE?\p"
+ .string "He stands for justice!\n"
+ .string "He's cool, and yet passionate!\l"
+ .string "He's the greatest, LANCE!$"
+
diff --git a/data/maps/SaffronCity_Gym_Frlg/map.json b/data/maps/SaffronCity_Gym_Frlg/map.json
new file mode 100644
index 000000000000..67a4ad0b115f
--- /dev/null
+++ b/data/maps/SaffronCity_Gym_Frlg/map.json
@@ -0,0 +1,398 @@
+{
+ "id": "MAP_SAFFRON_CITY_GYM",
+ "name": "SaffronCity_Gym_Frlg",
+ "layout": "LAYOUT_SAFFRON_CITY_GYM",
+ "music": "MUS_GYM",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SAFFRON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_GYM",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 24,
+ "y": 18,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SaffronCity_Gym_EventScript_Cameron",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 24,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SaffronCity_Gym_EventScript_Johan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SaffronCity_Gym_EventScript_Preston",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 14,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SaffronCity_Gym_EventScript_Amanda",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 4,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SaffronCity_Gym_EventScript_Stacy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 4,
+ "y": 18,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SaffronCity_Gym_EventScript_Tasha",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SABRINA",
+ "x": 14,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_Gym_EventScript_Sabrina",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 24,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SaffronCity_Gym_EventScript_Tyron",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GYM_GUY",
+ "x": 15,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_Gym_EventScript_GymGuy",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 13,
+ "y": 23,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 14,
+ "y": 23,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 15,
+ "y": 23,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 18,
+ "y": 20,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "32"
+ },
+ {
+ "x": 0,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "22"
+ },
+ {
+ "x": 0,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "20"
+ },
+ {
+ "x": 0,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "30"
+ },
+ {
+ "x": 0,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "11"
+ },
+ {
+ "x": 0,
+ "y": 20,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "28"
+ },
+ {
+ "x": 0,
+ "y": 23,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "19"
+ },
+ {
+ "x": 8,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "18"
+ },
+ {
+ "x": 8,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 8,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "17"
+ },
+ {
+ "x": 8,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "15"
+ },
+ {
+ "x": 8,
+ "y": 20,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "26"
+ },
+ {
+ "x": 8,
+ "y": 23,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "13"
+ },
+ {
+ "x": 12,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "24"
+ },
+ {
+ "x": 12,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "12"
+ },
+ {
+ "x": 16,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "10"
+ },
+ {
+ "x": 16,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "9"
+ },
+ {
+ "x": 18,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 20,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "23"
+ },
+ {
+ "x": 20,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 20,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "21"
+ },
+ {
+ "x": 20,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "16"
+ },
+ {
+ "x": 20,
+ "y": 20,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "27"
+ },
+ {
+ "x": 20,
+ "y": 23,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "14"
+ },
+ {
+ "x": 28,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "25"
+ },
+ {
+ "x": 28,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "8"
+ },
+ {
+ "x": 28,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "31"
+ },
+ {
+ "x": 28,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 28,
+ "y": 20,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "29"
+ },
+ {
+ "x": 28,
+ "y": 23,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY_GYM",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 20,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_Gym_EventScript_GymStatue"
+ },
+ {
+ "type": "sign",
+ "x": 16,
+ "y": 20,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_Gym_EventScript_GymStatue"
+ }
+ ]
+}
diff --git a/data/maps/SaffronCity_Gym_Frlg/scripts.inc b/data/maps/SaffronCity_Gym_Frlg/scripts.inc
new file mode 100644
index 000000000000..64e3cb330cf8
--- /dev/null
+++ b/data/maps/SaffronCity_Gym_Frlg/scripts.inc
@@ -0,0 +1,257 @@
+SaffronCity_Gym_Frlg_MapScripts::
+ .byte 0
+
+SaffronCity_Gym_EventScript_Sabrina::
+ famechecker FAMECHECKER_SABRINA, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
+ trainerbattle_single TRAINER_LEADER_SABRINA, SaffronCity_Gym_Text_SabrinaIntro, SaffronCity_Gym_Text_SabrinaDefeat, SaffronCity_Gym_EventScript_DefeatedSabrina, NO_MUSIC
+ goto_if_unset FLAG_GOT_TM04_FROM_SABRINA, SaffronCity_Gym_EventScript_GiveTM04
+ msgbox SaffronCity_Gym_Text_ExplainTM04
+ release
+ end
+
+SaffronCity_Gym_EventScript_DefeatedSabrina::
+ famechecker FAMECHECKER_SABRINA, 2
+ famechecker FAMECHECKER_SABRINA, 3
+ clearflag FLAG_HIDE_SAFFRON_CITY_POKECENTER_SABRINA_JOURNALS
+ setflag FLAG_DEFEATED_SABRINA
+ setflag FLAG_BADGE06_GET
+ set_gym_trainers_frlg 6
+ goto SaffronCity_Gym_EventScript_GiveTM04
+ end
+
+SaffronCity_Gym_EventScript_GiveTM04::
+ msgbox SaffronCity_Gym_Text_ExplainMarshBadgeTakeThis
+ checkitemspace ITEM_TM04
+ goto_if_eq VAR_RESULT, FALSE, SaffronCity_Gym_EventScript_NoRoomForTM04
+ giveitem_msg SaffronCity_Gym_Text_ReceivedTM04FromSabrina, ITEM_TM04
+ setflag FLAG_GOT_TM04_FROM_SABRINA
+ msgbox SaffronCity_Gym_Text_SabrinaPostBattle
+ release
+ end
+
+SaffronCity_Gym_EventScript_NoRoomForTM04::
+ msgbox SaffronCity_Gym_Text_BagFullOfOtherItems
+ release
+ end
+
+SaffronCity_Gym_EventScript_Johan::
+ trainerbattle_single TRAINER_PSYCHIC_JOHAN, SaffronCity_Gym_Text_JohanIntro, SaffronCity_Gym_Text_JohanDefeat
+ msgbox SaffronCity_Gym_Text_JohanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SaffronCity_Gym_EventScript_Tyron::
+ trainerbattle_single TRAINER_PSYCHIC_TYRON, SaffronCity_Gym_Text_TyronIntro, SaffronCity_Gym_Text_TyronDefeat
+ famechecker FAMECHECKER_SABRINA, 5
+ msgbox SaffronCity_Gym_Text_TyronPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SaffronCity_Gym_EventScript_Cameron::
+ trainerbattle_single TRAINER_PSYCHIC_CAMERON, SaffronCity_Gym_Text_CameronIntro, SaffronCity_Gym_Text_CameronDefeat
+ msgbox SaffronCity_Gym_Text_CameronPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SaffronCity_Gym_EventScript_Preston::
+ trainerbattle_single TRAINER_PSYCHIC_PRESTON, SaffronCity_Gym_Text_PrestonIntro, SaffronCity_Gym_Text_PrestonDefeat
+ msgbox SaffronCity_Gym_Text_PrestonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SaffronCity_Gym_EventScript_Amanda::
+ trainerbattle_single TRAINER_CHANNELER_AMANDA, SaffronCity_Gym_Text_AmandaIntro, SaffronCity_Gym_Text_AmandaDefeat
+ msgbox SaffronCity_Gym_Text_AmandaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SaffronCity_Gym_EventScript_Stacy::
+ trainerbattle_single TRAINER_CHANNELER_STACY, SaffronCity_Gym_Text_StacyIntro, SaffronCity_Gym_Text_StacyDefeat
+ msgbox SaffronCity_Gym_Text_StacyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SaffronCity_Gym_EventScript_Tasha::
+ trainerbattle_single TRAINER_CHANNELER_TASHA, SaffronCity_Gym_Text_TashaIntro, SaffronCity_Gym_Text_TashaDefeat
+ msgbox SaffronCity_Gym_Text_TashaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SaffronCity_Gym_EventScript_GymGuy::
+ lock
+ faceplayer
+ goto_if_set FLAG_DEFEATED_SABRINA, SaffronCity_Gym_EventScript_GymGuyPostVictory
+ msgbox SaffronCity_Gym_Text_GymGuyAdvice
+ release
+ end
+
+SaffronCity_Gym_EventScript_GymGuyPostVictory::
+ msgbox SaffronCity_Gym_Text_GymGuyPostVictory
+ release
+ end
+
+SaffronCity_Gym_EventScript_GymStatue::
+ lockall
+ goto_if_set FLAG_BADGE06_GET, SaffronCity_Gym_EventScript_GymStatuePostVictory
+ msgbox SaffronCity_Gym_Text_GymStatue
+ releaseall
+ end
+
+SaffronCity_Gym_EventScript_GymStatuePostVictory::
+ msgbox SaffronCity_Gym_Text_GymStatuePlayerWon
+ releaseall
+ end
+
+SaffronCity_Gym_Text_SabrinaIntro::
+ .string "I had a vision of your arrival.\p"
+ .string "I have had psychic powers since\n"
+ .string "I was a child.\p"
+ .string "It started when a spoon I\n"
+ .string "carelessly tossed, bent.\p"
+ .string "I dislike battling, but if you wish,\n"
+ .string "I will show you my powers!{PLAY_BGM}{MUS_RG_ENCOUNTER_GYM_LEADER}$"
+
+SaffronCity_Gym_Text_SabrinaDefeat::
+ .string "This loss shocks me!\n"
+ .string "But, a loss is a loss.\p"
+ .string "I admit, I didn't work hard enough\n"
+ .string "to win.\p"
+ .string "Your victory has earned you the\n"
+ .string "MARSHBADGE.$"
+
+SaffronCity_Gym_Text_SabrinaPostBattle::
+ .string "Psychic power isn't something that\n"
+ .string "only a few people have.\p"
+ .string "Everyone has psychic power.\n"
+ .string "People just don't realize it.$"
+
+SaffronCity_Gym_Text_ExplainMarshBadgeTakeThis::
+ .string "The MARSHBADGE makes POKéMON up\n"
+ .string "to Lv. 70 obey you.\p"
+ .string "Stronger POKéMON will become wild,\n"
+ .string "ignoring your orders in battle.\p"
+ .string "Just don't raise your POKéMON too\n"
+ .string "much to avoid that problem.\p"
+ .string "Wait, please take this TM with you.$"
+
+SaffronCity_Gym_Text_ReceivedTM04FromSabrina::
+ .string "{PLAYER} received TM04 from\n"
+ .string "SABRINA.$"
+
+SaffronCity_Gym_Text_ExplainTM04::
+ .string "TM04 is CALM MIND.\p"
+ .string "It makes the POKéMON concentrate\n"
+ .string "to raise both SP. ATK and SP. DEF.$"
+
+SaffronCity_Gym_Text_BagFullOfOtherItems::
+ .string "Your BAG is full of other items.$"
+
+SaffronCity_Gym_Text_AmandaIntro::
+ .string "SABRINA is far younger than I,\n"
+ .string "but she has earned my respect.$"
+
+SaffronCity_Gym_Text_AmandaDefeat::
+ .string "Not good enough!$"
+
+SaffronCity_Gym_Text_AmandaPostBattle::
+ .string "In a battle of equals, the one\n"
+ .string "with the stronger will wins.\p"
+ .string "If you wish to beat SABRINA, focus\n"
+ .string "and will yourself to victory.$"
+
+SaffronCity_Gym_Text_JohanIntro::
+ .string "Does our unseen power scare you?$"
+
+SaffronCity_Gym_Text_JohanDefeat::
+ .string "I never foresaw this!$"
+
+SaffronCity_Gym_Text_JohanPostBattle::
+ .string "PSYCHIC POKéMON fear only ghosts\n"
+ .string "and bugs!$"
+
+SaffronCity_Gym_Text_StacyIntro::
+ .string "POKéMON take on the appearance of\n"
+ .string "their TRAINERS.\p"
+ .string "Your POKéMON must be tough, then!$"
+
+SaffronCity_Gym_Text_StacyDefeat::
+ .string "I knew it!$"
+
+SaffronCity_Gym_Text_StacyPostBattle::
+ .string "I have much to learn still…\p"
+ .string "I must master PSYCHIC and teach it\n"
+ .string "to my POKéMON…$"
+
+SaffronCity_Gym_Text_TyronIntro::
+ .string "You understand, don't you?\p"
+ .string "That power alone isn't enough to\n"
+ .string "win in the world of POKéMON?$"
+
+SaffronCity_Gym_Text_TyronDefeat::
+ .string "I don't believe this!$"
+
+SaffronCity_Gym_Text_TyronPostBattle::
+ .string "SABRINA just wiped out the KARATE\n"
+ .string "MASTER next door.$"
+
+SaffronCity_Gym_Text_TashaIntro::
+ .string "You and I, our POKéMON shall\n"
+ .string "battle!$"
+
+SaffronCity_Gym_Text_TashaDefeat::
+ .string "I lost after all!$"
+
+SaffronCity_Gym_Text_TashaPostBattle::
+ .string "I knew that this was going to take\n"
+ .string "place.$"
+
+SaffronCity_Gym_Text_CameronIntro::
+ .string "SABRINA is young, but she's also\n"
+ .string "our highly skilled LEADER.\p"
+ .string "You won't reach her easily!$"
+
+SaffronCity_Gym_Text_CameronDefeat::
+ .string "Ow!\n"
+ .string "Down and out!$"
+
+SaffronCity_Gym_Text_CameronPostBattle::
+ .string "There used to be two POKéMON GYMS\n"
+ .string "in SAFFRON.\p"
+ .string "The FIGHTING DOJO next door lost\n"
+ .string "its GYM status, though.\p"
+ .string "We simply creamed them when we\n"
+ .string "decided to have just one GYM.$"
+
+SaffronCity_Gym_Text_PrestonIntro::
+ .string "SAFFRON POKéMON GYM is famous for\n"
+ .string "training psychics.\p"
+ .string "You want to see SABRINA, don't\n"
+ .string "you? I can tell!$"
+
+SaffronCity_Gym_Text_PrestonDefeat::
+ .string "Arrrgh!$"
+
+SaffronCity_Gym_Text_PrestonPostBattle::
+ .string "That's right! I used telepathy to\n"
+ .string "read your mind!$"
+
+SaffronCity_Gym_Text_GymGuyAdvice::
+ .string "Yo!\n"
+ .string "Champ in the making!\p"
+ .string "SABRINA's POKéMON use psychic\n"
+ .string "power instead of force.\p"
+ .string "FIGHTING POKéMON are especially\n"
+ .string "weak against PSYCHIC POKéMON.\p"
+ .string "They'll get destroyed before they\n"
+ .string "can even aim a punch!$"
+
+SaffronCity_Gym_Text_GymGuyPostVictory::
+ .string "Psychic power, huh?\p"
+ .string "If I had that, I'd make a bundle\n"
+ .string "at the slots!$"
+
+SaffronCity_Gym_Text_GymStatue::
+ .string "SAFFRON POKéMON GYM\n"
+ .string "LEADER: SABRINA\p"
+ .string "WINNING TRAINERS:\n"
+ .string "{RIVAL}$"
+
+SaffronCity_Gym_Text_GymStatuePlayerWon::
+ .string "SAFFRON POKéMON GYM\n"
+ .string "LEADER: SABRINA\p"
+ .string "WINNING TRAINERS:\n"
+ .string "{RIVAL}, {PLAYER}$"
+
diff --git a/data/maps/SaffronCity_House_Frlg/map.json b/data/maps/SaffronCity_House_Frlg/map.json
new file mode 100644
index 000000000000..7c07dd8b5292
--- /dev/null
+++ b/data/maps/SaffronCity_House_Frlg/map.json
@@ -0,0 +1,110 @@
+{
+ "id": "MAP_SAFFRON_CITY_HOUSE",
+ "name": "SaffronCity_House_Frlg",
+ "layout": "LAYOUT_HOUSE5_FRLG",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SAFFRON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PIDGEY",
+ "x": 0,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 4,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_House_EventScript_Pidgey",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_House_EventScript_Lass",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_House_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLIPBOARD",
+ "x": 5,
+ "y": 4,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 4,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SaffronCity_House_EventScript_Letter"
+ }
+ ]
+}
diff --git a/data/maps/SaffronCity_House_Frlg/scripts.inc b/data/maps/SaffronCity_House_Frlg/scripts.inc
new file mode 100644
index 000000000000..706a9b1f6c4c
--- /dev/null
+++ b/data/maps/SaffronCity_House_Frlg/scripts.inc
@@ -0,0 +1,45 @@
+SaffronCity_House_Frlg_MapScripts::
+ .byte 0
+
+SaffronCity_House_EventScript_Lass::
+ msgbox SaffronCity_House_Text_DontLookAtMyLetter, MSGBOX_NPC
+ end
+
+SaffronCity_House_EventScript_Youngster::
+ msgbox SaffronCity_House_Text_GettingCopycatPokeDoll, MSGBOX_NPC
+ end
+
+SaffronCity_House_EventScript_Pidgey::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_PIDGEY, CRY_MODE_NORMAL
+ msgbox SaffronCity_House_Text_Pidgey
+ waitmoncry
+ release
+ end
+
+SaffronCity_House_EventScript_Letter::
+ msgbox SaffronCity_House_Text_ExplainPPUp, MSGBOX_SIGN
+ end
+
+SaffronCity_House_Text_DontLookAtMyLetter::
+ .string "…Thank you for writing.\n"
+ .string "I hope to see you soon!\p"
+ .string "…Hey!\n"
+ .string "Don't look at my letter!$"
+
+SaffronCity_House_Text_Pidgey::
+ .string "PIDGEY: Kurukkoo!$"
+
+SaffronCity_House_Text_GettingCopycatPokeDoll::
+ .string "The COPYCAT is cute!\n"
+ .string "I'm getting her a POKé DOLL.$"
+
+SaffronCity_House_Text_ExplainPPUp::
+ .string "I was given a PP UP as a gift.\p"
+ .string "It's used to increase the PP of\n"
+ .string "a POKéMON's move.\p"
+ .string "I should use it on a powerful move\n"
+ .string "with only a few PP.$"
+
diff --git a/data/maps/SaffronCity_Mart_Frlg/map.json b/data/maps/SaffronCity_Mart_Frlg/map.json
new file mode 100644
index 000000000000..6869dc2f75ab
--- /dev/null
+++ b/data/maps/SaffronCity_Mart_Frlg/map.json
@@ -0,0 +1,87 @@
+{
+ "id": "MAP_SAFFRON_CITY_MART",
+ "name": "SaffronCity_Mart_Frlg",
+ "layout": "LAYOUT_MART_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SAFFRON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 2,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_Mart_EventScript_Clerk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 1,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_Mart_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 9,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_Mart_EventScript_Lass",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "5"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SaffronCity_Mart_Frlg/scripts.inc b/data/maps/SaffronCity_Mart_Frlg/scripts.inc
new file mode 100644
index 000000000000..d972b50876b3
--- /dev/null
+++ b/data/maps/SaffronCity_Mart_Frlg/scripts.inc
@@ -0,0 +1,43 @@
+SaffronCity_Mart_Frlg_MapScripts::
+ .byte 0
+
+SaffronCity_Mart_EventScript_Lass::
+ msgbox SaffronCity_Mart_Text_ReviveIsCostly, MSGBOX_NPC
+ end
+
+SaffronCity_Mart_EventScript_Youngster::
+ msgbox SaffronCity_Mart_Text_MaxRepelMoreEffectiveThanSuper, MSGBOX_NPC
+ end
+
+SaffronCity_Mart_EventScript_Clerk::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart SaffronCity_Mart_Items
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+SaffronCity_Mart_Items::
+ .2byte ITEM_GREAT_BALL
+ .2byte ITEM_HYPER_POTION
+ .2byte ITEM_REVIVE
+ .2byte ITEM_FULL_HEAL
+ .2byte ITEM_ESCAPE_ROPE
+ .2byte ITEM_MAX_REPEL
+ .2byte ITEM_NONE
+ release
+ end
+
+SaffronCity_Mart_Text_MaxRepelMoreEffectiveThanSuper::
+ .string "MAX REPEL keeps weaker POKéMON\n"
+ .string "from appearing.\p"
+ .string "MAX REPEL stays effective longer\n"
+ .string "than SUPER REPEL.$"
+
+SaffronCity_Mart_Text_ReviveIsCostly::
+ .string "REVIVE is costly, but it revives\n"
+ .string "fainted POKéMON!$"
+
diff --git a/data/maps/SaffronCity_MrPsychicsHouse_Frlg/map.json b/data/maps/SaffronCity_MrPsychicsHouse_Frlg/map.json
new file mode 100644
index 000000000000..1835073d61c4
--- /dev/null
+++ b/data/maps/SaffronCity_MrPsychicsHouse_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_SAFFRON_CITY_MR_PSYCHICS_HOUSE",
+ "name": "SaffronCity_MrPsychicsHouse_Frlg",
+ "layout": "LAYOUT_HOUSE5_FRLG",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SAFFRON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_MrPsychicsHouse_EventScript_MrPsychic",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "7"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SaffronCity_MrPsychicsHouse_Frlg/scripts.inc b/data/maps/SaffronCity_MrPsychicsHouse_Frlg/scripts.inc
new file mode 100644
index 000000000000..fc9815279529
--- /dev/null
+++ b/data/maps/SaffronCity_MrPsychicsHouse_Frlg/scripts.inc
@@ -0,0 +1,44 @@
+SaffronCity_MrPsychicsHouse_Frlg_MapScripts::
+ .byte 0
+
+SaffronCity_MrPsychicsHouse_EventScript_MrPsychic::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_TM29_FROM_MR_PSYCHIC, SaffronCity_MrPsychicsHouse_EventScript_AlreadyGotTM29
+ msgbox SaffronCity_MrPsychicsHouse_Text_YouWantedThis
+ checkitemspace ITEM_TM29
+ goto_if_eq VAR_RESULT, FALSE, SaffronCity_MrPsychicsHouse_EventScript_NoRoomForTM29
+ giveitem_msg SaffronCity_MrPsychicsHouse_Text_ReceivedTM29FromMrPsychic, ITEM_TM29
+ msgbox SaffronCity_MrPsychicsHouse_Text_ExplainTM29
+ setflag FLAG_GOT_TM29_FROM_MR_PSYCHIC
+ release
+ end
+
+SaffronCity_MrPsychicsHouse_EventScript_NoRoomForTM29::
+ msgbox SaffronCity_MrPsychicsHouse_Text_YouveNoRoom
+ release
+ end
+
+SaffronCity_MrPsychicsHouse_EventScript_AlreadyGotTM29::
+ msgbox SaffronCity_MrPsychicsHouse_Text_ExplainTM29
+ release
+ end
+
+SaffronCity_MrPsychicsHouse_Text_YouWantedThis::
+ .string "…Wait! Don't say a word!\p"
+ .string "You wanted this!$"
+
+SaffronCity_MrPsychicsHouse_Text_ReceivedTM29FromMrPsychic::
+ .string "{PLAYER} received TM29\n"
+ .string "from MR. PSYCHIC.$"
+
+SaffronCity_MrPsychicsHouse_Text_ExplainTM29::
+ .string "You already know, don't you?\n"
+ .string "TM29 is PSYCHIC.\p"
+ .string "It's an attack that may also lower\n"
+ .string "the target's special stats.$"
+
+SaffronCity_MrPsychicsHouse_Text_YouveNoRoom::
+ .string "Where do you plan to put this?\n"
+ .string "You've no room.$"
+
diff --git a/data/maps/SaffronCity_PokemonCenter_1F_Frlg/map.json b/data/maps/SaffronCity_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..3e8ea5b71e45
--- /dev/null
+++ b/data/maps/SaffronCity_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,137 @@
+{
+ "id": "MAP_SAFFRON_CITY_POKEMON_CENTER_1F",
+ "name": "SaffronCity_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SAFFRON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_SAFFRON_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 14,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_PokemonCenter_1F_EventScript_Gentleman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_3_FRLG",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_PokemonCenter_1F_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 9,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_PokemonCenter_1F_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_PokemonCenter_1F_EventScript_PokemonJournalSabrina",
+ "flag": "FLAG_HIDE_SAFFRON_CITY_POKECENTER_SABRINA_JOURNALS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 3,
+ "y": 1,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_PokemonCenter_1F_EventScript_PokemonJournalSabrina",
+ "flag": "FLAG_HIDE_SAFFRON_CITY_POKECENTER_SABRINA_JOURNALS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 8,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_SAFFRON_CITY_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SaffronCity_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/SaffronCity_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..e86d0ac34bbc
--- /dev/null
+++ b/data/maps/SaffronCity_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,57 @@
+SaffronCity_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SaffronCity_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ .byte 0
+
+SaffronCity_PokemonCenter_1F_OnTransition::
+ setrespawn HEAL_LOCATION_SAFFRON_CITY
+ end
+
+SaffronCity_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+SaffronCity_PokemonCenter_1F_EventScript_Gentleman::
+ msgbox SaffronCity_PokemonCenter_1F_Text_SilphCoVictimOfFame, MSGBOX_NPC
+ end
+
+SaffronCity_PokemonCenter_1F_EventScript_Woman::
+ msgbox SaffronCity_PokemonCenter_1F_Text_GrowthRatesDifferBySpecies, MSGBOX_NPC
+ end
+
+SaffronCity_PokemonCenter_1F_EventScript_Youngster::
+ lock
+ faceplayer
+ goto_if_eq VAR_MAP_SCENE_SILPH_CO_11F, 1, SaffronCity_PokemonCenter_1F_EventScript_YoungsterRocketsGone
+ msgbox SaffronCity_PokemonCenter_1F_Text_GreatIfEliteFourCameBeatRockets
+ release
+ end
+
+SaffronCity_PokemonCenter_1F_EventScript_YoungsterRocketsGone::
+ msgbox SaffronCity_PokemonCenter_1F_Text_TeamRocketTookOff
+ release
+ end
+
+SaffronCity_PokemonCenter_1F_Text_GrowthRatesDifferBySpecies::
+ .string "POKéMON growth rates differ from\n"
+ .string "species to species.$"
+
+SaffronCity_PokemonCenter_1F_Text_SilphCoVictimOfFame::
+ .string "SILPH CO. is widely known to all.\p"
+ .string "It's a victim of its own fame - it\n"
+ .string "attracted TEAM ROCKET.$"
+
+SaffronCity_PokemonCenter_1F_Text_GreatIfEliteFourCameBeatRockets::
+ .string "Sigh…\n"
+ .string "Wouldn't this be great?\p"
+ .string "If the ELITE FOUR came and\n"
+ .string "stomped TEAM ROCKET?$"
+
+SaffronCity_PokemonCenter_1F_Text_TeamRocketTookOff::
+ .string "TEAM ROCKET took off!\n"
+ .string "We can go out safely again!\l"
+ .string "That's great!$"
+
diff --git a/data/maps/SaffronCity_PokemonCenter_2F_Frlg/map.json b/data/maps/SaffronCity_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..5803d7fb3d23
--- /dev/null
+++ b/data/maps/SaffronCity_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_SAFFRON_CITY_POKEMON_CENTER_2F",
+ "name": "SaffronCity_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SAFFRON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_SAFFRON_CITY_POKEMON_CENTER_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SaffronCity_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/SaffronCity_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..bd8a36498071
--- /dev/null
+++ b/data/maps/SaffronCity_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+SaffronCity_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+SaffronCity_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+SaffronCity_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+SaffronCity_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/SaffronCity_PokemonTrainerFanClub_Frlg/map.json b/data/maps/SaffronCity_PokemonTrainerFanClub_Frlg/map.json
new file mode 100644
index 000000000000..b8396f238efb
--- /dev/null
+++ b/data/maps/SaffronCity_PokemonTrainerFanClub_Frlg/map.json
@@ -0,0 +1,179 @@
+{
+ "id": "MAP_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB",
+ "name": "SaffronCity_PokemonTrainerFanClub_Frlg",
+ "layout": "LAYOUT_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SAFFRON_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_TRAINER_FAN_CLUB_BATTLE_GIRL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BATTLE_GIRL",
+ "x": 7,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_PokemonTrainerFanClub_EventScript_BattleGirl",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_SAFFRON_CITY_TRAINER_FAN_CLUB_LITTLE_GIRL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 6,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_PokemonTrainerFanClub_EventScript_LittleGirl",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_TRAINER_FAN_CLUB_YOUNGSTER",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 3,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_PokemonTrainerFanClub_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_TRAINER_FAN_CLUB_GENTLEMAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 3,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_PokemonTrainerFanClub_EventScript_Gentleman",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_SAFFRON_CITY_TRAINER_FAN_CLUB_WOMAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_3_FRLG",
+ "x": 9,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_PokemonTrainerFanClub_EventScript_Woman",
+ "flag": "FLAG_HIDE_SAFFRON_FAN_CLUB_WOMAN"
+ },
+ {
+ "local_id": "LOCALID_TRAINER_FAN_CLUB_ROCKER",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 7,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_PokemonTrainerFanClub_EventScript_Rocker",
+ "flag": "FLAG_HIDE_SAFFRON_FAN_CLUB_ROCKER"
+ },
+ {
+ "local_id": "LOCALID_TRAINER_FAN_CLUB_BEAUTY",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY_FRLG",
+ "x": 9,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_PokemonTrainerFanClub_EventScript_Beauty",
+ "flag": "FLAG_HIDE_SAFFRON_FAN_CLUB_BEAUTY"
+ },
+ {
+ "local_id": "LOCALID_TRAINER_FAN_CLUB_BLACK_BELT",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 5,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_PokemonTrainerFanClub_EventScript_BlackBelt",
+ "flag": "FLAG_HIDE_SAFFRON_FAN_CLUB_BLACKBELT"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_PokemonTrainerFanClub_EventScript_PokemonJournalBruno",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 3,
+ "y": 1,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SaffronCity_PokemonTrainerFanClub_EventScript_PokemonJournalBruno",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "14"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SaffronCity_PokemonTrainerFanClub_Frlg/scripts.inc b/data/maps/SaffronCity_PokemonTrainerFanClub_Frlg/scripts.inc
new file mode 100644
index 000000000000..eab83855bd61
--- /dev/null
+++ b/data/maps/SaffronCity_PokemonTrainerFanClub_Frlg/scripts.inc
@@ -0,0 +1,675 @@
+SaffronCity_PokemonTrainerFanClub_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, SaffronCity_PokemonTrainerFanClub_OnFrame
+ map_script MAP_SCRIPT_ON_TRANSITION, SaffronCity_PokemonTrainerFanClub_OnTransition
+ .byte 0
+
+SaffronCity_PokemonTrainerFanClub_OnFrame::
+ map_script_2 VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB, 1, SaffronCity_PokemonTrainerFanClub_EventScript_MeetFirstFans
+ .2byte 0
+
+SaffronCity_PokemonTrainerFanClub_EventScript_MeetFirstFans::
+ lockall
+ textcolor NPC_TEXT_COLOR_FEMALE
+ applymovement LOCALID_TRAINER_FAN_CLUB_BATTLE_GIRL, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ playse SE_PIN
+ applymovement LOCALID_TRAINER_FAN_CLUB_BATTLE_GIRL, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_TRAINER_FAN_CLUB_BATTLE_GIRL, Common_Movement_Delay48
+ waitmovement 0
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_HuhYou
+ closemessage
+ applymovement LOCALID_TRAINER_FAN_CLUB_BATTLE_GIRL, SaffronCity_PokemonTrainerFanClub_Movement_FanApproachPlayer
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_YourePlayerWereYourFansNow
+ setvar VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB, 2
+ releaseall
+ end
+
+SaffronCity_PokemonTrainerFanClub_Movement_FanApproachPlayer::
+ delay_16
+ delay_8
+ walk_down
+ delay_16
+ walk_down
+ delay_8
+ walk_left
+ step_end
+
+SaffronCity_PokemonTrainerFanClub_OnTransition::
+ goto_if_eq VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB, 1, SaffronCity_PokemonTrainerFanClub_EventScript_SetMemberPosForFirstMeeting
+ goto_if_eq VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB, 2, SaffronCity_PokemonTrainerFanClub_EventScript_UpdateFanMemberPositions
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_UpdateFanMemberPositions::
+ special Script_TryLoseFansFromPlayTime
+ setvar VAR_0x8004, FANCLUB_MEMBER1
+ specialvar VAR_RESULT, Script_IsFanClubMemberFanOfPlayer
+ call_if_eq VAR_RESULT, FALSE, SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember1ToFarTable
+ setvar VAR_0x8004, FANCLUB_MEMBER2
+ specialvar VAR_RESULT, Script_IsFanClubMemberFanOfPlayer
+ call_if_eq VAR_RESULT, FALSE, SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember2ToFarTable
+ setvar VAR_0x8004, FANCLUB_MEMBER3
+ specialvar VAR_RESULT, Script_IsFanClubMemberFanOfPlayer
+ call_if_eq VAR_RESULT, FALSE, SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember3ToFarTable
+ setvar VAR_0x8004, FANCLUB_MEMBER4
+ specialvar VAR_RESULT, Script_IsFanClubMemberFanOfPlayer
+ call_if_eq VAR_RESULT, FALSE, SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember4ToFarTable
+ setvar VAR_0x8004, FANCLUB_MEMBER5
+ specialvar VAR_RESULT, Script_IsFanClubMemberFanOfPlayer
+ call_if_eq VAR_RESULT, FALSE, SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember5ToFarTable
+ setvar VAR_0x8004, FANCLUB_MEMBER6
+ specialvar VAR_RESULT, Script_IsFanClubMemberFanOfPlayer
+ call_if_eq VAR_RESULT, FALSE, SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember6ToFarTable
+ setvar VAR_0x8004, FANCLUB_MEMBER7
+ specialvar VAR_RESULT, Script_IsFanClubMemberFanOfPlayer
+ call_if_eq VAR_RESULT, FALSE, SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember7ToFarTable
+ setvar VAR_0x8004, FANCLUB_MEMBER8
+ specialvar VAR_RESULT, Script_IsFanClubMemberFanOfPlayer
+ call_if_eq VAR_RESULT, FALSE, SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember8ToFarTable
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember1ToFarTable::
+ setobjectxyperm LOCALID_TRAINER_FAN_CLUB_BATTLE_GIRL, 5, 2
+ setobjectmovementtype LOCALID_TRAINER_FAN_CLUB_BATTLE_GIRL, MOVEMENT_TYPE_FACE_UP
+ return
+
+SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember2ToFarTable::
+ setobjectxyperm LOCALID_TRAINER_FAN_CLUB_YOUNGSTER, 7, 4
+ setobjectmovementtype LOCALID_TRAINER_FAN_CLUB_YOUNGSTER, MOVEMENT_TYPE_FACE_LEFT
+ return
+
+SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember3ToFarTable::
+ setobjectxyperm LOCALID_TRAINER_FAN_CLUB_GENTLEMAN, 2, 2
+ setobjectmovementtype LOCALID_TRAINER_FAN_CLUB_GENTLEMAN, MOVEMENT_TYPE_FACE_UP
+ return
+
+SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember4ToFarTable::
+ setobjectxyperm LOCALID_TRAINER_FAN_CLUB_LITTLE_GIRL, 3, 4
+ setobjectmovementtype LOCALID_TRAINER_FAN_CLUB_LITTLE_GIRL, MOVEMENT_TYPE_FACE_RIGHT
+ return
+
+SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember5ToFarTable::
+ setobjectxyperm LOCALID_TRAINER_FAN_CLUB_ROCKER, 4, 6
+ setobjectmovementtype LOCALID_TRAINER_FAN_CLUB_ROCKER, MOVEMENT_TYPE_FACE_UP
+ return
+
+SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember6ToFarTable::
+ setobjectxyperm LOCALID_TRAINER_FAN_CLUB_WOMAN, 10, 3
+ setobjectmovementtype LOCALID_TRAINER_FAN_CLUB_WOMAN, MOVEMENT_TYPE_FACE_UP
+ return
+
+SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember7ToFarTable::
+ setobjectxyperm LOCALID_TRAINER_FAN_CLUB_BEAUTY, 7, 5
+ setobjectmovementtype LOCALID_TRAINER_FAN_CLUB_BEAUTY, MOVEMENT_TYPE_FACE_LEFT
+ return
+
+SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember8ToFarTable::
+ setobjectxyperm LOCALID_TRAINER_FAN_CLUB_BLACK_BELT, 9, 6
+ setobjectmovementtype LOCALID_TRAINER_FAN_CLUB_BLACK_BELT, MOVEMENT_TYPE_FACE_LEFT
+ return
+
+SaffronCity_PokemonTrainerFanClub_EventScript_SetMemberPosForFirstMeeting::
+ call SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember4ToFarTable
+ call SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember5ToFarTable
+ call SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember6ToFarTable
+ call SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember7ToFarTable
+ call SaffronCity_PokemonTrainerFanClub_EventScript_MoveMember8ToFarTable
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_BattleGirl::
+ lock
+ faceplayer
+ setvar VAR_0x8004, FANCLUB_MEMBER1
+ special Script_BufferFanClubTrainerName
+ goto_if_eq VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB, 0, SaffronCity_PokemonTrainerFanClub_EventScript_BattleGirlPlayerNotChampion
+ specialvar VAR_RESULT, Script_IsFanClubMemberFanOfPlayer
+ goto_if_eq VAR_RESULT, TRUE, SaffronCity_PokemonTrainerFanClub_EventScript_BattleGirlPlayersFan
+ specialvar VAR_RESULT, Script_GetNumFansOfPlayerInTrainerFanClub
+ goto_if_eq VAR_RESULT, (NUM_TRAINER_FAN_CLUB_MEMBERS - 1), SaffronCity_PokemonTrainerFanClub_EventScript_BattleGirlOnlyNonFan
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_WasYourFanNotAnymore
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_BattleGirlPlayersFan::
+ specialvar VAR_RESULT, Script_GetNumFansOfPlayerInTrainerFanClub
+ goto_if_eq VAR_RESULT, 1, SaffronCity_PokemonTrainerFanClub_EventScript_BattleGirlOnlyFan
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_AlwaysCheerForYou
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_BattleGirlOnlyFan::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_IllAlwaysBelieveInYou
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_BattleGirlOnlyNonFan::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_EveryonesYourFanButICantBe
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_BattleGirlPlayerNotChampion::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_TrainersCoolWhenBattling
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_LittleGirl::
+ lock
+ faceplayer
+ setvar VAR_0x8004, FANCLUB_MEMBER4
+ special Script_BufferFanClubTrainerName
+ goto_if_eq VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB, 0, SaffronCity_PokemonTrainerFanClub_EventScript_LittleGirlPlayerNotChampion
+ specialvar VAR_RESULT, Script_IsFanClubMemberFanOfPlayer
+ goto_if_eq VAR_RESULT, TRUE, SaffronCity_PokemonTrainerFanClub_EventScript_LittleGirlPlayersFan
+ specialvar VAR_RESULT, Script_GetNumFansOfPlayerInTrainerFanClub
+ goto_if_eq VAR_RESULT, (NUM_TRAINER_FAN_CLUB_MEMBERS - 1), SaffronCity_PokemonTrainerFanClub_EventScript_LittleGirlOnlyNonFan
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_WantToBeLikeSabrina
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_LittleGirlPlayersFan::
+ specialvar VAR_RESULT, Script_GetNumFansOfPlayerInTrainerFanClub
+ goto_if_eq VAR_RESULT, 1, SaffronCity_PokemonTrainerFanClub_EventScript_LittleGirlOnlyFan
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_WantToBeLikeYouOneDay
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_LittleGirlOnlyFan::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_EveryoneButMeStoppedBeingYourFan
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_LittleGirlOnlyNonFan::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_WontStopBeingSabrinasFan
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_LittleGirlPlayerNotChampion::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_CanIBecomeCoolTrainerOneDay
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_Youngster::
+ lock
+ faceplayer
+ setvar VAR_0x8004, FANCLUB_MEMBER2
+ special Script_BufferFanClubTrainerName
+ goto_if_eq VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB, 0, SaffronCity_PokemonTrainerFanClub_EventScript_YoungsterPlayerNotChampion
+ specialvar VAR_RESULT, Script_IsFanClubMemberFanOfPlayer
+ goto_if_eq VAR_RESULT, TRUE, SaffronCity_PokemonTrainerFanClub_EventScript_YoungsterPlayersFan
+ specialvar VAR_RESULT, Script_GetNumFansOfPlayerInTrainerFanClub
+ goto_if_eq VAR_RESULT, (NUM_TRAINER_FAN_CLUB_MEMBERS - 1), SaffronCity_PokemonTrainerFanClub_EventScript_YoungsterOnlyNonFan
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_BrocksMyHero
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_YoungsterPlayersFan::
+ specialvar VAR_RESULT, Script_GetNumFansOfPlayerInTrainerFanClub
+ goto_if_eq VAR_RESULT, 1, SaffronCity_PokemonTrainerFanClub_EventScript_YoungsterOnlyFan
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_CanYouAutographShorts
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_YoungsterOnlyFan::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_CountingOnYou
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_YoungsterOnlyNonFan::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_BrocksFanToBitterEnd
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_YoungsterPlayerNotChampion::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_BrocksLastWordOnCool
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_Gentleman::
+ lock
+ faceplayer
+ setvar VAR_0x8004, FANCLUB_MEMBER3
+ special Script_BufferFanClubTrainerName
+ goto_if_eq VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB, 0, SaffronCity_PokemonTrainerFanClub_EventScript_GentlemanPlayerNotChampion
+ specialvar VAR_RESULT, Script_IsFanClubMemberFanOfPlayer
+ goto_if_eq VAR_RESULT, TRUE, SaffronCity_PokemonTrainerFanClub_EventScript_GentlemanPlayersFan
+ specialvar VAR_RESULT, Script_GetNumFansOfPlayerInTrainerFanClub
+ goto_if_eq VAR_RESULT, (NUM_TRAINER_FAN_CLUB_MEMBERS - 1), SaffronCity_PokemonTrainerFanClub_EventScript_GentlemanOnlyNonFan
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_HmmAndYouAre
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_GentlemanPlayersFan::
+ specialvar VAR_RESULT, Script_GetNumFansOfPlayerInTrainerFanClub
+ goto_if_eq VAR_RESULT, 1, SaffronCity_PokemonTrainerFanClub_EventScript_GentlemanOnlyFan
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_HadPleasureOfWatchingYouBattle
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_GentlemanOnlyFan::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_NeverSeenTrainerOfYourMagnificence
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_GentlemanOnlyNonFan::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_YouveStillAWaysToGo
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_GentlemanPlayerNotChampion::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_YoullBeTalkedAboutIfYouKeepWinning
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_Woman::
+ lock
+ faceplayer
+ setvar VAR_0x8004, FANCLUB_MEMBER6
+ special Script_BufferFanClubTrainerName
+ specialvar VAR_RESULT, Script_IsFanClubMemberFanOfPlayer
+ goto_if_eq VAR_RESULT, TRUE, SaffronCity_PokemonTrainerFanClub_EventScript_WomanPlayersFan
+ specialvar VAR_RESULT, Script_GetNumFansOfPlayerInTrainerFanClub
+ goto_if_eq VAR_RESULT, (NUM_TRAINER_FAN_CLUB_MEMBERS - 1), SaffronCity_PokemonTrainerFanClub_EventScript_WomanOnlyNonFan
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_TrainerHasBeenOnFire
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_WomanPlayersFan::
+ specialvar VAR_RESULT, Script_GetNumFansOfPlayerInTrainerFanClub
+ goto_if_eq VAR_RESULT, 1, SaffronCity_PokemonTrainerFanClub_EventScript_WomanOnlyFan
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_AdoreWayYouBattle
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_WomanOnlyFan::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_ImYourNumberOneFan
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_WomanOnlyNonFan::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_EveryoneTalksAboutYou
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_Rocker::
+ lock
+ faceplayer
+ setvar VAR_0x8004, FANCLUB_MEMBER5
+ special Script_BufferFanClubTrainerName
+ specialvar VAR_RESULT, Script_IsFanClubMemberFanOfPlayer
+ goto_if_eq VAR_RESULT, TRUE, SaffronCity_PokemonTrainerFanClub_EventScript_RockerPlayersFan
+ specialvar VAR_RESULT, Script_GetNumFansOfPlayerInTrainerFanClub
+ goto_if_eq VAR_RESULT, (NUM_TRAINER_FAN_CLUB_MEMBERS - 1), SaffronCity_PokemonTrainerFanClub_EventScript_RockerOnlyNonFan
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_LoveWayTrainerTalks
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_RockerPlayersFan::
+ specialvar VAR_RESULT, Script_GetNumFansOfPlayerInTrainerFanClub
+ goto_if_eq VAR_RESULT, 1, SaffronCity_PokemonTrainerFanClub_EventScript_RockerOnlyFan
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_TheWayYouBattleIsCool
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_RockerOnlyFan::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_ImOnlyOneLeftOfYourFans
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_RockerOnlyNonFan::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_ImLoneTrainerFan
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_Beauty::
+ lock
+ faceplayer
+ setvar VAR_0x8004, FANCLUB_MEMBER7
+ special Script_BufferFanClubTrainerName
+ specialvar VAR_RESULT, Script_IsFanClubMemberFanOfPlayer
+ goto_if_eq VAR_RESULT, TRUE, SaffronCity_PokemonTrainerFanClub_EventScript_BeautyPlayersFan
+ specialvar VAR_RESULT, Script_GetNumFansOfPlayerInTrainerFanClub
+ goto_if_eq VAR_RESULT, (NUM_TRAINER_FAN_CLUB_MEMBERS - 1), SaffronCity_PokemonTrainerFanClub_EventScript_BeautyOnlyNonFan
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_WhyCantOthersSeeMastersDignity
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_BeautyPlayersFan::
+ specialvar VAR_RESULT, Script_GetNumFansOfPlayerInTrainerFanClub
+ goto_if_eq VAR_RESULT, 1, SaffronCity_PokemonTrainerFanClub_EventScript_BeautyOnlyFan
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_YouReallyAreAmazing
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_BeautyOnlyFan::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_ImYourOnlyFan
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_BeautyOnlyNonFan::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_BelieveInMasterWithAllMyHeart
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_BlackBelt::
+ lock
+ faceplayer
+ setvar VAR_0x8004, FANCLUB_MEMBER8
+ special Script_BufferFanClubTrainerName
+ specialvar VAR_RESULT, Script_IsFanClubMemberFanOfPlayer
+ goto_if_eq VAR_RESULT, TRUE, SaffronCity_PokemonTrainerFanClub_EventScript_BlackBeltPlayersFan
+ specialvar VAR_RESULT, Script_GetNumFansOfPlayerInTrainerFanClub
+ goto_if_eq VAR_RESULT, (NUM_TRAINER_FAN_CLUB_MEMBERS - 1), SaffronCity_PokemonTrainerFanClub_EventScript_BlackBeltOnlyNonFan
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_OnlyMasterHasMyRespect
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_BlackBeltPlayersFan::
+ specialvar VAR_RESULT, Script_GetNumFansOfPlayerInTrainerFanClub
+ goto_if_eq VAR_RESULT, 1, SaffronCity_PokemonTrainerFanClub_EventScript_BlackBeltOnlyFan
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_YourBattleStyleIsEducational
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_BlackBeltOnlyFan::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_WontStopBeingYourFan
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_BlackBeltOnlyNonFan::
+ msgbox SaffronCity_PokemonTrainerFanClub_Text_NeverBeFanOfAnyoneButMaster
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_Text_HuhYou::
+ .string "Huh?\n"
+ .string "You…$"
+
+SaffronCity_PokemonTrainerFanClub_Text_YourePlayerWereYourFansNow::
+ .string "Are you maybe…\n"
+ .string "… …\p"
+ .string "You are!\n"
+ .string "You are {PLAYER}!\p"
+ .string "We were just talking about you!\p"
+ .string "We were talking about how an\n"
+ .string "incredibly good TRAINER appeared.\p"
+ .string "And that someone is you!\n"
+ .string "You're so cool!\p"
+ .string "So, we decided that we'll become\n"
+ .string "your FAN CLUB!\p"
+ .string "We all hope you'll keep battling\n"
+ .string "and show us how cool you are.\p"
+ .string "That way, maybe other people will\n"
+ .string "become fans just like me.$"
+
+SaffronCity_PokemonTrainerFanClub_Text_AlwaysCheerForYou::
+ .string "I'll always be cheering for you!\p"
+ .string "Go, {PLAYER}, go!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_IllAlwaysBelieveInYou::
+ .string "I'll always believe in you,\n"
+ .string "{PLAYER}.\p"
+ .string "Please show the others what you're\n"
+ .string "like when you battle seriously.$"
+
+SaffronCity_PokemonTrainerFanClub_Text_WasYourFanNotAnymore::
+ .string "I'm sorry.\n"
+ .string "I was your fan before.\p"
+ .string "But now, you seem to have lost\n"
+ .string "the drive you had before.\p"
+ .string "Lately, I think {STR_VAR_1} has been\n"
+ .string "a lot cooler.$"
+
+SaffronCity_PokemonTrainerFanClub_Text_EveryonesYourFanButICantBe::
+ .string "Oh!\n"
+ .string "{PLAYER}!\p"
+ .string "Everyone's been all excited about\n"
+ .string "you recently.\p"
+ .string "I can understand why.\n"
+ .string "I know that you're strong.\p"
+ .string "But, do you know what?\p"
+ .string "Once I became {STR_VAR_1}'s fan,\n"
+ .string "I can't just stop being a fan.$"
+
+SaffronCity_PokemonTrainerFanClub_Text_TrainersCoolWhenBattling::
+ .string "I think TRAINERS are so cool when\n"
+ .string "they're battling.\p"
+ .string "Don't you think so, too?$"
+
+SaffronCity_PokemonTrainerFanClub_Text_CanYouAutographShorts::
+ .string "Oh! It's {PLAYER}!\n"
+ .string "Too cool!\p"
+ .string "Oh!\n"
+ .string "Oh, yeah!\p"
+ .string "Can you autograph something?\n"
+ .string "How about my shorts?$"
+
+SaffronCity_PokemonTrainerFanClub_Text_CountingOnYou::
+ .string "However hot it's been…\p"
+ .string "And however cold it may get…\p"
+ .string "I've always believed in, and worn,\n"
+ .string "shorts!\p"
+ .string "I'm counting on you to keep\n"
+ .string "winning!\p"
+ .string "I believe in you just as much as\n"
+ .string "I believe in shorts!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_BrocksMyHero::
+ .string "BROCK's my hero!\n"
+ .string "He's a man among men!\p"
+ .string "Heheh, I got my mom to do\n"
+ .string "something for me.\p"
+ .string "I got her to embroider “BROCK”\n"
+ .string "on my shorts!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_BrocksFanToBitterEnd::
+ .string "… …\p"
+ .string "… …\n"
+ .string "I'm BROCK's fan!\p"
+ .string "Even if I were his only fan,\n"
+ .string "I swear it on my rock-hard will,\l"
+ .string "and on my shorts!\p"
+ .string "I'll be his fan to the bitter end!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_BrocksLastWordOnCool::
+ .string "BROCK's the last word on cool,\n"
+ .string "end of story!\p"
+ .string "Now there's a guy who I want to\n"
+ .string "be like!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_HadPleasureOfWatchingYouBattle::
+ .string "{PLAYER}, I've had the pleasure of\n"
+ .string "watching you battle.\p"
+ .string "It brings back sweet memories of\n"
+ .string "my own long-lost youth.\p"
+ .string "May you continue to find success.\n"
+ .string "You have a fan in me!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_NeverSeenTrainerOfYourMagnificence::
+ .string "I have journeyed far and wide\n"
+ .string "across the lands.\p"
+ .string "But never have I seen a TRAINER\n"
+ .string "of your magnificence.\p"
+ .string "Take courage in your abilities\n"
+ .string "and keep battling on!\p"
+ .string "Make that a promise to me,\n"
+ .string "my young idol!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_HmmAndYouAre::
+ .string "Hmm…\n"
+ .string "And you are?\p"
+ .string "Were you hoping to sign up for\n"
+ .string "a membership in our FAN CLUB?$"
+
+SaffronCity_PokemonTrainerFanClub_Text_YouveStillAWaysToGo::
+ .string "Ah, so you are the much-\n"
+ .string "talked-about {PLAYER}.\p"
+ .string "You certainly do have the look of\n"
+ .string "a winner.\p"
+ .string "But for me to accept you as\n"
+ .string "a true POKéMON great…\p"
+ .string "… …\p"
+ .string "You've still a ways to go!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_YoullBeTalkedAboutIfYouKeepWinning::
+ .string "All of us gathered here are fans\n"
+ .string "of POKéMON TRAINERS.\p"
+ .string "The way they look in battle…\n"
+ .string "They are the picture of coolness.\p"
+ .string "Perhaps you will be talked about\n"
+ .string "here, too, if you keep winning.$"
+
+SaffronCity_PokemonTrainerFanClub_Text_WantToBeLikeYouOneDay::
+ .string "It's {PLAYER}!\n"
+ .string "It's {PLAYER}!\p"
+ .string "I want to be like {PLAYER} one day!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_EveryoneButMeStoppedBeingYourFan::
+ .string "Everyone stopped being {PLAYER}'s\n"
+ .string "fan…\p"
+ .string "But that means I can have {PLAYER}\n"
+ .string "all to myself!\p"
+ .string "Yay! Go for it!\n"
+ .string "My one and only {PLAYER}!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_WantToBeLikeSabrina::
+ .string "Do you know what?\n"
+ .string "I want to be like SABRINA!\p"
+ .string "I want to be a psychic girl just\n"
+ .string "like her!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_WontStopBeingSabrinasFan::
+ .string "Even if I'm the only one, I won't\n"
+ .string "stop being SABRINA's fan.\p"
+ .string "My dream is to be like SABRINA,\n"
+ .string "cute, but cool.\p"
+ .string "I want to be a psychic girl just\n"
+ .string "like her!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_CanIBecomeCoolTrainerOneDay::
+ .string "I wonder if I can become a cool\n"
+ .string "TRAINER one day?$"
+
+SaffronCity_PokemonTrainerFanClub_Text_TheWayYouBattleIsCool::
+ .string "Oh, man, oh, man!\n"
+ .string "Cool! Too cool!\p"
+ .string "…Huh?\n"
+ .string "No, not you.\p"
+ .string "Just the way you battle.\n"
+ .string "That's cool.$"
+
+SaffronCity_PokemonTrainerFanClub_Text_ImOnlyOneLeftOfYourFans::
+ .string "Yo, {PLAYER}!\p"
+ .string "Looks like I'm the only one left\n"
+ .string "out of your fans.\p"
+ .string "But, you know, I like being an only\n"
+ .string "fan… It's less stressful.\p"
+ .string "Keep up and at it!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_LoveWayTrainerTalks::
+ .string "{STR_VAR_1}'s cool, huh?\n"
+ .string "I love the way he talks.\p"
+ .string "I'd really relish a chance to meet\n"
+ .string "him in person once.$"
+
+SaffronCity_PokemonTrainerFanClub_Text_ImLoneTrainerFan::
+ .string "Huh, can you believe it?\n"
+ .string "Everyone turned into your fans.\p"
+ .string "So after all we've been through,\n"
+ .string "I'm the lone {STR_VAR_1} fan?\p"
+ .string "Eh, being the one and only\n"
+ .string "{STR_VAR_1} fan's my style, anyway.$"
+
+SaffronCity_PokemonTrainerFanClub_Text_AdoreWayYouBattle::
+ .string "Oh, my goodness!\n"
+ .string "Is it really you, {PLAYER}?\p"
+ .string "I have to tell you, I adore the\n"
+ .string "way you battle.\p"
+ .string "I hope you'll keep at it.\n"
+ .string "I'll be your number one fan!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_ImYourNumberOneFan::
+ .string "Oh, my goodness!\n"
+ .string "If it isn't {PLAYER}!\p"
+ .string "It's so disappointing… I realized\n"
+ .string "I'm your number-one-and-only fan!\p"
+ .string "Well, it can't be helped!\n"
+ .string "Let me cheer you on, at least!\p"
+ .string "Hurray, hurray, {PLAYER}!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_TrainerHasBeenOnFire::
+ .string "Recently, {STR_VAR_1} has been on\n"
+ .string "fire.\p"
+ .string "The way he battles… It's just \n"
+ .string "the way that I like it!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_EveryoneTalksAboutYou::
+ .string "Oh, hello!\n"
+ .string "If it isn't {PLAYER}!\p"
+ .string "Lately, all everyone talks about\n"
+ .string "is you.\p"
+ .string "I'm feeling lonesome because I\n"
+ .string "prefer {STR_VAR_1}.$"
+
+SaffronCity_PokemonTrainerFanClub_Text_YouReallyAreAmazing::
+ .string "Amazing!\n"
+ .string "{PLAYER}, you really are amazing!\p"
+ .string "Instead of just watching, maybe\n"
+ .string "I should become a TRAINER, too.$"
+
+SaffronCity_PokemonTrainerFanClub_Text_ImYourOnlyFan::
+ .string "I'm your only fan…\n"
+ .string "Sigh… This is lonely…\p"
+ .string "Can't you try harder and make the\n"
+ .string "others take notice of you?$"
+
+SaffronCity_PokemonTrainerFanClub_Text_WhyCantOthersSeeMastersDignity::
+ .string "Master {STR_VAR_1} is so dignified…\n"
+ .string "He is so my type.\p"
+ .string "Why can't the others see the\n"
+ .string "dignity he simply oozes?$"
+
+SaffronCity_PokemonTrainerFanClub_Text_BelieveInMasterWithAllMyHeart::
+ .string "I believe in Master {STR_VAR_1}\n"
+ .string "with all my heart.\p"
+ .string "Even if I am the only one to\n"
+ .string "believe in him.\p"
+ .string "I won't ever feel lonesome, though.\p"
+ .string "Not if I keep thinking about Master\n"
+ .string "{STR_VAR_1}.$"
+
+SaffronCity_PokemonTrainerFanClub_Text_YourBattleStyleIsEducational::
+ .string "Hiyah!\p"
+ .string "Your battling style is most\n"
+ .string "educational.\p"
+ .string "I hope that you will keep plugging\n"
+ .string "away at success, hiyah!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_WontStopBeingYourFan::
+ .string "Instead of just watching others\n"
+ .string "battle, battle yourself!\p"
+ .string "…My DOJO's MASTER chewed me out\n"
+ .string "like that…\p"
+ .string "But I won't let that stop me from\n"
+ .string "being your fan!\p"
+ .string "I can't stop being your fan!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_OnlyMasterHasMyRespect::
+ .string "Hiyah! There is but one TRAINER\n"
+ .string "who has my respect.\p"
+ .string "And that is none other than my\n"
+ .string "MASTER at the FIGHTING DOJO.\p"
+ .string "You should become a fan of my\n"
+ .string "MASTER like me! Hiyah!$"
+
+SaffronCity_PokemonTrainerFanClub_Text_NeverBeFanOfAnyoneButMaster::
+ .string "Hiyah! I respect my MASTER at the\n"
+ .string "FIGHTING DOJO.\p"
+ .string "I will never become a fan of\n"
+ .string "anyone other than my MASTER!\p"
+ .string "I will even sneak out of the DOJO\n"
+ .string "to spread word of his greatness.\p"
+ .string "Hiyah!$"
+
diff --git a/data/maps/SeafoamIslands_1F_Frlg/map.json b/data/maps/SeafoamIslands_1F_Frlg/map.json
new file mode 100644
index 000000000000..868edbd1bb48
--- /dev/null
+++ b/data/maps/SeafoamIslands_1F_Frlg/map.json
@@ -0,0 +1,119 @@
+{
+ "id": "MAP_SEAFOAM_ISLANDS_1F",
+ "name": "SeafoamIslands_1F_Frlg",
+ "layout": "LAYOUT_SEAFOAM_ISLANDS_1F",
+ "music": "MUS_RG_VIRIDIAN_FOREST",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SEAFOAM_ISLANDS",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 22,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_1",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "FLAG_HIDE_SEAFOAM_1F_BOULDER_1"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 32,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_2",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "FLAG_HIDE_SEAFOAM_1F_BOULDER_2"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 11,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SeafoamIslands_1F_EventScript_ItemIceHeal",
+ "flag": "FLAG_HIDE_SEAFOAM_ISLANDS_1F_ICE_HEAL"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 10,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 31,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 28,
+ "y": 19,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B1F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 6,
+ "y": 21,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE20",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 32,
+ "y": 21,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE20",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 21,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B1F",
+ "dest_warp_id": "9"
+ },
+ {
+ "x": 30,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B1F",
+ "dest_warp_id": "10"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/SeafoamIslands_1F_Frlg/scripts.inc b/data/maps/SeafoamIslands_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..9e1093cced9a
--- /dev/null
+++ b/data/maps/SeafoamIslands_1F_Frlg/scripts.inc
@@ -0,0 +1,7 @@
+SeafoamIslands_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SeafoamIslands_1F_OnTransition
+ .byte 0
+
+SeafoamIslands_1F_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_SEAFOAM_ISLANDS_1F
+ end
diff --git a/data/maps/SeafoamIslands_B1F_Frlg/map.json b/data/maps/SeafoamIslands_B1F_Frlg/map.json
new file mode 100644
index 000000000000..9e8dffbdd884
--- /dev/null
+++ b/data/maps/SeafoamIslands_B1F_Frlg/map.json
@@ -0,0 +1,157 @@
+{
+ "id": "MAP_SEAFOAM_ISLANDS_B1F",
+ "name": "SeafoamIslands_B1F_Frlg",
+ "layout": "LAYOUT_SEAFOAM_ISLANDS_B1F",
+ "music": "MUS_RG_VIRIDIAN_FOREST",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SEAFOAM_ISLANDS",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 22,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_1",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_1"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 30,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_2",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "FLAG_HIDE_SEAFOAM_B1F_BOULDER_2"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 19,
+ "y": 18,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SeafoamIslands_B1F_EventScript_ItemWaterStone",
+ "flag": "FLAG_HIDE_SEAFOAM_ISLANDS_B1F_WATER_STONE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 24,
+ "y": 14,
+ "elevation": 4,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SeafoamIslands_B1F_EventScript_ItemRevive",
+ "flag": "FLAG_HIDE_SEAFOAM_ISLANDS_B1F_REVIVE"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 10,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 31,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 28,
+ "y": 19,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_1F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 7,
+ "y": 3,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B2F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 17,
+ "y": 9,
+ "elevation": 4,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B2F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 25,
+ "y": 19,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B2F",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 32,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B2F",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 23,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B2F",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 28,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B2F",
+ "dest_warp_id": "8"
+ },
+ {
+ "x": 21,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_1F",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 29,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_1F",
+ "dest_warp_id": "6"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SeafoamIslands_B1F_Frlg/scripts.inc b/data/maps/SeafoamIslands_B1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..3b053097caad
--- /dev/null
+++ b/data/maps/SeafoamIslands_B1F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+SeafoamIslands_B1F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/SeafoamIslands_B2F_Frlg/map.json b/data/maps/SeafoamIslands_B2F_Frlg/map.json
new file mode 100644
index 000000000000..43cc4bbfdb59
--- /dev/null
+++ b/data/maps/SeafoamIslands_B2F_Frlg/map.json
@@ -0,0 +1,143 @@
+{
+ "id": "MAP_SEAFOAM_ISLANDS_B2F",
+ "name": "SeafoamIslands_B2F_Frlg",
+ "layout": "LAYOUT_SEAFOAM_ISLANDS_B2F",
+ "music": "MUS_RG_VIRIDIAN_FOREST",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SEAFOAM_ISLANDS",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 22,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_1",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_1"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 30,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_2",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "FLAG_HIDE_SEAFOAM_B2F_BOULDER_2"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 18,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SeafoamIslands_B2F_EventScript_ItemBigPearl",
+ "flag": "FLAG_HIDE_SEAFOAM_ISLANDS_B2F_BIG_PEARL"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 17,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B3F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 32,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B3F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 31,
+ "y": 17,
+ "elevation": 4,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B3F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 17,
+ "y": 9,
+ "elevation": 4,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B1F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 25,
+ "y": 19,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B1F",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 32,
+ "y": 14,
+ "elevation": 4,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B1F",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 22,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B1F",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 29,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B1F",
+ "dest_warp_id": "8"
+ },
+ {
+ "x": 24,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B3F",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 27,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B3F",
+ "dest_warp_id": "6"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SeafoamIslands_B2F_Frlg/scripts.inc b/data/maps/SeafoamIslands_B2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..cfa648842c2b
--- /dev/null
+++ b/data/maps/SeafoamIslands_B2F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+SeafoamIslands_B2F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/SeafoamIslands_B3F_Frlg/map.json b/data/maps/SeafoamIslands_B3F_Frlg/map.json
new file mode 100644
index 000000000000..4c48e6703f3f
--- /dev/null
+++ b/data/maps/SeafoamIslands_B3F_Frlg/map.json
@@ -0,0 +1,182 @@
+{
+ "id": "MAP_SEAFOAM_ISLANDS_B3F",
+ "name": "SeafoamIslands_B3F_Frlg",
+ "layout": "LAYOUT_SEAFOAM_ISLANDS_B3F",
+ "music": "MUS_RG_VIRIDIAN_FOREST",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SEAFOAM_ISLANDS",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 23,
+ "y": 8,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_1"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 24,
+ "y": 8,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_2"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 12,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "FLAG_HIDE_SEAFOAM_B4F_BOULDER_2",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_5"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 13,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_6"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 9,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_4"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 6,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "FLAG_HIDE_SEAFOAM_B4F_BOULDER_1",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "FLAG_HIDE_SEAFOAM_B3F_BOULDER_3"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 14,
+ "elevation": 4,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B2F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 31,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B2F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 31,
+ "y": 16,
+ "elevation": 4,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B2F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 12,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B4F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 29,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B4F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 23,
+ "y": 9,
+ "elevation": 1,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B2F",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 24,
+ "y": 9,
+ "elevation": 1,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B2F",
+ "dest_warp_id": "8"
+ },
+ {
+ "x": 6,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B4F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 9,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B4F",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 5,
+ "y": 12,
+ "elevation": 0,
+ "item": "ITEM_NUGGET",
+ "flag": "FLAG_HIDDEN_ITEM_SEAFOAM_ISLANDS_B3F_NUGGET",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/SeafoamIslands_B3F_Frlg/scripts.inc b/data/maps/SeafoamIslands_B3F_Frlg/scripts.inc
new file mode 100644
index 000000000000..18daef669135
--- /dev/null
+++ b/data/maps/SeafoamIslands_B3F_Frlg/scripts.inc
@@ -0,0 +1,95 @@
+.equ NUM_BOULDERS_PRESENT, VAR_TEMP_2
+
+SeafoamIslands_B3F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SeafoamIslands_B3F_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, SeafoamIslands_B3F_OnFrame
+ .byte 0
+
+SeafoamIslands_B3F_OnTransition::
+ call_if_unset FLAG_STOPPED_SEAFOAM_B3F_CURRENT, SeafoamIslands_B3F_EventScript_CheckStoppedCurrent
+ call_if_set FLAG_STOPPED_SEAFOAM_B3F_CURRENT, SeafoamIslands_B3F_EventScript_SetNoCurrentLayout
+ end
+
+SeafoamIslands_B3F_EventScript_CheckStoppedCurrent::
+ setvar NUM_BOULDERS_PRESENT, 0
+ call_if_unset FLAG_HIDE_SEAFOAM_B3F_BOULDER_1, SeafoamIslands_B3F_EventScript_AddBoulderPresent
+ call_if_unset FLAG_HIDE_SEAFOAM_B3F_BOULDER_2, SeafoamIslands_B3F_EventScript_AddBoulderPresent
+ call_if_eq NUM_BOULDERS_PRESENT, 2, SeafoamIslands_B3F_EventScript_StoppedCurrent
+ return
+
+SeafoamIslands_B3F_EventScript_StoppedCurrent::
+ setflag FLAG_STOPPED_SEAFOAM_B3F_CURRENT
+ return
+
+SeafoamIslands_B3F_EventScript_SetNoCurrentLayout::
+ setmaplayoutindex LAYOUT_SEAFOAM_ISLANDS_B3F_CURRENT_STOPPED
+ return
+
+SeafoamIslands_B3F_OnFrame::
+ map_script_2 VAR_TEMP_1, 1, SeafoamIslands_B3F_EventScript_EnterByFalling
+ .2byte 0
+
+SeafoamIslands_B3F_EventScript_EnterByFalling::
+ lockall
+ setvar NUM_BOULDERS_PRESENT, 0
+ call_if_unset FLAG_HIDE_SEAFOAM_B3F_BOULDER_1, SeafoamIslands_B3F_EventScript_AddBoulderPresent
+ call_if_unset FLAG_HIDE_SEAFOAM_B3F_BOULDER_2, SeafoamIslands_B3F_EventScript_AddBoulderPresent
+ goto_if_eq NUM_BOULDERS_PRESENT, 2, SeafoamIslands_B3F_EventScript_CurrentBlocked
+ getplayerxy VAR_0x8008, VAR_0x8009
+ call_if_lt VAR_0x8008, 24, SeafoamIslands_B3F_EventScript_RideCurrentFar
+ call_if_ge VAR_0x8008, 24, SeafoamIslands_B3F_EventScript_RideCurrentClose
+ setvar VAR_MAP_SCENE_SEAFOAM_ISLANDS_B4F, 1
+ warp MAP_SEAFOAM_ISLANDS_B4F, 27, 21
+ waitstate
+ releaseall
+ end
+
+SeafoamIslands_B3F_EventScript_AddBoulderPresent::
+ addvar NUM_BOULDERS_PRESENT, 1
+ return
+
+SeafoamIslands_B3F_EventScript_RideCurrentFar::
+ applymovement LOCALID_PLAYER, SeafoamIslands_B3F_Movement_RideCurrentFar
+ waitmovement 0
+ return
+
+SeafoamIslands_B3F_EventScript_RideCurrentClose::
+ applymovement LOCALID_PLAYER, SeafoamIslands_B3F_Movement_RideCurrentClose
+ waitmovement 0
+ return
+
+SeafoamIslands_B3F_EventScript_CurrentBlocked::
+ setvar VAR_TEMP_1, 0
+ releaseall
+ end
+
+SeafoamIslands_B3F_Movement_RideCurrentFar::
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_right
+ walk_fast_right
+ walk_fast_right
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ step_end
+
+SeafoamIslands_B3F_Movement_RideCurrentClose::
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_right
+ walk_fast_right
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ walk_fast_down
+ step_end
diff --git a/data/maps/SeafoamIslands_B4F_Frlg/map.json b/data/maps/SeafoamIslands_B4F_Frlg/map.json
new file mode 100644
index 000000000000..402d23ff1040
--- /dev/null
+++ b/data/maps/SeafoamIslands_B4F_Frlg/map.json
@@ -0,0 +1,163 @@
+{
+ "id": "MAP_SEAFOAM_ISLANDS_B4F",
+ "name": "SeafoamIslands_B4F_Frlg",
+ "layout": "LAYOUT_SEAFOAM_ISLANDS_B4F",
+ "music": "MUS_RG_VIRIDIAN_FOREST",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SEAFOAM_ISLANDS",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 8,
+ "y": 18,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_SEAFOAM_B4F_BOULDER_1"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 9,
+ "y": 18,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_SEAFOAM_B4F_BOULDER_2"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ARTICUNO",
+ "x": 9,
+ "y": 2,
+ "elevation": 4,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SeafoamIslands_B4F_EventScript_Articuno",
+ "flag": "FLAG_HIDE_ARTICUNO"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 22,
+ "y": 19,
+ "elevation": 4,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SeafoamIslands_B4F_EventScript_ItemUltraBall",
+ "flag": "FLAG_HIDE_SEAFOAM_ISLANDS_B4F_ULTRA_BALL"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 15,
+ "y": 9,
+ "elevation": 4,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B3F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 32,
+ "y": 5,
+ "elevation": 4,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B3F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 8,
+ "y": 17,
+ "elevation": 1,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B3F",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 9,
+ "y": 17,
+ "elevation": 1,
+ "dest_map": "MAP_SEAFOAM_ISLANDS_B3F",
+ "dest_warp_id": "8"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 26,
+ "y": 19,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_SEAFOAM_ISLANDS_B4F",
+ "var_value": "0",
+ "script": "SeafoamIslands_B4F_EventScript_UpwardCurrent"
+ },
+ {
+ "type": "trigger",
+ "x": 27,
+ "y": 19,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_SEAFOAM_ISLANDS_B4F",
+ "var_value": "0",
+ "script": "SeafoamIslands_B4F_EventScript_UpwardCurrent"
+ },
+ {
+ "type": "trigger",
+ "x": 28,
+ "y": 19,
+ "elevation": 1,
+ "var": "VAR_MAP_SCENE_SEAFOAM_ISLANDS_B4F",
+ "var_value": "0",
+ "script": "SeafoamIslands_B4F_EventScript_UpwardCurrent"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 13,
+ "y": 8,
+ "elevation": 0,
+ "item": "ITEM_WATER_STONE",
+ "flag": "FLAG_HIDDEN_ITEM_SEAFOAM_ISLANDS_B4F_WATER_STONE",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 30,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SeafoamIslands_B4F_EventScript_FastCurrentSign"
+ },
+ {
+ "type": "sign",
+ "x": 14,
+ "y": 18,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SeafoamIslands_B4F_EventScript_BoulderHintSign"
+ }
+ ]
+}
diff --git a/data/maps/SeafoamIslands_B4F_Frlg/scripts.inc b/data/maps/SeafoamIslands_B4F_Frlg/scripts.inc
new file mode 100644
index 000000000000..8b92a9dea607
--- /dev/null
+++ b/data/maps/SeafoamIslands_B4F_Frlg/scripts.inc
@@ -0,0 +1,224 @@
+.equ NUM_BOULDERS_PRESENT, VAR_TEMP_2
+
+SeafoamIslands_B4F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SeafoamIslands_B4F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, SeafoamIslands_B4F_OnResume
+ map_script MAP_SCRIPT_ON_LOAD, SeafoamIslands_B4F_OnLoad
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, SeafoamIslands_B4F_OnWarp
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, SeafoamIslands_B4F_OnFrame
+ .byte 0
+
+SeafoamIslands_B4F_OnResume::
+ call_if_set FLAG_SYS_CTRL_OBJ_DELETE, SeafoamIslands_B4F_EventScript_TryRemoveArticuno
+ end
+
+SeafoamIslands_B4F_EventScript_TryRemoveArticuno::
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_ne VAR_RESULT, B_OUTCOME_CAUGHT, Common_EventScript_NopReturn
+ removeobject VAR_LAST_TALKED
+ return
+
+SeafoamIslands_B4F_OnTransition::
+ call_if_unset FLAG_FOUGHT_ARTICUNO, SeafoamIslands_B4F_EventScript_ShowArticuno
+ call_if_unset FLAG_STOPPED_SEAFOAM_B4F_CURRENT, SeafoamIslands_B4F_EventScript_CheckStoppedCurrent
+ call_if_set FLAG_STOPPED_SEAFOAM_B4F_CURRENT, SeafoamIslands_B4F_EventScript_SetNoCurrentLayout
+ end
+
+SeafoamIslands_B4F_EventScript_CheckStoppedCurrent::
+ setvar NUM_BOULDERS_PRESENT, 0
+ call_if_unset FLAG_HIDE_SEAFOAM_B4F_BOULDER_1, SeafoamIslands_B4F_EventScript_AddBoulderPresent
+ call_if_unset FLAG_HIDE_SEAFOAM_B4F_BOULDER_2, SeafoamIslands_B4F_EventScript_AddBoulderPresent
+ call_if_eq NUM_BOULDERS_PRESENT, 2, SeafoamIslands_B4F_EventScript_StoppedCurrent
+ return
+
+SeafoamIslands_B4F_EventScript_StoppedCurrent::
+ setflag FLAG_STOPPED_SEAFOAM_B4F_CURRENT
+ return
+
+SeafoamIslands_B4F_EventScript_SetNoCurrentLayout::
+ setmaplayoutindex LAYOUT_SEAFOAM_ISLANDS_B4F_CURRENT_STOPPED
+ return
+
+SeafoamIslands_B4F_EventScript_ShowArticuno::
+ clearflag FLAG_HIDE_ARTICUNO
+ return
+
+SeafoamIslands_B4F_OnLoad::
+ setvar NUM_BOULDERS_PRESENT, 0
+ call_if_unset FLAG_HIDE_SEAFOAM_B4F_BOULDER_1, SeafoamIslands_B4F_EventScript_AddBoulderPresent
+ call_if_unset FLAG_HIDE_SEAFOAM_B4F_BOULDER_2, SeafoamIslands_B4F_EventScript_AddBoulderPresent
+ goto_if_eq NUM_BOULDERS_PRESENT, 2, SeafoamIslands_B4F_EventScript_SetCalmWaterNearStairs
+ end
+
+SeafoamIslands_B4F_EventScript_SetCalmWaterNearStairs::
+ setmetatile 12, 14, METATILE_GeneralFrlg_CalmWater, 0
+ setmetatile 13, 14, METATILE_GeneralFrlg_CalmWater, 0
+ end
+
+SeafoamIslands_B4F_OnWarp::
+ map_script_2 VAR_MAP_SCENE_SEAFOAM_ISLANDS_B4F, 1, SeafoamIslands_B4F_EventScript_WarpInOnCurrent
+ .2byte 0
+
+SeafoamIslands_B4F_EventScript_WarpInOnCurrent::
+ turnobject LOCALID_PLAYER, DIR_NORTH
+ special ForcePlayerToStartSurfing
+ end
+
+SeafoamIslands_B4F_OnFrame::
+ map_script_2 VAR_MAP_SCENE_SEAFOAM_ISLANDS_B4F, 1, SeafoamIslands_B4F_EventScript_EnterOnCurrent
+ map_script_2 VAR_TEMP_1, 1, SeafoamIslands_B4F_EventScript_EnterByFalling
+ .2byte 0
+
+@ The current the player is forced in on from B3F
+SeafoamIslands_B4F_EventScript_EnterOnCurrent::
+ lockall
+ applymovement LOCALID_PLAYER, SeafoamIslands_B4F_Movement_EnterOnCurrent
+ waitmovement 0
+ setvar VAR_MAP_SCENE_SEAFOAM_ISLANDS_B4F, 0
+ releaseall
+ end
+
+SeafoamIslands_B4F_Movement_EnterOnCurrent::
+ walk_fast_up
+ walk_fast_up
+ walk_fast_up
+ step_end
+
+@ The current the player lands on when entering the map by falling
+SeafoamIslands_B4F_EventScript_EnterByFalling::
+ lockall
+ setvar NUM_BOULDERS_PRESENT, 0
+ call_if_unset FLAG_HIDE_SEAFOAM_B4F_BOULDER_1, SeafoamIslands_B4F_EventScript_AddBoulderPresent
+ call_if_unset FLAG_HIDE_SEAFOAM_B4F_BOULDER_2, SeafoamIslands_B4F_EventScript_AddBoulderPresent
+ goto_if_eq NUM_BOULDERS_PRESENT, 2, SeafoamIslands_B4F_EventScript_CurrentBlocked
+ getplayerxy VAR_0x8008, VAR_0x8009
+ call_if_lt VAR_0x8008, 9, SeafoamIslands_B4F_EventScript_RideCurrentFar
+ call_if_ge VAR_0x8008, 9, SeafoamIslands_B4F_EventScript_RideCurrentClose
+ special SeafoamIslandsB4F_CurrentDumpsPlayerOnLand
+ setvar VAR_TEMP_1, 0
+ releaseall
+ end
+
+SeafoamIslands_B4F_EventScript_AddBoulderPresent::
+ addvar NUM_BOULDERS_PRESENT, 1
+ return
+
+SeafoamIslands_B4F_EventScript_RideCurrentFar::
+ applymovement LOCALID_PLAYER, SeafoamIslands_B4F_Movement_RideCurrentFar
+ waitmovement 0
+ return
+
+SeafoamIslands_B4F_EventScript_RideCurrentClose::
+ applymovement LOCALID_PLAYER, SeafoamIslands_B4F_Movement_RideCurrentClose
+ waitmovement 0
+ return
+
+SeafoamIslands_B4F_EventScript_CurrentBlocked::
+ setvar VAR_TEMP_1, 0
+ releaseall
+ end
+
+SeafoamIslands_B4F_Movement_RideCurrentFar::
+ walk_up
+ walk_up
+ walk_up
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ walk_up
+ step_end
+
+SeafoamIslands_B4F_Movement_RideCurrentClose::
+ walk_up
+ walk_up
+ walk_up
+ walk_right
+ walk_right
+ walk_right
+ walk_up
+ step_end
+
+@ Triggers blocking re-entry to B3F
+SeafoamIslands_B4F_EventScript_UpwardCurrent::
+ lockall
+ applymovement LOCALID_PLAYER, SeafoamIslands_B4F_Movement_WalkUp
+ waitmovement 0
+ releaseall
+ end
+
+SeafoamIslands_B4F_Movement_WalkUp::
+ walk_up
+ step_end
+
+SeafoamIslands_B4F_EventScript_Articuno::
+ lock
+ faceplayer
+ setwildbattle SPECIES_ARTICUNO, 50
+ waitse
+ playmoncry SPECIES_ARTICUNO, CRY_MODE_ENCOUNTER
+ message Text_Gyaoo
+ waitmessage
+ waitmoncry
+ delay 10
+ playbgm MUS_RG_ENCOUNTER_GYM_LEADER, 0
+ waitbuttonpress
+ setflag FLAG_SYS_CTRL_OBJ_DELETE
+ special BattleSetup_StartLegendaryBattle
+ waitstate
+ clearflag FLAG_SYS_CTRL_OBJ_DELETE
+ specialvar VAR_RESULT, GetBattleOutcome
+ goto_if_eq VAR_RESULT, B_OUTCOME_WON, SeafoamIslands_B4F_EventScript_DefeatedArticuno
+ goto_if_eq VAR_RESULT, B_OUTCOME_RAN, SeafoamIslands_B4F_EventScript_RanFromArticuno
+ goto_if_eq VAR_RESULT, B_OUTCOME_PLAYER_TELEPORTED, SeafoamIslands_B4F_EventScript_RanFromArticuno
+ setflag FLAG_FOUGHT_ARTICUNO
+ release
+ end
+
+SeafoamIslands_B4F_EventScript_DefeatedArticuno::
+ setflag FLAG_FOUGHT_ARTICUNO
+ goto EventScript_RemoveStaticMon
+ end
+
+SeafoamIslands_B4F_EventScript_RanFromArticuno::
+ setvar VAR_0x8004, SPECIES_ARTICUNO
+ goto EventScript_MonFlewAway
+ end
+
+SeafoamIslands_B4F_EventScript_BoulderHintSign::
+ msgbox SeafoamIslands_B4F_Text_BouldersMightChangeWaterFlow, MSGBOX_SIGN
+ end
+
+SeafoamIslands_B4F_EventScript_FastCurrentSign::
+ msgbox SeafoamIslands_B4F_Text_DangerFastCurrent, MSGBOX_SIGN
+ end
+
+Text_RockSlideTeach::
+ .string "When you're up on a rocky mountain\n"
+ .string "like this, rockslides are a threat.\p"
+ .string "Can you imagine?\n"
+ .string "Boulders tumbling down on you?\p"
+ .string "That'd be, like, waaaaaaaaaaah!\n"
+ .string "Total terror!\p"
+ .string "You don't seem to be scared.\n"
+ .string "Want to try using ROCK SLIDE?$"
+
+Text_RockSlideDeclined::
+ .string "Oh, so you are scared after all.$"
+
+Text_RockSlideWhichMon::
+ .string "Which POKéMON should I teach\n"
+ .string "ROCK SLIDE?$"
+
+Text_RockSlideTaught::
+ .string "It might be scary to use it in this\n"
+ .string "tunnel…$"
+
+SeafoamIslands_B4F_Text_BouldersMightChangeWaterFlow::
+ .string "Hint: Boulders might change the\n"
+ .string "flow of water.$"
+
+SeafoamIslands_B4F_Text_DangerFastCurrent::
+ .string "DANGER\n"
+ .string "Fast current!$"
+
diff --git a/data/maps/SevenIsland_Frlg/map.json b/data/maps/SevenIsland_Frlg/map.json
new file mode 100644
index 000000000000..3e03fdb00463
--- /dev/null
+++ b/data/maps/SevenIsland_Frlg/map.json
@@ -0,0 +1,117 @@
+{
+ "id": "MAP_SEVEN_ISLAND",
+ "name": "SevenIsland_Frlg",
+ "layout": "LAYOUT_SEVEN_ISLAND",
+ "music": "MUS_RG_SEVII_67",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SEVEN_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_SEVEN_ISLAND_TRAINER_TOWER",
+ "offset": -48,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE",
+ "offset": 0,
+ "direction": "down"
+ }
+ ],
+ "object_events": [
+ {
+ "local_id": "LOCALID_SWORDS_DANCE_TUTOR",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 7,
+ "y": 18,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_EventScript_SwordsDanceTutor",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_WOMAN_FRLG",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_EventScript_OldWoman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 15,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_EventScript_Scientist",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_SEVEN_ISLAND_HOUSE_ROOM1",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 5,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_SEVEN_ISLAND_MART",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 12,
+ "y": 3,
+ "elevation": 0,
+ "dest_map": "MAP_SEVEN_ISLAND_POKEMON_CENTER_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 16,
+ "y": 13,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_HARBOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 17,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SevenIsland_EventScript_IslandSign"
+ }
+ ]
+}
diff --git a/data/maps/SevenIsland_Frlg/scripts.inc b/data/maps/SevenIsland_Frlg/scripts.inc
new file mode 100644
index 000000000000..3efe70d6fbce
--- /dev/null
+++ b/data/maps/SevenIsland_Frlg/scripts.inc
@@ -0,0 +1,58 @@
+SevenIsland_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_OnTransition
+ .byte 0
+
+SevenIsland_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_SEVEN_ISLAND
+ end
+
+SevenIsland_EventScript_IslandSign::
+ msgbox SevenIsland_Text_IslandSign, MSGBOX_SIGN
+ end
+
+SevenIsland_EventScript_OldWoman::
+ msgbox SevenIsland_Text_IslandsMadeInSevenDays, MSGBOX_NPC
+ end
+
+SevenIsland_EventScript_Scientist::
+ msgbox SevenIsland_Text_IslandVirtuallyUntouched, MSGBOX_NPC
+ end
+
+Text_SwordsDanceTeach::
+ .string "Not many people come out here.\p"
+ .string "If I train here, I'm convinced that\n"
+ .string "I'll get stronger and stronger.\p"
+ .string "Yep, stronger and stronger…\p"
+ .string "How would you like to learn a move\n"
+ .string "like that? It's SWORDS DANCE.$"
+
+Text_SwordsDanceDeclined::
+ .string "Well, that's fine, too.$"
+
+Text_SwordsDanceWhichMon::
+ .string "All right, pick which POKéMON\n"
+ .string "I should teach it to.$"
+
+Text_SwordsDanceTaught::
+ .string "If only we could keep getting\n"
+ .string "stronger and stronger, eh?$"
+
+SevenIsland_Text_IslandSign::
+ .string "SEVEN ISLAND\n"
+ .string "Quest Island of Infinity$"
+
+SevenIsland_Text_IslandsMadeInSevenDays::
+ .string "These islands are called the SEVII\n"
+ .string "ISLANDS because there are seven.\p"
+ .string "…Or at least that's what the young\n"
+ .string "people believe.\p"
+ .string "The truth is, these islands are so\n"
+ .string "named because they are said to\l"
+ .string "have been made in seven days.$"
+
+SevenIsland_Text_IslandVirtuallyUntouched::
+ .string "This island has been left virtually\n"
+ .string "untouched in its natural state.\p"
+ .string "It could be a little difficult to\n"
+ .string "hike around because of that.$"
+
diff --git a/data/maps/SevenIsland_Harbor_Frlg/map.json b/data/maps/SevenIsland_Harbor_Frlg/map.json
new file mode 100644
index 000000000000..80b10227b1b3
--- /dev/null
+++ b/data/maps/SevenIsland_Harbor_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_SEVEN_ISLAND_HARBOR",
+ "name": "SevenIsland_Harbor_Frlg",
+ "layout": "LAYOUT_ISLAND_HARBOR_FRLG",
+ "music": "MUS_RG_SEVII_67",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SEVEN_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SEAGALLOP",
+ "x": 8,
+ "y": 9,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 8,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_Harbor_EventScript_Sailor",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SevenIsland_Harbor_Frlg/scripts.inc b/data/maps/SevenIsland_Harbor_Frlg/scripts.inc
new file mode 100644
index 000000000000..f2660cfcccdd
--- /dev/null
+++ b/data/maps/SevenIsland_Harbor_Frlg/scripts.inc
@@ -0,0 +1,11 @@
+SevenIsland_Harbor_Frlg_MapScripts::
+ .byte 0
+
+SevenIsland_Harbor_EventScript_Sailor::
+ lock
+ faceplayer
+ message Text_WhereDoYouWantToSail
+ waitmessage
+ setvar VAR_0x8004, SEAGALLOP_SEVEN_ISLAND
+ goto EventScript_ChooseDestFromIsland
+ end
diff --git a/data/maps/SevenIsland_House_Room1_Frlg/map.json b/data/maps/SevenIsland_House_Room1_Frlg/map.json
new file mode 100644
index 000000000000..2cb171c0ae34
--- /dev/null
+++ b/data/maps/SevenIsland_House_Room1_Frlg/map.json
@@ -0,0 +1,62 @@
+{
+ "id": "MAP_SEVEN_ISLAND_HOUSE_ROOM1",
+ "name": "SevenIsland_House_Room1_Frlg",
+ "layout": "LAYOUT_SEVEN_ISLAND_HOUSE_ROOM1",
+ "music": "MUS_RG_SEVII_67",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SEVEN_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_GYM",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_SEVEN_ISLAND_HOUSE_OLD_WOMAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_WOMAN_FRLG",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_House_Room1_EventScript_OldWoman",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_SEVEN_ISLAND_HOUSE_ROOM2",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SevenIsland_House_Room1_EventScript_Box"
+ }
+ ]
+}
diff --git a/data/maps/SevenIsland_House_Room1_Frlg/scripts.inc b/data/maps/SevenIsland_House_Room1_Frlg/scripts.inc
new file mode 100644
index 000000000000..393d253a17ef
--- /dev/null
+++ b/data/maps/SevenIsland_House_Room1_Frlg/scripts.inc
@@ -0,0 +1,267 @@
+.equ TRAINER_VISITING, VAR_TEMP_1
+
+SevenIsland_House_Room1_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_House_Room1_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, SevenIsland_House_Room1_OnFrame
+ .byte 0
+
+SevenIsland_House_Room1_OnTransition::
+ special ValidateEReaderTrainer
+ call_if_eq VAR_RESULT, 0, SevenIsland_House_Room1_EventScript_SetTrainerVisitingLayout
+ call_if_ne VAR_MAP_SCENE_SEVEN_ISLAND_HOUSE_ROOM1, 0, SevenIsland_House_Room1_EventScript_MoveOldWomanToDoor
+ end
+
+SevenIsland_House_Room1_EventScript_SetTrainerVisitingLayout::
+ setvar TRAINER_VISITING, TRUE
+ setobjectxyperm LOCALID_SEVEN_ISLAND_HOUSE_OLD_WOMAN, 4, 2
+ setobjectmovementtype LOCALID_SEVEN_ISLAND_HOUSE_OLD_WOMAN, MOVEMENT_TYPE_FACE_DOWN
+ setmaplayoutindex LAYOUT_SEVEN_ISLAND_HOUSE_ROOM1_DOOR_OPEN
+ return
+
+SevenIsland_House_Room1_EventScript_MoveOldWomanToDoor::
+ setobjectxyperm LOCALID_SEVEN_ISLAND_HOUSE_OLD_WOMAN, 3, 2
+ setobjectmovementtype LOCALID_SEVEN_ISLAND_HOUSE_OLD_WOMAN, MOVEMENT_TYPE_FACE_RIGHT
+ return
+
+SevenIsland_House_Room1_OnFrame::
+ map_script_2 VAR_MAP_SCENE_SEVEN_ISLAND_HOUSE_ROOM1, 1, SevenIsland_House_Room1_EventScript_OldWomanCommentOnBattle
+ map_script_2 VAR_MAP_SCENE_SEVEN_ISLAND_HOUSE_ROOM1, 2, SevenIsland_House_Room1_EventScript_OldWomanCommentOnBattle
+ map_script_2 VAR_MAP_SCENE_SEVEN_ISLAND_HOUSE_ROOM1, 3, SevenIsland_House_Room1_EventScript_OldWomanCommentOnBattle
+ .2byte 0
+
+SevenIsland_House_Room1_EventScript_OldWomanCommentOnBattle::
+ lockall
+ textcolor NPC_TEXT_COLOR_FEMALE
+ applymovement LOCALID_PLAYER, SevenIsland_House_Room1_Movement_PlayerReEnterRoom
+ waitmovement 0
+ applymovement LOCALID_SEVEN_ISLAND_HOUSE_OLD_WOMAN, SevenIsland_House_Room1_Movement_OldWomanWalkBehindPlayer
+ waitmovement 0
+ copyobjectxytoperm LOCALID_SEVEN_ISLAND_HOUSE_OLD_WOMAN
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ call_if_eq VAR_MAP_SCENE_SEVEN_ISLAND_HOUSE_ROOM1, 1, SevenIsland_House_Room1_EventScript_BattleWonComment
+ call_if_eq VAR_MAP_SCENE_SEVEN_ISLAND_HOUSE_ROOM1, 2, SevenIsland_House_Room1_EventScript_BattleLostComment
+ call_if_eq VAR_MAP_SCENE_SEVEN_ISLAND_HOUSE_ROOM1, 3, SevenIsland_House_Room1_EventScript_BattleTiedComment
+ special LoadPlayerParty
+ setvar VAR_MAP_SCENE_SEVEN_ISLAND_HOUSE_ROOM1, 0
+ releaseall
+ end
+
+SevenIsland_House_Room1_EventScript_BattleWonComment::
+ msgbox SevenIsland_House_Room1_Text_AstoundingBattle
+ return
+
+SevenIsland_House_Room1_EventScript_BattleLostComment::
+ msgbox SevenIsland_House_Room1_Text_FeelYourDisappointment
+ return
+
+SevenIsland_House_Room1_EventScript_BattleTiedComment::
+ msgbox SevenIsland_House_Room1_Text_DrawWasIt
+ return
+
+SevenIsland_House_Room1_Movement_PlayerReEnterRoom::
+ walk_down
+ step_end
+
+SevenIsland_House_Room1_Movement_OldWomanWalkBehindPlayer::
+ walk_right
+ walk_in_place_faster_down
+ step_end
+
+SevenIsland_House_Room1_EventScript_OldWoman::
+ lock
+ faceplayer
+ special ValidateEReaderTrainer
+ call_if_eq VAR_RESULT, 1, SevenIsland_House_Room1_EventScript_InvalidVisitingTrainer
+ goto_if_eq TRAINER_VISITING, TRUE, SevenIsland_House_Room1_EventScript_TrainerVisiting
+ msgbox SevenIsland_House_Room1_Text_OnlyEnjoymentWatchingBattles
+ release
+ end
+
+SevenIsland_House_Room1_EventScript_InvalidVisitingTrainer::
+ msgbox SevenIsland_House_Room1_Text_OnlyEnjoymentWatchingBattles
+ release
+ end
+
+SevenIsland_House_Room1_EventScript_TrainerVisiting::
+ special SavePlayerParty
+ special BufferEReaderTrainerName
+ msgbox SevenIsland_House_Room1_Text_ChallengeVisitingTrainer, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, SevenIsland_House_Room1_EventScript_DeclineBattle
+ call SevenIsland_House_Room1_EventScript_ChooseParty
+ goto_if_eq VAR_RESULT, 0, SevenIsland_House_Room1_EventScript_DeclineBattle
+ msgbox SevenIsland_House_Room1_Text_SaveProgressBeforeBattle, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, SevenIsland_House_Room1_EventScript_DeclineBattle
+ special LoadPlayerParty
+ call Common_EventScript_SaveGame
+ goto_if_eq VAR_RESULT, 0, SevenIsland_House_Room1_EventScript_DeclineBattle
+ special SavePlayerParty
+ special ReducePlayerPartyToSelectedMons
+ msgbox SevenIsland_House_Room1_Text_DontHoldAnythingBack
+ closemessage
+ call_if_eq VAR_FACING, DIR_NORTH, SevenIsland_House_Room1_EventScript_EnterBattleRoomNorth
+ call_if_eq VAR_FACING, DIR_EAST, SevenIsland_House_Room1_EventScript_EnterBattleRoomEast
+ call_if_eq VAR_FACING, DIR_WEST, SevenIsland_House_Room1_EventScript_EnterBattleRoomWest
+ warp MAP_SEVEN_ISLAND_HOUSE_ROOM2, 3, 1
+ waitstate
+ release
+ end
+
+SevenIsland_House_Room1_EventScript_DeclineBattle::
+ special LoadPlayerParty
+ msgbox SevenIsland_House_Room1_Text_OhYouWontBattle
+ release
+ end
+
+SevenIsland_House_Room1_EventScript_ChooseParty::
+ msgbox SevenIsland_House_Room1_Text_LimitThreeMonsPerSide
+ fadescreen FADE_TO_BLACK
+ special ChooseHalfPartyForBattle
+ waitstate
+ return
+
+SevenIsland_House_Room1_EventScript_EnterBattleRoomNorth::
+ applymovement VAR_LAST_TALKED, SevenIsland_House_Room1_Movement_OldWomanMoveAsideLeft
+ applymovement LOCALID_PLAYER, SevenIsland_House_Room1_Movement_PlayerEnterBattleRoomNorth
+ waitmovement 0
+ return
+
+SevenIsland_House_Room1_EventScript_EnterBattleRoomEast::
+ applymovement VAR_LAST_TALKED, SevenIsland_House_Room1_Movement_OldWomanMoveAsideRight
+ applymovement LOCALID_PLAYER, SevenIsland_House_Room1_Movement_PlayerEnterBattleRoomEast
+ waitmovement 0
+ return
+
+SevenIsland_House_Room1_EventScript_EnterBattleRoomWest::
+ applymovement VAR_LAST_TALKED, SevenIsland_House_Room1_Movement_OldWomanMoveAsideLeft
+ applymovement LOCALID_PLAYER, SevenIsland_House_Room1_Movement_PlayerEnterBattleRoomWest
+ waitmovement 0
+ return
+
+SevenIsland_House_Room1_Movement_PlayerEnterBattleRoomNorth::
+ delay_16
+ walk_up
+ walk_up
+ step_end
+
+SevenIsland_House_Room1_Movement_PlayerEnterBattleRoomEast::
+ delay_16
+ walk_right
+ walk_up
+ step_end
+
+SevenIsland_House_Room1_Movement_PlayerEnterBattleRoomWest::
+ delay_16
+ walk_left
+ walk_up
+ step_end
+
+SevenIsland_House_Room1_Movement_OldWomanMoveAsideLeft::
+ walk_left
+ walk_in_place_faster_right
+ step_end
+
+SevenIsland_House_Room1_Movement_OldWomanMoveAsideRight::
+ walk_right
+ walk_in_place_faster_left
+ step_end
+
+SevenIsland_House_Room1_EventScript_Box::
+ msgbox SevenIsland_House_Room1_Text_SlightBreezeAroundBox, MSGBOX_SIGN
+ end
+
+SevenIsland_House_Room1_Text_OnlyEnjoymentWatchingBattles::
+ .string "I may not look like much now,\n"
+ .string "but when I was younger…\p"
+ .string "I flew everywhere, challenging\n"
+ .string "TRAINERS wherever I found them.\p"
+ .string "Now, my only source of enjoyment\n"
+ .string "is reminiscing about the past while\l"
+ .string "watching battles.$"
+
+SevenIsland_House_Room1_Text_SlightBreezeAroundBox::
+ .string "There is a slight breeze blowing\n"
+ .string "around the box.$"
+
+SevenIsland_House_Room1_Text_ChallengeVisitingTrainer::
+ .string "Ah!\n"
+ .string "Welcome, my friend!\p"
+ .string "Let me tell you something. There's\n"
+ .string "a hidden room in the basement.\p"
+ .string "A TRAINER named {STR_VAR_1} is\n"
+ .string "waiting there now.\p"
+ .string "Tell me, you did come to challenge\n"
+ .string "{STR_VAR_1}, am I right?$"
+
+SevenIsland_House_Room1_Text_OhYouWontBattle::
+ .string "Oh…\n"
+ .string "You won't battle…\p"
+ .string "I see, I see.\n"
+ .string "… …\p"
+ .string "Well, perhaps if you change your\n"
+ .string "mind, do come back.$"
+
+SevenIsland_House_Room1_Text_LimitThreeMonsPerSide::
+ .string "Ah!\n"
+ .string "You will battle for me?\p"
+ .string "It was worth my time moving the\n"
+ .string "box aside, then.\p"
+ .string "… …\n"
+ .string "But there is one slight problem.\p"
+ .string "This hidden room is not built very\n"
+ .string "sturdy.\p"
+ .string "Can I get you to limit it to\n"
+ .string "battles of three POKéMON per side?$"
+
+SevenIsland_House_Room1_Text_SaveProgressBeforeBattle::
+ .string "Fine! Before your battle, would\n"
+ .string "you like to save your game?$"
+
+SevenIsland_House_Room1_Text_DontHoldAnythingBack::
+ .string "All right.\n"
+ .string "Don't hold anything back!$"
+
+@ Unused
+SevenIsland_House_Room1_Text_StrVar1_1::
+ .string "{STR_VAR_1}$"
+
+SevenIsland_House_Room2_Text_MatchEndedUpDraw::
+ .string "The match ended up a draw.$"
+
+SevenIsland_House_Room1_Text_DrawWasIt::
+ .string "A draw, was it?\p"
+ .string "However, let me say that it was\n"
+ .string "a worthy spectacle.\p"
+ .string "I'd say it was a wonderful battle\n"
+ .string "with a real sense of depth!$"
+
+@ Unused
+SevenIsland_House_Room1_Text_StrVar1_2::
+ .string "{STR_VAR_1}$"
+
+SevenIsland_House_Room1_Text_AstoundingBattle::
+ .string "Bravo!\p"
+ .string "Bravo, indeed!\n"
+ .string "What an astounding battle!\p"
+ .string "It was so astounding, why, it keeps\n"
+ .string "filling my eyes with tears!\p"
+ .string "The thrust and parry of expertly\n"
+ .string "used techniques!\p"
+ .string "The clash of power upon power!\p"
+ .string "Yes!\n"
+ .string "It was sheer magnificence!$"
+
+@ Unused
+SevenIsland_House_Room1_Text_StrVar1_3::
+ .string "{STR_VAR_1}$"
+
+SevenIsland_House_Room1_Text_FeelYourDisappointment::
+ .string "Too bad!\n"
+ .string "I feel your disappointment.\p"
+ .string "However, that disappointment is\n"
+ .string "what will make you better.\p"
+ .string "Use it, learn from it, and make it\n"
+ .string "motivate you to seek greatness.\p"
+ .string "Forget not this disappointment\n"
+ .string "and redouble your training!$"
+
diff --git a/data/maps/SevenIsland_House_Room2_Frlg/map.json b/data/maps/SevenIsland_House_Room2_Frlg/map.json
new file mode 100644
index 000000000000..00831a90cc80
--- /dev/null
+++ b/data/maps/SevenIsland_House_Room2_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_SEVEN_ISLAND_HOUSE_ROOM2",
+ "name": "SevenIsland_House_Room2_Frlg",
+ "layout": "LAYOUT_SEVEN_ISLAND_HOUSE_ROOM2",
+ "music": "MUS_RG_SEVII_67",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SEVEN_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_GYM",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_0",
+ "x": 6,
+ "y": 5,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_SEVEN_ISLAND_HOUSE_ROOM1",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SevenIsland_House_Room2_Frlg/scripts.inc b/data/maps/SevenIsland_House_Room2_Frlg/scripts.inc
new file mode 100644
index 000000000000..c6d5defdefdc
--- /dev/null
+++ b/data/maps/SevenIsland_House_Room2_Frlg/scripts.inc
@@ -0,0 +1,74 @@
+SevenIsland_House_Room2_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_House_Room2_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, SevenIsland_House_Room2_OnFrame
+ .byte 0
+
+SevenIsland_House_Room2_OnTransition::
+ special SetEReaderTrainerGfxId
+ end
+
+SevenIsland_House_Room2_OnFrame::
+ map_script_2 VAR_TEMP_1, 0, SevenIsland_House_Room2_EventScript_BattleVisitingTrainer
+ .2byte 0
+
+SevenIsland_House_Room2_EventScript_BattleVisitingTrainer::
+ lockall
+ applymovement LOCALID_PLAYER, SevenIsland_House_Room2_Movement_PlayerEnterRoom
+ waitmovement 0
+ special CopyEReaderTrainerGreeting
+ msgbox gStringVar4
+ closemessage
+ setvar VAR_0x8004, 2
+ setvar VAR_0x8005, 0
+ special DoSpecialTrainerBattle
+ waitstate
+ call_if_eq VAR_RESULT, 3, SevenIsland_House_Room2_EventScript_BattleTie
+ call_if_eq VAR_RESULT, 1, SevenIsland_House_Room2_EventScript_BattleWon
+ call_if_eq VAR_RESULT, 2, SevenIsland_House_Room2_EventScript_BattleLost
+ closemessage
+ special HealPlayerParty
+ applymovement LOCALID_PLAYER, SevenIsland_House_Room2_Movement_PlayerExitRoom
+ waitmovement 0
+ special LoadPlayerParty
+ setvar VAR_TEMP_1, 1
+ warp MAP_SEVEN_ISLAND_HOUSE_ROOM1, 4, 1
+ waitstate
+ releaseall
+ end
+
+SevenIsland_House_Room2_EventScript_BattleTie::
+ setvar VAR_MAP_SCENE_SEVEN_ISLAND_HOUSE_ROOM1, 3
+ msgbox SevenIsland_House_Room2_Text_MatchEndedUpDraw
+ return
+
+SevenIsland_House_Room2_EventScript_BattleWon::
+ setvar VAR_MAP_SCENE_SEVEN_ISLAND_HOUSE_ROOM1, 1
+ special ShowFieldMessageStringVar4
+ waitmessage
+ waitbuttonpress
+ return
+
+SevenIsland_House_Room2_EventScript_BattleLost::
+ setvar VAR_MAP_SCENE_SEVEN_ISLAND_HOUSE_ROOM1, 2
+ special ShowFieldMessageStringVar4
+ waitmessage
+ waitbuttonpress
+ return
+
+SevenIsland_House_Room2_Movement_PlayerEnterRoom::
+ walk_down
+ walk_down
+ walk_down
+ walk_right
+ walk_right
+ step_end
+
+SevenIsland_House_Room2_Movement_PlayerExitRoom::
+ walk_left
+ walk_left
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ delay_8
+ step_end
diff --git a/data/maps/SevenIsland_Mart_Frlg/map.json b/data/maps/SevenIsland_Mart_Frlg/map.json
new file mode 100644
index 000000000000..2977e1688e75
--- /dev/null
+++ b/data/maps/SevenIsland_Mart_Frlg/map.json
@@ -0,0 +1,87 @@
+{
+ "id": "MAP_SEVEN_ISLAND_MART",
+ "name": "SevenIsland_Mart_Frlg",
+ "layout": "LAYOUT_MART_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SEVEN_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 2,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_Mart_EventScript_Clerk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_Mart_EventScript_Lass",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 9,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_Mart_EventScript_Fisher",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 5,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_Mart_EventScript_Hiker",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SevenIsland_Mart_Frlg/scripts.inc b/data/maps/SevenIsland_Mart_Frlg/scripts.inc
new file mode 100644
index 000000000000..68fcb484297d
--- /dev/null
+++ b/data/maps/SevenIsland_Mart_Frlg/scripts.inc
@@ -0,0 +1,57 @@
+SevenIsland_Mart_Frlg_MapScripts::
+ .byte 0
+
+SevenIsland_Mart_EventScript_Clerk::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart SevenIsland_Mart_Items
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+SevenIsland_Mart_Items::
+ .2byte ITEM_ULTRA_BALL
+ .2byte ITEM_GREAT_BALL
+ .2byte ITEM_FULL_RESTORE
+ .2byte ITEM_MAX_POTION
+ .2byte ITEM_HYPER_POTION
+ .2byte ITEM_REVIVE
+ .2byte ITEM_FULL_HEAL
+ .2byte ITEM_ESCAPE_ROPE
+ .2byte ITEM_MAX_REPEL
+ .2byte ITEM_NONE
+ release
+ end
+
+SevenIsland_Mart_EventScript_Lass::
+ msgbox SevenIsland_Mart_Text_MonHavePersonalitiesOfTheirOwn, MSGBOX_NPC
+ end
+
+SevenIsland_Mart_EventScript_Hiker::
+ msgbox SevenIsland_Mart_Text_PreparationsCompleteForRuins, MSGBOX_NPC
+ end
+
+SevenIsland_Mart_EventScript_Fisher::
+ msgbox SevenIsland_Mart_Text_NeedToFishOnSevenIsland, MSGBOX_NPC
+ end
+
+SevenIsland_Mart_Text_MonHavePersonalitiesOfTheirOwn::
+ .string "POKéMON have personalities of their\n"
+ .string "own, just like people.\p"
+ .string "My PIKACHU has a HASTY nature,\n"
+ .string "so it grew to be a speedy POKéMON.$"
+
+SevenIsland_Mart_Text_PreparationsCompleteForRuins::
+ .string "Okay, preparations are complete\n"
+ .string "for me to explore the RUINS.$"
+
+SevenIsland_Mart_Text_NeedToFishOnSevenIsland::
+ .string "I need to fish on SEVEN ISLAND.\p"
+ .string "That will complete my fishing tour\n"
+ .string "of the SEVII ISLANDS.\p"
+ .string "I'd better stock up on some\n"
+ .string "POKé BALLS first, though.$"
+
diff --git a/data/maps/SevenIsland_PokemonCenter_1F_Frlg/map.json b/data/maps/SevenIsland_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..8ee5c004e562
--- /dev/null
+++ b/data/maps/SevenIsland_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,123 @@
+{
+ "id": "MAP_SEVEN_ISLAND_POKEMON_CENTER_1F",
+ "name": "SevenIsland_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SEVEN_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_SEVEN_ISLAND_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 11,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_PokemonCenter_1F_EventScript_OldMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 14,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_PokemonCenter_1F_EventScript_Sailor",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY_FRLG",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_PokemonCenter_1F_EventScript_Beauty",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 3,
+ "y": 1,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_PokemonCenter_1F_EventScript_PokemonJournal",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_PokemonCenter_1F_EventScript_PokemonJournal",
+ "flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_SEVEN_ISLAND_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SevenIsland_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/SevenIsland_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..48851d0e064c
--- /dev/null
+++ b/data/maps/SevenIsland_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,47 @@
+SevenIsland_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ .byte 0
+
+SevenIsland_PokemonCenter_1F_OnTransition::
+ setrespawn HEAL_LOCATION_SEVEN_ISLAND
+ end
+
+SevenIsland_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+SevenIsland_PokemonCenter_1F_EventScript_OldMan::
+ msgbox SevenIsland_PokemonCenter_1F_Text_EventsDependingOnConnections, MSGBOX_NPC
+ end
+
+SevenIsland_PokemonCenter_1F_EventScript_Sailor::
+ msgbox SevenIsland_PokemonCenter_1F_Text_DidYouRideSeagallopHere, MSGBOX_NPC
+ end
+
+SevenIsland_PokemonCenter_1F_EventScript_Beauty::
+ msgbox SevenIsland_PokemonCenter_1F_Text_CheckOutTrainerTower, MSGBOX_NPC
+ end
+
+SevenIsland_PokemonCenter_1F_Text_EventsDependingOnConnections::
+ .string "On this island, different events\n"
+ .string "occur depending on connections.\p"
+ .string "What are those connections?\p"
+ .string "They are for you to discover on\n"
+ .string "your own.$"
+
+SevenIsland_PokemonCenter_1F_Text_DidYouRideSeagallopHere::
+ .string "Did you ride a SEAGALLOP ferry\n"
+ .string "to get here?\p"
+ .string "There are at least ten of those\n"
+ .string "high-speed ships.\p"
+ .string "I don't know where they all go,\n"
+ .string "though.$"
+
+SevenIsland_PokemonCenter_1F_Text_CheckOutTrainerTower::
+ .string "If you're confident, you should\n"
+ .string "check out TRAINER TOWER.$"
+
diff --git a/data/maps/SevenIsland_PokemonCenter_2F_Frlg/map.json b/data/maps/SevenIsland_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..8c425e24b36e
--- /dev/null
+++ b/data/maps/SevenIsland_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_SEVEN_ISLAND_POKEMON_CENTER_2F",
+ "name": "SevenIsland_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SEVEN_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_SEVEN_ISLAND_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SevenIsland_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/SevenIsland_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..ebe6302662e1
--- /dev/null
+++ b/data/maps/SevenIsland_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+SevenIsland_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+SevenIsland_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+SevenIsland_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+SevenIsland_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/SevenIsland_SevaultCanyon_Entrance_Frlg/map.json b/data/maps/SevenIsland_SevaultCanyon_Entrance_Frlg/map.json
new file mode 100644
index 000000000000..c9129572d462
--- /dev/null
+++ b/data/maps/SevenIsland_SevaultCanyon_Entrance_Frlg/map.json
@@ -0,0 +1,149 @@
+{
+ "id": "MAP_SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE",
+ "name": "SevenIsland_SevaultCanyon_Entrance_Frlg",
+ "layout": "LAYOUT_SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE",
+ "music": "MUS_RG_SEVII_ROUTE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CANYON_ENTRANCE",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_SEVEN_ISLAND",
+ "offset": 0,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_SEVEN_ISLAND_SEVAULT_CANYON",
+ "offset": 20,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 12,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "SevenIsland_SevaultCanyon_Entrance_EventScript_Miah",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY_FRLG",
+ "x": 3,
+ "y": 34,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SevenIsland_SevaultCanyon_Entrance_EventScript_Eve",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 4,
+ "y": 34,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SevenIsland_SevaultCanyon_Entrance_EventScript_Jon",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CAMPER_FRLG",
+ "x": 11,
+ "y": 26,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_UP_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SevenIsland_SevaultCanyon_Entrance_EventScript_Nicolas",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 10,
+ "y": 26,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_UP_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SevenIsland_SevaultCanyon_Entrance_EventScript_Madeline",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 11,
+ "y": 17,
+ "elevation": 5,
+ "movement_type": "MOVEMENT_TYPE_ROTATE_COUNTERCLOCKWISE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SevenIsland_SevaultCanyon_Entrance_EventScript_Mason",
+ "flag": "0"
+ },
+ {
+ "type": "clone",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 7,
+ "y": -2,
+ "target_local_id": "LOCALID_SWORDS_DANCE_TUTOR",
+ "target_map": "MAP_SEVEN_ISLAND"
+ }
+ ],
+ "warp_events": [
+
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 8,
+ "y": 29,
+ "elevation": 5,
+ "item": "ITEM_RAWST_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE_RAWST_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 14,
+ "y": 26,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SevenIsland_SevaultCanyon_Entrance_EventScript_RouteSign"
+ }
+ ]
+}
diff --git a/data/maps/SevenIsland_SevaultCanyon_Entrance_Frlg/scripts.inc b/data/maps/SevenIsland_SevaultCanyon_Entrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..5ad64cf5bf31
--- /dev/null
+++ b/data/maps/SevenIsland_SevaultCanyon_Entrance_Frlg/scripts.inc
@@ -0,0 +1,100 @@
+SevenIsland_SevaultCanyon_Entrance_Frlg_MapScripts::
+ .byte 0
+
+SevenIsland_SevaultCanyon_Entrance_EventScript_RouteSign::
+ msgbox SevenIsland_SevaultCanyon_Entrance_Text_RouteSign, MSGBOX_SIGN
+ end
+
+SevenIsland_SevaultCanyon_Entrance_Text_MiahIntro::
+ .string "Kyahaha!\n"
+ .string "I'll flick you away effortlessly!$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_MiahDefeat::
+ .string "Tch!\n"
+ .string "Too strong for me!$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_MiahPostBattle::
+ .string "What's that?\n"
+ .string "I don't act the way I look?\p"
+ .string "Heh, that's a part of my strategy!$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_MasonIntro::
+ .string "Howdy!\n"
+ .string "Are you a member of my fan club?$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_MasonDefeat::
+ .string "Oh, so you're not a fan…\p"
+ .string "Well, I can change that.\n"
+ .string "Let me sing for you!$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_MasonPostBattle::
+ .string "Lalalah…\n"
+ .string "My POKéMON, I send them out,\l"
+ .string "all the girls scream and shout!$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_NicolasIntro::
+ .string "This island is too spread out…\n"
+ .string "It's not easy patrolling the place.$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_NicolasDefeat::
+ .string "Uh-huh…$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_NicolasPostBattle::
+ .string "TRAINERS like you from cities,\n"
+ .string "they sure are tough.\p"
+ .string "You'll be headed for the TOWER,\n"
+ .string "won't you?$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_MadelineIntro::
+ .string "I punish people who abuse\n"
+ .string "POKéMON!$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_MadelineDefeat::
+ .string "You don't seem to be a problem\n"
+ .string "TRAINER.$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_MadelinePostBattle::
+ .string "If you treat your POKéMON with\n"
+ .string "kindness, they'll understand.$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_EveIntro::
+ .string "EVE: I'll team up with JON and\n"
+ .string "battle together.$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_EveDefeat::
+ .string "EVE: Me and JON, we lost.\n"
+ .string "Ehehe.$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_EvePostBattle::
+ .string "EVE: I'm going to work harder with\n"
+ .string "JON.$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_EveNotEnoughMons::
+ .string "EVE: I want to team up with JON\n"
+ .string "when I battle you.\p"
+ .string "Come back with two POKéMON, okay?$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_JonIntro::
+ .string "JON: When I'm with EVE, it feels\n"
+ .string "like we could never lose.$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_JonDefeat::
+ .string "JON: When I'm with EVE,\n"
+ .string "it doesn't feel like I've lost!$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_JonPostBattle::
+ .string "JON: When I'm with EVE, I feel\n"
+ .string "giddy whether I win or lose.\p"
+ .string "It's magical!$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_JonNotEnoughMons::
+ .string "JON: If it's with EVE, I'll be\n"
+ .string "happy to battle with you.\p"
+ .string "So, I'd like to make it a\n"
+ .string "two-on-two battle, if I may.$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_RouteSign::
+ .string "SEVAULT CANYON ENTRANCE\p"
+ .string "TRAINERS are asked to refrain from\n"
+ .string "damaging plants in the CANYON.$"
+
diff --git a/data/maps/SevenIsland_SevaultCanyon_Frlg/map.json b/data/maps/SevenIsland_SevaultCanyon_Frlg/map.json
new file mode 100644
index 000000000000..2f992c96742a
--- /dev/null
+++ b/data/maps/SevenIsland_SevaultCanyon_Frlg/map.json
@@ -0,0 +1,350 @@
+{
+ "id": "MAP_SEVEN_ISLAND_SEVAULT_CANYON",
+ "name": "SevenIsland_SevaultCanyon_Frlg",
+ "layout": "LAYOUT_SEVEN_ISLAND_SEVAULT_CANYON",
+ "music": "MUS_RG_SEVII_ROUTE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SEVAULT_CANYON",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_SEVEN_ISLAND_TANOBY_RUINS",
+ "offset": -48,
+ "direction": "down"
+ },
+ {
+ "map": "MAP_SEVEN_ISLAND_SEVAULT_CANYON_ENTRANCE",
+ "offset": -20,
+ "direction": "left"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BATTLE_GIRL",
+ "x": 13,
+ "y": 43,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SevenIsland_SevaultCanyon_EventScript_Cyndy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 13,
+ "y": 36,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SevenIsland_SevaultCanyon_EventScript_Evan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CAMPER_FRLG",
+ "x": 3,
+ "y": 35,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SevenIsland_SevaultCanyon_EventScript_Jackson",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 3,
+ "y": 36,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SevenIsland_SevaultCanyon_EventScript_Katelyn",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 7,
+ "y": 56,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SevenIsland_SevaultCanyon_EventScript_Leroy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 11,
+ "y": 63,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SevenIsland_SevaultCanyon_EventScript_Michelle",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 14,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SevenIsland_SevaultCanyon_EventScript_Lex",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 14,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SevenIsland_SevaultCanyon_EventScript_Nya",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 3,
+ "y": 41,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 13,
+ "y": 47,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 7,
+ "y": 44,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 12,
+ "y": 47,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_15"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 15,
+ "y": 46,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_16"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 16,
+ "y": 47,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_17"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 17,
+ "y": 47,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BREAKABLE_ROCK_FRLG",
+ "x": 11,
+ "y": 31,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_RockSmash",
+ "flag": "FLAG_TEMP_1B"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 18,
+ "y": 45,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_SevaultCanyon_EventScript_ItemKingsRock",
+ "flag": "FLAG_HIDE_SEVEN_ISLAND_SEVAULT_CANYON_KINGS_ROCK"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 7,
+ "y": 38,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_SevaultCanyon_EventScript_ItemMaxElixir",
+ "flag": "FLAG_HIDE_SEVEN_ISLAND_SEVAULT_CANYON_MAX_ELIXIR"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 17,
+ "y": 23,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_SevaultCanyon_EventScript_ItemNugget",
+ "flag": "FLAG_HIDE_SEVEN_ISLAND_SEVAULT_CANYON_NUGGET"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 8,
+ "y": 26,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_SevaultCanyon_EventScript_BlackBelt",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 17,
+ "elevation": 5,
+ "dest_map": "MAP_SEVEN_ISLAND_SEVAULT_CANYON_TANOBY_KEY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 14,
+ "y": 61,
+ "elevation": 0,
+ "dest_map": "MAP_SEVEN_ISLAND_SEVAULT_CANYON_HOUSE",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 15,
+ "y": 66,
+ "elevation": 3,
+ "item": "ITEM_CHERI_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_SEVEN_ISLAND_SEVAULT_CANYON_CHERI_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 16,
+ "y": 71,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SevenIsland_SevaultCanyon_EventScript_RouteSign"
+ }
+ ]
+}
diff --git a/data/maps/SevenIsland_SevaultCanyon_Frlg/scripts.inc b/data/maps/SevenIsland_SevaultCanyon_Frlg/scripts.inc
new file mode 100644
index 000000000000..011054c52203
--- /dev/null
+++ b/data/maps/SevenIsland_SevaultCanyon_Frlg/scripts.inc
@@ -0,0 +1,137 @@
+SevenIsland_SevaultCanyon_Frlg_MapScripts::
+ .byte 0
+
+SevenIsland_SevaultCanyon_EventScript_RouteSign::
+ msgbox SevenIsland_SevaultCanyon_Text_RouteSign, MSGBOX_SIGN
+ end
+
+SevenIsland_SevaultCanyon_Text_CyndyIntro::
+ .string "My conditioning's in top form!$"
+
+SevenIsland_SevaultCanyon_Text_CyndyDefeat::
+ .string "Huh?\n"
+ .string "Something's not right…$"
+
+SevenIsland_SevaultCanyon_Text_CyndyPostBattle::
+ .string "The way I am now, I may have to\n"
+ .string "hold off on TRAINER TOWER…$"
+
+SevenIsland_SevaultCanyon_Text_EvanIntro::
+ .string "It doesn't matter if you happen to\n"
+ .string "have the strongest POKéMON…\p"
+ .string "It doesn't mean a thing if you don't\n"
+ .string "know how to use them properly!$"
+
+SevenIsland_SevaultCanyon_Text_EvanDefeat::
+ .string "You're a master at this.$"
+
+SevenIsland_SevaultCanyon_Text_EvanPostBattle::
+ .string "You see them every so often,\n"
+ .string "TRAINERS with awesome POKéMON\l"
+ .string "who have no idea what to do.\p"
+ .string "Before training POKéMON, TRAINERS\n"
+ .string "themselves need to grow up.$"
+
+SevenIsland_SevaultCanyon_Text_JacksonIntro::
+ .string "I work to protect the environment.\n"
+ .string "In turn, nature protects me!$"
+
+SevenIsland_SevaultCanyon_Text_JacksonDefeat::
+ .string "Whoa! You're tough!\n"
+ .string "How about protecting me?$"
+
+SevenIsland_SevaultCanyon_Text_JacksonPostBattle::
+ .string "From far out among the stars, our\n"
+ .string "planet is just a drop of water.\p"
+ .string "But we want to protect that drop\n"
+ .string "of water for everyone.$"
+
+SevenIsland_SevaultCanyon_Text_KatelynIntro::
+ .string "Those shoes you have are pretty\n"
+ .string "snazzy.$"
+
+SevenIsland_SevaultCanyon_Text_KatelynDefeat::
+ .string "You're hot stuff in spite of your\n"
+ .string "cute looks.$"
+
+SevenIsland_SevaultCanyon_Text_KatelynPostBattle::
+ .string "Your mom bought those snazzy\n"
+ .string "RUNNING SHOES for you?\p"
+ .string "She must adore you.$"
+
+SevenIsland_SevaultCanyon_Text_LeroyIntro::
+ .string "You look strong.\n"
+ .string "Let me battle you, please!$"
+
+SevenIsland_SevaultCanyon_Text_LeroyDefeat::
+ .string "I knew it!\n"
+ .string "You're as tough as I thought!$"
+
+SevenIsland_SevaultCanyon_Text_LeroyPostBattle::
+ .string "The way you battle has given me\n"
+ .string "a lot of useful data.\p"
+ .string "Thanks so much!$"
+
+SevenIsland_SevaultCanyon_Text_MichelleIntro::
+ .string "I was given the best possible\n"
+ .string "education to become this strong.\p"
+ .string "I don't want to lose to anyone!$"
+
+SevenIsland_SevaultCanyon_Text_MichelleDefeat::
+ .string "Thank you. I feel like I've been\n"
+ .string "set free by losing to you.$"
+
+SevenIsland_SevaultCanyon_Text_MichellePostBattle::
+ .string "For some reason, I get furious\n"
+ .string "over the slightest thing.\p"
+ .string "I'll calm myself by breathing\n"
+ .string "deeply.$"
+
+SevenIsland_SevaultCanyon_Text_LexIntro::
+ .string "LEX: My darling NYA, together\n"
+ .string "we could win!$"
+
+SevenIsland_SevaultCanyon_Text_LexDefeat::
+ .string "LEX: I seem to have been too\n"
+ .string "careless…$"
+
+SevenIsland_SevaultCanyon_Text_LexPostBattle::
+ .string "LEX: I think it was a good\n"
+ .string "experience for NYA.\p"
+ .string "You have my gratitude.$"
+
+SevenIsland_SevaultCanyon_Text_LexNotEnoughMons::
+ .string "LEX: May I ask you to battle the\n"
+ .string "both of us at the same time?$"
+
+SevenIsland_SevaultCanyon_Text_NyaIntro::
+ .string "NYA: I'll do my best so I won't\n"
+ .string "drag down my mentor, LEX!$"
+
+SevenIsland_SevaultCanyon_Text_NyaDefeat::
+ .string "NYA: Oh, no…\n"
+ .string "I'm so sorry, I…$"
+
+SevenIsland_SevaultCanyon_Text_NyaPostBattle::
+ .string "NYA: I think I'm going to need\n"
+ .string "much more seasoning and tutoring\l"
+ .string "under LEX…\p"
+ .string "…So, LEX, please, may I stay with\n"
+ .string "you like this?$"
+
+SevenIsland_SevaultCanyon_Text_NyaNotEnoughMons::
+ .string "NYA: I'm sorry, but may we battle\n"
+ .string "in two-on-two style?$"
+
+SevenIsland_SevaultCanyon_Text_RouteSign::
+ .string "SEVAULT CANYON\n"
+ .string "TANOBY RUINS AHEAD$"
+
+SevenIsland_SevaultCanyon_Text_BrunoTrainedWithBrawly::
+ .string "Training by oneself is certainly\n"
+ .string "not a bad thing.\p"
+ .string "But it's also not bad to aim for\n"
+ .string "the top with a partner.\p"
+ .string "Even BRUNO…\n"
+ .string "He trained with a fellow by the\l"
+ .string "name of BRAWLY before.$"
diff --git a/data/maps/SevenIsland_SevaultCanyon_House_Frlg/map.json b/data/maps/SevenIsland_SevaultCanyon_House_Frlg/map.json
new file mode 100644
index 000000000000..a3792ef6d471
--- /dev/null
+++ b/data/maps/SevenIsland_SevaultCanyon_House_Frlg/map.json
@@ -0,0 +1,74 @@
+{
+ "id": "MAP_SEVEN_ISLAND_SEVAULT_CANYON_HOUSE",
+ "name": "SevenIsland_SevaultCanyon_House_Frlg",
+ "layout": "LAYOUT_HOUSE3_FRLG",
+ "music": "MUS_RG_SEVII_67",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SEVAULT_CANYON",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_CHANSEY_DANCE_MAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 2,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_SevaultCanyon_House_EventScript_ChanseyDanceMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANSEY",
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_SevaultCanyon_House_EventScript_Chansey",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 6,
+ "y": 4,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SevenIsland_SevaultCanyon_House_EventScript_ItemLuckyPunch",
+ "flag": "FLAG_HIDE_SEVEN_ISLAND_SEVAULT_CANYON_HOUSE_LUCKY_PUNCH"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_SEVAULT_CANYON",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SevenIsland_SevaultCanyon_House_Frlg/scripts.inc b/data/maps/SevenIsland_SevaultCanyon_House_Frlg/scripts.inc
new file mode 100644
index 000000000000..5046450945d1
--- /dev/null
+++ b/data/maps/SevenIsland_SevaultCanyon_House_Frlg/scripts.inc
@@ -0,0 +1,104 @@
+.set DID_CHANSEY_DANCE, FLAG_TEMP_2
+
+SevenIsland_SevaultCanyon_House_Frlg_MapScripts::
+ .byte 0
+
+SevenIsland_SevaultCanyon_House_EventScript_ChanseyDanceMan::
+ lock
+ goto_if_set DID_CHANSEY_DANCE, SevenIsland_SevaultCanyon_House_EventScript_AlreadyDanced
+ playbgm MUS_SCHOOL, 0
+ applymovement LOCALID_CHANSEY_DANCE_MAN, SevenIsland_SevaultCanyon_House_Movement_ChanseyDance
+ waitmovement 0
+ fadedefaultbgm
+ delay 30
+ applymovement LOCALID_CHANSEY_DANCE_MAN, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox SevenIsland_SevaultCanyon_House_Text_ChanseyDanceJoinIn
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox SevenIsland_SevaultCanyon_House_Text_WouldYouLikeToDance, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, SevenIsland_SevaultCanyon_House_EventScript_DeclineDance
+ msgbox SevenIsland_SevaultCanyon_House_Text_DancedChanseyDance
+ closemessage
+ call EventScript_RestorePrevTextColor
+ call_if_ne VAR_FACING, DIR_SOUTH, SevenIsland_SevaultCanyon_House_EventScript_PlayerFaceDown
+ delay 30
+ playbgm MUS_SCHOOL, 0
+ applymovement LOCALID_PLAYER, SevenIsland_SevaultCanyon_House_Movement_ChanseyDance
+ waitmovement 0
+ fadedefaultbgm
+ delay 30
+ call Common_EventScript_OutOfCenterPartyHeal
+ msgbox SevenIsland_SevaultCanyon_House_Text_YoureAllChipperNow
+ setflag DID_CHANSEY_DANCE
+ release
+ end
+
+SevenIsland_SevaultCanyon_House_EventScript_PlayerFaceDown::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ return
+
+SevenIsland_SevaultCanyon_House_EventScript_AlreadyDanced::
+ applymovement LOCALID_CHANSEY_DANCE_MAN, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox SevenIsland_SevaultCanyon_House_Text_ChanseyDanceJoinIn
+ release
+ end
+
+SevenIsland_SevaultCanyon_House_EventScript_DeclineDance::
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox SevenIsland_SevaultCanyon_House_Text_ComeOnDance
+ release
+ end
+
+SevenIsland_SevaultCanyon_House_Movement_ChanseyDance::
+ walk_in_place_down
+ delay_16
+ walk_in_place_down
+ delay_16
+ walk_in_place_down
+ delay_16
+ walk_in_place_down
+ delay_16
+ walk_in_place_faster_right
+ delay_4
+ walk_in_place_faster_up
+ delay_4
+ walk_in_place_faster_left
+ delay_4
+ walk_in_place_faster_down
+ delay_4
+ step_end
+
+SevenIsland_SevaultCanyon_House_EventScript_Chansey::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_CHANSEY, CRY_MODE_NORMAL
+ msgbox SevenIsland_SevaultCanyon_House_Text_Chansey
+ waitmoncry
+ release
+ end
+
+SevenIsland_SevaultCanyon_House_Text_ChanseyDanceJoinIn::
+ .string "Dance, dance!\n"
+ .string "CHANSEY Dance!\p"
+ .string "You join in, too!\n"
+ .string "Dance, dance!$"
+
+SevenIsland_SevaultCanyon_House_Text_WouldYouLikeToDance::
+ .string "Would you like to dance?$"
+
+SevenIsland_SevaultCanyon_House_Text_ComeOnDance::
+ .string "Come on, dance!$"
+
+SevenIsland_SevaultCanyon_House_Text_DancedChanseyDance::
+ .string "{PLAYER} danced the CHANSEY Dance!$"
+
+SevenIsland_SevaultCanyon_House_Text_YoureAllChipperNow::
+ .string "Ahahahaha!\p"
+ .string "There, you're all chipper now!\n"
+ .string "Lucky!$"
+
+SevenIsland_SevaultCanyon_House_Text_Chansey::
+ .string "CHANSEY: Chansi! Chansi!$"
diff --git a/data/maps/SevenIsland_SevaultCanyon_TanobyKey_Frlg/map.json b/data/maps/SevenIsland_SevaultCanyon_TanobyKey_Frlg/map.json
new file mode 100644
index 000000000000..24a515bbdc59
--- /dev/null
+++ b/data/maps/SevenIsland_SevaultCanyon_TanobyKey_Frlg/map.json
@@ -0,0 +1,202 @@
+{
+ "id": "MAP_SEVEN_ISLAND_SEVAULT_CANYON_TANOBY_KEY",
+ "name": "SevenIsland_SevaultCanyon_TanobyKey_Frlg",
+ "layout": "LAYOUT_SEVEN_ISLAND_SEVAULT_CANYON_TANOBY_KEY",
+ "music": "MUS_RG_SEVII_DUNGEON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TANOBY_KEY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_1",
+ "connections": 0,
+ "object_events": [
+ {
+ "local_id": "LOCALID_TANOBY_KEY_BOULDER1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 7,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_TANOBY_KEY_BOULDER2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 8,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_TANOBY_KEY_BOULDER3",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 8,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_TANOBY_KEY_BOULDER4",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 6,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_TANOBY_KEY_BOULDER5",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 8,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_TANOBY_KEY_BOULDER6",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 6,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_TANOBY_KEY_BOULDER7",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 6,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 13,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_SEVAULT_CANYON",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "var": "VAR_TEMP_1",
+ "var_value": "99",
+ "script": "SevenIsland_SevaultCanyon_TanobyKey_EventScript_Switch1"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 8,
+ "elevation": 3,
+ "var": "VAR_TEMP_7",
+ "var_value": "99",
+ "script": "SevenIsland_SevaultCanyon_TanobyKey_EventScript_Switch7"
+ },
+ {
+ "type": "trigger",
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "var": "VAR_TEMP_6",
+ "var_value": "99",
+ "script": "SevenIsland_SevaultCanyon_TanobyKey_EventScript_Switch6"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_TEMP_5",
+ "var_value": "99",
+ "script": "SevenIsland_SevaultCanyon_TanobyKey_EventScript_Switch5"
+ },
+ {
+ "type": "trigger",
+ "x": 5,
+ "y": 6,
+ "elevation": 3,
+ "var": "VAR_TEMP_4",
+ "var_value": "99",
+ "script": "SevenIsland_SevaultCanyon_TanobyKey_EventScript_Switch4"
+ },
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 4,
+ "elevation": 3,
+ "var": "VAR_TEMP_3",
+ "var_value": "99",
+ "script": "SevenIsland_SevaultCanyon_TanobyKey_EventScript_Switch3"
+ },
+ {
+ "type": "trigger",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "var": "VAR_TEMP_2",
+ "var_value": "99",
+ "script": "SevenIsland_SevaultCanyon_TanobyKey_EventScript_Switch2"
+ }
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/SevenIsland_SevaultCanyon_TanobyKey_Frlg/scripts.inc b/data/maps/SevenIsland_SevaultCanyon_TanobyKey_Frlg/scripts.inc
new file mode 100644
index 000000000000..d6419cdcae34
--- /dev/null
+++ b/data/maps/SevenIsland_SevaultCanyon_TanobyKey_Frlg/scripts.inc
@@ -0,0 +1,135 @@
+.equ NUM_SWITCHES_PRESSED, VAR_TEMP_8
+
+SevenIsland_SevaultCanyon_TanobyKey_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_SevaultCanyon_TanobyKey_OnTransition
+ .byte 0
+
+SevenIsland_SevaultCanyon_TanobyKey_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_SEVEN_ISLAND_SEVAULT_CANYON_TANOBY_KEY
+ call_if_set FLAG_SYS_UNLOCKED_TANOBY_RUINS, SevenIsland_SevaultCanyon_TanobyKey_EventScript_MoveBouldersToSolvedPos
+ setvar VAR_TEMP_1, 0
+ setvar VAR_TEMP_2, 0
+ setvar VAR_TEMP_3, 0
+ setvar VAR_TEMP_4, 0
+ setvar VAR_TEMP_5, 0
+ setvar VAR_TEMP_6, 0
+ setvar VAR_TEMP_7, 0
+ setvar NUM_SWITCHES_PRESSED, 0
+ end
+
+SevenIsland_SevaultCanyon_TanobyKey_EventScript_MoveBouldersToSolvedPos::
+ setobjectxyperm LOCALID_TANOBY_KEY_BOULDER1, 7, 2
+ setobjectxyperm LOCALID_TANOBY_KEY_BOULDER2, 4, 4
+ setobjectxyperm LOCALID_TANOBY_KEY_BOULDER3, 10, 4
+ setobjectxyperm LOCALID_TANOBY_KEY_BOULDER4, 5, 6
+ setobjectxyperm LOCALID_TANOBY_KEY_BOULDER5, 9, 6
+ setobjectxyperm LOCALID_TANOBY_KEY_BOULDER6, 5, 8
+ setobjectxyperm LOCALID_TANOBY_KEY_BOULDER7, 9, 8
+ return
+
+SevenIsland_SevaultCanyon_TanobyKey_EventScript_Switch1::
+ lockall
+ goto_if_eq VAR_TEMP_1, 100, SevenIsland_SevaultCanyon_TanobyKey_EventScript_SwitchAlreadyPressed
+ call SevenIsland_SevaultCanyon_TanobyKey_EventScript_SwitchPressed
+ setvar VAR_TEMP_1, 100
+ goto_if_eq NUM_SWITCHES_PRESSED, 7, SevenIsland_SevaultCanyon_TanobyKey_EventScript_PuzzleSolved
+ releaseall
+ end
+
+SevenIsland_SevaultCanyon_TanobyKey_EventScript_Switch2::
+ lockall
+ goto_if_eq VAR_TEMP_2, 100, SevenIsland_SevaultCanyon_TanobyKey_EventScript_SwitchAlreadyPressed
+ call SevenIsland_SevaultCanyon_TanobyKey_EventScript_SwitchPressed
+ setvar VAR_TEMP_2, 100
+ goto_if_eq NUM_SWITCHES_PRESSED, 7, SevenIsland_SevaultCanyon_TanobyKey_EventScript_PuzzleSolved
+ releaseall
+ end
+
+SevenIsland_SevaultCanyon_TanobyKey_EventScript_Switch3::
+ lockall
+ goto_if_eq VAR_TEMP_3, 100, SevenIsland_SevaultCanyon_TanobyKey_EventScript_SwitchAlreadyPressed
+ call SevenIsland_SevaultCanyon_TanobyKey_EventScript_SwitchPressed
+ setvar VAR_TEMP_3, 100
+ goto_if_eq NUM_SWITCHES_PRESSED, 7, SevenIsland_SevaultCanyon_TanobyKey_EventScript_PuzzleSolved
+ releaseall
+ end
+
+SevenIsland_SevaultCanyon_TanobyKey_EventScript_Switch4::
+ lockall
+ goto_if_eq VAR_TEMP_4, 100, SevenIsland_SevaultCanyon_TanobyKey_EventScript_SwitchAlreadyPressed
+ call SevenIsland_SevaultCanyon_TanobyKey_EventScript_SwitchPressed
+ setvar VAR_TEMP_4, 100
+ goto_if_eq NUM_SWITCHES_PRESSED, 7, SevenIsland_SevaultCanyon_TanobyKey_EventScript_PuzzleSolved
+ releaseall
+ end
+
+SevenIsland_SevaultCanyon_TanobyKey_EventScript_Switch5::
+ lockall
+ goto_if_eq VAR_TEMP_5, 100, SevenIsland_SevaultCanyon_TanobyKey_EventScript_SwitchAlreadyPressed
+ call SevenIsland_SevaultCanyon_TanobyKey_EventScript_SwitchPressed
+ setvar VAR_TEMP_5, 100
+ goto_if_eq NUM_SWITCHES_PRESSED, 7, SevenIsland_SevaultCanyon_TanobyKey_EventScript_PuzzleSolved
+ releaseall
+ end
+
+SevenIsland_SevaultCanyon_TanobyKey_EventScript_Switch6::
+ lockall
+ goto_if_eq VAR_TEMP_6, 100, SevenIsland_SevaultCanyon_TanobyKey_EventScript_SwitchAlreadyPressed
+ call SevenIsland_SevaultCanyon_TanobyKey_EventScript_SwitchPressed
+ setvar VAR_TEMP_6, 100
+ goto_if_eq NUM_SWITCHES_PRESSED, 7, SevenIsland_SevaultCanyon_TanobyKey_EventScript_PuzzleSolved
+ releaseall
+ end
+
+SevenIsland_SevaultCanyon_TanobyKey_EventScript_Switch7::
+ lockall
+ goto_if_eq VAR_TEMP_7, 100, SevenIsland_SevaultCanyon_TanobyKey_EventScript_SwitchAlreadyPressed
+ call SevenIsland_SevaultCanyon_TanobyKey_EventScript_SwitchPressed
+ setvar VAR_TEMP_7, 100
+ goto_if_eq NUM_SWITCHES_PRESSED, 7, SevenIsland_SevaultCanyon_TanobyKey_EventScript_PuzzleSolved
+ releaseall
+ end
+
+SevenIsland_SevaultCanyon_TanobyKey_EventScript_SwitchPressed::
+ addvar NUM_SWITCHES_PRESSED, 1
+ playse SE_TRUCK_MOVE
+ setvar VAR_0x8004, 1
+ setvar VAR_0x8005, 1
+ setvar VAR_0x8006, 8
+ setvar VAR_0x8007, 3
+ special ShakeScreen
+ delay 60
+ return
+
+SevenIsland_SevaultCanyon_TanobyKey_EventScript_PuzzleSolvedShakeScreen::
+ setvar VAR_0x8004, 2
+ setvar VAR_0x8005, 2
+ setvar VAR_0x8006, 10
+ setvar VAR_0x8007, 3
+ special ShakeScreen
+ delay 60
+ setvar VAR_0x8004, 3
+ setvar VAR_0x8005, 3
+ setvar VAR_0x8006, 12
+ setvar VAR_0x8007, 2
+ special ShakeScreen
+ delay 60
+ playse SE_LAVARIDGE_FALL_WARP
+ waitse
+ return
+
+SevenIsland_SevaultCanyon_TanobyKey_EventScript_SwitchAlreadyPressed::
+ releaseall
+ end
+
+SevenIsland_SevaultCanyon_TanobyKey_EventScript_PuzzleSolved::
+ call SevenIsland_SevaultCanyon_TanobyKey_EventScript_PuzzleSolvedShakeScreen
+ msgbox SevenIsland_SevaultCanyon_TanobyKey_Text_MysteriousRumbleFarAway
+ setflag FLAG_SYS_UNLOCKED_TANOBY_RUINS
+ releaseall
+ end
+
+SevenIsland_SevaultCanyon_TanobyKey_Text_MysteriousRumbleFarAway::
+ .string "A mysterious rumble echoed\n"
+ .string "somewhere far away.$"
+
diff --git a/data/maps/SevenIsland_TanobyRuins_DilfordChamber_Frlg/map.json b/data/maps/SevenIsland_TanobyRuins_DilfordChamber_Frlg/map.json
new file mode 100644
index 000000000000..5f0a4e95eecb
--- /dev/null
+++ b/data/maps/SevenIsland_TanobyRuins_DilfordChamber_Frlg/map.json
@@ -0,0 +1,36 @@
+{
+ "id": "MAP_SEVEN_ISLAND_TANOBY_RUINS_DILFORD_CHAMBER",
+ "name": "SevenIsland_TanobyRuins_DilfordChamber_Frlg",
+ "layout": "LAYOUT_SEVEN_ISLAND_TANOBY_RUINS_DILFORD_CHAMBER",
+ "music": "MUS_RG_SEVII_DUNGEON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_DILFORD_CHAMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_1",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_TANOBY_RUINS",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/SevenIsland_TanobyRuins_DilfordChamber_Frlg/scripts.inc b/data/maps/SevenIsland_TanobyRuins_DilfordChamber_Frlg/scripts.inc
new file mode 100644
index 000000000000..7e86906ecb68
--- /dev/null
+++ b/data/maps/SevenIsland_TanobyRuins_DilfordChamber_Frlg/scripts.inc
@@ -0,0 +1,7 @@
+SevenIsland_TanobyRuins_DilfordChamber_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_TanobyRuins_DilfordChamber_OnTransition
+ .byte 0
+
+SevenIsland_TanobyRuins_DilfordChamber_OnTransition::
+ call EventScript_TryDarkenRuins
+ end
diff --git a/data/maps/SevenIsland_TanobyRuins_Frlg/map.json b/data/maps/SevenIsland_TanobyRuins_Frlg/map.json
new file mode 100644
index 000000000000..8b1b1505b7a3
--- /dev/null
+++ b/data/maps/SevenIsland_TanobyRuins_Frlg/map.json
@@ -0,0 +1,178 @@
+{
+ "id": "MAP_SEVEN_ISLAND_TANOBY_RUINS",
+ "name": "SevenIsland_TanobyRuins_Frlg",
+ "layout": "LAYOUT_SEVEN_ISLAND_TANOBY_RUINS",
+ "music": "MUS_RG_SEVII_ROUTE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TANOBY_RUINS",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_SEVEN_ISLAND_SEVAULT_CANYON",
+ "offset": 48,
+ "direction": "up"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 35,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SevenIsland_TanobyRuins_EventScript_Brandon",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 121,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SevenIsland_TanobyRuins_EventScript_Benjamin",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 85,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SevenIsland_TanobyRuins_EventScript_Edna",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 85,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SevenIsland_TanobyRuins_EventScript_Clifford",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 120,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 103,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_TANOBY_RUINS_LIPTOO_CHAMBER",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 88,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_TANOBY_RUINS_WEEPTH_CHAMBER",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 44,
+ "y": 11,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_TANOBY_RUINS_DILFORD_CHAMBER",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 32,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_TANOBY_RUINS_SCUFIB_CHAMBER",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 12,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_TANOBY_RUINS_RIXY_CHAMBER",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 11,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_TANOBY_RUINS_VIAPOIS_CHAMBER",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 33,
+ "y": 10,
+ "elevation": 3,
+ "item": "ITEM_HEART_SCALE",
+ "flag": "FLAG_HIDDEN_ITEM_SEVEN_ISLAND_TANOBY_RUINS_HEART_SCALE",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 86,
+ "y": 9,
+ "elevation": 3,
+ "item": "ITEM_HEART_SCALE",
+ "flag": "FLAG_HIDDEN_ITEM_SEVEN_ISLAND_TANOBY_RUINS_HEART_SCALE_2",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 125,
+ "y": 5,
+ "elevation": 3,
+ "item": "ITEM_HEART_SCALE",
+ "flag": "FLAG_HIDDEN_ITEM_SEVEN_ISLAND_TANOBY_RUINS_HEART_SCALE_3",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 8,
+ "y": 2,
+ "elevation": 3,
+ "item": "ITEM_HEART_SCALE",
+ "flag": "FLAG_HIDDEN_ITEM_SEVEN_ISLAND_TANOBY_RUINS_HEART_SCALE_4",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/SevenIsland_TanobyRuins_Frlg/scripts.inc b/data/maps/SevenIsland_TanobyRuins_Frlg/scripts.inc
new file mode 100644
index 000000000000..f02db1d1c47c
--- /dev/null
+++ b/data/maps/SevenIsland_TanobyRuins_Frlg/scripts.inc
@@ -0,0 +1,55 @@
+SevenIsland_TanobyRuins_Frlg_MapScripts::
+ .byte 0
+
+SevenIsland_TanobyRuins_Text_BrandonIntro::
+ .string "Do you know anything about this\n"
+ .string "stone chamber?$"
+
+SevenIsland_TanobyRuins_Text_BrandonDefeat::
+ .string "That was uncalled for.\n"
+ .string "You didn't have to be so rough.$"
+
+SevenIsland_TanobyRuins_Text_BrandonPostBattle::
+ .string "The TANOBY RUINS date back at\n"
+ .string "least 1,500 years.\p"
+ .string "But it's a baffling mystery as to\n"
+ .string "why it was built in the first place.$"
+
+SevenIsland_TanobyRuins_Text_BenjaminIntro::
+ .string "A mystic POKéMON is said to sleep\n"
+ .string "inside here.$"
+
+SevenIsland_TanobyRuins_Text_BenjaminDefeat::
+ .string "I'm not much good in battle.$"
+
+SevenIsland_TanobyRuins_Text_BenjaminPostBattle::
+ .string "I hear there are other ruins like\n"
+ .string "the one here.\p"
+ .string "Might they be the resting places\n"
+ .string "of other mystic POKéMON?$"
+
+SevenIsland_TanobyRuins_Text_EdnaIntro::
+ .string "CLIFFORD is teaching me how to\n"
+ .string "paint.$"
+
+SevenIsland_TanobyRuins_Text_EdnaDefeat::
+ .string "We might get in trouble for being\n"
+ .string "noisy here.$"
+
+SevenIsland_TanobyRuins_Text_EdnaPostBattle::
+ .string "I said that I wanted to paint an\n"
+ .string "old building.\p"
+ .string "So CLIFFORD brought me here.$"
+
+SevenIsland_TanobyRuins_Text_CliffordIntro::
+ .string "Today, in addition to our lesson,\n"
+ .string "we came to see the chamber.$"
+
+SevenIsland_TanobyRuins_Text_CliffordDefeat::
+ .string "My, how extraordinary.$"
+
+SevenIsland_TanobyRuins_Text_CliffordPostBattle::
+ .string "Ah, so you are studying POKéMON\n"
+ .string "on your own…\p"
+ .string "Yes, you certainly are quite the\n"
+ .string "extraordinary person, indeed.$"
diff --git a/data/maps/SevenIsland_TanobyRuins_LiptooChamber_Frlg/map.json b/data/maps/SevenIsland_TanobyRuins_LiptooChamber_Frlg/map.json
new file mode 100644
index 000000000000..72cafe49049d
--- /dev/null
+++ b/data/maps/SevenIsland_TanobyRuins_LiptooChamber_Frlg/map.json
@@ -0,0 +1,30 @@
+{
+ "id": "MAP_SEVEN_ISLAND_TANOBY_RUINS_LIPTOO_CHAMBER",
+ "name": "SevenIsland_TanobyRuins_LiptooChamber_Frlg",
+ "layout": "LAYOUT_SEVEN_ISLAND_TANOBY_RUINS_LIPTOO_CHAMBER",
+ "music": "MUS_RG_SEVII_DUNGEON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_LIPTOO_CHAMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_1",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_TANOBY_RUINS",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SevenIsland_TanobyRuins_LiptooChamber_Frlg/scripts.inc b/data/maps/SevenIsland_TanobyRuins_LiptooChamber_Frlg/scripts.inc
new file mode 100644
index 000000000000..193a72cc2d2d
--- /dev/null
+++ b/data/maps/SevenIsland_TanobyRuins_LiptooChamber_Frlg/scripts.inc
@@ -0,0 +1,7 @@
+SevenIsland_TanobyRuins_LiptooChamber_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_TanobyRuins_LiptooChamber_OnTransition
+ .byte 0
+
+SevenIsland_TanobyRuins_LiptooChamber_OnTransition::
+ call EventScript_TryDarkenRuins
+ end
diff --git a/data/maps/SevenIsland_TanobyRuins_MoneanChamber_Frlg/map.json b/data/maps/SevenIsland_TanobyRuins_MoneanChamber_Frlg/map.json
new file mode 100644
index 000000000000..3f2b418cd592
--- /dev/null
+++ b/data/maps/SevenIsland_TanobyRuins_MoneanChamber_Frlg/map.json
@@ -0,0 +1,36 @@
+{
+ "id": "MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER",
+ "name": "SevenIsland_TanobyRuins_MoneanChamber_Frlg",
+ "layout": "LAYOUT_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER",
+ "music": "MUS_RG_SEVII_DUNGEON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_MONEAN_CHAMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_1",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_TANOBY_RUINS",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/SevenIsland_TanobyRuins_MoneanChamber_Frlg/scripts.inc b/data/maps/SevenIsland_TanobyRuins_MoneanChamber_Frlg/scripts.inc
new file mode 100644
index 000000000000..9f36d69d2cfe
--- /dev/null
+++ b/data/maps/SevenIsland_TanobyRuins_MoneanChamber_Frlg/scripts.inc
@@ -0,0 +1,8 @@
+SevenIsland_TanobyRuins_MoneanChamber_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_TanobyRuins_MoneanChamber_OnTransition
+ .byte 0
+
+SevenIsland_TanobyRuins_MoneanChamber_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER
+ call EventScript_TryDarkenRuins
+ end
diff --git a/data/maps/SevenIsland_TanobyRuins_RixyChamber_Frlg/map.json b/data/maps/SevenIsland_TanobyRuins_RixyChamber_Frlg/map.json
new file mode 100644
index 000000000000..735d8fd9d453
--- /dev/null
+++ b/data/maps/SevenIsland_TanobyRuins_RixyChamber_Frlg/map.json
@@ -0,0 +1,30 @@
+{
+ "id": "MAP_SEVEN_ISLAND_TANOBY_RUINS_RIXY_CHAMBER",
+ "name": "SevenIsland_TanobyRuins_RixyChamber_Frlg",
+ "layout": "LAYOUT_SEVEN_ISLAND_TANOBY_RUINS_RIXY_CHAMBER",
+ "music": "MUS_RG_SEVII_DUNGEON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_RIXY_CHAMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_1",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_TANOBY_RUINS",
+ "dest_warp_id": "5"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SevenIsland_TanobyRuins_RixyChamber_Frlg/scripts.inc b/data/maps/SevenIsland_TanobyRuins_RixyChamber_Frlg/scripts.inc
new file mode 100644
index 000000000000..d020f8620c81
--- /dev/null
+++ b/data/maps/SevenIsland_TanobyRuins_RixyChamber_Frlg/scripts.inc
@@ -0,0 +1,7 @@
+SevenIsland_TanobyRuins_RixyChamber_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_TanobyRuins_RixyChamber_OnTransition
+ .byte 0
+
+SevenIsland_TanobyRuins_RixyChamber_OnTransition::
+ call EventScript_TryDarkenRuins
+ end
diff --git a/data/maps/SevenIsland_TanobyRuins_ScufibChamber_Frlg/map.json b/data/maps/SevenIsland_TanobyRuins_ScufibChamber_Frlg/map.json
new file mode 100644
index 000000000000..7a5b0581ce8a
--- /dev/null
+++ b/data/maps/SevenIsland_TanobyRuins_ScufibChamber_Frlg/map.json
@@ -0,0 +1,30 @@
+{
+ "id": "MAP_SEVEN_ISLAND_TANOBY_RUINS_SCUFIB_CHAMBER",
+ "name": "SevenIsland_TanobyRuins_ScufibChamber_Frlg",
+ "layout": "LAYOUT_SEVEN_ISLAND_TANOBY_RUINS_SCUFIB_CHAMBER",
+ "music": "MUS_RG_SEVII_DUNGEON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SCUFIB_CHAMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_1",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_TANOBY_RUINS",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SevenIsland_TanobyRuins_ScufibChamber_Frlg/scripts.inc b/data/maps/SevenIsland_TanobyRuins_ScufibChamber_Frlg/scripts.inc
new file mode 100644
index 000000000000..2f795034abbe
--- /dev/null
+++ b/data/maps/SevenIsland_TanobyRuins_ScufibChamber_Frlg/scripts.inc
@@ -0,0 +1,7 @@
+SevenIsland_TanobyRuins_ScufibChamber_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_TanobyRuins_ScufibChamber_OnTransition
+ .byte 0
+
+SevenIsland_TanobyRuins_ScufibChamber_OnTransition::
+ call EventScript_TryDarkenRuins
+ end
diff --git a/data/maps/SevenIsland_TanobyRuins_ViapoisChamber_Frlg/map.json b/data/maps/SevenIsland_TanobyRuins_ViapoisChamber_Frlg/map.json
new file mode 100644
index 000000000000..db8853a06909
--- /dev/null
+++ b/data/maps/SevenIsland_TanobyRuins_ViapoisChamber_Frlg/map.json
@@ -0,0 +1,30 @@
+{
+ "id": "MAP_SEVEN_ISLAND_TANOBY_RUINS_VIAPOIS_CHAMBER",
+ "name": "SevenIsland_TanobyRuins_ViapoisChamber_Frlg",
+ "layout": "LAYOUT_SEVEN_ISLAND_TANOBY_RUINS_VIAPOIS_CHAMBER",
+ "music": "MUS_RG_SEVII_DUNGEON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VIAPOIS_CHAMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_1",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_TANOBY_RUINS",
+ "dest_warp_id": "6"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SevenIsland_TanobyRuins_ViapoisChamber_Frlg/scripts.inc b/data/maps/SevenIsland_TanobyRuins_ViapoisChamber_Frlg/scripts.inc
new file mode 100644
index 000000000000..25726b1356f0
--- /dev/null
+++ b/data/maps/SevenIsland_TanobyRuins_ViapoisChamber_Frlg/scripts.inc
@@ -0,0 +1,7 @@
+SevenIsland_TanobyRuins_ViapoisChamber_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_TanobyRuins_ViapoisChamber_OnTransition
+ .byte 0
+
+SevenIsland_TanobyRuins_ViapoisChamber_OnTransition::
+ call EventScript_TryDarkenRuins
+ end
diff --git a/data/maps/SevenIsland_TanobyRuins_WeepthChamber_Frlg/map.json b/data/maps/SevenIsland_TanobyRuins_WeepthChamber_Frlg/map.json
new file mode 100644
index 000000000000..326080224694
--- /dev/null
+++ b/data/maps/SevenIsland_TanobyRuins_WeepthChamber_Frlg/map.json
@@ -0,0 +1,30 @@
+{
+ "id": "MAP_SEVEN_ISLAND_TANOBY_RUINS_WEEPTH_CHAMBER",
+ "name": "SevenIsland_TanobyRuins_WeepthChamber_Frlg",
+ "layout": "LAYOUT_SEVEN_ISLAND_TANOBY_RUINS_WEEPTH_CHAMBER",
+ "music": "MUS_RG_SEVII_DUNGEON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_WEEPTH_CHAMBER",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_INDOOR_1",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_TANOBY_RUINS",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SevenIsland_TanobyRuins_WeepthChamber_Frlg/scripts.inc b/data/maps/SevenIsland_TanobyRuins_WeepthChamber_Frlg/scripts.inc
new file mode 100644
index 000000000000..33a6034fac76
--- /dev/null
+++ b/data/maps/SevenIsland_TanobyRuins_WeepthChamber_Frlg/scripts.inc
@@ -0,0 +1,7 @@
+SevenIsland_TanobyRuins_WeepthChamber_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_TanobyRuins_WeepthChamber_OnTransition
+ .byte 0
+
+SevenIsland_TanobyRuins_WeepthChamber_OnTransition::
+ call EventScript_TryDarkenRuins
+ end
diff --git a/data/maps/SevenIsland_TrainerTower_Frlg/map.json b/data/maps/SevenIsland_TrainerTower_Frlg/map.json
new file mode 100644
index 000000000000..a34bf5d55cc8
--- /dev/null
+++ b/data/maps/SevenIsland_TrainerTower_Frlg/map.json
@@ -0,0 +1,114 @@
+{
+ "id": "MAP_SEVEN_ISLAND_TRAINER_TOWER",
+ "name": "SevenIsland_TrainerTower_Frlg",
+ "layout": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER",
+ "music": "MUS_RG_SEVII_ROUTE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TRAINER_TOWER",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_SEVEN_ISLAND",
+ "offset": 48,
+ "direction": "down"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 56,
+ "y": 26,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SevenIsland_TrainerTower_EventScript_Dario",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 56,
+ "y": 29,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SevenIsland_TrainerTower_EventScript_Rodette",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 58,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_LOBBY",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 49,
+ "y": 27,
+ "elevation": 3,
+ "item": "ITEM_BIG_PEARL",
+ "flag": "FLAG_HIDDEN_ITEM_SEVEN_ISLAND_TRAINER_TOWER_BIG_PEARL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 47,
+ "y": 30,
+ "elevation": 3,
+ "item": "ITEM_PEARL",
+ "flag": "FLAG_HIDDEN_ITEM_SEVEN_ISLAND_TRAINER_TOWER_PEARL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 59,
+ "y": 32,
+ "elevation": 3,
+ "item": "ITEM_NANAB_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_SEVEN_ISLAND_TRAINER_TOWER_NANAB_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 56,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SevenIsland_TrainerTower_EventScript_TrainerTowerSign"
+ },
+ {
+ "type": "sign",
+ "x": 50,
+ "y": 30,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SevenIsland_TrainerTower_EventScript_TrainerTowerAheadSign"
+ }
+ ]
+}
diff --git a/data/maps/SevenIsland_TrainerTower_Frlg/scripts.inc b/data/maps/SevenIsland_TrainerTower_Frlg/scripts.inc
new file mode 100644
index 000000000000..0d93a7a2b5f4
--- /dev/null
+++ b/data/maps/SevenIsland_TrainerTower_Frlg/scripts.inc
@@ -0,0 +1,48 @@
+SevenIsland_TrainerTower_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_TrainerTower_OnTransition
+ .byte 0
+
+SevenIsland_TrainerTower_OnTransition::
+ setvar VAR_MAP_SCENE_TRAINER_TOWER, 0
+ end
+
+SevenIsland_TrainerTower_EventScript_TrainerTowerSign::
+ msgbox SevenIsland_TrainerTower_Text_TrainerTowerSign, MSGBOX_SIGN
+ end
+
+SevenIsland_TrainerTower_EventScript_TrainerTowerAheadSign::
+ msgbox SevenIsland_TrainerTower_Text_TrainerTowerAhead, MSGBOX_SIGN
+ end
+
+SevenIsland_TrainerTower_Text_DarioIntro::
+ .string "I sensed your approach.$"
+
+SevenIsland_TrainerTower_Text_DarioDefeat::
+ .string "Give up…$"
+
+SevenIsland_TrainerTower_Text_DarioPostBattle::
+ .string "In your future, I sense that you\n"
+ .string "will meet many others.\p"
+ .string "I think you will be linked to each\n"
+ .string "other by a strange power.$"
+
+SevenIsland_TrainerTower_Text_RodetteIntro::
+ .string "Somewhere on this island, peculiar\n"
+ .string "POKéMON are sleeping.$"
+
+SevenIsland_TrainerTower_Text_RodetteDefeat::
+ .string "What an amazing TRAINER!$"
+
+SevenIsland_TrainerTower_Text_RodettePostBattle::
+ .string "Somewhere on this island, peculiar\n"
+ .string "POKéMON are sleeping.\p"
+ .string "Could it be that they're waiting\n"
+ .string "for you?$"
+
+SevenIsland_TrainerTower_Text_TrainerTowerSign::
+ .string "TRAINER TOWER ENTRANCE\n"
+ .string "Rise to the Challenge, TRAINERS!$"
+
+SevenIsland_TrainerTower_Text_TrainerTowerAhead::
+ .string "TRAINER TOWER AHEAD$"
+
diff --git a/data/maps/SevenIsland_UnusedHouse/map.json b/data/maps/SevenIsland_UnusedHouse/map.json
new file mode 100644
index 000000000000..696b74dbc770
--- /dev/null
+++ b/data/maps/SevenIsland_UnusedHouse/map.json
@@ -0,0 +1,22 @@
+{
+ "id": "MAP_SEVEN_ISLAND_UNUSED_HOUSE",
+ "name": "SevenIsland_UnusedHouse",
+ "layout": "LAYOUT_HOUSE4_FRLG",
+ "music": "MUS_RG_SEVII_67",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SEVEN_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SilphCo_10F_Frlg/map.json b/data/maps/SilphCo_10F_Frlg/map.json
new file mode 100644
index 000000000000..8c505d9d42ae
--- /dev/null
+++ b/data/maps/SilphCo_10F_Frlg/map.json
@@ -0,0 +1,201 @@
+{
+ "id": "MAP_SILPH_CO_10F",
+ "name": "SilphCo_10F_Frlg",
+ "layout": "LAYOUT_SILPH_CO_10F",
+ "music": "MUS_RG_SILPH",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SILPH_CO",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 10,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 2,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SilphCo_10F_EventScript_Travis",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_F",
+ "x": 10,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_10F_EventScript_WorkerF",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 0,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "SilphCo_10F_EventScript_Grunt",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 5,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_10F_EventScript_ItemCarbos",
+ "flag": "FLAG_HIDE_SILPH_CO_10F_CARBOS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 2,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_10F_EventScript_ItemUltraBall",
+ "flag": "FLAG_HIDE_SILPH_CO_10F_ULTRA_BALL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 3,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_10F_EventScript_ItemRareCandy",
+ "flag": "FLAG_HIDE_SILPH_CO_10F_RARE_CANDY"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_11F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 10,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_4F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 14,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_4F",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 8,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_9F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 14,
+ "y": 17,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_4F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 13,
+ "y": 3,
+ "elevation": 0,
+ "dest_map": "MAP_SILPH_CO_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_10F_EventScript_Door"
+ },
+ {
+ "type": "sign",
+ "x": 13,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_10F_EventScript_Door"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_10F_EventScript_Door"
+ },
+ {
+ "type": "sign",
+ "x": 13,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_10F_EventScript_Door"
+ },
+ {
+ "type": "hidden_item",
+ "x": 9,
+ "y": 9,
+ "elevation": 0,
+ "item": "ITEM_HP_UP",
+ "flag": "FLAG_HIDDEN_ITEM_SILPH_CO_10F_HP_UP",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_10F_EventScript_FloorSign"
+ }
+ ]
+}
diff --git a/data/maps/SilphCo_10F_Frlg/scripts.inc b/data/maps/SilphCo_10F_Frlg/scripts.inc
new file mode 100644
index 000000000000..7b599daae296
--- /dev/null
+++ b/data/maps/SilphCo_10F_Frlg/scripts.inc
@@ -0,0 +1,68 @@
+SilphCo_10F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, SilphCo_10F_OnLoad
+ .byte 0
+
+SilphCo_10F_OnLoad::
+ call_if_unset FLAG_SILPH_10F_DOOR, EventScript_Close10FDoor
+ end
+
+SilphCo_10F_EventScript_WorkerF::
+ lock
+ faceplayer
+ goto_if_ge VAR_MAP_SCENE_SILPH_CO_11F, 1, SilphCo_10F_EventScript_WorkerFRocketsGone
+ msgbox SilphCo_10F_Text_WaaaImScared
+ release
+ end
+
+SilphCo_10F_EventScript_WorkerFRocketsGone::
+ msgbox SilphCo_10F_Text_KeepMeCryingASecret
+ release
+ end
+
+SilphCo_10F_EventScript_FloorSign::
+ msgbox SilphCo_10F_Text_FloorSign, MSGBOX_SIGN
+ end
+
+SilphCo_10F_EventScript_Travis::
+ trainerbattle_single TRAINER_SCIENTIST_TRAVIS, SilphCo_10F_Text_TravisIntro, SilphCo_10F_Text_TravisDefeat
+ msgbox SilphCo_10F_Text_TravisPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_10F_EventScript_Grunt::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_39, SilphCo_10F_Text_GruntIntro, SilphCo_10F_Text_GruntDefeat
+ msgbox SilphCo_10F_Text_GruntPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_10F_Text_GruntIntro::
+ .string "Welcome to 10F!\n"
+ .string "So good of you to join me!$"
+
+SilphCo_10F_Text_GruntDefeat::
+ .string "I'm stunned!$"
+
+SilphCo_10F_Text_GruntPostBattle::
+ .string "Nice try, but the boardroom is up\n"
+ .string "one more floor.$"
+
+SilphCo_10F_Text_TravisIntro::
+ .string "Enough of your silly games!$"
+
+SilphCo_10F_Text_TravisDefeat::
+ .string "No continues left!$"
+
+SilphCo_10F_Text_TravisPostBattle::
+ .string "Are you satisfied with beating me?\n"
+ .string "Then go on home!$"
+
+SilphCo_10F_Text_WaaaImScared::
+ .string "Waaaaa!\n"
+ .string "I'm scared!$"
+
+SilphCo_10F_Text_KeepMeCryingASecret::
+ .string "About me crying…\n"
+ .string "Please keep it a secret.$"
+
+SilphCo_10F_Text_FloorSign::
+ .string "SILPH CO. HEAD OFFICE\n"
+ .string "10F$"
+
diff --git a/data/maps/SilphCo_11F_Frlg/map.json b/data/maps/SilphCo_11F_Frlg/map.json
new file mode 100644
index 000000000000..c63705417b07
--- /dev/null
+++ b/data/maps/SilphCo_11F_Frlg/map.json
@@ -0,0 +1,202 @@
+{
+ "id": "MAP_SILPH_CO_11F",
+ "name": "SilphCo_11F_Frlg",
+ "layout": "LAYOUT_SILPH_CO_11F",
+ "music": "MUS_RG_SILPH",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SILPH_CO",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 11,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_2",
+ "x": 9,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_11F_EventScript_President",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_F",
+ "x": 11,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_11F_EventScript_Secretary",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_SILPH_CO_GIOVANNI",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GIOVANNI",
+ "x": 6,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "local_id": "LOCALID_SILPH_CO_11F_GRUNT1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 16,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "SilphCo_11F_EventScript_Grunt1",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 16,
+ "y": 18,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_11F_EventScript_ItemZinc",
+ "flag": "FLAG_HIDE_SILPH_CO_11F_ZINC"
+ },
+ {
+ "local_id": "LOCALID_SILPH_CO_11F_GRUNT2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 2,
+ "y": 19,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "SilphCo_11F_EventScript_Grunt2",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_10F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_7F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 13,
+ "y": 3,
+ "elevation": 0,
+ "dest_map": "MAP_SILPH_CO_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 5,
+ "y": 15,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_SILPH_CO_11F",
+ "var_value": "0",
+ "script": "SilphCo_11F_EventScript_GiovanniTriggerLeft"
+ },
+ {
+ "type": "trigger",
+ "x": 6,
+ "y": 15,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_SILPH_CO_11F",
+ "var_value": "0",
+ "script": "SilphCo_11F_EventScript_GiovanniTriggerRight"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 16,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_11F_EventScript_Door"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 17,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_11F_EventScript_Door"
+ },
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 16,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_11F_EventScript_Door"
+ },
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 17,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_11F_EventScript_Door"
+ },
+ {
+ "type": "hidden_item",
+ "x": 10,
+ "y": 18,
+ "elevation": 0,
+ "item": "ITEM_REVIVE",
+ "flag": "FLAG_HIDDEN_ITEM_SILPH_CO_11F_REVIVE",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_11F_EventScript_FloorSign"
+ }
+ ]
+}
diff --git a/data/maps/SilphCo_11F_Frlg/scripts.inc b/data/maps/SilphCo_11F_Frlg/scripts.inc
new file mode 100644
index 000000000000..655dfe73fb2f
--- /dev/null
+++ b/data/maps/SilphCo_11F_Frlg/scripts.inc
@@ -0,0 +1,228 @@
+SilphCo_11F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, SilphCo_11F_OnLoad
+ .byte 0
+
+SilphCo_11F_OnLoad::
+ call_if_unset FLAG_SILPH_11F_DOOR, EventScript_Close11FDoor
+ end
+
+SilphCo_11F_EventScript_President::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_MASTER_BALL_FROM_SILPH, SilphCo_11F_EventScript_AlreadyGotMasterBall
+ checkplayergender
+ call_if_eq VAR_RESULT, MALE, SilphCo_11F_EventScript_PresidentThanksMale
+ call_if_eq VAR_RESULT, FEMALE, SilphCo_11F_EventScript_PresidentThanksFemale
+ checkitemspace ITEM_MASTER_BALL
+ goto_if_eq VAR_RESULT, FALSE, SilphCo_11F_EventScript_NoRoomForMasterBall
+ giveitem_msg SilphCo_11F_Text_ObtainedMasterBallFromPresident, ITEM_MASTER_BALL, 1, MUS_RG_OBTAIN_KEY_ITEM
+ msgbox SilphCo_11F_Text_ThatsOurSecretPrototype
+ setflag FLAG_GOT_MASTER_BALL_FROM_SILPH
+ release
+ end
+
+SilphCo_11F_EventScript_PresidentThanksMale::
+ msgbox SilphCo_11F_Text_ThanksForSavingMeDearBoy
+ return
+
+SilphCo_11F_EventScript_PresidentThanksFemale::
+ msgbox SilphCo_11F_Text_ThanksForSavingMeDearGirl
+ return
+
+SilphCo_11F_EventScript_NoRoomForMasterBall::
+ msgbox SilphCo_11F_Text_YouHaveNoRoomForThis
+ release
+ end
+
+SilphCo_11F_EventScript_AlreadyGotMasterBall::
+ msgbox SilphCo_11F_Text_ThatsOurSecretPrototype
+ release
+ end
+
+SilphCo_11F_EventScript_Secretary::
+ msgbox SilphCo_11F_Text_ThanksForRescuingUs, MSGBOX_NPC
+ end
+
+SilphCo_11F_EventScript_GiovanniTriggerLeft::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto SilphCo_11F_EventScript_BattleGiovanni
+ end
+
+SilphCo_11F_EventScript_GiovanniTriggerRight::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto SilphCo_11F_EventScript_BattleGiovanni
+ end
+
+SilphCo_11F_EventScript_BattleGiovanni::
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_SILPH_CO_GIOVANNI, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ delay 25
+ msgbox SilphCo_11F_Text_GiovanniIntro
+ closemessage
+ call_if_eq VAR_TEMP_1, 0, SilphCo_11F_EventScript_GiovanniApproachLeft
+ call_if_eq VAR_TEMP_1, 1, SilphCo_11F_EventScript_GiovanniApproachRight
+ setvar VAR_LAST_TALKED, LOCALID_SILPH_CO_GIOVANNI
+ trainerbattle_no_intro TRAINER_BOSS_GIOVANNI_2, SilphCo_11F_Text_GiovanniDefeat
+ msgbox SilphCo_11F_Text_GiovanniPostBattle
+ closemessage
+ fadescreen FADE_TO_BLACK
+ removeobject LOCALID_SILPH_CO_GIOVANNI
+ removeobject LOCALID_SILPH_CO_11F_GRUNT1
+ removeobject LOCALID_SILPH_CO_11F_GRUNT2
+ fadescreen FADE_FROM_BLACK
+ setvar VAR_MAP_SCENE_SILPH_CO_11F, 1
+ setflag FLAG_HIDE_SAFFRON_ROCKETS
+ clearflag FLAG_HIDE_SAFFRON_CIVILIANS
+ releaseall
+ end
+
+SilphCo_11F_EventScript_GiovanniApproachLeft::
+ applymovement LOCALID_SILPH_CO_GIOVANNI, SilphCo_11F_Movement_GiovanniApproachLeft
+ applymovement LOCALID_PLAYER, SilphCo_11F_Movement_PlayerFaceGiovanni
+ waitmovement 0
+ return
+
+SilphCo_11F_EventScript_GiovanniApproachRight::
+ applymovement LOCALID_SILPH_CO_GIOVANNI, SilphCo_11F_Movement_GiovanniApproachRight
+ waitmovement 0
+ return
+
+SilphCo_11F_Movement_GiovanniApproachLeft::
+ walk_down
+ walk_down
+ walk_down
+ walk_down
+ walk_in_place_faster_left
+ step_end
+
+SilphCo_11F_Movement_GiovanniApproachRight::
+ walk_down
+ walk_down
+ walk_down
+ step_end
+
+SilphCo_11F_Movement_PlayerFaceGiovanni::
+ delay_16
+ delay_16
+ delay_16
+ delay_8
+ delay_4
+ walk_in_place_faster_right
+ step_end
+
+@ Unused
+SilphCo_11F_EventScript_Monitor::
+ msgbox SilphCo_11F_Text_MonitorHasMonsOnIt, MSGBOX_SIGN
+ end
+
+SilphCo_11F_EventScript_FloorSign::
+ msgbox SilphCo_11F_Text_FloorSign, MSGBOX_SIGN
+ end
+
+SilphCo_11F_EventScript_Grunt1::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_40, SilphCo_11F_Text_Grunt1Intro, SilphCo_11F_Text_Grunt1Defeat
+ msgbox SilphCo_11F_Text_Grunt1PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_11F_EventScript_Grunt2::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_41, SilphCo_11F_Text_Grunt2Intro, SilphCo_11F_Text_Grunt2Defeat
+ msgbox SilphCo_11F_Text_Grunt2PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_11F_Text_ThanksForSavingMeDearBoy::
+ .string "PRESIDENT: Oh, dear boy!\n"
+ .string "Thank you for saving SILPH.\p"
+ .string "I will never forget you saved us in\n"
+ .string "our moment of peril.\p"
+ .string "I have to thank you in some way.\p"
+ .string "Because I am rich, I can give you\n"
+ .string "anything.\p"
+ .string "Here, maybe this will do.$"
+
+SilphCo_11F_Text_ThanksForSavingMeDearGirl::
+ .string "PRESIDENT: Oh, dear girl!\n"
+ .string "Thank you for saving SILPH.\p"
+ .string "I will never forget you saved us in\n"
+ .string "our moment of peril.\p"
+ .string "I have to thank you in some way.\p"
+ .string "Because I am rich, I can give you\n"
+ .string "anything.\p"
+ .string "Here, maybe this will do.$"
+
+SilphCo_11F_Text_ObtainedMasterBallFromPresident::
+ .string "{PLAYER} obtained a MASTER BALL\n"
+ .string "from the PRESIDENT!$"
+
+SilphCo_11F_Text_ThatsOurSecretPrototype::
+ .string "PRESIDENT: You can't buy that\n"
+ .string "anywhere.\p"
+ .string "It's our secret prototype MASTER\n"
+ .string "BALL.\p"
+ .string "It will catch any POKéMON without\n"
+ .string "fail!\p"
+ .string "You should be quiet about using it,\n"
+ .string "though.$"
+
+SilphCo_11F_Text_YouHaveNoRoomForThis::
+ .string "You have no room for this.$"
+
+SilphCo_11F_Text_ThanksForRescuingUs::
+ .string "SECRETARY: Thank you for rescuing\n"
+ .string "all of us.\p"
+ .string "We, from the PRESIDENT down,\n"
+ .string "are indebted to you.$"
+
+SilphCo_11F_Text_GiovanniIntro::
+ .string "Ah, {PLAYER}!\n"
+ .string "So we meet again!\p"
+ .string "The PRESIDENT and I are discussing\n"
+ .string "a vital business proposition.\p"
+ .string "Keep your nose out of grown-up\n"
+ .string "matters…\p"
+ .string "Or, experience a world of pain!$"
+
+SilphCo_11F_Text_GiovanniDefeat::
+ .string "Arrgh!!\n"
+ .string "I lost again!?$"
+
+SilphCo_11F_Text_GiovanniPostBattle::
+ .string "Blast it all!\n"
+ .string "You ruined our plans for SILPH!\p"
+ .string "But, TEAM ROCKET will never fall!\p"
+ .string "{PLAYER}! Never forget that all\n"
+ .string "POKéMON exist for TEAM ROCKET!\p"
+ .string "I must go, but I shall return!$"
+
+SilphCo_11F_Text_Grunt2Intro::
+ .string "Stop right there!\n"
+ .string "Don't you move!$"
+
+SilphCo_11F_Text_Grunt2Defeat::
+ .string "Don't…\n"
+ .string "Please!$"
+
+SilphCo_11F_Text_Grunt2PostBattle::
+ .string "So, you want to see my BOSS?$"
+
+SilphCo_11F_Text_Grunt1Intro::
+ .string "Halt! Do you have an appointment\n"
+ .string "with my BOSS?$"
+
+SilphCo_11F_Text_Grunt1Defeat::
+ .string "Gaah!\n"
+ .string "Demolished!$"
+
+SilphCo_11F_Text_Grunt1PostBattle::
+ .string "Watch your step…\n"
+ .string "My BOSS likes his POKéMON tough!$"
+
+SilphCo_11F_Text_MonitorHasMonsOnIt::
+ .string "The monitor has POKéMON on it!$"
+
+SilphCo_11F_Text_FloorSign::
+ .string "SILPH CO. HEAD OFFICE\n"
+ .string "11F$"
+
diff --git a/data/maps/SilphCo_1F_Frlg/map.json b/data/maps/SilphCo_1F_Frlg/map.json
new file mode 100644
index 000000000000..07ea347544ab
--- /dev/null
+++ b/data/maps/SilphCo_1F_Frlg/map.json
@@ -0,0 +1,82 @@
+{
+ "id": "MAP_SILPH_CO_1F",
+ "name": "SilphCo_1F_Frlg",
+ "layout": "LAYOUT_SILPH_CO_1F",
+ "music": "MUS_RG_SILPH",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SILPH_CO",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 1,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_F",
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_1F_EventScript_Receptionist",
+ "flag": "FLAG_HIDE_SAFFRON_CIVILIANS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 21,
+ "elevation": 0,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 8,
+ "y": 20,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 20,
+ "elevation": 3,
+ "dest_map": "MAP_SAFFRON_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 31,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_2F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 22,
+ "y": 3,
+ "elevation": 0,
+ "dest_map": "MAP_SILPH_CO_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 30,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_1F_EventScript_FloorSign"
+ }
+ ]
+}
diff --git a/data/maps/SilphCo_1F_Frlg/scripts.inc b/data/maps/SilphCo_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..3ce9ece7e293
--- /dev/null
+++ b/data/maps/SilphCo_1F_Frlg/scripts.inc
@@ -0,0 +1,25 @@
+SilphCo_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SilphCo_1F_OnTransition
+ .byte 0
+
+SilphCo_1F_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_SILPH_CO_1F
+ end
+
+SilphCo_1F_EventScript_Receptionist::
+ msgbox SilphCo_1F_Text_WelcomePresidentInBoardroom, MSGBOX_NPC
+ end
+
+SilphCo_1F_EventScript_FloorSign::
+ msgbox SilphCo_1F_Text_FloorSign, MSGBOX_SIGN
+ end
+
+SilphCo_1F_Text_WelcomePresidentInBoardroom::
+ .string "Welcome.\p"
+ .string "The PRESIDENT is in the boardroom\n"
+ .string "on 11F.$"
+
+SilphCo_1F_Text_FloorSign::
+ .string "SILPH CO. HEAD OFFICE\n"
+ .string "1F$"
+
diff --git a/data/maps/SilphCo_2F_Frlg/map.json b/data/maps/SilphCo_2F_Frlg/map.json
new file mode 100644
index 000000000000..4fe73d0c410a
--- /dev/null
+++ b/data/maps/SilphCo_2F_Frlg/map.json
@@ -0,0 +1,226 @@
+{
+ "id": "MAP_SILPH_CO_2F",
+ "name": "SilphCo_2F_Frlg",
+ "layout": "LAYOUT_SILPH_CO_2F",
+ "music": "MUS_RG_SILPH",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SILPH_CO",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 2,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 29,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "SilphCo_2F_EventScript_Grunt2",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 28,
+ "y": 18,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "SilphCo_2F_EventScript_Jerry",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 20,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SilphCo_2F_EventScript_Grunt1",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 5,
+ "y": 19,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_2F_EventScript_Connor",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 10,
+ "y": 4,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_2F_EventScript_ThunderWaveTutor",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 28,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_3F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 2,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_3F",
+ "dest_warp_id": "8"
+ },
+ {
+ "x": 15,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_8F",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 30,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 7,
+ "y": 19,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_6F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 33,
+ "y": 19,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_8F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 22,
+ "y": 3,
+ "elevation": 0,
+ "dest_map": "MAP_SILPH_CO_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_2F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_2F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_2F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_2F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 15,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_2F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 15,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_2F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 16,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_2F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 16,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_2F_EventScript_Door2"
+ },
+ {
+ "type": "hidden_item",
+ "x": 11,
+ "y": 21,
+ "elevation": 0,
+ "item": "ITEM_ULTRA_BALL",
+ "flag": "FLAG_HIDDEN_ITEM_SILPH_CO_2F_ULTRA_BALL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 29,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_2F_EventScript_FloorSign"
+ }
+ ]
+}
diff --git a/data/maps/SilphCo_2F_Frlg/scripts.inc b/data/maps/SilphCo_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..24b97870f340
--- /dev/null
+++ b/data/maps/SilphCo_2F_Frlg/scripts.inc
@@ -0,0 +1,111 @@
+SilphCo_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, SilphCo_2F_OnLoad
+ .byte 0
+
+SilphCo_2F_OnLoad::
+ call_if_unset FLAG_SILPH_2F_DOOR_1, EventScript_Close2FDoor1
+ call_if_unset FLAG_SILPH_2F_DOOR_2, EventScript_Close2FDoor2
+ end
+
+SilphCo_2F_EventScript_ThunderWaveTutor::
+ goto EventScript_ThunderWaveTutor
+ end
+
+SilphCo_2F_EventScript_FloorSign::
+ msgbox SilphCo_2F_Text_FloorSign, MSGBOX_SIGN
+ end
+
+SilphCo_2F_EventScript_Connor::
+ trainerbattle_single TRAINER_SCIENTIST_CONNOR, SilphCo_2F_Text_ConnorIntro, SilphCo_2F_Text_ConnorDefeat
+ msgbox SilphCo_2F_Text_ConnorPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_2F_EventScript_Jerry::
+ trainerbattle_single TRAINER_SCIENTIST_JERRY, SilphCo_2F_Text_JerryIntro, SilphCo_2F_Text_JerryDefeat
+ msgbox SilphCo_2F_Text_JerryPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_2F_EventScript_Grunt1::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_23, SilphCo_2F_Text_Grunt1Intro, SilphCo_2F_Text_Grunt1Defeat
+ msgbox SilphCo_2F_Text_Grunt1PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_2F_EventScript_Grunt2::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_24, SilphCo_2F_Text_Grunt2Intro, SilphCo_2F_Text_Grunt2Defeat
+ msgbox SilphCo_2F_Text_Grunt2PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_2F_Text_ConnorIntro::
+ .string "Help!\n"
+ .string "I'm a SILPH employee.$"
+
+SilphCo_2F_Text_ConnorDefeat::
+ .string "How did you know\n"
+ .string "I was a ROCKET?$"
+
+SilphCo_2F_Text_ConnorPostBattle::
+ .string "I work for both SILPH and TEAM\n"
+ .string "ROCKET.$"
+
+SilphCo_2F_Text_JerryIntro::
+ .string "It's off-limits here!\n"
+ .string "Go home!$"
+
+SilphCo_2F_Text_JerryDefeat::
+ .string "You're good.$"
+
+SilphCo_2F_Text_JerryPostBattle::
+ .string "Can you solve the maze in here?\n"
+ .string "It's not easy, I tell you!$"
+
+SilphCo_2F_Text_Grunt1Intro::
+ .string "No kids are allowed in here!$"
+
+SilphCo_2F_Text_Grunt1Defeat::
+ .string "Tough!$"
+
+SilphCo_2F_Text_Grunt1PostBattle::
+ .string "Diamond-shaped tiles are teleport\n"
+ .string "blocks.\p"
+ .string "They're transporters for this\n"
+ .string "high-tech building.$"
+
+SilphCo_2F_Text_Grunt2Intro::
+ .string "Hey, kid!\n"
+ .string "What are you wandering here for?$"
+
+SilphCo_2F_Text_Grunt2Defeat::
+ .string "I goofed!$"
+
+SilphCo_2F_Text_Grunt2PostBattle::
+ .string "SILPH CO. will be associated with\n"
+ .string "TEAM ROCKET!$"
+
+Text_ThunderWaveTeach::
+ .string "Eeek!\n"
+ .string "No! Stop! Help!\p"
+ .string "Oh, you're not with TEAM ROCKET.\n"
+ .string "I'm sorry, I thought…\p"
+ .string "Will you forgive me if I teach\n"
+ .string "you the THUNDER WAVE technique?$"
+
+Text_ThunderWaveDeclined::
+ .string "Oh…\n"
+ .string "But THUNDER WAVE is convenient…$"
+
+Text_ThunderWaveWhichMon::
+ .string "Which POKéMON should I teach\n"
+ .string "THUNDER WAVE?$"
+
+Text_ThunderWaveTaught::
+ .string "THUNDER WAVE causes paralysis in\n"
+ .string "the target POKéMON.\p"
+ .string "A paralyzed POKéMON may be unable\n"
+ .string "to move in battle.\p"
+ .string "It's an ELECTRIC-type move, so it\n"
+ .string "won't work on some POKéMON.$"
+
+SilphCo_2F_Text_FloorSign::
+ .string "SILPH CO. HEAD OFFICE\n"
+ .string "2F$"
+
diff --git a/data/maps/SilphCo_3F_Frlg/map.json b/data/maps/SilphCo_3F_Frlg/map.json
new file mode 100644
index 000000000000..bc23d4c6bd62
--- /dev/null
+++ b/data/maps/SilphCo_3F_Frlg/map.json
@@ -0,0 +1,233 @@
+{
+ "id": "MAP_SILPH_CO_3F",
+ "name": "SilphCo_3F_Frlg",
+ "layout": "LAYOUT_SILPH_CO_3F",
+ "music": "MUS_RG_SILPH",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SILPH_CO",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 3,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 25,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SilphCo_3F_EventScript_Grunt",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 31,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_3F_EventScript_WorkerM",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 4,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_3F_EventScript_Jose",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 8,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_3F_EventScript_ItemHyperPotion",
+ "flag": "FLAG_HIDE_SILPH_CO_3F_HYPER_POTION"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 28,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_2F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_5F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 13,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_7F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 30,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_4F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 2,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_9F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 3,
+ "y": 20,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_5F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 29,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_3F",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 32,
+ "y": 20,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_3F",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 33,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_2F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 22,
+ "y": 3,
+ "elevation": 0,
+ "dest_map": "MAP_SILPH_CO_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 10,
+ "y": 12,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_3F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 10,
+ "y": 13,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_3F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 21,
+ "y": 12,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_3F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 21,
+ "y": 13,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_3F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 12,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_3F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 13,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_3F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 20,
+ "y": 12,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_3F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 20,
+ "y": 13,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_3F_EventScript_Door2"
+ },
+ {
+ "type": "hidden_item",
+ "x": 34,
+ "y": 18,
+ "elevation": 0,
+ "item": "ITEM_PROTEIN",
+ "flag": "FLAG_HIDDEN_ITEM_SILPH_CO_3F_PROTEIN",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 29,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_3F_EventScript_FloorSign"
+ }
+ ]
+}
diff --git a/data/maps/SilphCo_3F_Frlg/scripts.inc b/data/maps/SilphCo_3F_Frlg/scripts.inc
new file mode 100644
index 000000000000..4b1aff6ec60e
--- /dev/null
+++ b/data/maps/SilphCo_3F_Frlg/scripts.inc
@@ -0,0 +1,70 @@
+SilphCo_3F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, SilphCo_3F_OnLoad
+ .byte 0
+
+SilphCo_3F_OnLoad::
+ call_if_unset FLAG_SILPH_3F_DOOR_1, EventScript_Close3FDoor1
+ call_if_unset FLAG_SILPH_3F_DOOR_2, EventScript_Close3FDoor2
+ end
+
+SilphCo_3F_EventScript_WorkerM::
+ lock
+ faceplayer
+ goto_if_ge VAR_MAP_SCENE_SILPH_CO_11F, 1, SilphCo_3F_EventScript_WorkerMRocketsGone
+ msgbox SilphCo_3F_Text_WhatAmIToDo
+ release
+ end
+
+SilphCo_3F_EventScript_WorkerMRocketsGone::
+ msgbox SilphCo_3F_Text_YouAndYourMonsSavedUs
+ release
+ end
+
+SilphCo_3F_EventScript_FloorSign::
+ msgbox SilphCo_3F_Text_FloorSign, MSGBOX_SIGN
+ end
+
+SilphCo_3F_EventScript_Jose::
+ trainerbattle_single TRAINER_SCIENTIST_JOSE, SilphCo_3F_Text_JoseIntro, SilphCo_3F_Text_JoseDefeat
+ msgbox SilphCo_3F_Text_JosePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_3F_EventScript_Grunt::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_25, SilphCo_3F_Text_GruntIntro, SilphCo_3F_Text_GruntDefeat
+ msgbox SilphCo_3F_Text_GruntPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_3F_Text_WhatAmIToDo::
+ .string "I work for SILPH CO.\n"
+ .string "What am I to do?$"
+
+SilphCo_3F_Text_YouAndYourMonsSavedUs::
+ .string "{PLAYER}!\n"
+ .string "You and your POKéMON saved us!$"
+
+SilphCo_3F_Text_GruntIntro::
+ .string "Quit messing with us, kid!$"
+
+SilphCo_3F_Text_GruntDefeat::
+ .string "I give up!$"
+
+SilphCo_3F_Text_GruntPostBattle::
+ .string "A hint? You can open doors with\n"
+ .string "a CARD KEY!$"
+
+SilphCo_3F_Text_JoseIntro::
+ .string "I support TEAM ROCKET more than\n"
+ .string "I support SILPH CO.!$"
+
+SilphCo_3F_Text_JoseDefeat::
+ .string "You really got me!$"
+
+SilphCo_3F_Text_JosePostBattle::
+ .string "Humph…\p"
+ .string "TEAM ROCKET said that if I helped\n"
+ .string "them, they'd let me study POKéMON.$"
+
+SilphCo_3F_Text_FloorSign::
+ .string "SILPH CO. HEAD OFFICE\n"
+ .string "3F$"
+
diff --git a/data/maps/SilphCo_4F_Frlg/map.json b/data/maps/SilphCo_4F_Frlg/map.json
new file mode 100644
index 000000000000..6b74914776e2
--- /dev/null
+++ b/data/maps/SilphCo_4F_Frlg/map.json
@@ -0,0 +1,268 @@
+{
+ "id": "MAP_SILPH_CO_4F",
+ "name": "SilphCo_4F_Frlg",
+ "layout": "LAYOUT_SILPH_CO_4F",
+ "music": "MUS_RG_SILPH",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SILPH_CO",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 4,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 33,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SilphCo_4F_EventScript_Grunt2",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 10,
+ "y": 19,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "SilphCo_4F_EventScript_Grunt1",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 14,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SilphCo_4F_EventScript_Rodney",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 5,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_4F_EventScript_WorkerM",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 3,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_4F_EventScript_ItemMaxRevive",
+ "flag": "FLAG_HIDE_SILPH_CO_4F_MAX_REVIVE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 4,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_4F_EventScript_ItemEscapeRope",
+ "flag": "FLAG_HIDE_SILPH_CO_4F_ESCAPE_ROPE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 2,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_4F_EventScript_ItemFullHeal",
+ "flag": "FLAG_HIDE_SILPH_CO_4F_FULL_HEAL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 30,
+ "y": 18,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_4F_EventScript_ItemTM41",
+ "flag": "FLAG_HIDE_SILPH_CO_4F_TM41"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 28,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_5F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 18,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_6F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 30,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_3F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 12,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_10F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 20,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_10F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 18,
+ "y": 14,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_10F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 22,
+ "y": 3,
+ "elevation": 0,
+ "dest_map": "MAP_SILPH_CO_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 16,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_4F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 16,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_4F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 17,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_4F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 17,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_4F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 15,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_4F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 14,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_4F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 14,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_4F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 15,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_4F_EventScript_Door2"
+ },
+ {
+ "type": "hidden_item",
+ "x": 35,
+ "y": 20,
+ "elevation": 0,
+ "item": "ITEM_IRON",
+ "flag": "FLAG_HIDDEN_ITEM_SILPH_CO_4F_IRON",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 29,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_4F_EventScript_FloorSign"
+ }
+ ]
+}
diff --git a/data/maps/SilphCo_4F_Frlg/scripts.inc b/data/maps/SilphCo_4F_Frlg/scripts.inc
new file mode 100644
index 000000000000..98cb0c4d1bb3
--- /dev/null
+++ b/data/maps/SilphCo_4F_Frlg/scripts.inc
@@ -0,0 +1,86 @@
+SilphCo_4F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, SilphCo_4F_OnLoad
+ .byte 0
+
+SilphCo_4F_OnLoad::
+ call_if_unset FLAG_SILPH_4F_DOOR_1, EventScript_Close4FDoor1
+ call_if_unset FLAG_SILPH_4F_DOOR_2, EventScript_Close4FDoor2
+ end
+
+SilphCo_4F_EventScript_WorkerM::
+ lock
+ faceplayer
+ goto_if_ge VAR_MAP_SCENE_SILPH_CO_11F, 1, SilphCo_4F_EventScript_WorkerMRocketsGone
+ msgbox SilphCo_4F_Text_CantYouSeeImHiding
+ release
+ end
+
+SilphCo_4F_EventScript_WorkerMRocketsGone::
+ msgbox SilphCo_4F_Text_TeamRocketIsGone
+ release
+ end
+
+SilphCo_4F_EventScript_FloorSign::
+ msgbox SilphCo_4F_Text_FloorSign, MSGBOX_SIGN
+ end
+
+SilphCo_4F_EventScript_Rodney::
+ trainerbattle_single TRAINER_SCIENTIST_RODNEY, SilphCo_4F_Text_RodneyIntro, SilphCo_4F_Text_RodneyDefeat
+ msgbox SilphCo_4F_Text_RodneyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_4F_EventScript_Grunt1::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_26, SilphCo_4F_Text_Grunt1Intro, SilphCo_4F_Text_Grunt1Defeat
+ msgbox SilphCo_4F_Text_Grunt1PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_4F_EventScript_Grunt2::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_27, SilphCo_4F_Text_Grunt2Intro, SilphCo_4F_Text_Grunt2Defeat
+ msgbox SilphCo_4F_Text_Grunt2PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_4F_Text_CantYouSeeImHiding::
+ .string "Sssh!\n"
+ .string "Can't you see I'm hiding?$"
+
+SilphCo_4F_Text_TeamRocketIsGone::
+ .string "Huh?\n"
+ .string "TEAM ROCKET is gone?$"
+
+SilphCo_4F_Text_Grunt1Intro::
+ .string "TEAM ROCKET has taken control\n"
+ .string "of SILPH CO.!$"
+
+SilphCo_4F_Text_Grunt1Defeat::
+ .string "Arrgh!$"
+
+SilphCo_4F_Text_Grunt1PostBattle::
+ .string "Fwahahaha!\n"
+ .string "My BOSS has been after this place!$"
+
+SilphCo_4F_Text_RodneyIntro::
+ .string "My POKéMON is my loyal servant.$"
+
+SilphCo_4F_Text_RodneyDefeat::
+ .string "Darn!\n"
+ .string "You weak POKéMON!$"
+
+SilphCo_4F_Text_RodneyPostBattle::
+ .string "The doors are electronically\n"
+ .string "locked.\p"
+ .string "It takes a CARD KEY to open the\n"
+ .string "doors here.$"
+
+SilphCo_4F_Text_Grunt2Intro::
+ .string "Intruder spotted!$"
+
+SilphCo_4F_Text_Grunt2Defeat::
+ .string "Who are you?$"
+
+SilphCo_4F_Text_Grunt2PostBattle::
+ .string "I better tell the BOSS on 11F!$"
+
+SilphCo_4F_Text_FloorSign::
+ .string "SILPH CO. HEAD OFFICE\n"
+ .string "4F$"
+
diff --git a/data/maps/SilphCo_5F_Frlg/map.json b/data/maps/SilphCo_5F_Frlg/map.json
new file mode 100644
index 000000000000..5a4396fad490
--- /dev/null
+++ b/data/maps/SilphCo_5F_Frlg/map.json
@@ -0,0 +1,348 @@
+{
+ "id": "MAP_SILPH_CO_5F",
+ "name": "SilphCo_5F_Frlg",
+ "layout": "LAYOUT_SILPH_CO_5F",
+ "music": "MUS_RG_SILPH",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SILPH_CO",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 5,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 35,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SilphCo_5F_EventScript_Grunt2",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 23,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "SilphCo_5F_EventScript_Dalton",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 16,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_5F_EventScript_WorkerM",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 11,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SilphCo_5F_EventScript_Beau",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 9,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SilphCo_5F_EventScript_Grunt1",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 4,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_5F_EventScript_ItemProtein",
+ "flag": "FLAG_HIDE_SILPH_CO_5F_PROTEIN"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 1,
+ "y": 18,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_5F_EventScript_ItemTM01",
+ "flag": "FLAG_HIDE_SILPH_CO_5F_TM01"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 22,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_5F_EventScript_ItemCardKey",
+ "flag": "FLAG_HIDE_SILPH_CO_5F_CARD_KEY"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 2,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_RIGHT_AND_LEFT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_5F_EventScript_Scientist",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 28,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_4F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 15,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_3F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 30,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_6F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 10,
+ "y": 20,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_9F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 20,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_3F",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 33,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_7F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 22,
+ "y": 3,
+ "elevation": 0,
+ "dest_map": "MAP_SILPH_CO_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 13,
+ "y": 16,
+ "elevation": 0,
+ "item": "ITEM_ELIXIR",
+ "flag": "FLAG_HIDDEN_ITEM_SILPH_CO_5F_ELIXIR",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_5F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_5F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 18,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_5F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 19,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_5F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 19,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_5F_EventScript_Door3"
+ },
+ {
+ "type": "sign",
+ "x": 19,
+ "y": 14,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_5F_EventScript_Door3"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_5F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_5F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 19,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_5F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 18,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_5F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 18,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_5F_EventScript_Door3"
+ },
+ {
+ "type": "sign",
+ "x": 18,
+ "y": 14,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_5F_EventScript_Door3"
+ },
+ {
+ "type": "sign",
+ "x": 28,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_5F_EventScript_PokemonReport3"
+ },
+ {
+ "type": "sign",
+ "x": 30,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_5F_EventScript_PokemonReport2"
+ },
+ {
+ "type": "sign",
+ "x": 25,
+ "y": 15,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_5F_EventScript_PokemonReport1"
+ },
+ {
+ "type": "hidden_item",
+ "x": 32,
+ "y": 9,
+ "elevation": 0,
+ "item": "ITEM_PP_UP",
+ "flag": "FLAG_HIDDEN_ITEM_SILPH_CO_5F_PP_UP",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 29,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_5F_EventScript_FloorSign"
+ }
+ ]
+}
diff --git a/data/maps/SilphCo_5F_Frlg/scripts.inc b/data/maps/SilphCo_5F_Frlg/scripts.inc
new file mode 100644
index 000000000000..69441dadee80
--- /dev/null
+++ b/data/maps/SilphCo_5F_Frlg/scripts.inc
@@ -0,0 +1,140 @@
+SilphCo_5F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, SilphCo_5F_OnLoad
+ .byte 0
+
+SilphCo_5F_OnLoad::
+ call_if_unset FLAG_SILPH_5F_DOOR_1, EventScript_Close5FDoor1
+ call_if_unset FLAG_SILPH_5F_DOOR_2, EventScript_Close5FDoor2
+ call_if_unset FLAG_SILPH_5F_DOOR_3, EventScript_Close5FDoor3
+ end
+
+SilphCo_5F_EventScript_WorkerM::
+ lock
+ faceplayer
+ goto_if_ge VAR_MAP_SCENE_SILPH_CO_11F, 1, SilphCo_5F_EventScript_WorkerMRocketsGone
+ msgbox SilphCo_5F_Text_RocketsInUproarAboutIntruder
+ release
+ end
+
+SilphCo_5F_EventScript_WorkerMRocketsGone::
+ msgbox SilphCo_5F_Text_YoureOurHeroThankYou
+ release
+ end
+
+SilphCo_5F_EventScript_PokemonReport1::
+ msgbox SilphCo_5F_Text_PorygonFirstVRMon, MSGBOX_SIGN
+ end
+
+SilphCo_5F_EventScript_PokemonReport2::
+ msgbox SilphCo_5F_Text_Over350TechniquesConfirmed, MSGBOX_SIGN
+ end
+
+SilphCo_5F_EventScript_PokemonReport3::
+ msgbox SilphCo_5F_Text_SomeMonsEvolveWhenTraded, MSGBOX_SIGN
+ end
+
+SilphCo_5F_EventScript_FloorSign::
+ msgbox SilphCo_5F_Text_FloorSign, MSGBOX_SIGN
+ end
+
+SilphCo_5F_EventScript_Beau::
+ trainerbattle_single TRAINER_SCIENTIST_BEAU, SilphCo_5F_Text_BeauIntro, SilphCo_5F_Text_BeauDefeat
+ msgbox SilphCo_5F_Text_BeauPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_5F_EventScript_Grunt1::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_28, SilphCo_5F_Text_Grunt1Intro, SilphCo_5F_Text_Grunt1Defeat
+ msgbox SilphCo_5F_Text_Grunt1PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_5F_EventScript_Grunt2::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_29, SilphCo_5F_Text_Grunt2Intro, SilphCo_5F_Text_Grunt2Defeat
+ msgbox SilphCo_5F_Text_Grunt2PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_5F_EventScript_Dalton::
+ trainerbattle_single TRAINER_JUGGLER_DALTON, SilphCo_5F_Text_DaltonIntro, SilphCo_5F_Text_DaltonDefeat
+ msgbox SilphCo_5F_Text_DaltonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_5F_Text_RocketsInUproarAboutIntruder::
+ .string "TEAM ROCKET is in an uproar over\n"
+ .string "some intruder.\p"
+ .string "That's you, right?$"
+
+SilphCo_5F_Text_YoureOurHeroThankYou::
+ .string "TEAM ROCKET took off!\n"
+ .string "You're our hero! Thank you!$"
+
+SilphCo_5F_Text_Grunt1Intro::
+ .string "I heard a kid was wandering\n"
+ .string "around.$"
+
+SilphCo_5F_Text_Grunt1Defeat::
+ .string "Boom!$"
+
+SilphCo_5F_Text_Grunt1PostBattle::
+ .string "It's not smart to pick a fight with\n"
+ .string "TEAM ROCKET!$"
+
+SilphCo_5F_Text_BeauIntro::
+ .string "We study POKé BALL technology on\n"
+ .string "this floor.$"
+
+SilphCo_5F_Text_BeauDefeat::
+ .string "Dang!\n"
+ .string "Blast it!$"
+
+SilphCo_5F_Text_BeauPostBattle::
+ .string "We worked on the ultimate POKé\n"
+ .string "BALL which would catch anything.$"
+
+SilphCo_5F_Text_DaltonIntro::
+ .string "Whaaat?\p"
+ .string "There shouldn't be any children\n"
+ .string "here!$"
+
+SilphCo_5F_Text_DaltonDefeat::
+ .string "Oh, goodness!$"
+
+SilphCo_5F_Text_DaltonPostBattle::
+ .string "You're only on 5F.\n"
+ .string "It's a long way to my BOSS!$"
+
+SilphCo_5F_Text_Grunt2Intro::
+ .string "Show TEAM ROCKET a little respect!$"
+
+SilphCo_5F_Text_Grunt2Defeat::
+ .string "Cough…\n"
+ .string "Cough…$"
+
+SilphCo_5F_Text_Grunt2PostBattle::
+ .string "Which reminds me.\p"
+ .string "KOFFING evolves into WEEZING!$"
+
+SilphCo_5F_Text_PorygonFirstVRMon::
+ .string "It's a POKéMON REPORT!\p"
+ .string "POKéMON LAB created PORYGON,\n"
+ .string "the first virtual-reality POKéMON.$"
+
+SilphCo_5F_Text_Over350TechniquesConfirmed::
+ .string "It's a POKéMON REPORT!\p"
+ .string "Over 350 POKéMON techniques have\n"
+ .string "been confirmed.$"
+
+SilphCo_5F_Text_SomeMonsEvolveWhenTraded::
+ .string "It's a POKéMON REPORT!\p"
+ .string "Some POKéMON have been confirmed\n"
+ .string "to evolve when they are traded.$"
+
+SilphCo_5F_Text_FloorSign::
+ .string "SILPH CO. HEAD OFFICE\n"
+ .string "5F$"
+
+SilphCo_5F_Text_RocketBossLookingForStrongMons::
+ .string "Those thugs that took over our\n"
+ .string "building…\p"
+ .string "Their BOSS said he was looking for\n"
+ .string "strong POKéMON.\p"
+ .string "I hope our PRESIDENT managed to\n"
+ .string "avoid trouble…$"
diff --git a/data/maps/SilphCo_6F_Frlg/map.json b/data/maps/SilphCo_6F_Frlg/map.json
new file mode 100644
index 000000000000..71dec7b76fec
--- /dev/null
+++ b/data/maps/SilphCo_6F_Frlg/map.json
@@ -0,0 +1,250 @@
+{
+ "id": "MAP_SILPH_CO_6F",
+ "name": "SilphCo_6F_Frlg",
+ "layout": "LAYOUT_SILPH_CO_6F",
+ "music": "MUS_RG_SILPH",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SILPH_CO",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 6,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 21,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SilphCo_6F_EventScript_Grunt1",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 23,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_6F_EventScript_WorkerM1",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_F",
+ "x": 24,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_6F_EventScript_WorkerF1",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 22,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_6F_EventScript_WorkerM2",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 14,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_6F_EventScript_WorkerM3",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_F",
+ "x": 16,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_6F_EventScript_WorkerF2",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 9,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "SilphCo_6F_EventScript_Taylor",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 2,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_6F_EventScript_ItemHPUp",
+ "flag": "FLAG_HIDE_SILPH_CO_6F_HP_UP"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 1,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_6F_EventScript_ItemXSpecial",
+ "flag": "FLAG_HIDE_SILPH_CO_6F_X_SPECIAL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 18,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SilphCo_6F_EventScript_Grunt2",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 14,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_7F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 29,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_2F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 26,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_5F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 2,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_4F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 20,
+ "y": 3,
+ "elevation": 0,
+ "dest_map": "MAP_SILPH_CO_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 15,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_6F_EventScript_Door"
+ },
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 16,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_6F_EventScript_Door"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 15,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_6F_EventScript_Door"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 16,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_6F_EventScript_Door"
+ },
+ {
+ "type": "hidden_item",
+ "x": 1,
+ "y": 8,
+ "elevation": 0,
+ "item": "ITEM_CARBOS",
+ "flag": "FLAG_HIDDEN_ITEM_SILPH_CO_6F_CARBOS",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 25,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_6F_EventScript_FloorSign"
+ }
+ ]
+}
diff --git a/data/maps/SilphCo_6F_Frlg/scripts.inc b/data/maps/SilphCo_6F_Frlg/scripts.inc
new file mode 100644
index 000000000000..3363e8e81549
--- /dev/null
+++ b/data/maps/SilphCo_6F_Frlg/scripts.inc
@@ -0,0 +1,170 @@
+SilphCo_6F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, SilphCo_6F_OnLoad
+ .byte 0
+
+SilphCo_6F_OnLoad::
+ call_if_unset FLAG_SILPH_6F_DOOR, EventScript_Close6FDoor
+ end
+
+SilphCo_6F_EventScript_WorkerM2::
+ lock
+ faceplayer
+ goto_if_ge VAR_MAP_SCENE_SILPH_CO_11F, 1, SilphCo_6F_EventScript_WorkerM2RocketsGone
+ msgbox SilphCo_6F_Text_TargetedSilphForOurMonProducts
+ release
+ end
+
+SilphCo_6F_EventScript_WorkerM2RocketsGone::
+ msgbox SilphCo_6F_Text_ComeWorkForSilphWhenYoureOlder
+ release
+ end
+
+SilphCo_6F_EventScript_WorkerM3::
+ lock
+ faceplayer
+ goto_if_ge VAR_MAP_SCENE_SILPH_CO_11F, 1, SilphCo_6F_EventScript_WorkerM3RocketsGone
+ msgbox SilphCo_6F_Text_RocketsTookOverBuilding
+ release
+ end
+
+SilphCo_6F_EventScript_WorkerM3RocketsGone::
+ msgbox SilphCo_6F_Text_BetterGetBackToWork
+ release
+ end
+
+SilphCo_6F_EventScript_WorkerM1::
+ lock
+ faceplayer
+ goto_if_ge VAR_MAP_SCENE_SILPH_CO_11F, 1, SilphCo_6F_EventScript_WorkerM1RocketsGone
+ msgbox SilphCo_6F_Text_HelpMePlease
+ release
+ end
+
+SilphCo_6F_EventScript_WorkerM1RocketsGone::
+ msgbox SilphCo_6F_Text_WeGotEngaged
+ release
+ end
+
+SilphCo_6F_EventScript_WorkerF1::
+ lock
+ faceplayer
+ goto_if_ge VAR_MAP_SCENE_SILPH_CO_11F, 1, SilphCo_6F_EventScript_WorkerF1RocketsGone
+ msgbox SilphCo_6F_Text_ThatManIsSuchACoward
+ release
+ end
+
+SilphCo_6F_EventScript_WorkerF1RocketsGone::
+ msgbox SilphCo_6F_Text_NeedsMeToLookAfterHim
+ release
+ end
+
+SilphCo_6F_EventScript_WorkerF2::
+ lock
+ faceplayer
+ goto_if_ge VAR_MAP_SCENE_SILPH_CO_11F, 1, SilphCo_6F_EventScript_WorkerF2RocketsGone
+ msgbox SilphCo_6F_Text_RocketsTryingToConquerWorld
+ release
+ end
+
+SilphCo_6F_EventScript_WorkerF2RocketsGone::
+ msgbox SilphCo_6F_Text_RocketsRanAwayBecauseOfYou
+ release
+ end
+
+SilphCo_6F_EventScript_FloorSign::
+ msgbox SilphCo_6F_Text_FloorSign, MSGBOX_SIGN
+ end
+
+SilphCo_6F_EventScript_Taylor::
+ trainerbattle_single TRAINER_SCIENTIST_TAYLOR, SilphCo_6F_Text_TaylorIntro, SilphCo_6F_Text_TaylorDefeat
+ msgbox SilphCo_6F_Text_TaylorPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_6F_EventScript_Grunt1::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_30, SilphCo_6F_Text_Grunt1Intro, SilphCo_6F_Text_Grunt1Defeat
+ msgbox SilphCo_6F_Text_Grunt1PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_6F_EventScript_Grunt2::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_31, SilphCo_6F_Text_Grunt2Intro, SilphCo_6F_Text_Grunt2Defeat
+ msgbox SilphCo_6F_Text_Grunt2PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_6F_Text_RocketsTookOverBuilding::
+ .string "The ROCKETS came and took over\n"
+ .string "the building!$"
+
+SilphCo_6F_Text_BetterGetBackToWork::
+ .string "Well, better get back to work.$"
+
+SilphCo_6F_Text_HelpMePlease::
+ .string "Oh dear, oh dear.\n"
+ .string "Help me, please!$"
+
+SilphCo_6F_Text_WeGotEngaged::
+ .string "We got engaged.\n"
+ .string "Heheh!$"
+
+SilphCo_6F_Text_ThatManIsSuchACoward::
+ .string "That man next to me…\n"
+ .string "He's such a coward!$"
+
+SilphCo_6F_Text_NeedsMeToLookAfterHim::
+ .string "He's so helpless, he needed\n"
+ .string "someone like me to look after him.$"
+
+SilphCo_6F_Text_RocketsTryingToConquerWorld::
+ .string "TEAM ROCKET is trying to conquer\n"
+ .string "the world with POKéMON.$"
+
+SilphCo_6F_Text_RocketsRanAwayBecauseOfYou::
+ .string "TEAM ROCKET ran away, and it's all\n"
+ .string "because of you!$"
+
+SilphCo_6F_Text_TargetedSilphForOurMonProducts::
+ .string "They must have targeted SILPH for\n"
+ .string "our POKéMON products.$"
+
+SilphCo_6F_Text_ComeWorkForSilphWhenYoureOlder::
+ .string "Come work for SILPH when you\n"
+ .string "get older.$"
+
+SilphCo_6F_Text_Grunt1Intro::
+ .string "I am one of the four ROCKET\n"
+ .string "BROTHERS!$"
+
+SilphCo_6F_Text_Grunt1Defeat::
+ .string "Flame out!$"
+
+SilphCo_6F_Text_Grunt1PostBattle::
+ .string "No matter!\n"
+ .string "My brothers will avenge me!$"
+
+SilphCo_6F_Text_TaylorIntro::
+ .string "That rotten PRESIDENT!\p"
+ .string "Serves him right for shipping me\n"
+ .string "off to the TIKSI BRANCH!\p"
+ .string "That's why TEAM ROCKET came after\n"
+ .string "us, I'm sure of it!$"
+
+SilphCo_6F_Text_TaylorDefeat::
+ .string "Shoot!$"
+
+SilphCo_6F_Text_TaylorPostBattle::
+ .string "TIKSI BRANCH?\n"
+ .string "It's in Russian no-man's-land!$"
+
+SilphCo_6F_Text_Grunt2Intro::
+ .string "You dare betray TEAM ROCKET?$"
+
+SilphCo_6F_Text_Grunt2Defeat::
+ .string "You traitor!$"
+
+SilphCo_6F_Text_Grunt2PostBattle::
+ .string "If you stand for justice, you\n"
+ .string "betray us bad guys!$"
+
+SilphCo_6F_Text_FloorSign::
+ .string "SILPH CO. HEAD OFFICE\n"
+ .string "6F$"
+
diff --git a/data/maps/SilphCo_7F_Frlg/map.json b/data/maps/SilphCo_7F_Frlg/map.json
new file mode 100644
index 000000000000..cce3b406fdf3
--- /dev/null
+++ b/data/maps/SilphCo_7F_Frlg/map.json
@@ -0,0 +1,356 @@
+{
+ "id": "MAP_SILPH_CO_7F",
+ "name": "SilphCo_7F_Frlg",
+ "layout": "LAYOUT_SILPH_CO_7F",
+ "music": "MUS_RG_SILPH",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SILPH_CO",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 7,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_SILPH_CO_RIVAL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLUE",
+ "x": 2,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_SILPH_RIVAL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 0,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_7F_EventScript_LaprasGuy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 24,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "SilphCo_7F_EventScript_Grunt1",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 24,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SilphCo_7F_EventScript_Grunt2",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 13,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SilphCo_7F_EventScript_Grunt3",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_F",
+ "x": 10,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_7F_EventScript_WorkerF",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 13,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_7F_EventScript_WorkerM1",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_SILPH_CO_7F_WORKER_M2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 9,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_7F_EventScript_WorkerM2",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 3,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SilphCo_7F_EventScript_Joshua",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 0,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_7F_EventScript_ItemCalcium",
+ "flag": "FLAG_HIDE_SILPH_CO_7F_CALCIUM"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 30,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_7F_EventScript_ItemTM08",
+ "flag": "FLAG_HIDE_SILPH_CO_7F_TM08"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 19,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_6F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_11F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 25,
+ "y": 17,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_5F",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 27,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_8F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_3F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 23,
+ "y": 3,
+ "elevation": 0,
+ "dest_map": "MAP_SILPH_CO_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 2,
+ "y": 4,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_SILPH_CO_7F",
+ "var_value": "0",
+ "script": "SilphCo_7F_EventScript_RivalTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_SILPH_CO_7F",
+ "var_value": "0",
+ "script": "SilphCo_7F_EventScript_RivalTriggerBottom"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_7F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_7F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 11,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_7F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_7F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 24,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_7F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 25,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_7F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 25,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_7F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 24,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_7F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 25,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_7F_EventScript_Door3"
+ },
+ {
+ "type": "sign",
+ "x": 26,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_7F_EventScript_Door3"
+ },
+ {
+ "type": "sign",
+ "x": 25,
+ "y": 14,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_7F_EventScript_Door3"
+ },
+ {
+ "type": "sign",
+ "x": 26,
+ "y": 14,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_7F_EventScript_Door3"
+ },
+ {
+ "type": "hidden_item",
+ "x": 22,
+ "y": 11,
+ "elevation": 0,
+ "item": "ITEM_ZINC",
+ "flag": "FLAG_HIDDEN_ITEM_SILPH_CO_7F_ZINC",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 20,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_7F_EventScript_FloorSign"
+ }
+ ]
+}
diff --git a/data/maps/SilphCo_7F_Frlg/scripts.inc b/data/maps/SilphCo_7F_Frlg/scripts.inc
new file mode 100644
index 000000000000..6fd7c1a81d28
--- /dev/null
+++ b/data/maps/SilphCo_7F_Frlg/scripts.inc
@@ -0,0 +1,368 @@
+SilphCo_7F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, SilphCo_7F_OnLoad
+ map_script MAP_SCRIPT_ON_TRANSITION, SilphCo_7F_OnTransition
+ .byte 0
+
+SilphCo_7F_OnLoad::
+ call_if_unset FLAG_SILPH_7F_DOOR_1, EventScript_Close7FDoor1
+ call_if_unset FLAG_SILPH_7F_DOOR_2, EventScript_Close7FDoor2
+ call_if_unset FLAG_SILPH_7F_DOOR_3, EventScript_Close7FDoor3
+ end
+
+SilphCo_7F_OnTransition::
+ call_if_ge VAR_MAP_SCENE_SILPH_CO_11F, 1, SilphCo_7F_EventScript_SetObjRocketsGone
+ end
+
+SilphCo_7F_EventScript_SetObjRocketsGone::
+ setobjectmovementtype LOCALID_SILPH_CO_7F_WORKER_M2, MOVEMENT_TYPE_FACE_UP
+ return
+
+SilphCo_7F_EventScript_RivalTriggerTop::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto SilphCo_7F_EventScript_RivalScene
+ end
+
+SilphCo_7F_EventScript_RivalTriggerBottom::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto SilphCo_7F_EventScript_RivalScene
+ end
+
+SilphCo_7F_EventScript_RivalScene::
+ textcolor NPC_TEXT_COLOR_MALE
+ playbgm MUS_RG_ENCOUNTER_RIVAL, 0
+ applymovement LOCALID_SILPH_CO_RIVAL, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_SILPH_CO_RIVAL, Common_Movement_Delay48
+ waitmovement 0
+ msgbox SilphCo_7F_Text_RivalWhatKeptYou
+ call_if_eq VAR_TEMP_1, 0, SilphCo_7F_EventScript_RivalApproachTop
+ call_if_eq VAR_TEMP_1, 1, SilphCo_7F_EventScript_RivalApproachBottom
+ msgbox SilphCo_7F_Text_RivalIntro
+ setvar VAR_LAST_TALKED, LOCALID_SILPH_CO_RIVAL
+ call_if_eq VAR_STARTER_MON, 2, SilphCo_7F_EventScript_RivalSquirtle
+ call_if_eq VAR_STARTER_MON, 1, SilphCo_7F_EventScript_RivalBulbasaur
+ call_if_eq VAR_STARTER_MON, 0, SilphCo_7F_EventScript_RivalCharmander
+ msgbox SilphCo_7F_Text_RivalPostBattle
+ closemessage
+ playbgm MUS_RG_RIVAL_EXIT, 0
+ call_if_eq VAR_TEMP_1, 0, SilphCo_7F_EventScript_RivalExitTop
+ call_if_eq VAR_TEMP_1, 1, SilphCo_7F_EventScript_RivalExitBottom
+ playse SE_WARP_IN
+ fadedefaultbgm
+ removeobject LOCALID_SILPH_CO_RIVAL
+ waitse
+ setvar VAR_MAP_SCENE_SILPH_CO_7F, 1
+ releaseall
+ end
+
+SilphCo_7F_EventScript_RivalApproachTop::
+ closemessage
+ applymovement LOCALID_SILPH_CO_RIVAL, SilphCo_7F_Movement_RivalApproachTop
+ waitmovement 0
+ return
+
+SilphCo_7F_EventScript_RivalApproachBottom::
+ return
+
+SilphCo_7F_EventScript_RivalSquirtle::
+ trainerbattle_no_intro TRAINER_RIVAL_SILPH_SQUIRTLE, SilphCo_7F_Text_RivalDefeat
+ return
+
+SilphCo_7F_EventScript_RivalBulbasaur::
+ trainerbattle_no_intro TRAINER_RIVAL_SILPH_BULBASAUR, SilphCo_7F_Text_RivalDefeat
+ return
+
+SilphCo_7F_EventScript_RivalCharmander::
+ trainerbattle_no_intro TRAINER_RIVAL_SILPH_CHARMANDER, SilphCo_7F_Text_RivalDefeat
+ return
+
+SilphCo_7F_EventScript_RivalExitTop::
+ applymovement LOCALID_SILPH_CO_RIVAL, SilphCo_7F_Movement_RivalExitTop
+ waitmovement 0
+ return
+
+SilphCo_7F_EventScript_RivalExitBottom::
+ applymovement LOCALID_SILPH_CO_RIVAL, SilphCo_7F_Movement_RivalExitBottom
+ waitmovement 0
+ return
+
+SilphCo_7F_Movement_RivalApproachTop::
+ walk_up
+ step_end
+
+SilphCo_7F_Movement_RivalExitTop::
+ walk_right
+ walk_right
+ walk_right
+ walk_up
+ delay_16
+ step_end
+
+SilphCo_7F_Movement_RivalExitBottom::
+ walk_left
+ walk_up
+ walk_up
+ walk_right
+ walk_right
+ walk_right
+ walk_right
+ delay_16
+ step_end
+
+SilphCo_7F_EventScript_LaprasGuy::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_LAPRAS_FROM_SILPH, SilphCo_7F_EventScript_AlreadyGotLapras
+ msgbox SilphCo_7F_Text_HaveMonForSavingUs
+ setvar VAR_TEMP_1, SPECIES_LAPRAS
+ givemon SPECIES_LAPRAS, 25
+ goto_if_eq VAR_RESULT, 0, SilphCo_7F_EventScript_ReceiveLaprasParty
+ goto_if_eq VAR_RESULT, 1, SilphCo_7F_EventScript_ReceiveLaprasPC
+ goto_if_eq VAR_RESULT, 2, Common_EventScript_NoMoreRoomForPokemon
+ release
+ end
+
+SilphCo_7F_EventScript_ReceiveLaprasParty::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_LEVEL_UP
+ message SilphCo_7F_Text_ObtainedLaprasFromEmployee
+ waitmessage
+ waitfanfare
+ bufferspeciesname STR_VAR_1, SPECIES_LAPRAS
+ msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, SilphCo_7F_EventScript_EndReceiveLapras
+ call Common_EventScript_GetGiftMonPartySlot
+ call Common_EventScript_NameReceivedPartyMon
+ goto SilphCo_7F_EventScript_EndReceiveLapras
+ end
+
+SilphCo_7F_EventScript_ReceiveLaprasPC::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_LEVEL_UP
+ message SilphCo_7F_Text_ObtainedLaprasFromEmployee
+ waitmessage
+ waitfanfare
+ bufferspeciesname STR_VAR_1, SPECIES_LAPRAS
+ msgbox gText_NicknameThisPokemon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, SilphCo_7F_EventScript_LaprasTransferredToPC
+ call Common_EventScript_NameReceivedBoxMon
+ goto SilphCo_7F_EventScript_LaprasTransferredToPC
+ end
+
+SilphCo_7F_EventScript_LaprasTransferredToPC::
+ call Common_EventScript_TransferredToPC
+ goto SilphCo_7F_EventScript_EndReceiveLapras
+ end
+
+SilphCo_7F_EventScript_EndReceiveLapras::
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox SilphCo_7F_Text_ExplainLapras
+ setflag FLAG_GOT_LAPRAS_FROM_SILPH
+ release
+ end
+
+SilphCo_7F_EventScript_AlreadyGotLapras::
+ msgbox SilphCo_7F_Text_RocketBossWentToBoardroom
+ release
+ end
+
+SilphCo_7F_EventScript_WorkerM1::
+ lock
+ faceplayer
+ goto_if_ge VAR_MAP_SCENE_SILPH_CO_11F, 1, SilphCo_7F_EventScript_WorkerM1RocketsGone
+ msgbox SilphCo_7F_Text_RocketsAfterMasterBall
+ release
+ end
+
+SilphCo_7F_EventScript_WorkerM1RocketsGone::
+ msgbox SilphCo_7F_Text_CanceledMasterBallProject
+ release
+ end
+
+SilphCo_7F_EventScript_WorkerM2::
+ lock
+ faceplayer
+ goto_if_ge VAR_MAP_SCENE_SILPH_CO_11F, 1, SilphCo_7F_EventScript_WorkerM2RocketsGone
+ msgbox SilphCo_7F_Text_BadIfTeamRocketTookOver
+ release
+ end
+
+SilphCo_7F_EventScript_WorkerM2RocketsGone::
+ msgbox SilphCo_7F_Text_WowYouChasedOffTeamRocket
+ release
+ end
+
+SilphCo_7F_EventScript_WorkerF::
+ lock
+ faceplayer
+ goto_if_ge VAR_MAP_SCENE_SILPH_CO_11F, 1, SilphCo_7F_EventScript_WorkerFRocketsGone
+ msgbox SilphCo_7F_Text_ReallyDangerousHere
+ release
+ end
+
+SilphCo_7F_EventScript_WorkerFRocketsGone::
+ msgbox SilphCo_7F_Text_ThankYouSoMuch
+ release
+ end
+
+SilphCo_7F_EventScript_FloorSign::
+ msgbox SilphCo_7F_Text_FloorSign, MSGBOX_SIGN
+ end
+
+SilphCo_7F_EventScript_Joshua::
+ trainerbattle_single TRAINER_SCIENTIST_JOSHUA, SilphCo_7F_Text_JoshuaIntro, SilphCo_7F_Text_JoshuaDefeat
+ msgbox SilphCo_7F_Text_JoshuaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_7F_EventScript_Grunt1::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_33, SilphCo_7F_Text_Grunt1Intro, SilphCo_7F_Text_Grunt1Defeat
+ msgbox SilphCo_7F_Text_Grunt1PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_7F_EventScript_Grunt2::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_34, SilphCo_7F_Text_Grunt2Intro, SilphCo_7F_Text_Grunt2Defeat
+ msgbox SilphCo_7F_Text_Grunt2PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_7F_EventScript_Grunt3::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_35, SilphCo_7F_Text_Grunt3Intro, SilphCo_7F_Text_Grunt3Defeat
+ msgbox SilphCo_7F_Text_Grunt3PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_7F_Text_HaveMonForSavingUs::
+ .string "Oh! Hi! You're not a ROCKET!\n"
+ .string "You came to save us?\l"
+ .string "Why, thank you!\p"
+ .string "I want you to have this POKéMON\n"
+ .string "for saving us.$"
+
+SilphCo_7F_Text_ObtainedLaprasFromEmployee::
+ .string "{PLAYER} obtained a LAPRAS from\n"
+ .string "the SILPH employee!$"
+
+SilphCo_7F_Text_ExplainLapras::
+ .string "It's a LAPRAS.\n"
+ .string "It's a very intelligent POKéMON.\p"
+ .string "We kept it in our lab, but it will\n"
+ .string "be much better off with you.\p"
+ .string "I think you will be a good TRAINER\n"
+ .string "for LAPRAS!\p"
+ .string "It's a good swimmer.\n"
+ .string "It'll give you a lift across water!$"
+
+SilphCo_7F_Text_RocketBossWentToBoardroom::
+ .string "TEAM ROCKET's BOSS went to the\n"
+ .string "boardroom!\p"
+ .string "Is our PRESIDENT okay?\n"
+ .string "I'm worried.$"
+
+SilphCo_7F_Text_RocketsAfterMasterBall::
+ .string "TEAM ROCKET was after the MASTER\n"
+ .string "BALL, which catches any POKéMON.$"
+
+SilphCo_7F_Text_CanceledMasterBallProject::
+ .string "We canceled the MASTER BALL\n"
+ .string "project because of TEAM ROCKET.$"
+
+SilphCo_7F_Text_BadIfTeamRocketTookOver::
+ .string "It would be bad if TEAM ROCKET\n"
+ .string "took over SILPH or our POKéMON.$"
+
+SilphCo_7F_Text_WowYouChasedOffTeamRocket::
+ .string "Wow!\p"
+ .string "You chased off TEAM ROCKET all by\n"
+ .string "yourself?$"
+
+SilphCo_7F_Text_ReallyDangerousHere::
+ .string "You!\n"
+ .string "It's really dangerous here!\p"
+ .string "You came to save me?\n"
+ .string "You can't!$"
+
+SilphCo_7F_Text_ThankYouSoMuch::
+ .string "Thank you so much!$"
+
+SilphCo_7F_Text_Grunt3Intro::
+ .string "Uh-oh!\n"
+ .string "I smell a little mouse!$"
+
+SilphCo_7F_Text_Grunt3Defeat::
+ .string "Lights out!$"
+
+SilphCo_7F_Text_Grunt3PostBattle::
+ .string "You won't find my BOSS by just\n"
+ .string "scurrying around!$"
+
+SilphCo_7F_Text_JoshuaIntro::
+ .string "Heheh!\p"
+ .string "You mistook me for a SILPH worker?$"
+
+SilphCo_7F_Text_JoshuaDefeat::
+ .string "I'm done!$"
+
+SilphCo_7F_Text_JoshuaPostBattle::
+ .string "Despite your age, you are a\n"
+ .string "skilled TRAINER!$"
+
+SilphCo_7F_Text_Grunt1Intro::
+ .string "I am one of the four ROCKET\n"
+ .string "BROTHERS!$"
+
+SilphCo_7F_Text_Grunt1Defeat::
+ .string "Aack!\n"
+ .string "Brothers, I lost!$"
+
+SilphCo_7F_Text_Grunt1PostBattle::
+ .string "Doesn't matter.\n"
+ .string "My brothers will repay the favor!$"
+
+SilphCo_7F_Text_Grunt2Intro::
+ .string "A child intruder?\n"
+ .string "That must be you!$"
+
+SilphCo_7F_Text_Grunt2Defeat::
+ .string "Fine!\n"
+ .string "I lost!$"
+
+SilphCo_7F_Text_Grunt2PostBattle::
+ .string "Go on home before my BOSS gets\n"
+ .string "ticked off!$"
+
+SilphCo_7F_Text_RivalWhatKeptYou::
+ .string "{RIVAL}: What kept you, {PLAYER}?$"
+
+SilphCo_7F_Text_RivalIntro::
+ .string "{RIVAL}: Hahaha! I thought you'd\n"
+ .string "turn up if I waited here!\p"
+ .string "I guess TEAM ROCKET slowed you\n"
+ .string "down! Not that I care!\p"
+ .string "I saw you in SAFFRON, so I decided\n"
+ .string "to see if you got better!$"
+
+SilphCo_7F_Text_RivalDefeat::
+ .string "Oh, man!\n"
+ .string "So, you are ready for BOSS\l"
+ .string "ROCKET!$"
+
+SilphCo_7F_Text_RivalPostBattle::
+ .string "Well, {PLAYER}!\n"
+ .string "I'm moving on up and ahead!\p"
+ .string "By checking my POKéDEX, I'm\n"
+ .string "starting to see what's strong and\l"
+ .string "how they evolve!\p"
+ .string "Am I a genius or what?\p"
+ .string "I'm going to the POKéMON LEAGUE to\n"
+ .string "boot out the ELITE FOUR.\p"
+ .string "I'll become the world's most\n"
+ .string "powerful TRAINER!\p"
+ .string "{PLAYER}, well, good luck to you!\n"
+ .string "Don't sweat it!\l"
+ .string "Smell ya!$"
+
+SilphCo_7F_Text_FloorSign::
+ .string "SILPH CO. HEAD OFFICE\n"
+ .string "7F$"
+
diff --git a/data/maps/SilphCo_8F_Frlg/map.json b/data/maps/SilphCo_8F_Frlg/map.json
new file mode 100644
index 000000000000..3262343fcffe
--- /dev/null
+++ b/data/maps/SilphCo_8F_Frlg/map.json
@@ -0,0 +1,208 @@
+{
+ "id": "MAP_SILPH_CO_8F",
+ "name": "SilphCo_8F_Frlg",
+ "layout": "LAYOUT_SILPH_CO_8F",
+ "music": "MUS_RG_SILPH",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SILPH_CO",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 8,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 28,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "SilphCo_8F_EventScript_Grunt1",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 10,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "SilphCo_8F_EventScript_Grunt2",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 9,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SilphCo_8F_EventScript_Parker",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_M",
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_8F_EventScript_WorkerM",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 24,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_8F_EventScript_ItemIron",
+ "flag": "FLAG_HIDE_SILPH_CO_8F_IRON"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 29,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_8F_EventScript_Scientist",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 16,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_9F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 11,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_8F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 10,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_2F",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 28,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_7F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 2,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_8F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 2,
+ "y": 17,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_2F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 22,
+ "y": 3,
+ "elevation": 0,
+ "dest_map": "MAP_SILPH_CO_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_8F_EventScript_Door"
+ },
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_8F_EventScript_Door"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_8F_EventScript_Door"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_8F_EventScript_Door"
+ },
+ {
+ "type": "hidden_item",
+ "x": 29,
+ "y": 10,
+ "elevation": 0,
+ "item": "ITEM_NUGGET",
+ "flag": "FLAG_HIDDEN_ITEM_SILPH_CO_8F_NUGGET",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 27,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_8F_EventScript_FloorSign"
+ }
+ ]
+}
diff --git a/data/maps/SilphCo_8F_Frlg/scripts.inc b/data/maps/SilphCo_8F_Frlg/scripts.inc
new file mode 100644
index 000000000000..2a4918cd708e
--- /dev/null
+++ b/data/maps/SilphCo_8F_Frlg/scripts.inc
@@ -0,0 +1,89 @@
+SilphCo_8F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, SilphCo_8F_OnLoad
+ .byte 0
+
+SilphCo_8F_OnLoad::
+ call_if_unset FLAG_SILPH_8F_DOOR, EventScript_Close8FDoor
+ end
+
+SilphCo_8F_EventScript_WorkerM::
+ lock
+ faceplayer
+ goto_if_ge VAR_MAP_SCENE_SILPH_CO_11F, 1, SilphCo_8F_EventScript_WorkerMRocketsGone
+ msgbox SilphCo_8F_Text_WonderIfSilphIsFinished
+ release
+ end
+
+SilphCo_8F_EventScript_WorkerMRocketsGone::
+ msgbox SilphCo_8F_Text_ThanksForSavingUs
+ release
+ end
+
+SilphCo_8F_EventScript_FloorSign::
+ msgbox SilphCo_8F_Text_FloorSign, MSGBOX_SIGN
+ end
+
+SilphCo_8F_EventScript_Parker::
+ trainerbattle_single TRAINER_SCIENTIST_PARKER, SilphCo_8F_Text_ParkerIntro, SilphCo_8F_Text_ParkerDefeat
+ msgbox SilphCo_8F_Text_ParkerPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_8F_EventScript_Grunt1::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_32, SilphCo_8F_Text_Grunt1Intro, SilphCo_8F_Text_Grunt1Defeat
+ msgbox SilphCo_8F_Text_Grunt1PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_8F_EventScript_Grunt2::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_36, SilphCo_8F_Text_Grunt2Intro, SilphCo_8F_Text_Grunt2Defeat
+ msgbox SilphCo_8F_Text_Grunt2PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_8F_Text_WonderIfSilphIsFinished::
+ .string "I wonder if SILPH is finished…$"
+
+SilphCo_8F_Text_ThanksForSavingUs::
+ .string "Thanks for saving us!$"
+
+SilphCo_8F_Text_Grunt1Intro::
+ .string "That's as far as you'll go!$"
+
+SilphCo_8F_Text_Grunt1Defeat::
+ .string "Not enough grit!$"
+
+SilphCo_8F_Text_Grunt1PostBattle::
+ .string "If you don't turn back…\n"
+ .string "I'll call for backup!$"
+
+SilphCo_8F_Text_ParkerIntro::
+ .string "You're causing us problems!$"
+
+SilphCo_8F_Text_ParkerDefeat::
+ .string "Huh?\n"
+ .string "I lost?$"
+
+SilphCo_8F_Text_ParkerPostBattle::
+ .string "So, what do you think of SILPH\n"
+ .string "BUILDING's maze?$"
+
+SilphCo_8F_Text_Grunt2Intro::
+ .string "I am one of the four ROCKET\n"
+ .string "BROTHERS!$"
+
+SilphCo_8F_Text_Grunt2Defeat::
+ .string "Whoo!\n"
+ .string "Oh, Brothers!$"
+
+SilphCo_8F_Text_Grunt2PostBattle::
+ .string "I'll leave you up to my brothers.$"
+
+SilphCo_8F_Text_FloorSign::
+ .string "SILPH CO. HEAD OFFICE\n"
+ .string "8F$"
+
+SilphCo_8F_Text_ToRocketBossMonsAreTools::
+ .string "TEAM ROCKET's BOSS is terribly\n"
+ .string "cruel!\p"
+ .string "To him, POKéMON are just tools to\n"
+ .string "be used.\p"
+ .string "What will happen if that tyrant\n"
+ .string "takes over our company…$"
diff --git a/data/maps/SilphCo_9F_Frlg/map.json b/data/maps/SilphCo_9F_Frlg/map.json
new file mode 100644
index 000000000000..d09e8b4751f0
--- /dev/null
+++ b/data/maps/SilphCo_9F_Frlg/map.json
@@ -0,0 +1,272 @@
+{
+ "id": "MAP_SILPH_CO_9F",
+ "name": "SilphCo_9F_Frlg",
+ "layout": "LAYOUT_SILPH_CO_9F",
+ "music": "MUS_RG_SILPH",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SILPH_CO",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 9,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 26,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SilphCo_9F_EventScript_Ed",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 15,
+ "y": 18,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SilphCo_9F_EventScript_Grunt2",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 2,
+ "y": 16,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SilphCo_9F_EventScript_HealWoman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 1,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "SilphCo_9F_EventScript_Grunt1",
+ "flag": "FLAG_HIDE_SILPH_ROCKETS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 16,
+ "y": 2,
+ "elevation": 0,
+ "dest_map": "MAP_SILPH_CO_8F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 22,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_5F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 9,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_3F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 18,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SILPH_CO_10F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 24,
+ "y": 3,
+ "elevation": 0,
+ "dest_map": "MAP_SILPH_CO_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 11,
+ "y": 14,
+ "elevation": 3,
+ "item": "ITEM_MAX_POTION",
+ "flag": "FLAG_HIDDEN_ITEM_SILPH_CO_9F_MAX_POTION",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_9F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_9F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 13,
+ "y": 16,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_9F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 13,
+ "y": 17,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_9F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 21,
+ "y": 6,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_9F_EventScript_Door3"
+ },
+ {
+ "type": "sign",
+ "x": 22,
+ "y": 6,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_9F_EventScript_Door3"
+ },
+ {
+ "type": "sign",
+ "x": 22,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_9F_EventScript_Door3"
+ },
+ {
+ "type": "sign",
+ "x": 21,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_9F_EventScript_Door3"
+ },
+ {
+ "type": "sign",
+ "x": 21,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_9F_EventScript_Door4"
+ },
+ {
+ "type": "sign",
+ "x": 21,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_9F_EventScript_Door4"
+ },
+ {
+ "type": "sign",
+ "x": 22,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_9F_EventScript_Door4"
+ },
+ {
+ "type": "sign",
+ "x": 22,
+ "y": 13,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_9F_EventScript_Door4"
+ },
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 11,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_9F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_9F_EventScript_Door1"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 16,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_9F_EventScript_Door2"
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 17,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_9F_EventScript_Door2"
+ },
+ {
+ "type": "hidden_item",
+ "x": 5,
+ "y": 8,
+ "elevation": 0,
+ "item": "ITEM_CALCIUM",
+ "flag": "FLAG_HIDDEN_ITEM_SILPH_CO_9F_CALCIUM",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 17,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_9F_EventScript_FloorSign"
+ }
+ ]
+}
diff --git a/data/maps/SilphCo_9F_Frlg/scripts.inc b/data/maps/SilphCo_9F_Frlg/scripts.inc
new file mode 100644
index 000000000000..bbce068309e6
--- /dev/null
+++ b/data/maps/SilphCo_9F_Frlg/scripts.inc
@@ -0,0 +1,93 @@
+SilphCo_9F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, SilphCo_9F_OnLoad
+ .byte 0
+
+SilphCo_9F_OnLoad::
+ call_if_unset FLAG_SILPH_9F_DOOR_1, EventScript_Close9FDoor1
+ call_if_unset FLAG_SILPH_9F_DOOR_2, EventScript_Close9FDoor2
+ call_if_unset FLAG_SILPH_9F_DOOR_3, EventScript_Close9FDoor3
+ call_if_unset FLAG_SILPH_9F_DOOR_4, EventScript_Close9FDoor4
+ end
+
+SilphCo_9F_EventScript_HealWoman::
+ lock
+ faceplayer
+ goto_if_ge VAR_MAP_SCENE_SILPH_CO_11F, 1, SilphCo_9F_EventScript_HealWomanRocketsGone
+ msgbox SilphCo_9F_Text_YouShouldTakeQuickNap
+ closemessage
+ call Common_EventScript_OutOfCenterPartyHeal
+ msgbox SilphCo_9F_Text_DontGiveUp
+ release
+ end
+
+SilphCo_9F_EventScript_HealWomanRocketsGone::
+ msgbox SilphCo_9F_Text_ThankYouSoMuch
+ release
+ end
+
+SilphCo_9F_EventScript_FloorSign::
+ msgbox SilphCo_9F_Text_FloorSign, MSGBOX_SIGN
+ end
+
+SilphCo_9F_EventScript_Ed::
+ trainerbattle_single TRAINER_SCIENTIST_ED, SilphCo_9F_Text_EdIntro, SilphCo_9F_Text_EdDefeat
+ msgbox SilphCo_9F_Text_EdPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_9F_EventScript_Grunt1::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_37, SilphCo_9F_Text_Grunt1Intro, SilphCo_9F_Text_Grunt1Defeat
+ msgbox SilphCo_9F_Text_Grunt1PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_9F_EventScript_Grunt2::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_38, SilphCo_9F_Text_Grunt2Intro, SilphCo_9F_Text_Grunt2Defeat
+ msgbox SilphCo_9F_Text_Grunt2PostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SilphCo_9F_Text_YouShouldTakeQuickNap::
+ .string "You look tired.\n"
+ .string "You should take a quick nap.$"
+
+SilphCo_9F_Text_DontGiveUp::
+ .string "Don't give up!$"
+
+SilphCo_9F_Text_ThankYouSoMuch::
+ .string "Thank you so much.$"
+
+SilphCo_9F_Text_Grunt1Intro::
+ .string "Your POKéMON seem to adore you,\n"
+ .string "kid!$"
+
+SilphCo_9F_Text_Grunt1Defeat::
+ .string "Ghaaah!$"
+
+SilphCo_9F_Text_Grunt1PostBattle::
+ .string "If I had started as a TRAINER at\n"
+ .string "your age…$"
+
+SilphCo_9F_Text_EdIntro::
+ .string "Your POKéMON have weak points!\n"
+ .string "I can nail them!$"
+
+SilphCo_9F_Text_EdDefeat::
+ .string "You hammered me!$"
+
+SilphCo_9F_Text_EdPostBattle::
+ .string "Exploiting weak spots does work.\n"
+ .string "Think about type advantages.$"
+
+SilphCo_9F_Text_Grunt2Intro::
+ .string "I am one of the four ROCKET\n"
+ .string "BROTHERS!$"
+
+SilphCo_9F_Text_Grunt2Defeat::
+ .string "Warg!\n"
+ .string "Brothers, I lost!$"
+
+SilphCo_9F_Text_Grunt2PostBattle::
+ .string "My brothers will avenge me!$"
+
+SilphCo_9F_Text_FloorSign::
+ .string "SILPH CO. HEAD OFFICE\n"
+ .string "9F$"
+
diff --git a/data/maps/SilphCo_Elevator_Frlg/map.json b/data/maps/SilphCo_Elevator_Frlg/map.json
new file mode 100644
index 000000000000..b23a3f6250b0
--- /dev/null
+++ b/data/maps/SilphCo_Elevator_Frlg/map.json
@@ -0,0 +1,39 @@
+{
+ "id": "MAP_SILPH_CO_ELEVATOR",
+ "name": "SilphCo_Elevator_Frlg",
+ "layout": "LAYOUT_SILPH_CO_ELEVATOR",
+ "music": "MUS_RG_SILPH",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SILPH_CO",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 0,
+ "y": 2,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SilphCo_Elevator_EventScript_FloorSelect"
+ }
+ ]
+}
diff --git a/data/maps/SilphCo_Elevator_Frlg/scripts.inc b/data/maps/SilphCo_Elevator_Frlg/scripts.inc
new file mode 100644
index 000000000000..45d95af35e03
--- /dev/null
+++ b/data/maps/SilphCo_Elevator_Frlg/scripts.inc
@@ -0,0 +1,143 @@
+SilphCo_Elevator_Frlg_MapScripts::
+ .byte 0
+
+SilphCo_Elevator_EventScript_FloorSelect::
+ lockall
+ setvar VAR_0x8004, 1
+ call_if_unset FLAG_TEMP_2, EventScript_GetElevatorFloor
+ copyvar VAR_0x8005, VAR_ELEVATOR_FLOOR
+ special DrawElevatorCurrentFloorWindow
+ message gText_WantWhichFloor
+ waitmessage
+ setvar VAR_0x8004, SCROLL_MULTI_SILPHCO_FLOORS
+ specialvar VAR_RESULT, InitElevatorFloorSelectMenuPos
+ special ShowScrollableMultichoice
+ waitstate
+ switch VAR_RESULT
+ case 0, SilphCo_Elevator_EventScript_To11F
+ case 1, SilphCo_Elevator_EventScript_To10F
+ case 2, SilphCo_Elevator_EventScript_To9F
+ case 3, SilphCo_Elevator_EventScript_To8F
+ case 4, SilphCo_Elevator_EventScript_To7F
+ case 5, SilphCo_Elevator_EventScript_To6F
+ case 6, SilphCo_Elevator_EventScript_To5F
+ case 7, SilphCo_Elevator_EventScript_To4F
+ case 8, SilphCo_Elevator_EventScript_To3F
+ case 9, SilphCo_Elevator_EventScript_To2F
+ case 10, SilphCo_Elevator_EventScript_To1F
+ case 11, SilphCo_Elevator_EventScript_ExitFloorSelect
+ case 127, SilphCo_Elevator_EventScript_ExitFloorSelect
+ end
+
+SilphCo_Elevator_EventScript_To1F::
+ setvar VAR_0x8006, 4
+ setdynamicwarp MAP_SILPH_CO_1F, 255, 22, 3
+ goto_if_eq VAR_ELEVATOR_FLOOR, 4, SilphCo_Elevator_EventScript_ExitFloorSelect
+ call SilphCo_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 4
+ goto SilphCo_Elevator_EventScript_ExitFloorSelect
+ end
+
+SilphCo_Elevator_EventScript_To2F::
+ setvar VAR_0x8006, 5
+ setdynamicwarp MAP_SILPH_CO_2F, 255, 22, 3
+ goto_if_eq VAR_ELEVATOR_FLOOR, 5, SilphCo_Elevator_EventScript_ExitFloorSelect
+ call SilphCo_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 5
+ goto SilphCo_Elevator_EventScript_ExitFloorSelect
+ end
+
+SilphCo_Elevator_EventScript_To3F::
+ setvar VAR_0x8006, 6
+ setdynamicwarp MAP_SILPH_CO_3F, 255, 22, 3
+ goto_if_eq VAR_ELEVATOR_FLOOR, 6, SilphCo_Elevator_EventScript_ExitFloorSelect
+ call SilphCo_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 6
+ goto SilphCo_Elevator_EventScript_ExitFloorSelect
+ end
+
+SilphCo_Elevator_EventScript_To4F::
+ setvar VAR_0x8006, 7
+ setdynamicwarp MAP_SILPH_CO_4F, 255, 22, 3
+ goto_if_eq VAR_ELEVATOR_FLOOR, 7, SilphCo_Elevator_EventScript_ExitFloorSelect
+ call SilphCo_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 7
+ goto SilphCo_Elevator_EventScript_ExitFloorSelect
+ end
+
+SilphCo_Elevator_EventScript_To5F::
+ setvar VAR_0x8006, 8
+ setdynamicwarp MAP_SILPH_CO_5F, 255, 22, 3
+ goto_if_eq VAR_ELEVATOR_FLOOR, 8, SilphCo_Elevator_EventScript_ExitFloorSelect
+ call SilphCo_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 8
+ goto SilphCo_Elevator_EventScript_ExitFloorSelect
+ end
+
+SilphCo_Elevator_EventScript_To6F::
+ setvar VAR_0x8006, 9
+ setdynamicwarp MAP_SILPH_CO_6F, 255, 20, 3
+ goto_if_eq VAR_ELEVATOR_FLOOR, 9, SilphCo_Elevator_EventScript_ExitFloorSelect
+ call SilphCo_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 9
+ goto SilphCo_Elevator_EventScript_ExitFloorSelect
+ end
+
+SilphCo_Elevator_EventScript_To7F::
+ setvar VAR_0x8006, 10
+ setdynamicwarp MAP_SILPH_CO_7F, 255, 23, 3
+ goto_if_eq VAR_ELEVATOR_FLOOR, 10, SilphCo_Elevator_EventScript_ExitFloorSelect
+ call SilphCo_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 10
+ goto SilphCo_Elevator_EventScript_ExitFloorSelect
+ end
+
+SilphCo_Elevator_EventScript_To8F::
+ setvar VAR_0x8006, 11
+ setdynamicwarp MAP_SILPH_CO_8F, 255, 22, 3
+ goto_if_eq VAR_ELEVATOR_FLOOR, 11, SilphCo_Elevator_EventScript_ExitFloorSelect
+ call SilphCo_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 11
+ goto SilphCo_Elevator_EventScript_ExitFloorSelect
+ end
+
+SilphCo_Elevator_EventScript_To9F::
+ setvar VAR_0x8006, 12
+ setdynamicwarp MAP_SILPH_CO_9F, 255, 24, 3
+ goto_if_eq VAR_ELEVATOR_FLOOR, 12, SilphCo_Elevator_EventScript_ExitFloorSelect
+ call SilphCo_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 12
+ goto SilphCo_Elevator_EventScript_ExitFloorSelect
+ end
+
+SilphCo_Elevator_EventScript_To10F::
+ setvar VAR_0x8006, 13
+ setdynamicwarp MAP_SILPH_CO_10F, 255, 13, 3
+ goto_if_eq VAR_ELEVATOR_FLOOR, 13, SilphCo_Elevator_EventScript_ExitFloorSelect
+ call SilphCo_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 13
+ goto SilphCo_Elevator_EventScript_ExitFloorSelect
+ end
+
+SilphCo_Elevator_EventScript_To11F::
+ setvar VAR_0x8006, 14
+ setdynamicwarp MAP_SILPH_CO_11F, 255, 13, 3
+ goto_if_eq VAR_ELEVATOR_FLOOR, 14, SilphCo_Elevator_EventScript_ExitFloorSelect
+ call SilphCo_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 14
+ goto SilphCo_Elevator_EventScript_ExitFloorSelect
+ end
+
+SilphCo_Elevator_EventScript_ExitFloorSelect::
+ special CloseElevatorCurrentFloorWindow
+ releaseall
+ end
+
+SilphCo_Elevator_EventScript_MoveElevator::
+ special CloseElevatorCurrentFloorWindow
+ closemessage
+ waitse
+ special AnimateElevator
+ waitstate
+ setflag FLAG_TEMP_2
+ return
diff --git a/data/maps/SixIsland_AlteringCave_Frlg/map.json b/data/maps/SixIsland_AlteringCave_Frlg/map.json
new file mode 100644
index 000000000000..69ca11ec4e52
--- /dev/null
+++ b/data/maps/SixIsland_AlteringCave_Frlg/map.json
@@ -0,0 +1,36 @@
+{
+ "id": "MAP_SIX_ISLAND_ALTERING_CAVE",
+ "name": "SixIsland_AlteringCave_Frlg",
+ "layout": "LAYOUT_SIX_ISLAND_ALTERING_CAVE",
+ "music": "MUS_RG_SEVII_CAVE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_ALTERING_CAVE_FRLG",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 18,
+ "y": 22,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_OUTCAST_ISLAND",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/SixIsland_AlteringCave_Frlg/scripts.inc b/data/maps/SixIsland_AlteringCave_Frlg/scripts.inc
new file mode 100644
index 000000000000..9ec9dbb0af5b
--- /dev/null
+++ b/data/maps/SixIsland_AlteringCave_Frlg/scripts.inc
@@ -0,0 +1,7 @@
+SixIsland_AlteringCave_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SixIsland_AlteringCave_OnTransition
+ .byte 0
+
+SixIsland_AlteringCave_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_SIX_ISLAND_ALTERING_CAVE
+ end
diff --git a/data/maps/SixIsland_DottedHole_1F_Frlg/map.json b/data/maps/SixIsland_DottedHole_1F_Frlg/map.json
new file mode 100644
index 000000000000..92b3907b26d9
--- /dev/null
+++ b/data/maps/SixIsland_DottedHole_1F_Frlg/map.json
@@ -0,0 +1,57 @@
+{
+ "id": "MAP_SIX_ISLAND_DOTTED_HOLE_1F",
+ "name": "SixIsland_DottedHole_1F_Frlg",
+ "layout": "LAYOUT_SIX_ISLAND_DOTTED_HOLE_1F",
+ "music": "MUS_RG_SEVII_DUNGEON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_DOTTED_HOLE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_RUIN_VALLEY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 6,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_B1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 13,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_SAPPHIRE_ROOM",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 6,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_B1F",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/SixIsland_DottedHole_1F_Frlg/scripts.inc b/data/maps/SixIsland_DottedHole_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..dd5b8f047ade
--- /dev/null
+++ b/data/maps/SixIsland_DottedHole_1F_Frlg/scripts.inc
@@ -0,0 +1,31 @@
+SixIsland_DottedHole_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SixIsland_DottedHole_1F_OnTransition
+ .byte 0
+
+SixIsland_DottedHole_1F_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_SIX_ISLAND_DOTTED_HOLE_1F
+ end
+
+SixIsland_DottedHole_B1F_EventScript_BrailleUp::
+ lockall
+ braillemsgbox Braille_Text_Up
+ releaseall
+ end
+
+SixIsland_DottedHole_B4F_EventScript_BrailleDown::
+ lockall
+ braillemsgbox Braille_Text_Down
+ releaseall
+ end
+
+SixIsland_DottedHole_B3F_EventScript_BrailleRight::
+ lockall
+ braillemsgbox Braille_Text_Right
+ releaseall
+ end
+
+SixIsland_DottedHole_B2F_EventScript_BrailleLeft::
+ lockall
+ braillemsgbox Braille_Text_Left
+ releaseall
+ end
diff --git a/data/maps/SixIsland_DottedHole_B1F_Frlg/map.json b/data/maps/SixIsland_DottedHole_B1F_Frlg/map.json
new file mode 100644
index 000000000000..c0823793c2f1
--- /dev/null
+++ b/data/maps/SixIsland_DottedHole_B1F_Frlg/map.json
@@ -0,0 +1,71 @@
+{
+ "id": "MAP_SIX_ISLAND_DOTTED_HOLE_B1F",
+ "name": "SixIsland_DottedHole_B1F_Frlg",
+ "layout": "LAYOUT_SIX_ISLAND_DOTTED_HOLE_B1F",
+ "music": "MUS_RG_SEVII_DUNGEON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_DOTTED_HOLE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 6,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_B2F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 11,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 6,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 1,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_1F",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "SixIsland_DottedHole_B1F_EventScript_BrailleUp"
+ }
+ ]
+}
diff --git a/data/maps/SixIsland_DottedHole_B1F_Frlg/scripts.inc b/data/maps/SixIsland_DottedHole_B1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..8d7c083f771c
--- /dev/null
+++ b/data/maps/SixIsland_DottedHole_B1F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+SixIsland_DottedHole_B1F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/SixIsland_DottedHole_B2F_Frlg/map.json b/data/maps/SixIsland_DottedHole_B2F_Frlg/map.json
new file mode 100644
index 000000000000..c2b2b2e8fa07
--- /dev/null
+++ b/data/maps/SixIsland_DottedHole_B2F_Frlg/map.json
@@ -0,0 +1,67 @@
+{
+ "id": "MAP_SIX_ISLAND_DOTTED_HOLE_B2F",
+ "name": "SixIsland_DottedHole_B2F_Frlg",
+ "layout": "LAYOUT_SIX_ISLAND_DOTTED_HOLE_B2F",
+ "music": "MUS_RG_SEVII_DUNGEON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_DOTTED_HOLE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_B1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 6,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 11,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 6,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 1,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_B3F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "SixIsland_DottedHole_B2F_EventScript_BrailleLeft"
+ }
+ ]
+}
diff --git a/data/maps/SixIsland_DottedHole_B2F_Frlg/scripts.inc b/data/maps/SixIsland_DottedHole_B2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..2415eabdf133
--- /dev/null
+++ b/data/maps/SixIsland_DottedHole_B2F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+SixIsland_DottedHole_B2F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/SixIsland_DottedHole_B3F_Frlg/map.json b/data/maps/SixIsland_DottedHole_B3F_Frlg/map.json
new file mode 100644
index 000000000000..d93bbe440e26
--- /dev/null
+++ b/data/maps/SixIsland_DottedHole_B3F_Frlg/map.json
@@ -0,0 +1,67 @@
+{
+ "id": "MAP_SIX_ISLAND_DOTTED_HOLE_B3F",
+ "name": "SixIsland_DottedHole_B3F_Frlg",
+ "layout": "LAYOUT_SIX_ISLAND_DOTTED_HOLE_B3F",
+ "music": "MUS_RG_SEVII_DUNGEON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_DOTTED_HOLE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_B2F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 6,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 11,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_B4F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 6,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 1,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_1F",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "SixIsland_DottedHole_B3F_EventScript_BrailleRight"
+ }
+ ]
+}
diff --git a/data/maps/SixIsland_DottedHole_B3F_Frlg/scripts.inc b/data/maps/SixIsland_DottedHole_B3F_Frlg/scripts.inc
new file mode 100644
index 000000000000..6d94a94b7826
--- /dev/null
+++ b/data/maps/SixIsland_DottedHole_B3F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+SixIsland_DottedHole_B3F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/SixIsland_DottedHole_B4F_Frlg/map.json b/data/maps/SixIsland_DottedHole_B4F_Frlg/map.json
new file mode 100644
index 000000000000..ec5e3d1b0404
--- /dev/null
+++ b/data/maps/SixIsland_DottedHole_B4F_Frlg/map.json
@@ -0,0 +1,71 @@
+{
+ "id": "MAP_SIX_ISLAND_DOTTED_HOLE_B4F",
+ "name": "SixIsland_DottedHole_B4F_Frlg",
+ "layout": "LAYOUT_SIX_ISLAND_DOTTED_HOLE_B4F",
+ "music": "MUS_RG_SEVII_DUNGEON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_DOTTED_HOLE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_B3F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 6,
+ "y": 1,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 11,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 6,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_SAPPHIRE_ROOM",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 1,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_1F",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 5,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "SixIsland_DottedHole_B4F_EventScript_BrailleDown"
+ }
+ ]
+}
diff --git a/data/maps/SixIsland_DottedHole_B4F_Frlg/scripts.inc b/data/maps/SixIsland_DottedHole_B4F_Frlg/scripts.inc
new file mode 100644
index 000000000000..6265bb3d8ab0
--- /dev/null
+++ b/data/maps/SixIsland_DottedHole_B4F_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+SixIsland_DottedHole_B4F_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/SixIsland_DottedHole_SapphireRoom_Frlg/map.json b/data/maps/SixIsland_DottedHole_SapphireRoom_Frlg/map.json
new file mode 100644
index 000000000000..24ad7cc20965
--- /dev/null
+++ b/data/maps/SixIsland_DottedHole_SapphireRoom_Frlg/map.json
@@ -0,0 +1,79 @@
+{
+ "id": "MAP_SIX_ISLAND_DOTTED_HOLE_SAPPHIRE_ROOM",
+ "name": "SixIsland_DottedHole_SapphireRoom_Frlg",
+ "layout": "LAYOUT_SIX_ISLAND_DOTTED_HOLE_SAPPHIRE_ROOM",
+ "music": "MUS_RG_SEVII_DUNGEON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_DOTTED_HOLE",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "local_id": "LOCALID_SAPPHIRE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAPPHIRE",
+ "x": 7,
+ "y": 7,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_DottedHole_SapphireRoom_EventScript_Sapphire",
+ "flag": "FLAG_HIDE_SAPPHIRE"
+ },
+ {
+ "local_id": "LOCALID_DOTTED_HOLE_THIEF",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 5,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_DOTTED_HOLE_SCIENTIST"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_1F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 5,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_B4F",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "SixIsland_DottedHole_SapphireRoom_EventScript_BrailleMessage"
+ }
+ ]
+}
diff --git a/data/maps/SixIsland_DottedHole_SapphireRoom_Frlg/scripts.inc b/data/maps/SixIsland_DottedHole_SapphireRoom_Frlg/scripts.inc
new file mode 100644
index 000000000000..2a8c463d65f0
--- /dev/null
+++ b/data/maps/SixIsland_DottedHole_SapphireRoom_Frlg/scripts.inc
@@ -0,0 +1,264 @@
+SixIsland_DottedHole_SapphireRoom_Frlg_MapScripts::
+ .byte 0
+
+SixIsland_DottedHole_SapphireRoom_EventScript_Sapphire::
+ lock
+ faceplayer
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_RG_OBTAIN_KEY_ITEM
+ message SixIsland_DottedHole_SapphireRoom_Text_FoundSapphire
+ waitmessage
+ waitfanfare
+ closemessage
+ setobjectxyperm LOCALID_DOTTED_HOLE_THIEF, 5, 0
+ addobject LOCALID_DOTTED_HOLE_THIEF
+ playse SE_FALL
+ applymovement LOCALID_DOTTED_HOLE_THIEF, SixIsland_DottedHole_SapphireRoom_Movement_ThiefFallIn
+ waitmovement 0
+ playse SE_M_STRENGTH
+ call_if_eq VAR_FACING, DIR_NORTH, SixIsland_DottedHole_SapphireRoom_EventScript_PlayerFaceThiefLeft
+ call_if_eq VAR_FACING, DIR_SOUTH, SixIsland_DottedHole_SapphireRoom_EventScript_PlayerFaceThiefLeft
+ call_if_eq VAR_FACING, DIR_EAST, SixIsland_DottedHole_SapphireRoom_EventScript_PlayerFaceThiefDown
+ call_if_eq VAR_FACING, DIR_WEST, SixIsland_DottedHole_SapphireRoom_EventScript_PlayerFaceThiefDown
+ setvar VAR_0x8004, 3
+ setvar VAR_0x8005, 0
+ setvar VAR_0x8006, 12
+ setvar VAR_0x8007, 3
+ special ShakeScreen
+ delay 60
+ call_if_eq VAR_FACING, DIR_NORTH, SixIsland_DottedHole_SapphireRoom_EventScript_ThiefLookAtSapphireNorth
+ call_if_eq VAR_FACING, DIR_SOUTH, SixIsland_DottedHole_SapphireRoom_EventScript_ThiefLookAtSapphireSouth
+ call_if_eq VAR_FACING, DIR_EAST, SixIsland_DottedHole_SapphireRoom_EventScript_ThiefLookAtSapphireEast
+ call_if_eq VAR_FACING, DIR_WEST, SixIsland_DottedHole_SapphireRoom_EventScript_ThiefLookAtSapphireWest
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox SixIsland_DottedHole_SapphireRoom_Text_IWasRightInTailingYou
+ closemessage
+ call_if_eq VAR_FACING, DIR_NORTH, SixIsland_DottedHole_SapphireRoom_EventScript_ThiefGetSapphireNorth
+ call_if_eq VAR_FACING, DIR_SOUTH, SixIsland_DottedHole_SapphireRoom_EventScript_ThiefGetSapphireSouth
+ call_if_eq VAR_FACING, DIR_EAST, SixIsland_DottedHole_SapphireRoom_EventScript_ThiefGetSapphireEast
+ call_if_eq VAR_FACING, DIR_WEST, SixIsland_DottedHole_SapphireRoom_EventScript_ThiefGetSapphireWest
+ removeobject LOCALID_SAPPHIRE
+ call_if_eq VAR_FACING, DIR_NORTH, SixIsland_DottedHole_SapphireRoom_EventScript_PlayerFaceThiefLeft2
+ call_if_eq VAR_FACING, DIR_SOUTH, SixIsland_DottedHole_SapphireRoom_EventScript_PlayerFaceThiefLeft2
+ call_if_eq VAR_FACING, DIR_EAST, SixIsland_DottedHole_SapphireRoom_EventScript_PlayerFaceThiefDown2
+ call_if_eq VAR_FACING, DIR_WEST, SixIsland_DottedHole_SapphireRoom_EventScript_PlayerFaceThiefDown2
+ msgbox SixIsland_DottedHole_SapphireRoom_Text_SellToTeamRocketTellPassword
+ closemessage
+ call_if_eq VAR_FACING, DIR_NORTH, SixIsland_DottedHole_SapphireRoom_EventScript_ThiefExitNorth
+ call_if_eq VAR_FACING, DIR_SOUTH, SixIsland_DottedHole_SapphireRoom_EventScript_ThiefExitSouth
+ call_if_eq VAR_FACING, DIR_EAST, SixIsland_DottedHole_SapphireRoom_EventScript_ThiefExitEast
+ call_if_eq VAR_FACING, DIR_WEST, SixIsland_DottedHole_SapphireRoom_EventScript_ThiefExitWest
+ playse SE_EXIT
+ delay 35
+ removeobject LOCALID_DOTTED_HOLE_THIEF
+ setflag FLAG_LEARNED_YES_NAH_CHANSEY
+ release
+ end
+
+@ Lots of redundant scripts below
+SixIsland_DottedHole_SapphireRoom_EventScript_PlayerFaceThiefLeft2::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ return
+
+SixIsland_DottedHole_SapphireRoom_EventScript_PlayerFaceThiefDown2::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ return
+
+SixIsland_DottedHole_SapphireRoom_EventScript_PlayerFaceThiefLeft::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ return
+
+SixIsland_DottedHole_SapphireRoom_EventScript_PlayerFaceThiefDown::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ return
+
+SixIsland_DottedHole_SapphireRoom_EventScript_ThiefLookAtSapphireNorth::
+ applymovement LOCALID_DOTTED_HOLE_THIEF, SixIsland_DottedHole_SapphireRoom_Movement_ThiefLookAtSapphireFromLeft
+ waitmovement 0
+ return
+
+SixIsland_DottedHole_SapphireRoom_EventScript_ThiefLookAtSapphireSouth::
+ applymovement LOCALID_DOTTED_HOLE_THIEF, SixIsland_DottedHole_SapphireRoom_Movement_ThiefLookAtSapphireFromLeft
+ waitmovement 0
+ return
+
+SixIsland_DottedHole_SapphireRoom_EventScript_ThiefLookAtSapphireEast::
+ applymovement LOCALID_DOTTED_HOLE_THIEF, SixIsland_DottedHole_SapphireRoom_Movement_ThiefLookAtSapphireFromBelow
+ waitmovement 0
+ return
+
+SixIsland_DottedHole_SapphireRoom_EventScript_ThiefLookAtSapphireWest::
+ applymovement LOCALID_DOTTED_HOLE_THIEF, SixIsland_DottedHole_SapphireRoom_Movement_ThiefLookAtSapphireFromBelow
+ waitmovement 0
+ return
+
+SixIsland_DottedHole_SapphireRoom_EventScript_ThiefGetSapphireNorth::
+ applymovement LOCALID_DOTTED_HOLE_THIEF, SixIsland_DottedHole_SapphireRoom_Movement_ThiefGetSapphireFromLeft
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ return
+
+SixIsland_DottedHole_SapphireRoom_EventScript_ThiefGetSapphireSouth::
+ applymovement LOCALID_DOTTED_HOLE_THIEF, SixIsland_DottedHole_SapphireRoom_Movement_ThiefGetSapphireFromLeft
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ return
+
+SixIsland_DottedHole_SapphireRoom_EventScript_ThiefGetSapphireEast::
+ applymovement LOCALID_DOTTED_HOLE_THIEF, SixIsland_DottedHole_SapphireRoom_Movement_ThiefGetSapphireFromBelow
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ return
+
+SixIsland_DottedHole_SapphireRoom_EventScript_ThiefGetSapphireWest::
+ applymovement LOCALID_DOTTED_HOLE_THIEF, SixIsland_DottedHole_SapphireRoom_Movement_ThiefGetSapphireFromBelow
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ return
+
+SixIsland_DottedHole_SapphireRoom_EventScript_ThiefExitNorth::
+ applymovement LOCALID_PLAYER, SixIsland_DottedHole_SapphireRoom_Movement_PlayerWatchThiefExit
+ applymovement LOCALID_DOTTED_HOLE_THIEF, SixIsland_DottedHole_SapphireRoom_Movement_ThiefExitNorth
+ waitmovement 0
+ return
+
+SixIsland_DottedHole_SapphireRoom_EventScript_ThiefExitSouth::
+ applymovement LOCALID_PLAYER, SixIsland_DottedHole_SapphireRoom_Movement_PlayerWatchThiefExit
+ applymovement LOCALID_DOTTED_HOLE_THIEF, SixIsland_DottedHole_SapphireRoom_Movement_ThiefExitSouth
+ waitmovement 0
+ return
+
+SixIsland_DottedHole_SapphireRoom_EventScript_ThiefExitEast::
+ applymovement LOCALID_PLAYER, SixIsland_DottedHole_SapphireRoom_Movement_PlayerWatchThiefExit
+ applymovement LOCALID_DOTTED_HOLE_THIEF, SixIsland_DottedHole_SapphireRoom_Movement_ThiefExitEastWest
+ waitmovement 0
+ return
+
+SixIsland_DottedHole_SapphireRoom_EventScript_ThiefExitWest::
+ applymovement LOCALID_PLAYER, SixIsland_DottedHole_SapphireRoom_Movement_PlayerWatchThiefExit
+ applymovement LOCALID_DOTTED_HOLE_THIEF, SixIsland_DottedHole_SapphireRoom_Movement_ThiefExitEastWest
+ waitmovement 0
+ return
+
+SixIsland_DottedHole_SapphireRoom_Movement_ThiefLookAtSapphireFromLeft::
+ walk_up
+ walk_up
+ walk_in_place_faster_right
+ step_end
+
+SixIsland_DottedHole_SapphireRoom_Movement_ThiefLookAtSapphireFromBelow::
+ walk_right
+ walk_right
+ walk_in_place_faster_up
+ step_end
+
+SixIsland_DottedHole_SapphireRoom_Movement_ThiefGetSapphireFromLeft::
+ walk_right
+ step_end
+
+SixIsland_DottedHole_SapphireRoom_Movement_ThiefGetSapphireFromBelow::
+ walk_up
+ step_end
+
+SixIsland_DottedHole_SapphireRoom_Movement_ThiefExitNorth::
+ walk_fast_up
+ walk_fast_right
+ walk_fast_right
+ walk_fast_right
+ walk_fast_down
+ walk_fast_right
+ walk_fast_right
+ step_end
+
+SixIsland_DottedHole_SapphireRoom_Movement_ThiefExitSouth::
+ walk_fast_down
+ walk_fast_right
+ walk_fast_right
+ walk_fast_right
+ walk_fast_up
+ walk_fast_right
+ walk_fast_right
+ step_end
+
+SixIsland_DottedHole_SapphireRoom_Movement_ThiefExitEastWest::
+ walk_fast_right
+ walk_fast_right
+ walk_fast_right
+ walk_fast_right
+ walk_fast_up
+ step_end
+
+SixIsland_DottedHole_SapphireRoom_Movement_ThiefFallIn::
+ face_down
+ disable_anim
+ slide_down
+ slide_down
+ slide_down
+ slide_down
+ slide_down
+ slide_down
+ slide_down
+ slide_down
+ slide_down
+ restore_anim
+ step_end
+
+SixIsland_DottedHole_SapphireRoom_Movement_PlayerWatchThiefExit::
+ delay_16
+ walk_in_place_faster_right
+ step_end
+
+SixIsland_DottedHole_SapphireRoom_EventScript_BrailleMessage::
+ lockall
+ setvar VAR_0x8005, 130
+ braillemessage_wait Braille_Text_LetTheTwo
+ braillemessage_wait Braille_Text_Glittering
+ braillemessage_wait Braille_Text_Stones
+ braillemessage_wait Braille_Text_OneInRed
+ braillemessage_wait Braille_Text_OneInBlue
+ braillemessage_wait Braille_Text_ConnectThe
+ braillemessage_wait Braille_Text_Past
+ braillemessage_wait Braille_Text_TwoFriends
+ braillemessage_wait Braille_Text_Sharing
+ braillemessage_wait Braille_Text_PowerOpen
+ braillemessage_wait Braille_Text_AWindowTo
+ braillemessage_wait Braille_Text_ANewWorld
+ braillemessage_wait Braille_Text_ThatGlows
+ braillemessage_wait Braille_Text_TheNext
+ braillemessage_wait Braille_Text_WorldWaits
+ braillemsgbox Braille_Text_ForYou
+ releaseall
+ end
+
+SixIsland_DottedHole_SapphireRoom_Text_FoundSapphire::
+ .string "{PLAYER} found a SAPPHIRE!$"
+
+SixIsland_DottedHole_SapphireRoom_Text_IWasRightInTailingYou::
+ .string "Fufu… Fufufufu…\n"
+ .string "I guessed right.\p"
+ .string "I was right in tailing you!$"
+
+SixIsland_DottedHole_SapphireRoom_Text_SellToTeamRocketTellPassword::
+ .string "I knew that there was a SAPPHIRE\n"
+ .string "here, so it belongs to me!\p"
+ .string "I'll sell it to TEAM ROCKET for\n"
+ .string "serious money.\p"
+ .string "…D-don't glare at me like that!\p"
+ .string "If you want it back, why don't you\n"
+ .string "go get it after I sell it?\p"
+ .string "I'll even tell you one of the\n"
+ .string "passwords to TEAM ROCKET's\l"
+ .string "WAREHOUSE.\p"
+ .string "The WAREHOUSE password I know is\n"
+ .string "“Yes, nah, CHANSEY.”\p"
+ .string "I'm done.\n"
+ .string "Don't think badly of me!$"
+
diff --git a/data/maps/SixIsland_Frlg/map.json b/data/maps/SixIsland_Frlg/map.json
new file mode 100644
index 000000000000..171639ca5fac
--- /dev/null
+++ b/data/maps/SixIsland_Frlg/map.json
@@ -0,0 +1,107 @@
+{
+ "id": "MAP_SIX_ISLAND",
+ "name": "SixIsland_Frlg",
+ "layout": "LAYOUT_SIX_ISLAND",
+ "music": "MUS_RG_SEVII_67",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SIX_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_SIX_ISLAND_WATER_PATH",
+ "offset": -40,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 10,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_EventScript_Boy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 15,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_EventScript_Hiker",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 11,
+ "y": 23,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_HARBOR",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 11,
+ "y": 11,
+ "elevation": 0,
+ "dest_map": "MAP_SIX_ISLAND_POKEMON_CENTER_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 16,
+ "y": 17,
+ "elevation": 0,
+ "dest_map": "MAP_SIX_ISLAND_HOUSE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 20,
+ "y": 11,
+ "elevation": 0,
+ "dest_map": "MAP_SIX_ISLAND_MART",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 17,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SixIsland_EventScript_IslandSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "item": "ITEM_LEPPA_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_SIX_ISLAND_LEPPA_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/SixIsland_Frlg/scripts.inc b/data/maps/SixIsland_Frlg/scripts.inc
new file mode 100644
index 000000000000..b140061e5191
--- /dev/null
+++ b/data/maps/SixIsland_Frlg/scripts.inc
@@ -0,0 +1,34 @@
+SixIsland_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SixIsland_OnTransition
+ .byte 0
+
+SixIsland_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_SIX_ISLAND
+ end
+
+SixIsland_EventScript_Hiker::
+ msgbox SixIsland_Text_ThatWayToWaterPathRuinValley, MSGBOX_NPC
+ end
+
+SixIsland_EventScript_Boy::
+ msgbox SixIsland_Text_SkyAtNightIsFantastic, MSGBOX_NPC
+ end
+
+SixIsland_EventScript_IslandSign::
+ msgbox SixIsland_Text_IslandSign, MSGBOX_SIGN
+ end
+
+SixIsland_Text_IslandSign::
+ .string "SIX ISLAND\n"
+ .string "Fortune Island of Aged Wisdom$"
+
+SixIsland_Text_ThatWayToWaterPathRuinValley::
+ .string "Keep going this way and you'll get\n"
+ .string "to the WATER PATH.\p"
+ .string "Stay on that and you'll get to\n"
+ .string "the RUIN VALLEY.$"
+
+SixIsland_Text_SkyAtNightIsFantastic::
+ .string "When you're this far away from the\n"
+ .string "city, the sky at night is fantastic.$"
+
diff --git a/data/maps/SixIsland_GreenPath_Frlg/map.json b/data/maps/SixIsland_GreenPath_Frlg/map.json
new file mode 100644
index 000000000000..f2c944ffb9dc
--- /dev/null
+++ b/data/maps/SixIsland_GreenPath_Frlg/map.json
@@ -0,0 +1,106 @@
+{
+ "id": "MAP_SIX_ISLAND_GREEN_PATH",
+ "name": "SixIsland_GreenPath_Frlg",
+ "layout": "LAYOUT_SIX_ISLAND_GREEN_PATH",
+ "music": "MUS_RG_SEVII_ROUTE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_GREEN_PATH",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_SIX_ISLAND_OUTCAST_ISLAND",
+ "offset": 0,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_SIX_ISLAND_WATER_PATH",
+ "offset": 0,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 11,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_UP_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SixIsland_GreenPath_EventScript_Jaclyn",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 63,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_PATTERN_BUSH",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 64,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_PATTERN_BUSH",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 45,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_PATTERN_BUSH",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 46,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_PATTERN_BUSH",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 40,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SixIsland_GreenPath_EventScript_LeftRouteSign"
+ },
+ {
+ "type": "sign",
+ "x": 69,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SixIsland_GreenPath_EventScript_RightRouteSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 12,
+ "y": 9,
+ "elevation": 3,
+ "item": "ITEM_ULTRA_BALL",
+ "flag": "FLAG_HIDDEN_ITEM_SIX_ISLAND_GREEN_PATH_ULTRA_BALL",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/SixIsland_GreenPath_Frlg/scripts.inc b/data/maps/SixIsland_GreenPath_Frlg/scripts.inc
new file mode 100644
index 000000000000..7f7d374e8f07
--- /dev/null
+++ b/data/maps/SixIsland_GreenPath_Frlg/scripts.inc
@@ -0,0 +1,32 @@
+SixIsland_GreenPath_Frlg_MapScripts::
+ .byte 0
+
+SixIsland_GreenPath_EventScript_RightRouteSign::
+ msgbox SixIsland_GreenPath_Text_LeftRouteSign, MSGBOX_SIGN
+ end
+
+SixIsland_GreenPath_EventScript_LeftRouteSign::
+ msgbox SixIsland_GreenPath_Text_RightRouteSign, MSGBOX_SIGN
+ end
+
+SixIsland_GreenPath_Text_JaclynIntro::
+ .string "…Huh?\p"
+ .string "I was envisioning my house, but\n"
+ .string "this is where I TELEPORT?$"
+
+SixIsland_GreenPath_Text_JaclynDefeat::
+ .string "Big boo-boo!$"
+
+SixIsland_GreenPath_Text_JaclynPostBattle::
+ .string "I am so scatterbrained!\p"
+ .string "I need to focus so I can TELEPORT\n"
+ .string "properly to my house!$"
+
+SixIsland_GreenPath_Text_LeftRouteSign::
+ .string "GREEN PATH\n"
+ .string "PATTERN BUSH AHEAD$"
+
+SixIsland_GreenPath_Text_RightRouteSign::
+ .string "GREEN PATH\n"
+ .string "Think Green, Keep Nature Clean!$"
+
diff --git a/data/maps/SixIsland_Harbor_Frlg/map.json b/data/maps/SixIsland_Harbor_Frlg/map.json
new file mode 100644
index 000000000000..781eb81d153f
--- /dev/null
+++ b/data/maps/SixIsland_Harbor_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_SIX_ISLAND_HARBOR",
+ "name": "SixIsland_Harbor_Frlg",
+ "layout": "LAYOUT_ISLAND_HARBOR_FRLG",
+ "music": "MUS_RG_SEVII_67",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SIX_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SEAGALLOP",
+ "x": 8,
+ "y": 9,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 8,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_Harbor_EventScript_Sailor",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SixIsland_Harbor_Frlg/scripts.inc b/data/maps/SixIsland_Harbor_Frlg/scripts.inc
new file mode 100644
index 000000000000..263c3583ec89
--- /dev/null
+++ b/data/maps/SixIsland_Harbor_Frlg/scripts.inc
@@ -0,0 +1,11 @@
+SixIsland_Harbor_Frlg_MapScripts::
+ .byte 0
+
+SixIsland_Harbor_EventScript_Sailor::
+ lock
+ faceplayer
+ message Text_WhereDoYouWantToSail
+ waitmessage
+ setvar VAR_0x8004, SEAGALLOP_SIX_ISLAND
+ goto EventScript_ChooseDestFromIsland
+ end
diff --git a/data/maps/SixIsland_House_Frlg/map.json b/data/maps/SixIsland_House_Frlg/map.json
new file mode 100644
index 000000000000..678ccb08dcf7
--- /dev/null
+++ b/data/maps/SixIsland_House_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_SIX_ISLAND_HOUSE",
+ "name": "SixIsland_House_Frlg",
+ "layout": "LAYOUT_HOUSE3_FRLG",
+ "music": "MUS_RG_SEVII_67",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SIX_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 7,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_House_EventScript_OldMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SixIsland_House_Frlg/scripts.inc b/data/maps/SixIsland_House_Frlg/scripts.inc
new file mode 100644
index 000000000000..8d259cf7be33
--- /dev/null
+++ b/data/maps/SixIsland_House_Frlg/scripts.inc
@@ -0,0 +1,14 @@
+SixIsland_House_Frlg_MapScripts::
+ .byte 0
+
+SixIsland_House_EventScript_OldMan::
+ msgbox SixIsland_House_Text_GoodPlaceForNatureAndHistory, MSGBOX_NPC
+ end
+
+SixIsland_House_Text_GoodPlaceForNatureAndHistory::
+ .string "There's nothing that young people'd\n"
+ .string "find exciting here on this island.\p"
+ .string "But, this is a good place in terms\n"
+ .string "of nature and history.\p"
+ .string "Relax and enjoy your stay.$"
+
diff --git a/data/maps/SixIsland_Mart_Frlg/map.json b/data/maps/SixIsland_Mart_Frlg/map.json
new file mode 100644
index 000000000000..3a84234d2abe
--- /dev/null
+++ b/data/maps/SixIsland_Mart_Frlg/map.json
@@ -0,0 +1,73 @@
+{
+ "id": "MAP_SIX_ISLAND_MART",
+ "name": "SixIsland_Mart_Frlg",
+ "layout": "LAYOUT_MART_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SIX_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 2,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_Mart_EventScript_Clerk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_WOMAN_FRLG",
+ "x": 8,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_Mart_EventScript_OldWoman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 7,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_Mart_EventScript_Picnicker",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SixIsland_Mart_Frlg/scripts.inc b/data/maps/SixIsland_Mart_Frlg/scripts.inc
new file mode 100644
index 000000000000..a05e71f72502
--- /dev/null
+++ b/data/maps/SixIsland_Mart_Frlg/scripts.inc
@@ -0,0 +1,43 @@
+SixIsland_Mart_Frlg_MapScripts::
+ .byte 0
+
+SixIsland_Mart_EventScript_Clerk::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart SixIsland_Mart_Items
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+SixIsland_Mart_Items::
+ .2byte ITEM_ULTRA_BALL
+ .2byte ITEM_FULL_RESTORE
+ .2byte ITEM_MAX_POTION
+ .2byte ITEM_REVIVE
+ .2byte ITEM_FULL_HEAL
+ .2byte ITEM_ESCAPE_ROPE
+ .2byte ITEM_MAX_REPEL
+ .2byte ITEM_DREAM_MAIL
+ .2byte ITEM_NONE
+ release
+ end
+
+SixIsland_Mart_EventScript_Picnicker::
+ msgbox SixIsland_Mart_Text_ShouldBuyMailAndWriteLetter, MSGBOX_NPC
+ end
+
+SixIsland_Mart_Text_AgathaOldestEverEliteFourMember::
+ .string "Play with POKéMON lots and live\n"
+ .string "a long life!\p"
+ .string "Take AGATHA, for example.\p"
+ .string "She set a record for being the\n"
+ .string "oldest-ever ELITE FOUR member.\p"
+ .string "She spurs me to do bigger things.$"
+
+SixIsland_Mart_Text_ShouldBuyMailAndWriteLetter::
+ .string "I should buy some MAIL and write\n"
+ .string "him a letter…$"
+
diff --git a/data/maps/SixIsland_OutcastIsland_Frlg/map.json b/data/maps/SixIsland_OutcastIsland_Frlg/map.json
new file mode 100644
index 000000000000..9948d36d2711
--- /dev/null
+++ b/data/maps/SixIsland_OutcastIsland_Frlg/map.json
@@ -0,0 +1,158 @@
+{
+ "id": "MAP_SIX_ISLAND_OUTCAST_ISLAND",
+ "name": "SixIsland_OutcastIsland_Frlg",
+ "layout": "LAYOUT_SIX_ISLAND_OUTCAST_ISLAND",
+ "music": "MUS_RG_SEVII_ROUTE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_OUTCAST_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_SIX_ISLAND_GREEN_PATH",
+ "offset": 0,
+ "direction": "down"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKET_M",
+ "x": 9,
+ "y": 24,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SixIsland_OutcastIsland_EventScript_Rocket",
+ "flag": "FLAG_HIDE_FIVE_ISLAND_ROCKETS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 12,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SixIsland_OutcastIsland_EventScript_Tylor",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_WATER",
+ "x": 13,
+ "y": 34,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SixIsland_OutcastIsland_EventScript_Mymo",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_F_WATER",
+ "x": 14,
+ "y": 61,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_UP_RIGHT",
+ "movement_range_x": 2,
+ "movement_range_y": 4,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SixIsland_OutcastIsland_EventScript_Nicole",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_F_WATER",
+ "x": 10,
+ "y": 44,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SixIsland_OutcastIsland_EventScript_Ava",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_TUBER_M_WATER",
+ "x": 11,
+ "y": 44,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SixIsland_OutcastIsland_EventScript_Geb",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 11,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_OutcastIsland_EventScript_ItemPPUp",
+ "flag": "FLAG_HIDE_SIX_ISLAND_OUTCAST_ISLAND_PP_UP"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 21,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_ALTERING_CAVE",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 16,
+ "y": 23,
+ "elevation": 3,
+ "item": "ITEM_STAR_PIECE",
+ "flag": "FLAG_HIDDEN_ITEM_SIX_ISLAND_OUTCAST_ISLAND_STAR_PIECE",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 6,
+ "y": 24,
+ "elevation": 3,
+ "item": "ITEM_NET_BALL",
+ "flag": "FLAG_HIDDEN_ITEM_SIX_ISLAND_OUTCAST_ISLAND_NET_BALL",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/SixIsland_OutcastIsland_Frlg/scripts.inc b/data/maps/SixIsland_OutcastIsland_Frlg/scripts.inc
new file mode 100644
index 000000000000..70df75548185
--- /dev/null
+++ b/data/maps/SixIsland_OutcastIsland_Frlg/scripts.inc
@@ -0,0 +1,93 @@
+SixIsland_OutcastIsland_Frlg_MapScripts::
+ .byte 0
+
+SixIsland_OutcastIsland_EventScript_Rocket::
+ trainerbattle_single TRAINER_TEAM_ROCKET_GRUNT_46, SixIsland_OutcastIsland_Text_RocketIntro, SixIsland_OutcastIsland_Text_RocketDefeat
+ msgbox SixIsland_OutcastIsland_Text_RocketPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_OutcastIsland_Text_RocketIntro::
+ .string "There're no rare POKéMON around\n"
+ .string "these parts! Not a one!\p"
+ .string "That burns me up, man.\n"
+ .string "I'll take it out on you!$"
+
+SixIsland_OutcastIsland_Text_RocketDefeat::
+ .string "…Huh?$"
+
+SixIsland_OutcastIsland_Text_RocketPostBattle::
+ .string "So listen, you haven't seen any\n"
+ .string "rare POKéMON, have you?$"
+
+SixIsland_OutcastIsland_Text_TylorIntro::
+ .string "I'm having no luck at all.\n"
+ .string "A battle'd be a change of pace!$"
+
+SixIsland_OutcastIsland_Text_TylorDefeat::
+ .string "Nope, no luck at all…$"
+
+SixIsland_OutcastIsland_Text_TylorPostBattle::
+ .string "I can't very well go home without\n"
+ .string "catching something, though.$"
+
+SixIsland_OutcastIsland_Text_MymoIntro::
+ .string "Gasp… Gasp…\p"
+ .string "I swam here from SIX ISLE PORT\n"
+ .string "in one go.$"
+
+SixIsland_OutcastIsland_Text_MymoDefeat::
+ .string "Gasp…\n"
+ .string "Gasp…$"
+
+SixIsland_OutcastIsland_Text_MymoPostBattle::
+ .string "I'm only at the halfway point…\n"
+ .string "I'm beat…$"
+
+SixIsland_OutcastIsland_Text_NicoleIntro::
+ .string "It's not so easy sending POKéMON\n"
+ .string "out while swimming, you know?$"
+
+SixIsland_OutcastIsland_Text_NicoleDefeat::
+ .string "I didn't lose to you at swimming.\n"
+ .string "This doesn't bother me.$"
+
+SixIsland_OutcastIsland_Text_NicolePostBattle::
+ .string "Are you headed for the island up\n"
+ .string "past here?\p"
+ .string "I didn't see anything interesting\n"
+ .string "there.$"
+
+SixIsland_OutcastIsland_Text_AvaIntro::
+ .string "AVA: Let's have a two-on-two\n"
+ .string "marine battle!$"
+
+SixIsland_OutcastIsland_Text_AvaDefeat::
+ .string "AVA: Oh, you're amazing!\n"
+ .string "Even better, you're on your own!$"
+
+SixIsland_OutcastIsland_Text_AvaPostBattle::
+ .string "AVA: You know, I do prefer the\n"
+ .string "sea over any pool.$"
+
+SixIsland_OutcastIsland_Text_AvaNotEnoughMons::
+ .string "AVA: You're challenging us to\n"
+ .string "a battle?\p"
+ .string "You'll need at least two POKéMON\n"
+ .string "if you want to do that.$"
+
+SixIsland_OutcastIsland_Text_GebIntro::
+ .string "GEB: Big Sister, help!\n"
+ .string "Please battle with me!$"
+
+SixIsland_OutcastIsland_Text_GebDefeat::
+ .string "GEB: Wow, Big Sister, this person's\n"
+ .string "really good!$"
+
+SixIsland_OutcastIsland_Text_GebPostBattle::
+ .string "GEB: I'm hanging onto my sister\n"
+ .string "because I can't touch the bottom.$"
+
+SixIsland_OutcastIsland_Text_GebNotEnoughMons::
+ .string "GEB: Please battle against me and\n"
+ .string "my sister!\p"
+ .string "…Oh, you don't have two POKéMON?$"
diff --git a/data/maps/SixIsland_PatternBush_Frlg/map.json b/data/maps/SixIsland_PatternBush_Frlg/map.json
new file mode 100644
index 000000000000..298c44f3fcd8
--- /dev/null
+++ b/data/maps/SixIsland_PatternBush_Frlg/map.json
@@ -0,0 +1,238 @@
+{
+ "id": "MAP_SIX_ISLAND_PATTERN_BUSH",
+ "name": "SixIsland_PatternBush_Frlg",
+ "layout": "LAYOUT_SIX_ISLAND_PATTERN_BUSH",
+ "music": "MUS_RG_VIRIDIAN_FOREST",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_PATTERN_BUSH",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 48,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_UP_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SixIsland_PatternBush_EventScript_Bethany",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 10,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SixIsland_PatternBush_EventScript_Allison",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 51,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SixIsland_PatternBush_EventScript_Garret",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 12,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SixIsland_PatternBush_EventScript_Jonah",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 37,
+ "y": 23,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_RIGHT_DOWN",
+ "movement_range_x": 2,
+ "movement_range_y": 5,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SixIsland_PatternBush_EventScript_Vance",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 32,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SixIsland_PatternBush_EventScript_Nash",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 52,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "SixIsland_PatternBush_EventScript_Cordell",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 8,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "SixIsland_PatternBush_EventScript_Dalia",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 39,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SixIsland_PatternBush_EventScript_Joana",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CAMPER_FRLG",
+ "x": 3,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SixIsland_PatternBush_EventScript_Riley",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 19,
+ "y": 24,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_RIGHT_AND_LEFT",
+ "movement_range_x": 5,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SixIsland_PatternBush_EventScript_Marcy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 30,
+ "y": 19,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SixIsland_PatternBush_EventScript_Layton",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 54,
+ "y": 26,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_GREEN_PATH",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 55,
+ "y": 26,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_GREEN_PATH",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 56,
+ "y": 26,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_GREEN_PATH",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 3,
+ "y": 26,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_GREEN_PATH",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 4,
+ "y": 26,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_GREEN_PATH",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 5,
+ "y": 26,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_GREEN_PATH",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/SixIsland_PatternBush_Frlg/scripts.inc b/data/maps/SixIsland_PatternBush_Frlg/scripts.inc
new file mode 100644
index 000000000000..3dc64f852cb9
--- /dev/null
+++ b/data/maps/SixIsland_PatternBush_Frlg/scripts.inc
@@ -0,0 +1,235 @@
+SixIsland_PatternBush_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SixIsland_PatternBush_OnTransition
+ .byte 0
+
+SixIsland_PatternBush_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_SIX_ISLAND_PATTERN_BUSH
+ getplayerxy VAR_TEMP_1, VAR_TEMP_2
+ call_if_ge VAR_TEMP_1, 50, SixIsland_PatternBush_EventScript_SetEscapeRightExit
+ call_if_le VAR_TEMP_1, 49, SixIsland_PatternBush_EventScript_SetEscapeLeftExit
+ end
+
+SixIsland_PatternBush_EventScript_SetEscapeRightExit::
+ setescapewarp MAP_SIX_ISLAND_GREEN_PATH, 255, 64, 10
+ return
+
+SixIsland_PatternBush_EventScript_SetEscapeLeftExit::
+ setescapewarp MAP_SIX_ISLAND_GREEN_PATH, 255, 45, 10
+ return
+
+SixIsland_PatternBush_EventScript_Bethany::
+ trainerbattle_single TRAINER_PKMN_BREEDER_BETHANY, SixIsland_PatternBush_Text_BethanyIntro, SixIsland_PatternBush_Text_BethanyDefeat
+ msgbox SixIsland_PatternBush_Text_BethanyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_PatternBush_EventScript_Allison::
+ trainerbattle_single TRAINER_PKMN_BREEDER_ALLISON, SixIsland_PatternBush_Text_AllisonIntro, SixIsland_PatternBush_Text_AllisonDefeat
+ msgbox SixIsland_PatternBush_Text_AllisonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_PatternBush_EventScript_Garret::
+ trainerbattle_single TRAINER_BUG_CATCHER_GARRET, SixIsland_PatternBush_Text_GarretIntro, SixIsland_PatternBush_Text_GarretDefeat
+ msgbox SixIsland_PatternBush_Text_GarretPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_PatternBush_EventScript_Jonah::
+ trainerbattle_single TRAINER_BUG_CATCHER_JONAH, SixIsland_PatternBush_Text_JonahIntro, SixIsland_PatternBush_Text_JonahDefeat
+ msgbox SixIsland_PatternBush_Text_JonahPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_PatternBush_EventScript_Vance::
+ trainerbattle_single TRAINER_BUG_CATCHER_VANCE, SixIsland_PatternBush_Text_VanceIntro, SixIsland_PatternBush_Text_VanceDefeat
+ msgbox SixIsland_PatternBush_Text_VancePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_PatternBush_EventScript_Nash::
+ trainerbattle_single TRAINER_YOUNGSTER_NASH, SixIsland_PatternBush_Text_NashIntro, SixIsland_PatternBush_Text_NashDefeat
+ msgbox SixIsland_PatternBush_Text_NashPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_PatternBush_EventScript_Cordell::
+ trainerbattle_single TRAINER_YOUNGSTER_CORDELL, SixIsland_PatternBush_Text_CordellIntro, SixIsland_PatternBush_Text_CordellDefeat
+ msgbox SixIsland_PatternBush_Text_CordellPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_PatternBush_EventScript_Dalia::
+ trainerbattle_single TRAINER_LASS_DALIA, SixIsland_PatternBush_Text_DaliaIntro, SixIsland_PatternBush_Text_DaliaDefeat
+ msgbox SixIsland_PatternBush_Text_DaliaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_PatternBush_EventScript_Joana::
+ trainerbattle_single TRAINER_LASS_JOANA, SixIsland_PatternBush_Text_JoanaIntro, SixIsland_PatternBush_Text_JoanaDefeat
+ msgbox SixIsland_PatternBush_Text_JoanaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_PatternBush_EventScript_Riley::
+ trainerbattle_single TRAINER_CAMPER_RILEY, SixIsland_PatternBush_Text_RileyIntro, SixIsland_PatternBush_Text_RileyDefeat
+ msgbox SixIsland_PatternBush_Text_RileyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_PatternBush_EventScript_Marcy::
+ trainerbattle_single TRAINER_PICNICKER_MARCY, SixIsland_PatternBush_Text_MarcyIntro, SixIsland_PatternBush_Text_MarcyDefeat
+ msgbox SixIsland_PatternBush_Text_MarcyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_PatternBush_EventScript_Layton::
+ trainerbattle_single TRAINER_RUIN_MANIAC_LAYTON, SixIsland_PatternBush_Text_LaytonIntro, SixIsland_PatternBush_Text_LaytonDefeat
+ msgbox SixIsland_PatternBush_Text_LaytonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_PatternBush_Text_BethanyIntro::
+ .string "I'm curious, how do you raise your\n"
+ .string "POKéMON?$"
+
+SixIsland_PatternBush_Text_BethanyDefeat::
+ .string "You raise your POKéMON with a\n"
+ .string "whole lot of love!$"
+
+SixIsland_PatternBush_Text_BethanyPostBattle::
+ .string "In the same way your mother raised\n"
+ .string "you full of love, you should raise\l"
+ .string "your POKéMON.$"
+
+SixIsland_PatternBush_Text_AllisonIntro::
+ .string "I'm working to preserve the natural\n"
+ .string "ecology of POKéMON here.$"
+
+SixIsland_PatternBush_Text_AllisonDefeat::
+ .string "Oh, for someone so young, you are\n"
+ .string "tremendous!$"
+
+SixIsland_PatternBush_Text_AllisonPostBattle::
+ .string "I'm not saying that you shouldn't\n"
+ .string "catch POKéMON.\p"
+ .string "I just want people to raise their\n"
+ .string "POKéMON responsibly.$"
+
+SixIsland_PatternBush_Text_GarretIntro::
+ .string "I caught a BUG POKéMON that lives\n"
+ .string "only around here!$"
+
+SixIsland_PatternBush_Text_GarretDefeat::
+ .string "Heheh…\n"
+ .string "Isn't my POKéMON awesome?$"
+
+SixIsland_PatternBush_Text_GarretPostBattle::
+ .string "There's a girl near the BUSH who\n"
+ .string "measures HERACROSS for TRAINERS.$"
+
+SixIsland_PatternBush_Text_JonahIntro::
+ .string "You know, it just doesn't feel right\n"
+ .string "if I don't use BUG POKéMON.$"
+
+SixIsland_PatternBush_Text_JonahDefeat::
+ .string "It's okay, losing is a fun part of\n"
+ .string "POKéMON's appeal, too.$"
+
+SixIsland_PatternBush_Text_JonahPostBattle::
+ .string "By the way, “appeal” is a weird\n"
+ .string "word, if you think about it.\p"
+ .string "Like, is it like an orange peel?\n"
+ .string "Or like a ringing bell?$"
+
+SixIsland_PatternBush_Text_VanceIntro::
+ .string "Yeah, yeah, yeah!\n"
+ .string "Look at all the BUG POKéMON!$"
+
+SixIsland_PatternBush_Text_VanceDefeat::
+ .string "I got beat while I was still busy\n"
+ .string "celebrating!$"
+
+SixIsland_PatternBush_Text_VancePostBattle::
+ .string "I'm going to bring my little brother\n"
+ .string "here next time.$"
+
+SixIsland_PatternBush_Text_NashIntro::
+ .string "Look, look! There are funny\n"
+ .string "patterns on the ground.$"
+
+SixIsland_PatternBush_Text_NashDefeat::
+ .string "Super awesome!$"
+
+SixIsland_PatternBush_Text_NashPostBattle::
+ .string "The funny patterns on the ground…\p"
+ .string "They look like the patterns on my\n"
+ .string "grandpa's clothes.$"
+
+SixIsland_PatternBush_Text_CordellIntro::
+ .string "I bet you think I'm just some guy,\n"
+ .string "don't you, eh?$"
+
+SixIsland_PatternBush_Text_CordellDefeat::
+ .string "I bet you think I'm weak,\n"
+ .string "don't you, eh?$"
+
+SixIsland_PatternBush_Text_CordellPostBattle::
+ .string "Ayup, you townies come around all\n"
+ .string "so dandy with a hat that flashy…\p"
+ .string "How about giving me that?$"
+
+SixIsland_PatternBush_Text_DaliaIntro::
+ .string "Take a deep breath.\n"
+ .string "Isn't the air delicious?$"
+
+SixIsland_PatternBush_Text_DaliaDefeat::
+ .string "If you'd like, I can teach you how\n"
+ .string "to breathe properly.$"
+
+SixIsland_PatternBush_Text_DaliaPostBattle::
+ .string "First, exhale.\n"
+ .string "Blow everything out.\p"
+ .string "When you can't exhale anymore,\n"
+ .string "inhale the clean air!\p"
+ .string "Isn't it refreshing?$"
+
+SixIsland_PatternBush_Text_JoanaIntro::
+ .string "I love BUG POKéMON.\n"
+ .string "That's why I'm here all the time.\p"
+ .string "Am I the only girl like that?$"
+
+SixIsland_PatternBush_Text_JoanaDefeat::
+ .string "I lost, but I'm still laughing.\n"
+ .string "Am I the only girl like that?$"
+
+SixIsland_PatternBush_Text_JoanaPostBattle::
+ .string "I'm going to keep on collecting\n"
+ .string "BUG POKéMON.\p"
+ .string "Am I the only girl like that?$"
+
+SixIsland_PatternBush_Text_RileyIntro::
+ .string "This is a good spot.\n"
+ .string "I'll pitch my tent here.$"
+
+SixIsland_PatternBush_Text_RileyDefeat::
+ .string "Wimped out…$"
+
+SixIsland_PatternBush_Text_RileyPostBattle::
+ .string "I'm going to observe the night sky\n"
+ .string "here.$"
+
+SixIsland_PatternBush_Text_MarcyIntro::
+ .string "Oh, yuck!\n"
+ .string "I think a bug stung me!$"
+
+SixIsland_PatternBush_Text_MarcyDefeat::
+ .string "It wasn't a bug.\n"
+ .string "I cut my shin on some grass.$"
+
+SixIsland_PatternBush_Text_MarcyPostBattle::
+ .string "A little cut like that…\n"
+ .string "A little spit's enough to cure it!$"
+
+SixIsland_PatternBush_Text_LaytonIntro::
+ .string "Have you noticed something odd\n"
+ .string "about these parts?$"
+
+SixIsland_PatternBush_Text_LaytonDefeat::
+ .string "Have you taken a good look around\n"
+ .string "your feet?$"
+
+SixIsland_PatternBush_Text_LaytonPostBattle::
+ .string "There are places here in PATTERN\n"
+ .string "BUSH where grass won't grow.\p"
+ .string "What could be the cause of such\n"
+ .string "a phenomenon?$"
+
diff --git a/data/maps/SixIsland_PokemonCenter_1F_Frlg/map.json b/data/maps/SixIsland_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..4d2d0a82312d
--- /dev/null
+++ b/data/maps/SixIsland_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,96 @@
+{
+ "id": "MAP_SIX_ISLAND_POKEMON_CENTER_1F",
+ "name": "SixIsland_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SIX_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_SIX_ISLAND_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_SIX_ISLAND_RIVAL",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLUE",
+ "x": 5,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_SIX_ISLAND_POKECENTER_RIVAL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 13,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_PokemonCenter_1F_EventScript_Hiker",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_2",
+ "x": 12,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_PokemonCenter_1F_EventScript_OldMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_SIX_ISLAND_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SixIsland_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/SixIsland_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..bfad29aa915d
--- /dev/null
+++ b/data/maps/SixIsland_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,115 @@
+SixIsland_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, SixIsland_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, SixIsland_PokemonCenter_1F_OnFrame
+ .byte 0
+
+SixIsland_PokemonCenter_1F_OnTransition::
+ setrespawn HEAL_LOCATION_SIX_ISLAND
+ call_if_eq VAR_MAP_SCENE_SIX_ISLAND_POKEMON_CENTER_1F, 0, SixIsland_PokemonCenter_1F_EventScript_ShowRival
+ end
+
+SixIsland_PokemonCenter_1F_EventScript_ShowRival::
+ clearflag FLAG_HIDE_SIX_ISLAND_POKECENTER_RIVAL
+ return
+
+SixIsland_PokemonCenter_1F_OnFrame::
+ map_script_2 VAR_MAP_SCENE_SIX_ISLAND_POKEMON_CENTER_1F, 0, SixIsland_PokemonCenter_1F_EventScript_RivalScene
+ .2byte 0
+
+SixIsland_PokemonCenter_1F_EventScript_RivalScene::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_SIX_ISLAND_RIVAL, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ playbgm MUS_RG_ENCOUNTER_RIVAL, 0
+ applymovement LOCALID_SIX_ISLAND_RIVAL, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_SIX_ISLAND_RIVAL, Common_Movement_Delay48
+ waitmovement 0
+ delay 25
+ applymovement LOCALID_SIX_ISLAND_RIVAL, SixIsland_PokemonCenter_1F_Movement_RivalApproach
+ waitmovement 0
+ msgbox SixIsland_PokemonCenter_1F_Text_RivalImpossibleToGetAllMonsAroundHere
+ closemessage
+ applymovement LOCALID_PLAYER, SixIsland_PokemonCenter_1F_Movement_PlayerWatchRivalExit
+ applymovement LOCALID_SIX_ISLAND_RIVAL, SixIsland_PokemonCenter_1F_Movement_RivalExit
+ waitmovement 0
+ fadedefaultbgm
+ playse SE_EXIT
+ delay 35
+ removeobject LOCALID_SIX_ISLAND_RIVAL
+ setvar VAR_MAP_SCENE_SIX_ISLAND_POKEMON_CENTER_1F, 1
+ setvar VAR_MAP_SCENE_FOUR_ISLAND, 1
+ releaseall
+ end
+
+SixIsland_PokemonCenter_1F_Movement_RivalApproach::
+ walk_right
+ walk_right
+ walk_down
+ walk_down
+ step_end
+
+SixIsland_PokemonCenter_1F_Movement_RivalExit::
+ delay_16
+ delay_4
+ walk_down
+ step_end
+
+SixIsland_PokemonCenter_1F_Movement_PlayerWatchRivalExit::
+ walk_left
+ walk_in_place_faster_right
+ step_end
+
+SixIsland_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+SixIsland_PokemonCenter_1F_EventScript_Hiker::
+ msgbox SixIsland_PokemonCenter_1F_Text_SomethingHiddenOnThisIsland, MSGBOX_NPC
+ end
+
+SixIsland_PokemonCenter_1F_EventScript_OldMan::
+ msgbox SixIsland_PokemonCenter_1F_Text_SomeMonsEvolveByTradingWithHeldItem, MSGBOX_NPC
+ end
+
+SixIsland_PokemonCenter_1F_Text_SomethingHiddenOnThisIsland::
+ .string "For ten years, I've searched for\n"
+ .string "RUINS.\p"
+ .string "No, make that twenty years.\p"
+ .string "I get this feeling that there's\n"
+ .string "something hidden on this island.$"
+
+SixIsland_PokemonCenter_1F_Text_SomeMonsEvolveByTradingWithHeldItem::
+ .string "You know of POKéMON that evolve\n"
+ .string "only upon trading, yes?\p"
+ .string "But did you know that there are\n"
+ .string "still others?\p"
+ .string "Some POKéMON evolve only when\n"
+ .string "traded while holding specific items.$"
+
+SixIsland_PokemonCenter_1F_Text_RivalImpossibleToGetAllMonsAroundHere::
+ .string "{RIVAL}: Hey, {PLAYER}!\n"
+ .string "How's your POKéDEX filling up?\p"
+ .string "It looks like it's impossible to get\n"
+ .string "all the POKéMON by hanging around\l"
+ .string "just these parts.\p"
+ .string "Maybe there are POKéMON we don't\n"
+ .string "know about somewhere far away…\p"
+ .string "… … … … … … … … …\p"
+ .string "Well, if I can't do it, there's no\n"
+ .string "way for you to get it done.\p"
+ .string "I'm not going to get all desperate\n"
+ .string "over this.\p"
+ .string "I'll keep collecting POKéMON at my\n"
+ .string "own pace while I train them.\p"
+ .string "That's what I'll do.\n"
+ .string "So there's no point staying here.\l"
+ .string "I may as well leave for home.\p"
+ .string "That's that, then!\n"
+ .string "Smell ya later!$"
+
diff --git a/data/maps/SixIsland_PokemonCenter_2F_Frlg/map.json b/data/maps/SixIsland_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..430d939c2682
--- /dev/null
+++ b/data/maps/SixIsland_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_SIX_ISLAND_POKEMON_CENTER_2F",
+ "name": "SixIsland_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SIX_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_SIX_ISLAND_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SixIsland_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/SixIsland_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..17de1daa112e
--- /dev/null
+++ b/data/maps/SixIsland_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+SixIsland_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+SixIsland_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+SixIsland_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+SixIsland_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/SixIsland_RuinValley_Frlg/map.json b/data/maps/SixIsland_RuinValley_Frlg/map.json
new file mode 100644
index 000000000000..73589ad883a4
--- /dev/null
+++ b/data/maps/SixIsland_RuinValley_Frlg/map.json
@@ -0,0 +1,287 @@
+{
+ "id": "MAP_SIX_ISLAND_RUIN_VALLEY",
+ "name": "SixIsland_RuinValley_Frlg",
+ "layout": "LAYOUT_SIX_ISLAND_RUIN_VALLEY",
+ "music": "MUS_RG_SEVII_ROUTE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_RUIN_VALLEY",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_SIX_ISLAND_WATER_PATH",
+ "offset": -80,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "local_id": "LOCALID_RUIN_VALLEY_SCIENTIST",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 24,
+ "y": 25,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_RuinValley_EventScript_Scientist",
+ "flag": "FLAG_HIDE_RUIN_VALLEY_SCIENTIST"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 32,
+ "y": 11,
+ "elevation": 5,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "SixIsland_RuinValley_EventScript_Stanly",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 33,
+ "y": 16,
+ "elevation": 5,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SixIsland_RuinValley_EventScript_Foster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 31,
+ "y": 24,
+ "elevation": 5,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SixIsland_RuinValley_EventScript_Larry",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 14,
+ "y": 10,
+ "elevation": 5,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "SixIsland_RuinValley_EventScript_Daryl",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SUPER_NERD",
+ "x": 21,
+ "y": 29,
+ "elevation": 5,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 3,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SixIsland_RuinValley_EventScript_Hector",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 17,
+ "y": 10,
+ "elevation": 5,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 17,
+ "y": 12,
+ "elevation": 5,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 18,
+ "y": 11,
+ "elevation": 5,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 6,
+ "y": 33,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 6,
+ "y": 34,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 41,
+ "y": 32,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 41,
+ "y": 33,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 42,
+ "y": 33,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 5,
+ "y": 33,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_RuinValley_EventScript_ItemHPUp",
+ "flag": "FLAG_HIDE_SIX_ISLAND_RUIN_VALLEY_HP_UP"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 19,
+ "y": 11,
+ "elevation": 5,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_RuinValley_EventScript_ItemFullRestore",
+ "flag": "FLAG_HIDE_SIX_ISLAND_RUIN_VALLEY_FULL_RESTORE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 43,
+ "y": 32,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_RuinValley_EventScript_ItemSunStone",
+ "flag": "FLAG_HIDE_SIX_ISLAND_RUIN_VALLEY_SUN_STONE"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 24,
+ "y": 24,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_DOTTED_HOLE_1F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 24,
+ "y": 24,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SixIsland_RuinValley_EventScript_DottedHoleDoor"
+ }
+ ]
+}
diff --git a/data/maps/SixIsland_RuinValley_Frlg/scripts.inc b/data/maps/SixIsland_RuinValley_Frlg/scripts.inc
new file mode 100644
index 000000000000..83787c5c2abc
--- /dev/null
+++ b/data/maps/SixIsland_RuinValley_Frlg/scripts.inc
@@ -0,0 +1,130 @@
+SixIsland_RuinValley_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, SixIsland_RuinValley_OnLoad
+ .byte 0
+
+SixIsland_RuinValley_OnLoad::
+ call_if_set FLAG_USED_CUT_ON_RUIN_VALLEY_BRAILLE, SixIsland_RuinValley_EventScript_OpenDottedHoleDoor
+ end
+
+SixIsland_RuinValley_EventScript_OpenDottedHoleDoor::
+ setmetatile 24, 24, METATILE_SeviiIslands67_DottedHoleDoor_Open, 0
+ return
+
+SixIsland_RuinValley_EventScript_Scientist::
+ lock
+ msgbox SixIsland_RuinValley_Text_CantFigureOutHowToGetInside
+ applymovement LOCALID_RUIN_VALLEY_SCIENTIST, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox SixIsland_RuinValley_Text_IFoundThisPlace
+ applymovement LOCALID_RUIN_VALLEY_SCIENTIST, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+SixIsland_RuinValley_EventScript_DottedHoleDoor::
+ lockall
+ goto_if_set FLAG_USED_CUT_ON_RUIN_VALLEY_BRAILLE, SixIsland_RuinValley_EventScript_DottedHoleDoorOpen
+ msgbox SixIsland_RuinValley_Text_CheckDoorMoreThoroughly, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, SixIsland_RuinValley_EventScript_IgnoreDottedHoleDoor
+ msgbox SixIsland_RuinValley_Text_SeveralDotsOnTheDoor
+ braillemsgbox Braille_Text_Cut
+ releaseall
+ end
+
+SixIsland_RuinValley_EventScript_DottedHoleDoorOpen::
+ msgbox SixIsland_RuinValley_Text_DoorIsOpen
+ releaseall
+ end
+
+SixIsland_RuinValley_EventScript_IgnoreDottedHoleDoor::
+ msgbox SixIsland_RuinValley_Text_LeftDoorAlone
+ releaseall
+ end
+
+SixIsland_RuinValley_Text_CantFigureOutHowToGetInside::
+ .string "I can't figure out how I'm supposed\n"
+ .string "to get inside.$"
+
+SixIsland_RuinValley_Text_IFoundThisPlace::
+ .string "Let me tell you, I found this\n"
+ .string "place.\p"
+ .string "Don't look so envious, will you?$"
+
+SixIsland_RuinValley_Text_CheckDoorMoreThoroughly::
+ .string "The door doesn't budge at all.\n"
+ .string "Check it more thoroughly?$"
+
+SixIsland_RuinValley_Text_LeftDoorAlone::
+ .string "{PLAYER} left the door alone.$"
+
+SixIsland_RuinValley_Text_SeveralDotsOnTheDoor::
+ .string "On closer inspection, there are\n"
+ .string "several dots on the door…$"
+
+SixIsland_RuinValley_Text_DoorIsOpen::
+ .string "The door is open.$"
+
+SixIsland_RuinValley_Text_StanlyIntro::
+ .string "There appear to be many secrets\n"
+ .string "still unsolved in this world.$"
+
+SixIsland_RuinValley_Text_StanlyDefeat::
+ .string "Hmm…$"
+
+SixIsland_RuinValley_Text_StanlyPostBattle::
+ .string "I suggest to you that you, too,\n"
+ .string "give a thought to the secrets and\l"
+ .string "mysteries of our world once a day.$"
+
+SixIsland_RuinValley_Text_FosterIntro::
+ .string "I'm curious, what compelled you to\n"
+ .string "come here?$"
+
+SixIsland_RuinValley_Text_FosterDefeat::
+ .string "It's been so long since I battled,\n"
+ .string "my instincts are off.$"
+
+SixIsland_RuinValley_Text_FosterPostBattle::
+ .string "There are several ruins on the\n"
+ .string "SEVII ISLANDS.\p"
+ .string "The majority of them date back\n"
+ .string "a long way.$"
+
+SixIsland_RuinValley_Text_LarryIntro::
+ .string "It's been said that there are\n"
+ .string "mysterious stones on this island.\p"
+ .string "I suspect it has something to do\n"
+ .string "with the ruins here.$"
+
+SixIsland_RuinValley_Text_LarryDefeat::
+ .string "Oh, interesting.$"
+
+SixIsland_RuinValley_Text_LarryPostBattle::
+ .string "Those ruins over there…\p"
+ .string "I haven't had any luck in finding\n"
+ .string "how I can get inside.$"
+
+SixIsland_RuinValley_Text_DarylIntro::
+ .string "A battle with you, so high up!$"
+
+SixIsland_RuinValley_Text_DarylDefeat::
+ .string "Oh, the heartbreak of losing so\n"
+ .string "easily to you!$"
+
+SixIsland_RuinValley_Text_DarylPostBattle::
+ .string "Experience the joy of climbing!$"
+
+SixIsland_RuinValley_Text_HectorIntro::
+ .string "I'm pretty familiar with the land\n"
+ .string "around these parts.$"
+
+SixIsland_RuinValley_Text_HectorDefeat::
+ .string "You don't need to be so pushy.\n"
+ .string "I'll be happy to tell you.$"
+
+SixIsland_RuinValley_Text_HectorPostBattle::
+ .string "The door to the ruins…\n"
+ .string "It has these strange patterns\l"
+ .string "engraved on the outside.\p"
+ .string "I don't know what they mean,\n"
+ .string "though.$"
diff --git a/data/maps/SixIsland_WaterPath_Frlg/map.json b/data/maps/SixIsland_WaterPath_Frlg/map.json
new file mode 100644
index 000000000000..4c399b3f308a
--- /dev/null
+++ b/data/maps/SixIsland_WaterPath_Frlg/map.json
@@ -0,0 +1,229 @@
+{
+ "id": "MAP_SIX_ISLAND_WATER_PATH",
+ "name": "SixIsland_WaterPath_Frlg",
+ "layout": "LAYOUT_SIX_ISLAND_WATER_PATH",
+ "music": "MUS_RG_SEVII_ROUTE",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_WATER_PATH",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_SIX_ISLAND_GREEN_PATH",
+ "offset": 0,
+ "direction": "left"
+ },
+ {
+ "map": "MAP_SIX_ISLAND",
+ "offset": 40,
+ "direction": "left"
+ },
+ {
+ "map": "MAP_SIX_ISLAND_RUIN_VALLEY",
+ "offset": 80,
+ "direction": "left"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 12,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_UP_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SixIsland_WaterPath_EventScript_Rose",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 11,
+ "y": 52,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "SixIsland_WaterPath_EventScript_Edward",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_M_WATER",
+ "x": 13,
+ "y": 35,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "SixIsland_WaterPath_EventScript_Samir",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_F_WATER",
+ "x": 15,
+ "y": 45,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SixIsland_WaterPath_EventScript_Denise",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 6,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SixIsland_WaterPath_EventScript_Miu",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 7,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "SixIsland_WaterPath_EventScript_Mia",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 11,
+ "y": 76,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "SixIsland_WaterPath_EventScript_Earl",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 17,
+ "y": 19,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_WaterPath_EventScript_ItemElixir",
+ "flag": "FLAG_HIDE_SIX_ISLAND_WATER_PATH_ELIXIR"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 17,
+ "y": 87,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_WaterPath_EventScript_ItemDragonScale",
+ "flag": "FLAG_HIDE_SIX_ISLAND_WATER_PATH_DRAGON_SCALE"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 13,
+ "elevation": 0,
+ "dest_map": "MAP_SIX_ISLAND_WATER_PATH_HOUSE1",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 11,
+ "y": 19,
+ "elevation": 0,
+ "dest_map": "MAP_SIX_ISLAND_WATER_PATH_HOUSE2",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 14,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SixIsland_WaterPath_EventScript_HornWantedSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 15,
+ "y": 76,
+ "elevation": 3,
+ "item": "ITEM_ASPEAR_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_SIX_ISLAND_WATER_PATH_ASPEAR_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 3,
+ "y": 8,
+ "elevation": 3,
+ "item": "ITEM_ORAN_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_SIX_ISLAND_WATER_PATH_ORAN_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 13,
+ "y": 63,
+ "elevation": 3,
+ "item": "ITEM_PINAP_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_SIX_ISLAND_WATER_PATH_PINAP_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 54,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SixIsland_WaterPath_EventScript_RouteSign"
+ }
+ ]
+}
diff --git a/data/maps/SixIsland_WaterPath_Frlg/scripts.inc b/data/maps/SixIsland_WaterPath_Frlg/scripts.inc
new file mode 100644
index 000000000000..a7c14129e711
--- /dev/null
+++ b/data/maps/SixIsland_WaterPath_Frlg/scripts.inc
@@ -0,0 +1,113 @@
+SixIsland_WaterPath_Frlg_MapScripts::
+ .byte 0
+
+SixIsland_WaterPath_EventScript_HornWantedSign::
+ msgbox SixIsland_WaterPath_Text_WantedUltimateHorn, MSGBOX_SIGN
+ end
+
+SixIsland_WaterPath_EventScript_RouteSign::
+ msgbox SixIsland_WaterPath_Text_RouteSign, MSGBOX_SIGN
+ end
+
+SixIsland_WaterPath_Text_RoseIntro::
+ .string "I let a pleasant breeze lead me\n"
+ .string "all the way here.$"
+
+SixIsland_WaterPath_Text_RoseDefeat::
+ .string "Giggle… You're so cute when you're\n"
+ .string "determined.$"
+
+SixIsland_WaterPath_Text_RosePostBattle::
+ .string "I want to go to the woods over\n"
+ .string "there, but…\p"
+ .string "There are lots of BUG POKéMON.\n"
+ .string "They scare me a little.$"
+
+SixIsland_WaterPath_Text_EdwardIntro::
+ .string "I'm practicing in secret so no one\n"
+ .string "can see me.$"
+
+SixIsland_WaterPath_Text_EdwardDefeat::
+ .string "Nobody saw me losing, right?$"
+
+SixIsland_WaterPath_Text_EdwardPostBattle::
+ .string "As a performer, I don't want people\n"
+ .string "to know about the effort I put in.$"
+
+SixIsland_WaterPath_Text_SamirIntro::
+ .string "What, you're suggesting that you're\n"
+ .string "sick of seeing SWIMMERS like me?\p"
+ .string "Aww, don't be hatin'!$"
+
+SixIsland_WaterPath_Text_SamirDefeat::
+ .string "Oh, no, no, no.$"
+
+SixIsland_WaterPath_Text_SamirPostBattle::
+ .string "I couldn't lift the stigma of being\n"
+ .string "a SWIMMER…$"
+
+SixIsland_WaterPath_Text_DeniseIntro::
+ .string "My boyfriend's always busy, so I\n"
+ .string "come swimming by myself.$"
+
+SixIsland_WaterPath_Text_DeniseDefeat::
+ .string "Awww, I knew this would happen!$"
+
+SixIsland_WaterPath_Text_DenisePostBattle::
+ .string "When I can't be with my boyfriend,\n"
+ .string "I spend time with the POKéMON he\l"
+ .string "gave me.$"
+
+SixIsland_WaterPath_Text_EarlIntro::
+ .string "Tell me, where are the mountains\n"
+ .string "around these parts?$"
+
+SixIsland_WaterPath_Text_EarlDefeat::
+ .string "I lost my way while I was busy\n"
+ .string "battling!$"
+
+SixIsland_WaterPath_Text_EarlPostBattle::
+ .string "Aren't there any mountains around\n"
+ .string "these parts?$"
+
+SixIsland_WaterPath_Text_MiuIntro::
+ .string "MIU: Hello, POKéMON!\n"
+ .string "It's time to play!$"
+
+SixIsland_WaterPath_Text_MiuDefeat::
+ .string "MIU: Oh, no!\n"
+ .string "Mommy!$"
+
+SixIsland_WaterPath_Text_MiuPostBattle::
+ .string "MIU: It makes me all sad inside\n"
+ .string "when we lose…$"
+
+SixIsland_WaterPath_Text_MiuNotEnoughMons::
+ .string "MIU: MIA and I are TWINS.\n"
+ .string "We want to battle together.$"
+
+SixIsland_WaterPath_Text_MiaIntro::
+ .string "MIA: Hello, POKéMON!\n"
+ .string "It's time to battle!$"
+
+SixIsland_WaterPath_Text_MiaDefeat::
+ .string "MIA: You're mean!\n"
+ .string "You're bad for winning!$"
+
+SixIsland_WaterPath_Text_MiaPostBattle::
+ .string "MIA: Ohh…\n"
+ .string "I'm sorry, my POKéMON…$"
+
+SixIsland_WaterPath_Text_MiaNotEnoughMons::
+ .string "MIA: Oh, you only have one\n"
+ .string "POKéMON?\p"
+ .string "Don't you feel lonesome?$"
+
+SixIsland_WaterPath_Text_WantedUltimateHorn::
+ .string "Wanted!\n"
+ .string "The Ultimate Horn!$"
+
+SixIsland_WaterPath_Text_RouteSign::
+ .string "WATER PATH\n"
+ .string "Leads to RUIN VALLEY$"
+
diff --git a/data/maps/SixIsland_WaterPath_House1_Frlg/map.json b/data/maps/SixIsland_WaterPath_House1_Frlg/map.json
new file mode 100644
index 000000000000..7ba4eba71d0d
--- /dev/null
+++ b/data/maps/SixIsland_WaterPath_House1_Frlg/map.json
@@ -0,0 +1,54 @@
+{
+ "id": "MAP_SIX_ISLAND_WATER_PATH_HOUSE1",
+ "name": "SixIsland_WaterPath_House1_Frlg",
+ "layout": "LAYOUT_HOUSE4_FRLG",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_WATER_PATH",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY_FRLG",
+ "x": 3,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_WaterPath_House1_EventScript_Beauty",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_WATER_PATH",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "SixIsland_WaterPath_House1_EventScript_SizeRecord"
+ }
+ ]
+}
diff --git a/data/maps/SixIsland_WaterPath_House1_Frlg/scripts.inc b/data/maps/SixIsland_WaterPath_House1_Frlg/scripts.inc
new file mode 100644
index 000000000000..88b127c8e049
--- /dev/null
+++ b/data/maps/SixIsland_WaterPath_House1_Frlg/scripts.inc
@@ -0,0 +1,127 @@
+SixIsland_WaterPath_House1_Frlg_MapScripts::
+ .byte 0
+
+SixIsland_WaterPath_House1_EventScript_Beauty::
+ lock
+ faceplayer
+ setvar VAR_0x8004, SPECIES_HERACROSS
+ specialvar VAR_RESULT, DoesPlayerPartyContainSpecies
+ goto_if_eq VAR_RESULT, FALSE, SixIsland_WaterPath_House1_EventScript_NoHeracrossInParty
+ special GetHeracrossSizeRecordInfo
+ msgbox SixIsland_WaterPath_House1_Text_MayIMeasureHeracross
+ special ChoosePartyMon
+ waitstate
+ copyvar VAR_RESULT, VAR_0x8004
+ goto_if_ge VAR_RESULT, PARTY_SIZE, SixIsland_WaterPath_House1_EventScript_DontShowMon
+ special CompareHeracrossSize
+ goto_if_eq VAR_RESULT, 1, SixIsland_WaterPath_House1_EventScript_ShownNonHeracross
+ goto_if_eq VAR_RESULT, 2, SixIsland_WaterPath_House1_EventScript_ShownSmallHeracross
+ goto_if_eq VAR_RESULT, 3, SixIsland_WaterPath_House1_EventScript_ShownBigHeracross
+ goto_if_eq VAR_RESULT, 4, SixIsland_WaterPath_House1_EventScript_ShownTiedHeracross
+ release
+ end
+
+SixIsland_WaterPath_House1_EventScript_NoHeracrossInParty::
+ msgbox SixIsland_WaterPath_House1_Text_LoveItNeedItHeracross
+ release
+ end
+
+SixIsland_WaterPath_House1_EventScript_DontShowMon::
+ release
+ end
+
+SixIsland_WaterPath_House1_EventScript_ShownNonHeracross::
+ msgbox SixIsland_WaterPath_House1_Text_ThisWontDo
+ release
+ end
+
+SixIsland_WaterPath_House1_EventScript_ShownSmallHeracross::
+ goto_if_unset FLAG_GOT_NEST_BALL_FROM_WATER_PATH_HOUSE_1, SixIsland_WaterPath_House1_EventScript_ShownBigHeracross
+ msgbox SixIsland_WaterPath_House1_Text_ItsXInchesYInchesWasBiggest
+ release
+ end
+
+SixIsland_WaterPath_House1_EventScript_ShownTiedHeracross::
+ goto_if_unset FLAG_GOT_NEST_BALL_FROM_WATER_PATH_HOUSE_1, SixIsland_WaterPath_House1_EventScript_ShownBigHeracross
+ msgbox SixIsland_WaterPath_House1_Text_ItsXInchesSameAsBefore
+ release
+ end
+
+SixIsland_WaterPath_House1_EventScript_ShownBigHeracross::
+ setflag FLAG_GOT_NEST_BALL_FROM_WATER_PATH_HOUSE_1
+ msgbox SixIsland_WaterPath_House1_Text_ItsXInchesDeserveReward
+ giveitem ITEM_NEST_BALL
+ goto_if_eq VAR_RESULT, FALSE, SixIsland_WaterPath_House1_EventScript_NoRoomForNestBall
+ msgbox SixIsland_WaterPath_House1_Text_WantToSeeBiggerOne
+ release
+ end
+
+SixIsland_WaterPath_House1_EventScript_NoRoomForNestBall::
+ msgbox SixIsland_WaterPath_House1_Text_YourBagIsFull
+ release
+ end
+
+SixIsland_WaterPath_House1_EventScript_SizeRecord::
+ lockall
+ goto_if_set FLAG_GOT_NEST_BALL_FROM_WATER_PATH_HOUSE_1, SixIsland_WaterPath_House1_EventScript_SizeRecordNonEmpty
+ msgbox SixIsland_WaterPath_House1_Text_BlankChartOfSomeSort
+ releaseall
+ end
+
+SixIsland_WaterPath_House1_EventScript_SizeRecordNonEmpty::
+ special GetHeracrossSizeRecordInfo
+ msgbox SixIsland_WaterPath_House1_Text_BiggestHeracrossIsXInches
+ releaseall
+ end
+
+SixIsland_WaterPath_House1_Text_LoveItNeedItHeracross::
+ .string "Hera, hera, HERACROSS!\n"
+ .string "Big and shiny, it's the bug boss!\l"
+ .string "Love it, need it, HERACROSS!$"
+
+SixIsland_WaterPath_House1_Text_MayIMeasureHeracross::
+ .string "Eeeeek!\n"
+ .string "That's a HERACROSS!\p"
+ .string "Please, please, may I measure how\n"
+ .string "big it is?$"
+
+SixIsland_WaterPath_House1_Text_ItsXInchesDeserveReward::
+ .string "Eeeek, it's {STR_VAR_2} inches!\n"
+ .string "I've never seen anything like this!\l"
+ .string "You deserve a reward!$"
+
+SixIsland_WaterPath_House1_Text_WantToSeeBiggerOne::
+ .string "I want to see a much, much bigger\n"
+ .string "HERACROSS than that one.\p"
+ .string "Oh, how I adore them, big\n"
+ .string "HERACROSS!$"
+
+SixIsland_WaterPath_House1_Text_ItsXInchesSameAsBefore::
+ .string "Huh? This {STR_VAR_2}-inch measurement…\n"
+ .string "Oh, boo! It's the same as before.$"
+
+SixIsland_WaterPath_House1_Text_ItsXInchesYInchesWasBiggest::
+ .string "Oh, it's just {STR_VAR_2} inches.\n"
+ .string "The HERACROSS before was bigger.\p"
+ .string "It was {STR_VAR_3} inches, the biggest\n"
+ .string "HERACROSS you've brought me.$"
+
+SixIsland_WaterPath_House1_Text_ThisWontDo::
+ .string "Oh, no! This won't do!\p"
+ .string "HERACROSS looks much more macho\n"
+ .string "and cool, and has a lovely horn!$"
+
+SixIsland_WaterPath_House1_Text_YourBagIsFull::
+ .string "Your BAG is full.\n"
+ .string "My reward won't fit.$"
+
+SixIsland_WaterPath_House1_Text_BiggestHeracrossIsXInches::
+ .string "The biggest HERACROSS that I have\n"
+ .string "ever seen measured so far is:\p"
+ .string "{STR_VAR_3} inches!$"
+
+SixIsland_WaterPath_House1_Text_BlankChartOfSomeSort::
+ .string "It's a blank chart of some sort.\p"
+ .string "It has spaces for writing in\n"
+ .string "records of some kind.$"
+
diff --git a/data/maps/SixIsland_WaterPath_House2_Frlg/map.json b/data/maps/SixIsland_WaterPath_House2_Frlg/map.json
new file mode 100644
index 000000000000..d567109c8733
--- /dev/null
+++ b/data/maps/SixIsland_WaterPath_House2_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_SIX_ISLAND_WATER_PATH_HOUSE2",
+ "name": "SixIsland_WaterPath_House2_Frlg",
+ "layout": "LAYOUT_HOUSE3_FRLG",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_WATER_PATH",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "SixIsland_WaterPath_House2_EventScript_Man",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_SIX_ISLAND_WATER_PATH",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/SixIsland_WaterPath_House2_Frlg/scripts.inc b/data/maps/SixIsland_WaterPath_House2_Frlg/scripts.inc
new file mode 100644
index 000000000000..e0a60fe234a1
--- /dev/null
+++ b/data/maps/SixIsland_WaterPath_House2_Frlg/scripts.inc
@@ -0,0 +1,13 @@
+SixIsland_WaterPath_House2_Frlg_MapScripts::
+ .byte 0
+
+SixIsland_WaterPath_House2_EventScript_Man::
+ msgbox SixIsland_WaterPath_House2_Text_MyNeighborMeasuredMe, MSGBOX_NPC
+ end
+
+SixIsland_WaterPath_House2_Text_MyNeighborMeasuredMe::
+ .string "My height is 67.0 inches on the\n"
+ .string "button.\p"
+ .string "I know it is this precisely because\n"
+ .string "my neighbor measured me.$"
+
diff --git a/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc b/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc
index 78d55273117c..4d69c234777f 100644
--- a/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc
+++ b/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc
@@ -57,9 +57,7 @@ SlateportCity_BattleTentBattleRoom_EventScript_EnterRoom::
waitmessage
closemessage
special HealPlayerParty
- setvar VAR_0x8004, SPECIAL_BATTLE_FACTORY
- setvar VAR_0x8005, 0
- special DoSpecialTrainerBattle
+ dofacilitytrainerbattle FACILITY_BATTLE_FACTORY
waitstate
switch VAR_RESULT
case 1, SlateportCity_BattleTentBattleRoom_EventScript_DefeatedOpponent
diff --git a/data/maps/SlateportCity_NameRatersHouse/scripts.inc b/data/maps/SlateportCity_NameRatersHouse/scripts.inc
index 34d788a6aac2..7c101850967e 100644
--- a/data/maps/SlateportCity_NameRatersHouse/scripts.inc
+++ b/data/maps/SlateportCity_NameRatersHouse/scripts.inc
@@ -11,7 +11,7 @@ SlateportCity_NameRatersHouse_EventScript_NameRater::
SlateportCity_NameRatersHouse_EventScript_ChooseMonToRate::
msgbox SlateportCity_NameRatersHouse_Text_CritiqueWhichMonNickname, MSGBOX_DEFAULT
- special ChoosePartyMon
+ chooseboxmon
waitstate
goto_if_ne VAR_0x8004, PARTY_NOTHING_CHOSEN, SlateportCity_NameRatersHouse_EventScript_RateMonNickname
goto_if_eq VAR_0x8004, PARTY_NOTHING_CHOSEN, SlateportCity_NameRatersHouse_EventScript_DeclineNameRate
diff --git a/data/maps/SootopolisCity_LotadAndSeedotHouse/scripts.inc b/data/maps/SootopolisCity_LotadAndSeedotHouse/scripts.inc
index 04639065062f..c6736eb9222e 100644
--- a/data/maps/SootopolisCity_LotadAndSeedotHouse/scripts.inc
+++ b/data/maps/SootopolisCity_LotadAndSeedotHouse/scripts.inc
@@ -6,10 +6,10 @@ SootopolisCity_LotadAndSeedotHouse_EventScript_SeedotBrother::
lock
faceplayer
msgbox SootopolisCity_LotadAndSeedotHouse_Text_PleaseShowMeBigSeedot, MSGBOX_DEFAULT
- special ChoosePartyMon
+ setvar VAR_0x8009, SPECIES_SEEDOT
+ chooseboxmon SELECT_PC_MON_TRADE
waitstate
- copyvar VAR_RESULT, VAR_0x8004
- goto_if_eq VAR_RESULT, PARTY_NOTHING_CHOSEN, SootopolisCity_LotadAndSeedotHouse_EventScript_CancelShowSeedot
+ goto_if_eq VAR_0x8004, PARTY_NOTHING_CHOSEN, SootopolisCity_LotadAndSeedotHouse_EventScript_CancelShowSeedot
special CompareSeedotSize
goto_if_eq VAR_RESULT, 1, SootopolisCity_LotadAndSeedotHouse_EventScript_NotSeedot
goto_if_eq VAR_RESULT, 2, SootopolisCity_LotadAndSeedotHouse_EventScript_SmallSeedot
@@ -50,10 +50,10 @@ SootopolisCity_LotadAndSeedotHouse_EventScript_LotadBrother::
lock
faceplayer
msgbox SootopolisCity_LotadAndSeedotHouse_Text_PleaseShowMeBigLotad, MSGBOX_DEFAULT
- special ChoosePartyMon
+ setvar VAR_0x8009, SPECIES_LOTAD
+ chooseboxmon SELECT_PC_MON_TRADE
waitstate
- copyvar VAR_RESULT, VAR_0x8004
- goto_if_eq VAR_RESULT, PARTY_NOTHING_CHOSEN, SootopolisCity_LotadAndSeedotHouse_EventScript_CancelShowLotad
+ goto_if_eq VAR_0x8004, PARTY_NOTHING_CHOSEN, SootopolisCity_LotadAndSeedotHouse_EventScript_CancelShowLotad
special CompareLotadSize
goto_if_eq VAR_RESULT, 1, SootopolisCity_LotadAndSeedotHouse_EventScript_NotLotad
goto_if_eq VAR_RESULT, 2, SootopolisCity_LotadAndSeedotHouse_EventScript_SmallLotad
diff --git a/data/maps/ThreeIsland_BerryForest_Frlg/map.json b/data/maps/ThreeIsland_BerryForest_Frlg/map.json
new file mode 100644
index 000000000000..c830a11457ac
--- /dev/null
+++ b/data/maps/ThreeIsland_BerryForest_Frlg/map.json
@@ -0,0 +1,391 @@
+{
+ "id": "MAP_THREE_ISLAND_BERRY_FOREST",
+ "name": "ThreeIsland_BerryForest_Frlg",
+ "layout": "LAYOUT_THREE_ISLAND_BERRY_FOREST",
+ "music": "MUS_RG_VIRIDIAN_FOREST",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_BERRY_FOREST",
+ "requires_flash": false,
+ "weather": "WEATHER_SHADE",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "local_id": "LOCALID_BERRY_FOREST_LOSTELLE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 4,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_BerryForest_EventScript_Lostelle",
+ "flag": "FLAG_HIDE_LOSTELLE_IN_BERRY_FOREST"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 12,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 19,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_13"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 23,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_14"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 38,
+ "y": 23,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_15"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 44,
+ "y": 23,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_16"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 44,
+ "y": 29,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_17"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 16,
+ "y": 43,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_18"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 17,
+ "y": 39,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_19"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 14,
+ "y": 39,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_1A"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 11,
+ "y": 39,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_1B"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 12,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_BerryForest_EventScript_ItemMaxEther",
+ "flag": "FLAG_HIDE_THREE_ISLAND_BERRY_FOREST_MAX_ETHER"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 27,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_BerryForest_EventScript_ItemFullHeal",
+ "flag": "FLAG_HIDE_THREE_ISLAND_BERRY_FOREST_FULL_HEAL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 12,
+ "y": 43,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_BerryForest_EventScript_ItemMaxElixir",
+ "flag": "FLAG_HIDE_THREE_ISLAND_BERRY_FOREST_MAX_ELIXIR"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 43,
+ "y": 41,
+ "elevation": 3,
+ "dest_map": "MAP_THREE_ISLAND_BOND_BRIDGE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 42,
+ "y": 41,
+ "elevation": 3,
+ "dest_map": "MAP_THREE_ISLAND_BOND_BRIDGE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 44,
+ "y": 41,
+ "elevation": 3,
+ "dest_map": "MAP_THREE_ISLAND_BOND_BRIDGE",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 27,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ThreeIsland_BerryForest_EventScript_BewareSign"
+ },
+ {
+ "type": "sign",
+ "x": 39,
+ "y": 35,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ThreeIsland_BerryForest_EventScript_WelcomeSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 31,
+ "y": 25,
+ "elevation": 3,
+ "item": "ITEM_RAZZ_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_BERRY_FOREST_RAZZ_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 15,
+ "y": 15,
+ "elevation": 3,
+ "item": "ITEM_BLUK_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_BERRY_FOREST_BLUK_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 25,
+ "y": 24,
+ "elevation": 3,
+ "item": "ITEM_NANAB_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_BERRY_FOREST_NANAB_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 11,
+ "y": 24,
+ "elevation": 3,
+ "item": "ITEM_WEPEAR_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_BERRY_FOREST_WEPEAR_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 37,
+ "y": 18,
+ "elevation": 3,
+ "item": "ITEM_ORAN_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_BERRY_FOREST_ORAN_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 14,
+ "y": 23,
+ "elevation": 3,
+ "item": "ITEM_CHERI_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_BERRY_FOREST_CHERI_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 47,
+ "y": 5,
+ "elevation": 3,
+ "item": "ITEM_CHESTO_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_BERRY_FOREST_CHESTO_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 7,
+ "y": 30,
+ "elevation": 3,
+ "item": "ITEM_PECHA_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_BERRY_FOREST_PECHA_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 16,
+ "y": 5,
+ "elevation": 3,
+ "item": "ITEM_RAWST_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_BERRY_FOREST_RAWST_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 25,
+ "y": 6,
+ "elevation": 3,
+ "item": "ITEM_ASPEAR_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_BERRY_FOREST_ASPEAR_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 46,
+ "y": 32,
+ "elevation": 3,
+ "item": "ITEM_PERSIM_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_BERRY_FOREST_PERSIM_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 43,
+ "y": 16,
+ "elevation": 3,
+ "item": "ITEM_PINAP_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_BERRY_FOREST_PINAP_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 8,
+ "y": 5,
+ "elevation": 3,
+ "item": "ITEM_LUM_BERRY",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_BERRY_FOREST_LUM_BERRY",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/ThreeIsland_BerryForest_Frlg/scripts.inc b/data/maps/ThreeIsland_BerryForest_Frlg/scripts.inc
new file mode 100644
index 000000000000..bcaa1e7b789b
--- /dev/null
+++ b/data/maps/ThreeIsland_BerryForest_Frlg/scripts.inc
@@ -0,0 +1,104 @@
+ThreeIsland_BerryForest_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, ThreeIsland_BerryForest_OnTransition
+ .byte 0
+
+ThreeIsland_BerryForest_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_THREE_ISLAND_BERRY_FOREST
+ setescapewarp MAP_THREE_ISLAND_BOND_BRIDGE, 12, 6
+ end
+
+ThreeIsland_BerryForest_EventScript_Lostelle::
+ lock
+ faceplayer
+ msgbox ThreeIsland_BerryForest_Text_HelpScaryPokemon
+ playse SE_PIN
+ applymovement LOCALID_BERRY_FOREST_LOSTELLE, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_BERRY_FOREST_LOSTELLE, ThreeIsland_BerryForest_Movement_LostelleLookAround
+ waitmovement 0
+ msgbox ThreeIsland_BerryForest_Text_HereItComesAgain
+ waitse
+ playmoncry SPECIES_HYPNO, CRY_MODE_ENCOUNTER
+ waitmoncry
+ setwildbattle SPECIES_HYPNO, 30
+ dowildbattle
+ applymovement LOCALID_BERRY_FOREST_LOSTELLE, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox ThreeIsland_BerryForest_Text_ThankYouHaveThis
+ giveitem ITEM_IAPAPA_BERRY
+ call_if_eq VAR_RESULT, FALSE, ThreeIsland_BerryForest_EventScript_NoRoomForBerry
+ special GetPlayerBigGuyGirlString
+ msgbox ThreeIsland_BerryForest_Text_LetsGoHome
+ closemessage
+ setflag FLAG_RESCUED_LOSTELLE
+ setflag FLAG_HIDE_LOSTELLE_IN_BERRY_FOREST
+ setvar VAR_MAP_SCENE_TWO_ISLAND_JOYFUL_GAME_CORNER, 2
+ clearflag FLAG_HIDE_TWO_ISLAND_GAME_CORNER_LOSTELLE
+ warp MAP_TWO_ISLAND_JOYFUL_GAME_CORNER, 6, 6
+ waitstate
+ release
+ end
+
+ThreeIsland_BerryForest_EventScript_NoRoomForBerry::
+ msgbox ThreeIsland_BerryForest_Text_BerryPouchIsFull
+ return
+
+ThreeIsland_BerryForest_Movement_LostelleLookAround::
+ walk_in_place_faster_left
+ delay_16
+ walk_in_place_faster_right
+ delay_8
+ walk_in_place_faster_left
+ step_end
+
+ThreeIsland_BerryForest_EventScript_WelcomeSign::
+ msgbox ThreeIsland_BerryForest_Text_WelcomeToBerryForest, MSGBOX_SIGN
+ end
+
+ThreeIsland_BerryForest_EventScript_BewareSign::
+ msgbox ThreeIsland_BerryForest_Text_BewareWildBerryLovingMons, MSGBOX_SIGN
+ end
+
+ThreeIsland_BerryForest_Text_HelpScaryPokemon::
+ .string "LOSTELLE: Whimper… Sniff…\n"
+ .string "Oh! Please, help!\p"
+ .string "A scary POKéMON appeared there\n"
+ .string "a little while ago.\p"
+ .string "It kept scaring.\n"
+ .string "It made LOSTELLE scared.\p"
+ .string "I'm too scared to move!\n"
+ .string "But I want to go home…$"
+
+ThreeIsland_BerryForest_Text_HereItComesAgain::
+ .string "Oh! Here it comes again!\n"
+ .string "No! Go away! It's scaring me!\p"
+ .string "Waaaaaaah!\n"
+ .string "I want my daddy!$"
+
+ThreeIsland_BerryForest_Text_ThankYouHaveThis::
+ .string "Ohh! That was so scary!\n"
+ .string "Thank you!\p"
+ .string "LOSTELLE came to pick some\n"
+ .string "BERRIES.\p"
+ .string "You can have this!$"
+
+ThreeIsland_BerryForest_Text_LetsGoHome::
+ .string "What's your name?\p"
+ .string "LOSTELLE's scared, so can I go\n"
+ .string "with you to my daddy's house?\p"
+ .string "Okay!\n"
+ .string "Let's go home!$"
+
+ThreeIsland_BerryForest_Text_BerryPouchIsFull::
+ .string "Your BERRY POUCH is full.\n"
+ .string "I guess you don't want this.$"
+
+ThreeIsland_BerryForest_Text_WelcomeToBerryForest::
+ .string "Welcome to the BERRY FOREST\p"
+ .string "Be friendly and share BERRIES with\n"
+ .string "others and POKéMON.$"
+
+ThreeIsland_BerryForest_Text_BewareWildBerryLovingMons::
+ .string "Beware of wild, BERRY-loving\n"
+ .string "POKéMON!$"
+
diff --git a/data/maps/ThreeIsland_BondBridge_Frlg/map.json b/data/maps/ThreeIsland_BondBridge_Frlg/map.json
new file mode 100644
index 000000000000..6af540cef899
--- /dev/null
+++ b/data/maps/ThreeIsland_BondBridge_Frlg/map.json
@@ -0,0 +1,219 @@
+{
+ "id": "MAP_THREE_ISLAND_BOND_BRIDGE",
+ "name": "ThreeIsland_BondBridge_Frlg",
+ "layout": "LAYOUT_THREE_ISLAND_BOND_BRIDGE",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_BOND_BRIDGE",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_THREE_ISLAND",
+ "offset": 0,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 27,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "ThreeIsland_BondBridge_EventScript_Nikki",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 68,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "ThreeIsland_BondBridge_EventScript_Violet",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_TUBER_F_FRLG",
+ "x": 33,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "ThreeIsland_BondBridge_EventScript_Amira",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_TUBER_F_FRLG",
+ "x": 50,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_LEFT_AND_RIGHT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "ThreeIsland_BondBridge_EventScript_Alexis",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SWIMMER_F_WATER",
+ "x": 36,
+ "y": 4,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "ThreeIsland_BondBridge_EventScript_Tisha",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 77,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "ThreeIsland_BondBridge_EventScript_Joy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 78,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "ThreeIsland_BondBridge_EventScript_Meg",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 72,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 86,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_13"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 12,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_THREE_ISLAND_BERRY_FOREST",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 13,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_THREE_ISLAND_BERRY_FOREST",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 14,
+ "y": 7,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ThreeIsland_BondBridge_EventScript_BerryForestSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 61,
+ "y": 5,
+ "elevation": 0,
+ "item": "ITEM_MAX_REPEL",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_BOND_BRIDGE_MAX_REPEL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 44,
+ "y": 12,
+ "elevation": 3,
+ "item": "ITEM_PEARL",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_BOND_BRIDGE_PEARL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 33,
+ "y": 7,
+ "elevation": 3,
+ "item": "ITEM_STARDUST",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_BOND_BRIDGE_STARDUST",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "sign",
+ "x": 91,
+ "y": 9,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ThreeIsland_BondBridge_EventScript_BondBridgeSign"
+ }
+ ]
+}
diff --git a/data/maps/ThreeIsland_BondBridge_Frlg/scripts.inc b/data/maps/ThreeIsland_BondBridge_Frlg/scripts.inc
new file mode 100644
index 000000000000..97e055bd3452
--- /dev/null
+++ b/data/maps/ThreeIsland_BondBridge_Frlg/scripts.inc
@@ -0,0 +1,112 @@
+ThreeIsland_BondBridge_Frlg_MapScripts::
+ .byte 0
+
+ThreeIsland_BondBridge_EventScript_BerryForestSign::
+ msgbox ThreeIsland_BondBridge_Text_BerryForestAhead, MSGBOX_SIGN
+ end
+
+ThreeIsland_BondBridge_EventScript_BondBridgeSign::
+ msgbox ThreeIsland_BondBridge_Text_BondBridgeSign, MSGBOX_SIGN
+ end
+
+ThreeIsland_BondBridge_Text_NikkiIntro::
+ .string "The salty tang of the sea…\n"
+ .string "It tickles my heart.$"
+
+ThreeIsland_BondBridge_Text_NikkiDefeat::
+ .string "…Sniff, sniff…\n"
+ .string "Something smells unpleasant…$"
+
+ThreeIsland_BondBridge_Text_NikkiPostBattle::
+ .string "Perhaps that reek is your sweaty\n"
+ .string "POKéMON's body odor…$"
+
+ThreeIsland_BondBridge_Text_VioletIntro::
+ .string "Where are you off to in such\n"
+ .string "a hurry?$"
+
+ThreeIsland_BondBridge_Text_VioletDefeat::
+ .string "You're raising some wonderful\n"
+ .string "POKéMON.$"
+
+ThreeIsland_BondBridge_Text_VioletPostBattle::
+ .string "If you keep going this way, you'll\n"
+ .string "eventually reach BERRY FOREST.$"
+
+ThreeIsland_BondBridge_Text_AmiraIntro::
+ .string "My mommy said that I can't swim\n"
+ .string "without my float ring.$"
+
+ThreeIsland_BondBridge_Text_AmiraDefeat::
+ .string "Waaah!\n"
+ .string "Waaah!$"
+
+ThreeIsland_BondBridge_Text_AmiraPostBattle::
+ .string "This year, I'm going to finally\n"
+ .string "learn how to swim!$"
+
+ThreeIsland_BondBridge_Text_AlexisIntro::
+ .string "Yay, yay!\n"
+ .string "POKéMON!$"
+
+ThreeIsland_BondBridge_Text_AlexisDefeat::
+ .string "What happens now?$"
+
+ThreeIsland_BondBridge_Text_AlexisPostBattle::
+ .string "Did I just win?\n"
+ .string "Or did I lose?$"
+
+ThreeIsland_BondBridge_Text_TishaIntro::
+ .string "Oh, no, don't come here!\n"
+ .string "Please, stay away from me!$"
+
+ThreeIsland_BondBridge_Text_TishaDefeat::
+ .string "Okay, you've won!\n"
+ .string "Now will you please go away?$"
+
+ThreeIsland_BondBridge_Text_TishaPostBattle::
+ .string "A POKéMON bit through my \n"
+ .string "swimsuit.\p"
+ .string "I can't get out of the water!$"
+
+ThreeIsland_BondBridge_Text_JoyIntro::
+ .string "JOY: We'll teach you what our\n"
+ .string "favorite POKéMON is!$"
+
+ThreeIsland_BondBridge_Text_JoyDefeat::
+ .string "JOY: Ohh…\n"
+ .string "MEG!$"
+
+ThreeIsland_BondBridge_Text_JoyPostBattle::
+ .string "JOY: Wasn't that fun?\n"
+ .string "I hope we can battle again!$"
+
+ThreeIsland_BondBridge_Text_JoyNotEnoughMons::
+ .string "JOY: I really want to battle with\n"
+ .string "MEG.\p"
+ .string "One POKéMON isn't enough.$"
+
+ThreeIsland_BondBridge_Text_MegIntro::
+ .string "MEG: We'll show you our favorite\n"
+ .string "POKéMON.$"
+
+ThreeIsland_BondBridge_Text_MegDefeat::
+ .string "MEG: Ohh…\n"
+ .string "JOY!$"
+
+ThreeIsland_BondBridge_Text_MegPostBattle::
+ .string "MEG: JOY, wasn't that fun?$"
+
+ThreeIsland_BondBridge_Text_MegNotEnoughMons::
+ .string "MEG: I want to battle together\n"
+ .string "with JOY.\p"
+ .string "One POKéMON isn't enough.$"
+
+ThreeIsland_BondBridge_Text_BerryForestAhead::
+ .string "BERRY FOREST AHEAD$"
+
+ThreeIsland_BondBridge_Text_BondBridgeSign::
+ .string "BOND BRIDGE\n"
+ .string "Please be quiet when crossing.\p"
+ .string "BERRY FOREST AHEAD$"
+
diff --git a/data/maps/ThreeIsland_DunsparceTunnel_Frlg/map.json b/data/maps/ThreeIsland_DunsparceTunnel_Frlg/map.json
new file mode 100644
index 000000000000..7d23298fd397
--- /dev/null
+++ b/data/maps/ThreeIsland_DunsparceTunnel_Frlg/map.json
@@ -0,0 +1,66 @@
+{
+ "id": "MAP_THREE_ISLAND_DUNSPARCE_TUNNEL",
+ "name": "ThreeIsland_DunsparceTunnel_Frlg",
+ "layout": "LAYOUT_THREE_ISLAND_DUNSPARCE_TUNNEL",
+ "music": "MUS_RG_VIRIDIAN_FOREST",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_THREE_ISLE_PATH",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "local_id": "LOCALID_PROSPECTOR",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FAT_MAN_FRLG",
+ "x": 23,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_DunsparceTunnel_EventScript_Prospector",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_THREE_ISLAND_PORT",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 25,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_THREE_ISLAND_PORT",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 21,
+ "y": 3,
+ "elevation": 0,
+ "item": "ITEM_NUGGET",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_DUNSPARCE_TUNNEL_NUGGET",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/ThreeIsland_DunsparceTunnel_Frlg/scripts.inc b/data/maps/ThreeIsland_DunsparceTunnel_Frlg/scripts.inc
new file mode 100644
index 000000000000..e13f181b52cb
--- /dev/null
+++ b/data/maps/ThreeIsland_DunsparceTunnel_Frlg/scripts.inc
@@ -0,0 +1,79 @@
+ThreeIsland_DunsparceTunnel_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, ThreeIsland_DunsparceTunnel_OnTransition
+ .byte 0
+
+ThreeIsland_DunsparceTunnel_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_THREE_ISLAND_DUNSPARCE_TUNNEL
+ specialvar VAR_RESULT, IsNationalPokedexEnabled
+ copyvar VAR_0x8008, VAR_RESULT
+ call_if_eq VAR_0x8008, TRUE, ThreeIsland_DunsparceTunnel_EventScript_SetLayoutDugOut
+ call_if_eq VAR_0x8008, FALSE, ThreeIsland_DunsparceTunnel_EventScript_MoveProspectorToWall
+ end
+
+ThreeIsland_DunsparceTunnel_EventScript_SetLayoutDugOut::
+ setmaplayoutindex LAYOUT_THREE_ISLAND_DUNSPARCE_TUNNEL_DUG_OUT
+ return
+
+ThreeIsland_DunsparceTunnel_EventScript_MoveProspectorToWall::
+ setobjectxyperm LOCALID_PROSPECTOR, 6, 3
+ setobjectmovementtype LOCALID_PROSPECTOR, MOVEMENT_TYPE_FACE_RIGHT
+ return
+
+ThreeIsland_DunsparceTunnel_EventScript_Prospector::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_NUGGET_FROM_DUNSPARCE_TUNNEL, ThreeIsland_DunsparceTunnel_EventScript_ProspectorAlreadyGaveNugget
+ specialvar VAR_RESULT, IsNationalPokedexEnabled
+ goto_if_eq VAR_RESULT, TRUE, ThreeIsland_DunsparceTunnel_EventScript_ProspectorStruckGold
+ msgbox ThreeIsland_DunsparceTunnel_Text_ProspectingForGold
+ closemessage
+ applymovement LOCALID_PROSPECTOR, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+ThreeIsland_DunsparceTunnel_EventScript_ProspectorStruckGold::
+ msgbox ThreeIsland_DunsparceTunnel_Text_StruckGoldThisIsForYou
+ giveitem ITEM_NUGGET
+ goto_if_eq VAR_RESULT, FALSE, ThreeIsland_DunsparceTunnel_EventScript_NoRoomForNugget
+ setflag FLAG_GOT_NUGGET_FROM_DUNSPARCE_TUNNEL
+ goto ThreeIsland_DunsparceTunnel_EventScript_ProspectorAlreadyGaveNugget
+ end
+
+ThreeIsland_DunsparceTunnel_EventScript_NoRoomForNugget::
+ msgbox ThreeIsland_DunsparceTunnel_Text_WhoopsBagCrammedFull
+ release
+ end
+
+ThreeIsland_DunsparceTunnel_EventScript_ProspectorAlreadyGaveNugget::
+ msgbox ThreeIsland_DunsparceTunnel_Text_ThatsANugget
+ release
+ end
+
+ThreeIsland_DunsparceTunnel_Text_ProspectingForGold::
+ .string "Hey, there!\n"
+ .string "How's it going?\p"
+ .string "What am I doing here, you ask?\n"
+ .string "Why, I'm prospecting for gold!\p"
+ .string "When I strike it rich, I'm buying\n"
+ .string "a house in KANTO.$"
+
+ThreeIsland_DunsparceTunnel_Text_StruckGoldThisIsForYou::
+ .string "Hey, there! How's it going?\n"
+ .string "Did you hear? I've struck gold!\p"
+ .string "You remembered that I was\n"
+ .string "prospecting, didn't you?\p"
+ .string "You can't begin to imagine just\n"
+ .string "how happy I am.\p"
+ .string "So, I'll show you!\n"
+ .string "This is for you!$"
+
+ThreeIsland_DunsparceTunnel_Text_ThatsANugget::
+ .string "That's a NUGGET!\p"
+ .string "I can't give you any nuggets of\n"
+ .string "wisdom, so that'll have to do!$"
+
+ThreeIsland_DunsparceTunnel_Text_WhoopsBagCrammedFull::
+ .string "Whoops, your BAG is crammed full!\n"
+ .string "I'll give this to you later.$"
+
diff --git a/data/maps/ThreeIsland_Frlg/map.json b/data/maps/ThreeIsland_Frlg/map.json
new file mode 100644
index 000000000000..3d41b323b558
--- /dev/null
+++ b/data/maps/ThreeIsland_Frlg/map.json
@@ -0,0 +1,399 @@
+{
+ "id": "MAP_THREE_ISLAND",
+ "name": "ThreeIsland_Frlg",
+ "layout": "LAYOUT_THREE_ISLAND",
+ "music": "MUS_RG_SEVII_123",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_THREE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_THREE_ISLAND_PORT",
+ "offset": 0,
+ "direction": "down"
+ },
+ {
+ "map": "MAP_THREE_ISLAND_BOND_BRIDGE",
+ "offset": 0,
+ "direction": "left"
+ }
+ ],
+ "object_events": [
+ {
+ "local_id": "LOCALID_THREE_ISLAND_ANTIBIKER1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 7,
+ "y": 24,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_EventScript_AntiBiker1",
+ "flag": "FLAG_HIDE_THREE_ISLAND_ANTIBIKERS"
+ },
+ {
+ "local_id": "LOCALID_THREE_ISLAND_ANTIBIKER2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 8,
+ "y": 23,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_EventScript_AntiBiker2",
+ "flag": "FLAG_HIDE_THREE_ISLAND_ANTIBIKERS"
+ },
+ {
+ "local_id": "LOCALID_PAXTON",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 8,
+ "y": 24,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_EventScript_Biker",
+ "flag": "FLAG_HIDE_THREE_ISLAND_LONE_BIKER"
+ },
+ {
+ "local_id": "LOCALID_THREE_ISLAND_BIKER3",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 9,
+ "y": 23,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_EventScript_Biker",
+ "flag": "FLAG_HIDE_THREE_ISLAND_BIKERS"
+ },
+ {
+ "local_id": "LOCALID_THREE_ISLAND_BIKER1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 9,
+ "y": 24,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_EventScript_Biker",
+ "flag": "FLAG_HIDE_THREE_ISLAND_BIKERS"
+ },
+ {
+ "local_id": "LOCALID_THREE_ISLAND_BIKER4",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 10,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_EventScript_Biker",
+ "flag": "FLAG_HIDE_THREE_ISLAND_BIKERS"
+ },
+ {
+ "local_id": "LOCALID_THREE_ISLAND_BIKER2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 10,
+ "y": 24,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_EventScript_Biker",
+ "flag": "FLAG_HIDE_THREE_ISLAND_BIKERS"
+ },
+ {
+ "local_id": "LOCALID_THREE_ISLAND_BIKER5",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 11,
+ "y": 23,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_EventScript_Biker",
+ "flag": "FLAG_HIDE_THREE_ISLAND_BIKERS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 20,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 18,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_EventScript_ItemZinc",
+ "flag": "FLAG_HIDE_THREE_ISLAND_ZINC"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 15,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_BOY_FRLG",
+ "x": 14,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_EventScript_LittleBoy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_DODUO",
+ "x": 15,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_EventScript_Doduo",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_THREE_ISLAND_BIKER6",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 15,
+ "y": 31,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_EventScript_Biker6",
+ "flag": "FLAG_HIDE_THREE_ISLAND_BIKERS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 31,
+ "elevation": 0,
+ "dest_map": "MAP_THREE_ISLAND_HOUSE1",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 14,
+ "y": 27,
+ "elevation": 0,
+ "dest_map": "MAP_THREE_ISLAND_POKEMON_CENTER_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 18,
+ "y": 12,
+ "elevation": 0,
+ "dest_map": "MAP_THREE_ISLAND_MART",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 4,
+ "y": 6,
+ "elevation": 0,
+ "dest_map": "MAP_THREE_ISLAND_HOUSE2",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 12,
+ "y": 6,
+ "elevation": 0,
+ "dest_map": "MAP_THREE_ISLAND_HOUSE3",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 12,
+ "y": 12,
+ "elevation": 0,
+ "dest_map": "MAP_THREE_ISLAND_HOUSE4",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 13,
+ "y": 19,
+ "elevation": 0,
+ "dest_map": "MAP_THREE_ISLAND_HOUSE5",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 7,
+ "y": 27,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_THREE_ISLAND",
+ "var_value": "2",
+ "script": "ThreeIsland_EventScript_BikerBossIntroTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 8,
+ "y": 27,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_THREE_ISLAND",
+ "var_value": "2",
+ "script": "ThreeIsland_EventScript_BikerBossIntroTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 27,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_THREE_ISLAND",
+ "var_value": "2",
+ "script": "ThreeIsland_EventScript_BikerBossIntroTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 27,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_THREE_ISLAND",
+ "var_value": "2",
+ "script": "ThreeIsland_EventScript_BikerBossIntroTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 7,
+ "y": 26,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_THREE_ISLAND",
+ "var_value": "3",
+ "script": "ThreeIsland_EventScript_BattleBikersTriggerLeft"
+ },
+ {
+ "type": "trigger",
+ "x": 8,
+ "y": 26,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_THREE_ISLAND",
+ "var_value": "3",
+ "script": "ThreeIsland_EventScript_BattleBikersTriggerMidLeft"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 26,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_THREE_ISLAND",
+ "var_value": "3",
+ "script": "ThreeIsland_EventScript_BattleBikersTriggerMid"
+ },
+ {
+ "type": "trigger",
+ "x": 11,
+ "y": 27,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_THREE_ISLAND",
+ "var_value": "2",
+ "script": "ThreeIsland_EventScript_BikerBossIntroTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 26,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_THREE_ISLAND",
+ "var_value": "3",
+ "script": "ThreeIsland_EventScript_BattleBikersTriggerMidRight"
+ },
+ {
+ "type": "trigger",
+ "x": 11,
+ "y": 26,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_THREE_ISLAND",
+ "var_value": "3",
+ "script": "ThreeIsland_EventScript_BattleBikersTriggerRight"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 12,
+ "y": 31,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ThreeIsland_EventScript_IslandSign"
+ },
+ {
+ "type": "hidden_item",
+ "x": 5,
+ "y": 13,
+ "elevation": 3,
+ "item": "ITEM_PP_UP",
+ "flag": "FLAG_HIDDEN_ITEM_THREE_ISLAND_PP_UP",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/ThreeIsland_Frlg/scripts.inc b/data/maps/ThreeIsland_Frlg/scripts.inc
new file mode 100644
index 000000000000..bb10b584584f
--- /dev/null
+++ b/data/maps/ThreeIsland_Frlg/scripts.inc
@@ -0,0 +1,554 @@
+ThreeIsland_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, ThreeIsland_OnTransition
+ .byte 0
+
+ThreeIsland_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_THREE_ISLAND
+ call_if_set FLAG_RESCUED_LOSTELLE, ThreeIsland_EventScript_HideAntiBikers
+ call_if_eq VAR_MAP_SCENE_THREE_ISLAND, 4, ThreeIsland_EventScript_SetAntiBikersMovementAfterBikers
+ end
+
+ThreeIsland_EventScript_HideAntiBikers::
+ setflag FLAG_HIDE_THREE_ISLAND_ANTIBIKERS
+ return
+
+ThreeIsland_EventScript_SetAntiBikersMovementAfterBikers::
+ setobjectmovementtype LOCALID_THREE_ISLAND_ANTIBIKER1, MOVEMENT_TYPE_LOOK_AROUND
+ setobjectmovementtype LOCALID_THREE_ISLAND_ANTIBIKER2, MOVEMENT_TYPE_LOOK_AROUND
+ return
+
+ThreeIsland_EventScript_Biker::
+ lock
+ setvar VAR_TEMP_1, 2
+ call ThreeIsland_EventScript_BikerArgumentScene
+ release
+ end
+
+ThreeIsland_EventScript_AntiBiker1::
+ lock
+ goto_if_set FLAG_GOT_FULL_RESTORE_FROM_THREE_ISLAND_DEFENDER, ThreeIsland_EventScript_AntiBiker1GotFullRestore
+ goto_if_eq VAR_MAP_SCENE_THREE_ISLAND, 4, ThreeIsland_EventScript_GiveFullRestore
+ setvar VAR_TEMP_1, 0
+ call ThreeIsland_EventScript_BikerArgumentScene
+ release
+ end
+
+ThreeIsland_EventScript_AntiBiker1GotFullRestore::
+ applymovement LOCALID_THREE_ISLAND_ANTIBIKER1, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox ThreeIsland_Text_YouveGotImpressiveMons
+ release
+ end
+
+ThreeIsland_EventScript_GiveFullRestore::
+ applymovement LOCALID_THREE_ISLAND_ANTIBIKER1, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox ThreeIsland_Text_ThankYouOhYourMonGotHurt
+ checkitemspace ITEM_FULL_RESTORE
+ goto_if_eq VAR_RESULT, FALSE, ThreeIsland_EventScript_NoRoomForFullRestore
+ msgreceiveditem ThreeIsland_Text_GivenFullRestore, ITEM_FULL_RESTORE
+ additem ITEM_FULL_RESTORE
+ setflag FLAG_GOT_FULL_RESTORE_FROM_THREE_ISLAND_DEFENDER
+ msgbox ThreeIsland_Text_YouveGotImpressiveMons
+ release
+ end
+
+ThreeIsland_EventScript_NoRoomForFullRestore::
+ msgbox ThreeIsland_Text_OhYourBagIsFull
+ release
+ end
+
+ThreeIsland_EventScript_BikerArgumentScene::
+ call_if_eq VAR_TEMP_1, 1, ThreeIsland_EventScript_PlayerFaceLeft
+ call_if_eq VAR_TEMP_1, 2, ThreeIsland_EventScript_PlayerFaceLeft
+ applymovement LOCALID_THREE_ISLAND_ANTIBIKER1, ThreeIsland_Movement_SpeakRight
+ waitmovement 0
+ msgbox ThreeIsland_Text_GoBackToKanto
+ call_if_eq VAR_TEMP_1, 0, ThreeIsland_EventScript_PlayerFaceRight
+ call_if_eq VAR_TEMP_1, 1, ThreeIsland_EventScript_PlayerFaceRight
+ call_if_eq VAR_TEMP_1, 2, ThreeIsland_EventScript_PlayerFaceBiker
+ applymovement LOCALID_THREE_ISLAND_BIKER1, ThreeIsland_Movement_SpeakLeft
+ waitmovement 0
+ msgbox ThreeIsland_Text_BossIsOnHisWay
+ call_if_eq VAR_TEMP_1, 0, ThreeIsland_EventScript_PlayerFaceUp
+ call_if_eq VAR_TEMP_1, 1, ThreeIsland_EventScript_PlayerFaceUp
+ call_if_eq VAR_TEMP_1, 2, ThreeIsland_EventScript_PlayerFaceAntiBiker
+ applymovement LOCALID_THREE_ISLAND_ANTIBIKER2, ThreeIsland_Movement_SpeakRight
+ waitmovement 0
+ msgbox ThreeIsland_Text_GetOffIslandNow
+ call_if_eq VAR_TEMP_1, 0, ThreeIsland_EventScript_PlayerFaceRight
+ call_if_eq VAR_TEMP_1, 1, ThreeIsland_EventScript_PlayerFaceRight
+ call_if_eq VAR_TEMP_1, 2, ThreeIsland_EventScript_PlayerFaceBiker
+ applymovement LOCALID_THREE_ISLAND_BIKER3, ThreeIsland_Movement_SpeakLeft
+ waitmovement 0
+ msgbox ThreeIsland_Text_WhosGonnaMakeMe
+ return
+
+ThreeIsland_EventScript_PlayerFaceUp::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ return
+
+@ Unused
+ThreeIsland_EventScript_PlayerFaceDown::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ return
+
+ThreeIsland_EventScript_PlayerFaceLeft::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ return
+
+ThreeIsland_EventScript_PlayerFaceRight::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ return
+
+ThreeIsland_EventScript_PlayerFaceBiker::
+ getplayerxy VAR_0x8004, VAR_0x8005
+ goto_if_ge VAR_0x8004, 9, ThreeIsland_EventScript_PlayerFaceUp
+ goto ThreeIsland_EventScript_PlayerFaceRight
+ end
+
+ThreeIsland_EventScript_PlayerFaceAntiBiker::
+ getplayerxy VAR_0x8004, VAR_0x8005
+ goto_if_ge VAR_0x8004, 9, ThreeIsland_EventScript_PlayerFaceLeft
+ goto ThreeIsland_EventScript_PlayerFaceUp
+ end
+
+ThreeIsland_EventScript_AntiBiker2::
+ lock
+ goto_if_eq VAR_MAP_SCENE_THREE_ISLAND, 4, ThreeIsland_EventScript_AntiBiker2BikersGone
+ setvar VAR_TEMP_1, 1
+ call ThreeIsland_EventScript_BikerArgumentScene
+ release
+ end
+
+ThreeIsland_EventScript_AntiBiker2BikersGone::
+ applymovement LOCALID_THREE_ISLAND_ANTIBIKER2, Common_Movement_FacePlayer
+ waitmovement 0
+ msgbox ThreeIsland_Text_LostelleWentOffTowardsBondBridge
+ release
+ end
+
+ThreeIsland_EventScript_BikerBossIntroTrigger::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_THREE_ISLAND_ANTIBIKER1, ThreeIsland_Movement_SpeakRight
+ waitmovement 0
+ msgbox ThreeIsland_Text_AreYouBossGoBackToKanto
+ applymovement LOCALID_PAXTON, ThreeIsland_Movement_SpeakLeft
+ waitmovement 0
+ msgbox ThreeIsland_Text_JustGotHerePal
+ applymovement LOCALID_THREE_ISLAND_ANTIBIKER1, ThreeIsland_Movement_SpeakRight
+ waitmovement 0
+ msgbox ThreeIsland_Text_FollowersRaisingHavoc
+ applymovement LOCALID_PAXTON, ThreeIsland_Movement_SpeakLeft
+ waitmovement 0
+ msgbox ThreeIsland_Text_OughtToBeThankingUs
+ applymovement LOCALID_THREE_ISLAND_ANTIBIKER1, ThreeIsland_Movement_SpeakRight
+ waitmovement 0
+ msgbox ThreeIsland_Text_YouCowardsToughInPack
+ setvar VAR_MAP_SCENE_THREE_ISLAND, 3
+ releaseall
+ end
+
+ThreeIsland_Movement_SpeakLeft::
+ walk_in_place_left
+ step_end
+
+ThreeIsland_Movement_SpeakRight::
+ walk_in_place_right
+ step_end
+
+ThreeIsland_EventScript_BattleBikersTriggerLeft::
+ lockall
+ setvar VAR_TEMP_1, 0
+ goto ThreeIsland_EventScript_BattleBikersScene
+ end
+
+ThreeIsland_EventScript_BattleBikersTriggerMidLeft::
+ lockall
+ setvar VAR_TEMP_1, 1
+ goto ThreeIsland_EventScript_BattleBikersScene
+ end
+
+ThreeIsland_EventScript_BattleBikersTriggerMid::
+ lockall
+ setvar VAR_TEMP_1, 2
+ goto ThreeIsland_EventScript_BattleBikersScene
+ end
+
+ThreeIsland_EventScript_BattleBikersTriggerMidRight::
+ lockall
+ setvar VAR_TEMP_1, 3
+ goto ThreeIsland_EventScript_BattleBikersScene
+ end
+
+ThreeIsland_EventScript_BattleBikersTriggerRight::
+ lockall
+ setvar VAR_TEMP_1, 4
+ goto ThreeIsland_EventScript_BattleBikersScene
+ end
+
+ThreeIsland_EventScript_BattleBikersScene::
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_THREE_ISLAND_BIKER1, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ playse SE_PIN
+ applymovement LOCALID_THREE_ISLAND_BIKER1, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_THREE_ISLAND_BIKER1, Common_Movement_Delay48
+ waitmovement 0
+ applymovement LOCALID_THREE_ISLAND_BIKER1, ThreeIsland_Movement_BikerApproach
+ waitmovement 0
+ playbgm MUS_RG_ENCOUNTER_BOY, 0
+ msgbox ThreeIsland_Text_WannaMakeSomethingOfYourStaring, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, ThreeIsland_EventScript_LeaveBikersAlone
+ msgbox ThreeIsland_Text_Biker1Intro
+ setvar VAR_LAST_TALKED, LOCALID_THREE_ISLAND_BIKER1
+ trainerbattle_no_intro TRAINER_BIKER_GOON, ThreeIsland_Text_Biker1Defeat
+ applymovement LOCALID_THREE_ISLAND_BIKER1, ThreeIsland_Movement_BikerSpeak
+ waitmovement 0
+ msgbox ThreeIsland_Text_Biker1PostBattle
+ closemessage
+ applymovement LOCALID_THREE_ISLAND_BIKER2, ThreeIsland_Movement_BikerApproach
+ waitmovement 0
+ playbgm MUS_RG_ENCOUNTER_BOY, 0
+ msgbox ThreeIsland_Text_Biker2Intro
+ setvar VAR_LAST_TALKED, LOCALID_THREE_ISLAND_BIKER2
+ trainerbattle_no_intro TRAINER_BIKER_GOON_2, ThreeIsland_Text_Biker2Defeat
+ applymovement LOCALID_THREE_ISLAND_BIKER2, ThreeIsland_Movement_BikerSpeak
+ waitmovement 0
+ msgbox ThreeIsland_Text_Biker2PostBattle
+ closemessage
+ applymovement LOCALID_THREE_ISLAND_BIKER3, ThreeIsland_Movement_BikerApproach
+ waitmovement 0
+ playbgm MUS_RG_ENCOUNTER_BOY, 0
+ msgbox ThreeIsland_Text_Biker3Intro
+ setvar VAR_LAST_TALKED, LOCALID_THREE_ISLAND_BIKER3
+ trainerbattle_no_intro TRAINER_BIKER_GOON_3, ThreeIsland_Text_Biker3Defeat
+ applymovement LOCALID_THREE_ISLAND_BIKER3, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ applymovement LOCALID_THREE_ISLAND_BIKER4, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_THREE_ISLAND_BIKER5, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ msgbox ThreeIsland_Text_Biker3PostBattle
+ closemessage
+ delay 45
+ call_if_eq VAR_TEMP_1, 0, ThreeIsland_EventScript_PaxtonApproachLeft
+ call_if_eq VAR_TEMP_1, 1, ThreeIsland_EventScript_PaxtonApproachMidLeft
+ call_if_eq VAR_TEMP_1, 2, ThreeIsland_EventScript_PaxtonApproachMid
+ call_if_eq VAR_TEMP_1, 3, ThreeIsland_EventScript_PaxtonApproachMidRight
+ call_if_eq VAR_TEMP_1, 4, ThreeIsland_EventScript_PaxtonApproachRight
+ playbgm MUS_RG_ENCOUNTER_BOY, 0
+ msgbox ThreeIsland_Text_PaxtonIntro
+ setvar VAR_LAST_TALKED, LOCALID_PAXTON
+ trainerbattle_no_intro TRAINER_CUE_BALL_PAXTON, ThreeIsland_Text_PaxtonDefeat
+ msgbox ThreeIsland_Text_PaxtonPostBattle
+ closemessage
+ fadescreenswapbuffers FADE_TO_BLACK
+ removeobject LOCALID_PAXTON
+ removeobject LOCALID_THREE_ISLAND_BIKER1
+ removeobject LOCALID_THREE_ISLAND_BIKER2
+ removeobject LOCALID_THREE_ISLAND_BIKER3
+ removeobject LOCALID_THREE_ISLAND_BIKER4
+ removeobject LOCALID_THREE_ISLAND_BIKER5
+ removeobject LOCALID_THREE_ISLAND_BIKER6
+ fadescreenswapbuffers FADE_FROM_BLACK
+ setvar VAR_MAP_SCENE_THREE_ISLAND, 4
+ releaseall
+ end
+
+ThreeIsland_EventScript_PaxtonApproachLeft::
+ applymovement LOCALID_THREE_ISLAND_BIKER3, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PAXTON, ThreeIsland_Movement_PaxtonApproachLeft
+ waitmovement 0
+ return
+
+ThreeIsland_EventScript_PaxtonApproachMidLeft::
+ applymovement LOCALID_THREE_ISLAND_BIKER3, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PAXTON, ThreeIsland_Movement_PaxtonApproachMidLeft
+ waitmovement 0
+ return
+
+ThreeIsland_EventScript_PaxtonApproachMid::
+ applymovement LOCALID_THREE_ISLAND_BIKER3, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PAXTON, ThreeIsland_Movement_PaxtonApproachMid
+ applymovement LOCALID_PLAYER, ThreeIsland_Movement_PlayerFacePaxton
+ waitmovement 0
+ return
+
+ThreeIsland_EventScript_PaxtonApproachMidRight::
+ applymovement LOCALID_THREE_ISLAND_BIKER3, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, ThreeIsland_Movement_PlayerFacePaxton
+ applymovement LOCALID_PAXTON, ThreeIsland_Movement_PaxtonApproachMidRight
+ waitmovement 0
+ return
+
+ThreeIsland_EventScript_PaxtonApproachRight::
+ applymovement LOCALID_THREE_ISLAND_BIKER3, Common_Movement_WalkInPlaceFasterDown
+ applymovement LOCALID_PLAYER, ThreeIsland_Movement_PlayerFacePaxton
+ applymovement LOCALID_PAXTON, ThreeIsland_Movement_PaxtonApproachRight
+ waitmovement 0
+ return
+
+ThreeIsland_EventScript_LeaveBikersAlone::
+ msgbox ThreeIsland_Text_ThatsSmart
+ closemessage
+ applymovement LOCALID_PLAYER, ThreeIsland_Movement_PlayerLeaveBikers
+ waitmovement 0
+ applymovement LOCALID_THREE_ISLAND_BIKER1, ThreeIsland_Movement_Biker1ReturnToPack
+ waitmovement 0
+ fadedefaultbgm
+ releaseall
+ end
+
+ThreeIsland_Movement_PlayerLeaveBikers::
+ walk_down
+ step_end
+
+ThreeIsland_Movement_BikerApproach::
+ walk_down
+ step_end
+
+ThreeIsland_Movement_Biker1ReturnToPack::
+ walk_up
+ walk_in_place_faster_left
+ step_end
+
+ThreeIsland_Movement_BikerSpeak::
+ walk_in_place_down
+ step_end
+
+ThreeIsland_Movement_PaxtonApproachLeft::
+ walk_down
+ walk_left
+ walk_in_place_faster_down
+ step_end
+
+ThreeIsland_Movement_PaxtonApproachMidLeft::
+ walk_down
+ step_end
+
+ThreeIsland_Movement_PaxtonApproachMid::
+ walk_down
+ walk_down
+ walk_in_place_faster_right
+ step_end
+
+ThreeIsland_Movement_PlayerFacePaxton::
+ delay_16
+ delay_16
+ walk_in_place_faster_left
+ step_end
+
+ThreeIsland_Movement_PaxtonApproachMidRight::
+ walk_down
+ walk_down
+ walk_right
+ walk_in_place_faster_right
+ step_end
+
+ThreeIsland_Movement_PaxtonApproachRight::
+ walk_down
+ walk_down
+ walk_right
+ walk_right
+ walk_in_place_faster_right
+ step_end
+
+ThreeIsland_EventScript_Woman::
+ msgbox ThreeIsland_Text_WouldntWantToSeeBikersHereAgain, MSGBOX_NPC
+ end
+
+ThreeIsland_EventScript_LittleBoy::
+ msgbox ThreeIsland_Text_WhenDodouEvolvesGoingToPlayGame, MSGBOX_NPC
+ end
+
+ThreeIsland_EventScript_Doduo::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_DODUO, CRY_MODE_NORMAL
+ msgbox ThreeIsland_Text_Doduo
+ waitmoncry
+ release
+ end
+
+ThreeIsland_EventScript_IslandSign::
+ msgbox ThreeIsland_Text_IslandSign, MSGBOX_SIGN
+ end
+
+ThreeIsland_EventScript_Biker6::
+ msgbox ThreeIsland_Text_IslandBelongsToUs, MSGBOX_NPC
+ end
+
+ThreeIsland_Text_IslandSign::
+ .string "THREE ISLAND\n"
+ .string "Kin Island of Family Bonding$"
+
+ThreeIsland_Text_IslandBelongsToUs::
+ .string "Hyahoo!\p"
+ .string "From this day on, this island\n"
+ .string "belongs to us!$"
+
+ThreeIsland_Text_GoBackToKanto::
+ .string "We don't need you people bringing\n"
+ .string "your noise and trouble here!\p"
+ .string "We're asking you to go back to\n"
+ .string "KANTO!$"
+
+ThreeIsland_Text_BossIsOnHisWay::
+ .string "Hey, go cry somewhere else.\n"
+ .string "Our boss is on his way.\p"
+ .string "When he gets here, we'll give you\n"
+ .string "a k-rad motorbike show you won't\l"
+ .string "soon forget!$"
+
+ThreeIsland_Text_GetOffIslandNow::
+ .string "W-what!? Not on your life!\n"
+ .string "Get off the island now!$"
+
+ThreeIsland_Text_WhosGonnaMakeMe::
+ .string "Who's gonna make me?$"
+
+ThreeIsland_Text_AreYouBossGoBackToKanto::
+ .string "Are you the boss?\n"
+ .string "Go back to KANTO right now!$"
+
+ThreeIsland_Text_JustGotHerePal::
+ .string "Hah?\p"
+ .string "I just got here, pal.\p"
+ .string "What's with the hostile attitude?\n"
+ .string "It's mighty cold of you!$"
+
+ThreeIsland_Text_FollowersRaisingHavoc::
+ .string "Your gang of followers have been\n"
+ .string "raising havoc on their bikes.\p"
+ .string "Do you have any idea how much\n"
+ .string "trouble they've caused us on the\l"
+ .string "island?$"
+
+ThreeIsland_Text_OughtToBeThankingUs::
+ .string "No, man, I don't get it at all.\p"
+ .string "Look at this place.\n"
+ .string "What do you do for entertainment?\p"
+ .string "You ought to be thanking us for\n"
+ .string "livening up this sleepy village.\p"
+ .string "But hey, if you insist, you can try\n"
+ .string "making us leave.$"
+
+ThreeIsland_Text_YouCowardsToughInPack::
+ .string "Grr… You cowards…\n"
+ .string "So tough in a pack…$"
+
+ThreeIsland_Text_WannaMakeSomethingOfYourStaring::
+ .string "You, what are you staring at?\n"
+ .string "Don't you know it's not polite?\p"
+ .string "You wanna make something of it\n"
+ .string "or what?$"
+
+ThreeIsland_Text_ThatsSmart::
+ .string "That's smart.\n"
+ .string "Keep your nose out of this.$"
+
+ThreeIsland_Text_Biker1Intro::
+ .string "Heh, I like your guts.\n"
+ .string "You'll be losing money to me, but…$"
+
+ThreeIsland_Text_Biker1Defeat::
+ .string "Wha…\n"
+ .string "What is this kid?!$"
+
+ThreeIsland_Text_Biker1PostBattle::
+ .string "Aww, man…\n"
+ .string "Don't you dare laugh!$"
+
+ThreeIsland_Text_Biker2Intro::
+ .string "Aren't you from KANTO?\n"
+ .string "You should be on our side!$"
+
+ThreeIsland_Text_Biker2Defeat::
+ .string "Stop fooling around!$"
+
+ThreeIsland_Text_Biker2PostBattle::
+ .string "What's the matter with you,\n"
+ .string "getting all hot like that?\p"
+ .string "Totally uncool, man!$"
+
+ThreeIsland_Text_Biker3Intro::
+ .string "We invited the boss out here,\n"
+ .string "but you had to mess it up!\p"
+ .string "You embarrassed us, man!$"
+
+ThreeIsland_Text_Biker3Defeat::
+ .string "… … … … … …$"
+
+ThreeIsland_Text_Biker3PostBattle::
+ .string "Boss, I'm telling you, you've gotta\n"
+ .string "do something about this kid!$"
+
+ThreeIsland_Text_PaxtonIntro::
+ .string "I've been watching you, and I'd say\n"
+ .string "you've done enough.\p"
+ .string "What are you, their friend or\n"
+ .string "something?\p"
+ .string "Then I guess you'll be battling me\n"
+ .string "in their place.$"
+
+ThreeIsland_Text_PaxtonDefeat::
+ .string "All right, enough!\n"
+ .string "We'll leave like you wanted!\p"
+ .string "We'll be happy to see the last of\n"
+ .string "this boring island!$"
+
+ThreeIsland_Text_PaxtonPostBattle::
+ .string "Humph! Yeah, go right on hanging\n"
+ .string "around with these hayseeds!$"
+
+ThreeIsland_Text_ThankYouOhYourMonGotHurt::
+ .string "Thank you! Those goons were\n"
+ .string "nothing but bad trouble.\p"
+ .string "Oh, look, your POKéMON got hurt\n"
+ .string "on my account.$"
+
+ThreeIsland_Text_GivenFullRestore::
+ .string "{PLAYER} was given\n"
+ .string "a FULL RESTORE.$"
+
+ThreeIsland_Text_OhYourBagIsFull::
+ .string "Oh?\n"
+ .string "Your BAG is full.$"
+
+ThreeIsland_Text_YouveGotImpressiveMons::
+ .string "You've got seriously impressive\n"
+ .string "POKéMON with you.$"
+
+ThreeIsland_Text_LostelleWentOffTowardsBondBridge::
+ .string "It'd be fantastic if someone as\n"
+ .string "strong as you lived here.\p"
+ .string "I hope you'll at least stay here\n"
+ .string "a while.\p"
+ .string "…I beg your pardon?\n"
+ .string "You're looking for LOSTELLE?\p"
+ .string "LOSTELLE went off towards BOND\n"
+ .string "BRIDGE a while ago.$"
+
+ThreeIsland_Text_WouldntWantToSeeBikersHereAgain::
+ .string "THREE ISLAND is actually the most\n"
+ .string "populous of the islands here.\p"
+ .string "Still, it could be less sleepy.\p"
+ .string "But I wouldn't want to see goons\n"
+ .string "like those BIKERS here again.$"
+
+ThreeIsland_Text_WhenDodouEvolvesGoingToPlayGame::
+ .string "I'm going to train my DODUO in the\n"
+ .string "BERRY FOREST.\p"
+ .string "When it evolves, I'm going to play\n"
+ .string "a game on TWO ISLAND.$"
+
+ThreeIsland_Text_Doduo::
+ .string "DODUO: Gigiih!$"
+
diff --git a/data/maps/ThreeIsland_Harbor_Frlg/map.json b/data/maps/ThreeIsland_Harbor_Frlg/map.json
new file mode 100644
index 000000000000..c67657083b55
--- /dev/null
+++ b/data/maps/ThreeIsland_Harbor_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_THREE_ISLAND_HARBOR",
+ "name": "ThreeIsland_Harbor_Frlg",
+ "layout": "LAYOUT_ISLAND_HARBOR_FRLG",
+ "music": "MUS_RG_SEVII_123",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_THREE_ISLE_PORT",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SEAGALLOP",
+ "x": 8,
+ "y": 9,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 8,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_Harbor_EventScript_Sailor",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_THREE_ISLAND_PORT",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/ThreeIsland_Harbor_Frlg/scripts.inc b/data/maps/ThreeIsland_Harbor_Frlg/scripts.inc
new file mode 100644
index 000000000000..716bb55847b8
--- /dev/null
+++ b/data/maps/ThreeIsland_Harbor_Frlg/scripts.inc
@@ -0,0 +1,11 @@
+ThreeIsland_Harbor_Frlg_MapScripts::
+ .byte 0
+
+ThreeIsland_Harbor_EventScript_Sailor::
+ lock
+ faceplayer
+ message Text_WhereDoYouWantToSail
+ waitmessage
+ setvar VAR_0x8004, SEAGALLOP_THREE_ISLAND
+ goto EventScript_ChooseDestFromIsland
+ end
diff --git a/data/maps/ThreeIsland_House1_Frlg/map.json b/data/maps/ThreeIsland_House1_Frlg/map.json
new file mode 100644
index 000000000000..a8e62ab0076a
--- /dev/null
+++ b/data/maps/ThreeIsland_House1_Frlg/map.json
@@ -0,0 +1,54 @@
+{
+ "id": "MAP_THREE_ISLAND_HOUSE1",
+ "name": "ThreeIsland_House1_Frlg",
+ "layout": "LAYOUT_THREE_ISLAND_HOUSE1",
+ "music": "MUS_RG_SEVII_123",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_THREE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 3,
+ "y": 4,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_House1_EventScript_Lostelle",
+ "flag": "FLAG_HIDE_LOSTELLE_IN_HER_HOME"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_THREE_ISLAND",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ThreeIsland_House1_EventScript_DisplayCase"
+ }
+ ]
+}
diff --git a/data/maps/ThreeIsland_House1_Frlg/scripts.inc b/data/maps/ThreeIsland_House1_Frlg/scripts.inc
new file mode 100644
index 000000000000..286596cac3d5
--- /dev/null
+++ b/data/maps/ThreeIsland_House1_Frlg/scripts.inc
@@ -0,0 +1,24 @@
+ThreeIsland_House1_Frlg_MapScripts::
+ .byte 0
+
+ThreeIsland_House1_EventScript_Lostelle::
+ lock
+ faceplayer
+ special GetPlayerBigGuyGirlString
+ msgbox ThreeIsland_House1_Text_YoureAlwaysSoCool
+ release
+ end
+
+ThreeIsland_House1_EventScript_DisplayCase::
+ msgbox ThreeIsland_House1_Text_RareRocksGemsDisplayed, MSGBOX_SIGN
+ end
+
+ThreeIsland_House1_Text_YoureAlwaysSoCool::
+ .string "LOSTELLE: Hi, {PLAYER}!\n"
+ .string "You're always so cool!\p"
+ .string "I'll make lunch for you, too, one\n"
+ .string "day, {PLAYER}.$"
+
+ThreeIsland_House1_Text_RareRocksGemsDisplayed::
+ .string "Rare rocks and gems are displayed.$"
+
diff --git a/data/maps/ThreeIsland_House2_Frlg/map.json b/data/maps/ThreeIsland_House2_Frlg/map.json
new file mode 100644
index 000000000000..d798a7db1161
--- /dev/null
+++ b/data/maps/ThreeIsland_House2_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_THREE_ISLAND_HOUSE2",
+ "name": "ThreeIsland_House2_Frlg",
+ "layout": "LAYOUT_HOUSE3_FRLG",
+ "music": "MUS_RG_SEVII_123",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_THREE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_House2_EventScript_Rocker",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_House2_EventScript_Man",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_THREE_ISLAND",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/ThreeIsland_House2_Frlg/scripts.inc b/data/maps/ThreeIsland_House2_Frlg/scripts.inc
new file mode 100644
index 000000000000..5a5c8a14bfc0
--- /dev/null
+++ b/data/maps/ThreeIsland_House2_Frlg/scripts.inc
@@ -0,0 +1,32 @@
+ThreeIsland_House2_Frlg_MapScripts::
+ .byte 0
+
+ThreeIsland_House2_EventScript_Man::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_SABRINA, 1
+ msgbox ThreeIsland_House2_Text_IAdmireSabrina
+ release
+ end
+
+ThreeIsland_House2_EventScript_Rocker::
+ msgbox ThreeIsland_House2_Text_CantMakeThisSpoonBend, MSGBOX_NPC
+ end
+
+ThreeIsland_House2_Text_CantMakeThisSpoonBend::
+ .string "Urrrrrrrrgggghhhh…\n"
+ .string "Kwaaaaah!\p"
+ .string "…It's useless! I can't make this\n"
+ .string "spoon bend with my mind.\p"
+ .string "Maybe I really don't have any\n"
+ .string "psychic powers.$"
+
+ThreeIsland_House2_Text_IAdmireSabrina::
+ .string "You know about a girl GYM LEADER\n"
+ .string "in SAFFRON CITY?\p"
+ .string "She uses PSYCHIC-type POKéMON,\n"
+ .string "right?\p"
+ .string "I admire her, I really do.\p"
+ .string "I've heard that she's one cool\n"
+ .string "customer and beautiful, too.$"
+
diff --git a/data/maps/ThreeIsland_House3_Frlg/map.json b/data/maps/ThreeIsland_House3_Frlg/map.json
new file mode 100644
index 000000000000..bbd5c6e11b87
--- /dev/null
+++ b/data/maps/ThreeIsland_House3_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_THREE_ISLAND_HOUSE3",
+ "name": "ThreeIsland_House3_Frlg",
+ "layout": "LAYOUT_HOUSE3_FRLG",
+ "music": "MUS_RG_SEVII_123",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_THREE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY_FRLG",
+ "x": 8,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_House3_EventScript_Beauty",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_THREE_ISLAND",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/ThreeIsland_House3_Frlg/scripts.inc b/data/maps/ThreeIsland_House3_Frlg/scripts.inc
new file mode 100644
index 000000000000..016e916aa3e1
--- /dev/null
+++ b/data/maps/ThreeIsland_House3_Frlg/scripts.inc
@@ -0,0 +1,12 @@
+ThreeIsland_House3_Frlg_MapScripts::
+ .byte 0
+
+ThreeIsland_House3_EventScript_Beauty::
+ msgbox ThreeIsland_House3_Text_WantedToLiveSomewhereQuiet, MSGBOX_NPC
+ end
+
+ThreeIsland_House3_Text_WantedToLiveSomewhereQuiet::
+ .string "I bought this house because I\n"
+ .string "wanted to live somewhere quiet.\p"
+ .string "Today, I think I'll go out fishing.$"
+
diff --git a/data/maps/ThreeIsland_House4_Frlg/map.json b/data/maps/ThreeIsland_House4_Frlg/map.json
new file mode 100644
index 000000000000..307cd4fc95b8
--- /dev/null
+++ b/data/maps/ThreeIsland_House4_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_THREE_ISLAND_HOUSE4",
+ "name": "ThreeIsland_House4_Frlg",
+ "layout": "LAYOUT_HOUSE3_FRLG",
+ "music": "MUS_RG_SEVII_123",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_THREE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_House4_EventScript_BaldingMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_BOY_FRLG",
+ "x": 6,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_House4_EventScript_LittleBoy",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_THREE_ISLAND",
+ "dest_warp_id": "5"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/ThreeIsland_House4_Frlg/scripts.inc b/data/maps/ThreeIsland_House4_Frlg/scripts.inc
new file mode 100644
index 000000000000..38d41b9b91e1
--- /dev/null
+++ b/data/maps/ThreeIsland_House4_Frlg/scripts.inc
@@ -0,0 +1,21 @@
+ThreeIsland_House4_Frlg_MapScripts::
+ .byte 0
+
+ThreeIsland_House4_EventScript_BaldingMan::
+ msgbox ThreeIsland_House4_Text_GhostsInBerryForest, MSGBOX_NPC
+ end
+
+ThreeIsland_House4_EventScript_LittleBoy::
+ msgbox ThreeIsland_House4_Text_PapaKeepsLyingToMe, MSGBOX_NPC
+ end
+
+ThreeIsland_House4_Text_GhostsInBerryForest::
+ .string "You must never, ever go out to\n"
+ .string "the BERRY FOREST alone.\p"
+ .string "Why?\n"
+ .string "There are ghosts there.$"
+
+ThreeIsland_House4_Text_PapaKeepsLyingToMe::
+ .string "Papa keeps lying to me, and won't\n"
+ .string "let me go out and play!$"
+
diff --git a/data/maps/ThreeIsland_House5_Frlg/map.json b/data/maps/ThreeIsland_House5_Frlg/map.json
new file mode 100644
index 000000000000..55b2419c3526
--- /dev/null
+++ b/data/maps/ThreeIsland_House5_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_THREE_ISLAND_HOUSE5",
+ "name": "ThreeIsland_House5_Frlg",
+ "layout": "LAYOUT_HOUSE3_FRLG",
+ "music": "MUS_RG_SEVII_123",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_THREE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_House5_EventScript_LittleGirl",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_THREE_ISLAND",
+ "dest_warp_id": "6"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/ThreeIsland_House5_Frlg/scripts.inc b/data/maps/ThreeIsland_House5_Frlg/scripts.inc
new file mode 100644
index 000000000000..edcfb684d748
--- /dev/null
+++ b/data/maps/ThreeIsland_House5_Frlg/scripts.inc
@@ -0,0 +1,28 @@
+ThreeIsland_House5_Frlg_MapScripts::
+ .byte 0
+
+ThreeIsland_House5_EventScript_LittleGirl::
+ lock
+ faceplayer
+ goto_if_set FLAG_RESCUED_LOSTELLE, ThreeIsland_House5_EventScript_LittleGirlLostelleFound
+ msgbox ThreeIsland_House5_Text_ImNotLostelle
+ release
+ end
+
+ThreeIsland_House5_EventScript_LittleGirlLostelleFound::
+ msgbox ThreeIsland_House5_Text_IllGoPlayWithLostelle
+ release
+ end
+
+ThreeIsland_House5_Text_ImNotLostelle::
+ .string "Me?\n"
+ .string "I'm not LOSTELLE.\p"
+ .string "She's probably gone to the\n"
+ .string "BERRY FOREST, I think.\p"
+ .string "She picks BERRIES there for making\n"
+ .string "lunch.$"
+
+ThreeIsland_House5_Text_IllGoPlayWithLostelle::
+ .string "I think I'll go play with LOSTELLE\n"
+ .string "today.$"
+
diff --git a/data/maps/ThreeIsland_Mart_Frlg/map.json b/data/maps/ThreeIsland_Mart_Frlg/map.json
new file mode 100644
index 000000000000..12fa177bf2ed
--- /dev/null
+++ b/data/maps/ThreeIsland_Mart_Frlg/map.json
@@ -0,0 +1,87 @@
+{
+ "id": "MAP_THREE_ISLAND_MART",
+ "name": "ThreeIsland_Mart_Frlg",
+ "layout": "LAYOUT_MART_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_THREE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 2,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_Mart_EventScript_Clerk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PICNICKER_FRLG",
+ "x": 2,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_Mart_EventScript_Picnicker",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_Mart_EventScript_BugCatcher",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 6,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_Mart_EventScript_Youngster",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_THREE_ISLAND",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/ThreeIsland_Mart_Frlg/scripts.inc b/data/maps/ThreeIsland_Mart_Frlg/scripts.inc
new file mode 100644
index 000000000000..5b1aba1572f5
--- /dev/null
+++ b/data/maps/ThreeIsland_Mart_Frlg/scripts.inc
@@ -0,0 +1,54 @@
+ThreeIsland_Mart_Frlg_MapScripts::
+ .byte 0
+
+ThreeIsland_Mart_EventScript_Clerk::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart ThreeIsland_Mart_Items
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+ThreeIsland_Mart_Items::
+ .2byte ITEM_ULTRA_BALL
+ .2byte ITEM_HYPER_POTION
+ .2byte ITEM_REVIVE
+ .2byte ITEM_FULL_HEAL
+ .2byte ITEM_ESCAPE_ROPE
+ .2byte ITEM_MAX_REPEL
+ .2byte ITEM_NONE
+ release
+ end
+
+ThreeIsland_Mart_EventScript_Picnicker::
+ msgbox ThreeIsland_Mart_Text_TrueThatCeldadonDeptStoreBigger, MSGBOX_NPC
+ end
+
+ThreeIsland_Mart_EventScript_BugCatcher::
+ msgbox ThreeIsland_Mart_Text_PeopleHealWithBerriesFromForest, MSGBOX_NPC
+ end
+
+ThreeIsland_Mart_EventScript_Youngster::
+ msgbox ThreeIsland_Mart_Text_BikersWereAboutToTrashMart, MSGBOX_NPC
+ end
+
+ThreeIsland_Mart_Text_TrueThatCeldadonDeptStoreBigger::
+ .string "Is it true?\p"
+ .string "CELADON DEPT. STORE is several\n"
+ .string "times bigger than this shop?$"
+
+ThreeIsland_Mart_Text_PeopleHealWithBerriesFromForest::
+ .string "I sometimes buy medicine here.\p"
+ .string "But a lot of people heal POKéMON\n"
+ .string "with BERRIES from BERRY FOREST.\p"
+ .string "After all, BERRIES are free and\n"
+ .string "they never run out.$"
+
+ThreeIsland_Mart_Text_BikersWereAboutToTrashMart::
+ .string "Those BIKERS were about to trash\n"
+ .string "this POKéMON MART.\p"
+ .string "Am I glad they decided to leave!$"
+
diff --git a/data/maps/ThreeIsland_PokemonCenter_1F_Frlg/map.json b/data/maps/ThreeIsland_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..d534aceccdcf
--- /dev/null
+++ b/data/maps/ThreeIsland_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,95 @@
+{
+ "id": "MAP_THREE_ISLAND_POKEMON_CENTER_1F",
+ "name": "ThreeIsland_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_THREE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_THREE_ISLAND_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 12,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_PokemonCenter_1F_EventScript_Rocker",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 3,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_PokemonCenter_1F_EventScript_Lass",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 11,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_PokemonCenter_1F_EventScript_Sailor",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_THREE_ISLAND",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_THREE_ISLAND_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/ThreeIsland_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/ThreeIsland_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..2d63ed771c5d
--- /dev/null
+++ b/data/maps/ThreeIsland_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,47 @@
+ThreeIsland_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, ThreeIsland_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ .byte 0
+
+ThreeIsland_PokemonCenter_1F_OnTransition::
+ setrespawn HEAL_LOCATION_THREE_ISLAND
+ end
+
+ThreeIsland_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+ThreeIsland_PokemonCenter_1F_EventScript_Sailor::
+ msgbox ThreeIsland_PokemonCenter_1F_Text_ImpossibleToSurfBetweenIslands, MSGBOX_NPC
+ end
+
+ThreeIsland_PokemonCenter_1F_EventScript_Lass::
+ msgbox ThreeIsland_PokemonCenter_1F_Text_AlwaysBerriesInBerryForest, MSGBOX_NPC
+ end
+
+ThreeIsland_PokemonCenter_1F_EventScript_Rocker::
+ msgbox ThreeIsland_PokemonCenter_1F_Text_PCNetworkCanLinkWithKanto, MSGBOX_NPC
+ end
+
+ThreeIsland_PokemonCenter_1F_Text_PCNetworkCanLinkWithKanto::
+ .string "Hey, did you hear the news?\p"
+ .string "The PC network here can now link\n"
+ .string "with PCs in KANTO.\p"
+ .string "I don't know how that came about,\n"
+ .string "but it's fantastic!$"
+
+ThreeIsland_PokemonCenter_1F_Text_ImpossibleToSurfBetweenIslands::
+ .string "It's impossible to SURF between the\n"
+ .string "islands around these parts.\p"
+ .string "The tides are too fast and\n"
+ .string "treacherous.$"
+
+ThreeIsland_PokemonCenter_1F_Text_AlwaysBerriesInBerryForest::
+ .string "Let's crush BERRIES!\n"
+ .string "…That'd be wasting BERRIES?\p"
+ .string "You can always find some BERRIES\n"
+ .string "on the ground in BERRY FOREST.$"
+
diff --git a/data/maps/ThreeIsland_PokemonCenter_2F_Frlg/map.json b/data/maps/ThreeIsland_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..0029c35bf603
--- /dev/null
+++ b/data/maps/ThreeIsland_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_THREE_ISLAND_POKEMON_CENTER_2F",
+ "name": "ThreeIsland_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_THREE_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_THREE_ISLAND_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/ThreeIsland_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/ThreeIsland_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..fa7a40f489c7
--- /dev/null
+++ b/data/maps/ThreeIsland_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+ThreeIsland_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+ThreeIsland_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+ThreeIsland_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+ThreeIsland_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/ThreeIsland_Port_Frlg/map.json b/data/maps/ThreeIsland_Port_Frlg/map.json
new file mode 100644
index 000000000000..d5b7b962adcc
--- /dev/null
+++ b/data/maps/ThreeIsland_Port_Frlg/map.json
@@ -0,0 +1,97 @@
+{
+ "id": "MAP_THREE_ISLAND_PORT",
+ "name": "ThreeIsland_Port_Frlg",
+ "layout": "LAYOUT_THREE_ISLAND_PORT",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_THREE_ISLE_PORT",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_THREE_ISLAND",
+ "offset": 0,
+ "direction": "up"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_3_FRLG",
+ "x": 14,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_Port_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 8,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_RIGHT_AND_LEFT",
+ "movement_range_x": 3,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_Port_EventScript_Biker1",
+ "flag": "FLAG_HIDE_THREE_ISLAND_BIKERS"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 13,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_DOWN_LEFT",
+ "movement_range_x": 2,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ThreeIsland_Port_EventScript_Biker2",
+ "flag": "FLAG_HIDE_THREE_ISLAND_BIKERS"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 16,
+ "y": 4,
+ "elevation": 0,
+ "dest_map": "MAP_THREE_ISLAND_DUNSPARCE_TUNNEL",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 38,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_THREE_ISLAND_DUNSPARCE_TUNNEL",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 12,
+ "y": 13,
+ "elevation": 3,
+ "dest_map": "MAP_THREE_ISLAND_HARBOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/ThreeIsland_Port_Frlg/scripts.inc b/data/maps/ThreeIsland_Port_Frlg/scripts.inc
new file mode 100644
index 000000000000..fb57604e5b66
--- /dev/null
+++ b/data/maps/ThreeIsland_Port_Frlg/scripts.inc
@@ -0,0 +1,64 @@
+ThreeIsland_Port_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, ThreeIsland_Port_OnTransition
+ .byte 0
+
+ThreeIsland_Port_OnTransition::
+ clearflag FLAG_SYS_PC_STORAGE_DISABLED
+ setflag FLAG_SEVII_DETOUR_FINISHED
+ end
+
+ThreeIsland_Port_EventScript_Woman::
+ lock
+ faceplayer
+ goto_if_ge VAR_MAP_SCENE_TWO_ISLAND_JOYFUL_GAME_CORNER, 2, ThreeIsland_Port_EventScript_WomanLostelleFound
+ goto_if_ge VAR_MAP_SCENE_THREE_ISLAND, 4, ThreeIsland_Port_EventScript_WomanBikersGone
+ msgbox ThreeIsland_Port_Text_IllCallThePolice
+ release
+ end
+
+ThreeIsland_Port_EventScript_WomanLostelleFound::
+ msgbox ThreeIsland_Port_Text_EverythingTurnedOutForBest
+ release
+ end
+
+ThreeIsland_Port_EventScript_WomanBikersGone::
+ msgbox ThreeIsland_Port_Text_ThankGoodnessBikersGone
+ release
+ end
+
+ThreeIsland_Port_EventScript_Biker1::
+ msgbox ThreeIsland_Port_Text_WereKantoRiderFederation, MSGBOX_NPC
+ end
+
+ThreeIsland_Port_EventScript_Biker2::
+ lock
+ msgbox ThreeIsland_Port_Text_ForkOverMoney
+ release
+ end
+
+ThreeIsland_Port_Text_WereKantoRiderFederation::
+ .string "We're the KANTO RIDER FEDERATION!\n"
+ .string "Vroom! Vavavavooom! Vroom!\p"
+ .string "My bike's wimpy, so I have to\n"
+ .string "make exhaust noises myself!$"
+
+ThreeIsland_Port_Text_ForkOverMoney::
+ .string "Hey, hey, lady!\n"
+ .string "Fork over some spending money!$"
+
+ThreeIsland_Port_Text_IllCallThePolice::
+ .string "Aiyeeh!\p"
+ .string "Wh-who are you?!\n"
+ .string "I… I'll call the police!$"
+
+ThreeIsland_Port_Text_ThankGoodnessBikersGone::
+ .string "Those BIKERS…\n"
+ .string "Are they gone?\p"
+ .string "Oh, thank goodness!\n"
+ .string "They certainly had me terrified!$"
+
+ThreeIsland_Port_Text_EverythingTurnedOutForBest::
+ .string "Those BIKERS ran off, and\n"
+ .string "LOSTELLE was found safe.\p"
+ .string "Everything turned out for the best!$"
+
diff --git a/data/maps/TradeCenter_Frlg/map.json b/data/maps/TradeCenter_Frlg/map.json
new file mode 100644
index 000000000000..f7a6a92338dc
--- /dev/null
+++ b/data/maps/TradeCenter_Frlg/map.json
@@ -0,0 +1,71 @@
+{
+ "id": "MAP_TRADE_CENTER_FRLG",
+ "name": "TradeCenter_Frlg",
+ "layout": "LAYOUT_TRADE_CENTER_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SPECIAL_AREA",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_UNION_ROOM_RECEPTIONIST",
+ "x": 9,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TradeCenter_EventScript_Attendant_Frlg",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ },
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 4,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_TEMP_0",
+ "var_value": "0",
+ "script": "TradeCenter_EventScript_Chair0"
+ },
+ {
+ "type": "trigger",
+ "x": 7,
+ "y": 5,
+ "elevation": 3,
+ "var": "VAR_TEMP_0",
+ "var_value": "0",
+ "script": "TradeCenter_EventScript_Chair1"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/TradeCenter_Frlg/scripts.inc b/data/maps/TradeCenter_Frlg/scripts.inc
new file mode 100644
index 000000000000..bcc7777d89e6
--- /dev/null
+++ b/data/maps/TradeCenter_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+TradeCenter_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/TrainerHill_Entrance/scripts.inc b/data/maps/TrainerHill_Entrance/scripts.inc
index 0ab5545175d2..a223a8884516 100644
--- a/data/maps/TrainerHill_Entrance/scripts.inc
+++ b/data/maps/TrainerHill_Entrance/scripts.inc
@@ -215,6 +215,7 @@ TrainerHill_Entrance_Movement_PlayerExitElevator:
TrainerHill_Entrance_EventScript_Records::
lockall
fadescreen FADE_TO_BLACK
+ setvar VAR_0x8004, 0
special ShowTrainerHillRecords
waitstate
releaseall
diff --git a/data/maps/TrainerTower_1F_Frlg/map.json b/data/maps/TrainerTower_1F_Frlg/map.json
new file mode 100644
index 000000000000..ae6c26608766
--- /dev/null
+++ b/data/maps/TrainerTower_1F_Frlg/map.json
@@ -0,0 +1,142 @@
+{
+ "id": "MAP_TRAINER_TOWER_1F",
+ "name": "TrainerTower_1F_Frlg",
+ "layout": "LAYOUT_TRAINER_TOWER_1F",
+ "music": "MUS_RG_TRAINER_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TRAINER_TOWER_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_TRAINER_TOWER_DUDE",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_TEMP_6"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_DOUBLES1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_0",
+ "x": 11,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_DoublesTrainer1",
+ "flag": "FLAG_TEMP_2"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_SINGLES",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_1",
+ "x": 15,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_SinglesTrainer",
+ "flag": "FLAG_TEMP_3"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_KNOCKOUT",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_2",
+ "x": 10,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_KnockoutTrainer",
+ "flag": "FLAG_TEMP_4"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_DOUBLES2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_3",
+ "x": 10,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_DoublesTrainer2",
+ "flag": "FLAG_TEMP_5"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 15,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_2F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_LOBBY",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_E",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_SingleBattleTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 12,
+ "elevation": 0,
+ "var": "VAR_TEMP_F",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerBottom"
+ }
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/TrainerTower_1F_Frlg/scripts.inc b/data/maps/TrainerTower_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..15f698ff60ec
--- /dev/null
+++ b/data/maps/TrainerTower_1F_Frlg/scripts.inc
@@ -0,0 +1,27 @@
+TrainerTower_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ All Trainer Tower floors/roof share these scripts for their object events
+
+TrainerTower_EventScript_DoublesTrainer1::
+ call TrainerTower_EventScript_SpeakToDoublesTrainer1
+ end
+
+TrainerTower_EventScript_SinglesTrainer::
+ call TrainerTower_EventScript_SpeakToSinglesTrainer
+ end
+
+TrainerTower_EventScript_KnockoutTrainer::
+ call TrainerTower_EventScript_SpeakToKnockoutTrainer
+ end
+
+TrainerTower_EventScript_DoublesTrainer2::
+ call TrainerTower_EventScript_SpeakToDoublesTrainer2
+ end
+
+TrainerTower_EventScript_Owner::
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/TrainerTower_2F_Frlg/map.json b/data/maps/TrainerTower_2F_Frlg/map.json
new file mode 100644
index 000000000000..760b02d00e17
--- /dev/null
+++ b/data/maps/TrainerTower_2F_Frlg/map.json
@@ -0,0 +1,147 @@
+{
+ "id": "MAP_TRAINER_TOWER_2F",
+ "name": "TrainerTower_2F_Frlg",
+ "layout": "LAYOUT_TRAINER_TOWER_2F",
+ "music": "MUS_RG_TRAINER_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TRAINER_TOWER_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_TRAINER_TOWER_DUDE",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_Owner",
+ "flag": "FLAG_TEMP_6"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_DOUBLES1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_0",
+ "x": 10,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_DoublesTrainer1",
+ "flag": "FLAG_TEMP_2"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_SINGLES",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_1",
+ "x": 15,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_SinglesTrainer",
+ "flag": "FLAG_TEMP_3"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_KNOCKOUT",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_2",
+ "x": 10,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_KnockoutTrainer",
+ "flag": "FLAG_TEMP_4"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_DOUBLES2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_3",
+ "x": 11,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_DoublesTrainer2",
+ "flag": "FLAG_TEMP_5"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 15,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_3F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 13,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_E",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_SingleBattleTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 12,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerBottom"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/TrainerTower_2F_Frlg/scripts.inc b/data/maps/TrainerTower_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..cfcb980079f0
--- /dev/null
+++ b/data/maps/TrainerTower_2F_Frlg/scripts.inc
@@ -0,0 +1,27 @@
+TrainerTower_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ Below scripts are unused, the identical versions in the 1F script are used instead
+
+TrainerTower_2F_EventScript_DoublesTrainer1::
+ call TrainerTower_EventScript_SpeakToDoublesTrainer1
+ end
+
+TrainerTower_2F_EventScript_SinglesTrainer::
+ call TrainerTower_EventScript_SpeakToSinglesTrainer
+ end
+
+TrainerTower_2F_EventScript_KnockoutTrainer::
+ call TrainerTower_EventScript_SpeakToKnockoutTrainer
+ end
+
+TrainerTower_2F_EventScript_DoublesTrainer2::
+ call TrainerTower_EventScript_SpeakToDoublesTrainer2
+ end
+
+TrainerTower_2F_EventScript_Owner::
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/TrainerTower_3F_Frlg/map.json b/data/maps/TrainerTower_3F_Frlg/map.json
new file mode 100644
index 000000000000..7deefdf9fa5d
--- /dev/null
+++ b/data/maps/TrainerTower_3F_Frlg/map.json
@@ -0,0 +1,149 @@
+{
+ "id": "MAP_TRAINER_TOWER_3F",
+ "name": "TrainerTower_3F_Frlg",
+ "layout": "LAYOUT_TRAINER_TOWER_3F",
+ "music": "MUS_RG_TRAINER_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TRAINER_TOWER_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_TRAINER_TOWER_DUDE",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_Owner",
+ "flag": "FLAG_TEMP_6"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_DOUBLES1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_0",
+ "x": 10,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_DoublesTrainer1",
+ "flag": "FLAG_TEMP_2"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_SINGLES",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_1",
+ "x": 15,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_SinglesTrainer",
+ "flag": "FLAG_TEMP_3"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_KNOCKOUT",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_2",
+ "x": 10,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_KnockoutTrainer",
+ "flag": "FLAG_TEMP_4"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_DOUBLES2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_3",
+ "x": 11,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_DoublesTrainer2",
+ "flag": "FLAG_TEMP_5"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 15,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_4F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_2F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 13,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_E",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_SingleBattleTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 12,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerBottom"
+ }
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/TrainerTower_3F_Frlg/scripts.inc b/data/maps/TrainerTower_3F_Frlg/scripts.inc
new file mode 100644
index 000000000000..18be53549d6b
--- /dev/null
+++ b/data/maps/TrainerTower_3F_Frlg/scripts.inc
@@ -0,0 +1,27 @@
+TrainerTower_3F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ Below scripts are unused, the identical versions in the 1F script are used instead
+
+TrainerTower_3F_EventScript_DoublesTrainer1::
+ call TrainerTower_EventScript_SpeakToDoublesTrainer1
+ end
+
+TrainerTower_3F_EventScript_SinglesTrainer::
+ call TrainerTower_EventScript_SpeakToSinglesTrainer
+ end
+
+TrainerTower_3F_EventScript_KnockoutTrainer::
+ call TrainerTower_EventScript_SpeakToKnockoutTrainer
+ end
+
+TrainerTower_3F_EventScript_DoublesTrainer2::
+ call TrainerTower_EventScript_SpeakToDoublesTrainer2
+ end
+
+TrainerTower_3F_EventScript_Owner::
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/TrainerTower_4F_Frlg/map.json b/data/maps/TrainerTower_4F_Frlg/map.json
new file mode 100644
index 000000000000..26eb60f3762d
--- /dev/null
+++ b/data/maps/TrainerTower_4F_Frlg/map.json
@@ -0,0 +1,147 @@
+{
+ "id": "MAP_TRAINER_TOWER_4F",
+ "name": "TrainerTower_4F_Frlg",
+ "layout": "LAYOUT_TRAINER_TOWER_4F",
+ "music": "MUS_RG_TRAINER_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TRAINER_TOWER_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_TRAINER_TOWER_DUDE",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_Owner",
+ "flag": "FLAG_TEMP_6"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_DOUBLES1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_0",
+ "x": 10,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_DoublesTrainer1",
+ "flag": "FLAG_TEMP_2"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_SINGLES",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_1",
+ "x": 15,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_SinglesTrainer",
+ "flag": "FLAG_TEMP_3"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_KNOCKOUT",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_2",
+ "x": 10,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_KnockoutTrainer",
+ "flag": "FLAG_TEMP_4"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_DOUBLES2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_3",
+ "x": 11,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_DoublesTrainer2",
+ "flag": "FLAG_TEMP_5"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 15,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_5F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_3F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 13,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_E",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_SingleBattleTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 12,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerBottom"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/TrainerTower_4F_Frlg/scripts.inc b/data/maps/TrainerTower_4F_Frlg/scripts.inc
new file mode 100644
index 000000000000..1f2cbdeda585
--- /dev/null
+++ b/data/maps/TrainerTower_4F_Frlg/scripts.inc
@@ -0,0 +1,27 @@
+TrainerTower_4F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ Below scripts are unused, the identical versions in the 1F script are used instead
+
+TrainerTower_4F_EventScript_DoublesTrainer1::
+ call TrainerTower_EventScript_SpeakToDoublesTrainer1
+ end
+
+TrainerTower_4F_EventScript_SinglesTrainer::
+ call TrainerTower_EventScript_SpeakToSinglesTrainer
+ end
+
+TrainerTower_4F_EventScript_KnockoutTrainer::
+ call TrainerTower_EventScript_SpeakToKnockoutTrainer
+ end
+
+TrainerTower_4F_EventScript_DoublesTrainer2::
+ call TrainerTower_EventScript_SpeakToDoublesTrainer2
+ end
+
+TrainerTower_4F_EventScript_Owner::
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/TrainerTower_5F_Frlg/map.json b/data/maps/TrainerTower_5F_Frlg/map.json
new file mode 100644
index 000000000000..904208f64163
--- /dev/null
+++ b/data/maps/TrainerTower_5F_Frlg/map.json
@@ -0,0 +1,149 @@
+{
+ "id": "MAP_TRAINER_TOWER_5F",
+ "name": "TrainerTower_5F_Frlg",
+ "layout": "LAYOUT_TRAINER_TOWER_5F",
+ "music": "MUS_RG_TRAINER_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TRAINER_TOWER_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_TRAINER_TOWER_DUDE",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_Owner",
+ "flag": "FLAG_TEMP_6"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_DOUBLES1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_0",
+ "x": 10,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_DoublesTrainer1",
+ "flag": "FLAG_TEMP_2"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_SINGLES",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_1",
+ "x": 15,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_SinglesTrainer",
+ "flag": "FLAG_TEMP_3"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_KNOCKOUT",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_2",
+ "x": 10,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_KnockoutTrainer",
+ "flag": "FLAG_TEMP_4"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_DOUBLES2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_3",
+ "x": 11,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_DoublesTrainer2",
+ "flag": "FLAG_TEMP_5"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 15,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_6F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_4F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 13,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_E",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_SingleBattleTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 12,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerBottom"
+ }
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/TrainerTower_5F_Frlg/scripts.inc b/data/maps/TrainerTower_5F_Frlg/scripts.inc
new file mode 100644
index 000000000000..f1b9bbafc9a5
--- /dev/null
+++ b/data/maps/TrainerTower_5F_Frlg/scripts.inc
@@ -0,0 +1,27 @@
+TrainerTower_5F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ Below scripts are unused, the identical versions in the 1F script are used instead
+
+TrainerTower_5F_EventScript_DoublesTrainer1::
+ call TrainerTower_EventScript_SpeakToDoublesTrainer1
+ end
+
+TrainerTower_5F_EventScript_SinglesTrainer::
+ call TrainerTower_EventScript_SpeakToSinglesTrainer
+ end
+
+TrainerTower_5F_EventScript_KnockoutTrainer::
+ call TrainerTower_EventScript_SpeakToKnockoutTrainer
+ end
+
+TrainerTower_5F_EventScript_DoublesTrainer2::
+ call TrainerTower_EventScript_SpeakToDoublesTrainer2
+ end
+
+TrainerTower_5F_EventScript_Owner::
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/TrainerTower_6F_Frlg/map.json b/data/maps/TrainerTower_6F_Frlg/map.json
new file mode 100644
index 000000000000..74bad247abb6
--- /dev/null
+++ b/data/maps/TrainerTower_6F_Frlg/map.json
@@ -0,0 +1,147 @@
+{
+ "id": "MAP_TRAINER_TOWER_6F",
+ "name": "TrainerTower_6F_Frlg",
+ "layout": "LAYOUT_TRAINER_TOWER_6F",
+ "music": "MUS_RG_TRAINER_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TRAINER_TOWER_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_TRAINER_TOWER_DUDE",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_Owner",
+ "flag": "FLAG_TEMP_6"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_DOUBLES1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_0",
+ "x": 10,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_DoublesTrainer1",
+ "flag": "FLAG_TEMP_2"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_SINGLES",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_1",
+ "x": 15,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_SinglesTrainer",
+ "flag": "FLAG_TEMP_3"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_KNOCKOUT",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_2",
+ "x": 10,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_KnockoutTrainer",
+ "flag": "FLAG_TEMP_4"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_DOUBLES2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_3",
+ "x": 11,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_DoublesTrainer2",
+ "flag": "FLAG_TEMP_5"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 15,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_7F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_5F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 13,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_E",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_SingleBattleTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 12,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerBottom"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/TrainerTower_6F_Frlg/scripts.inc b/data/maps/TrainerTower_6F_Frlg/scripts.inc
new file mode 100644
index 000000000000..d804cc0b8d51
--- /dev/null
+++ b/data/maps/TrainerTower_6F_Frlg/scripts.inc
@@ -0,0 +1,27 @@
+TrainerTower_6F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ Below scripts are unused, the identical versions in the 1F script are used instead
+
+TrainerTower_6F_EventScript_DoublesTrainer1::
+ call TrainerTower_EventScript_SpeakToDoublesTrainer1
+ end
+
+TrainerTower_6F_EventScript_SinglesTrainer::
+ call TrainerTower_EventScript_SpeakToSinglesTrainer
+ end
+
+TrainerTower_6F_EventScript_KnockoutTrainer::
+ call TrainerTower_EventScript_SpeakToKnockoutTrainer
+ end
+
+TrainerTower_6F_EventScript_DoublesTrainer2::
+ call TrainerTower_EventScript_SpeakToDoublesTrainer2
+ end
+
+TrainerTower_6F_EventScript_Owner::
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/TrainerTower_7F_Frlg/map.json b/data/maps/TrainerTower_7F_Frlg/map.json
new file mode 100644
index 000000000000..f249076b5f24
--- /dev/null
+++ b/data/maps/TrainerTower_7F_Frlg/map.json
@@ -0,0 +1,147 @@
+{
+ "id": "MAP_TRAINER_TOWER_7F",
+ "name": "TrainerTower_7F_Frlg",
+ "layout": "LAYOUT_TRAINER_TOWER_7F",
+ "music": "MUS_RG_TRAINER_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TRAINER_TOWER_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_TRAINER_TOWER_DUDE",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_Owner",
+ "flag": "FLAG_TEMP_6"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_DOUBLES1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_0",
+ "x": 10,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_DoublesTrainer1",
+ "flag": "FLAG_TEMP_2"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_SINGLES",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_1",
+ "x": 15,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_SinglesTrainer",
+ "flag": "FLAG_TEMP_3"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_KNOCKOUT",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_2",
+ "x": 10,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_KnockoutTrainer",
+ "flag": "FLAG_TEMP_4"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_DOUBLES2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_3",
+ "x": 11,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_DoublesTrainer2",
+ "flag": "FLAG_TEMP_5"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 15,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_8F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_6F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 13,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_E",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_SingleBattleTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 12,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerBottom"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/TrainerTower_7F_Frlg/scripts.inc b/data/maps/TrainerTower_7F_Frlg/scripts.inc
new file mode 100644
index 000000000000..c7ed4f3935b5
--- /dev/null
+++ b/data/maps/TrainerTower_7F_Frlg/scripts.inc
@@ -0,0 +1,27 @@
+TrainerTower_7F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ Below scripts are unused, the identical versions in the 1F script are used instead
+
+TrainerTower_7F_EventScript_DoublesTrainer1::
+ call TrainerTower_EventScript_SpeakToDoublesTrainer1
+ end
+
+TrainerTower_7F_EventScript_SinglesTrainer::
+ call TrainerTower_EventScript_SpeakToSinglesTrainer
+ end
+
+TrainerTower_7F_EventScript_KnockoutTrainer::
+ call TrainerTower_EventScript_SpeakToKnockoutTrainer
+ end
+
+TrainerTower_7F_EventScript_DoublesTrainer2::
+ call TrainerTower_EventScript_SpeakToDoublesTrainer2
+ end
+
+TrainerTower_7F_EventScript_Owner::
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/TrainerTower_8F_Frlg/map.json b/data/maps/TrainerTower_8F_Frlg/map.json
new file mode 100644
index 000000000000..99f5cf8e000b
--- /dev/null
+++ b/data/maps/TrainerTower_8F_Frlg/map.json
@@ -0,0 +1,147 @@
+{
+ "id": "MAP_TRAINER_TOWER_8F",
+ "name": "TrainerTower_8F_Frlg",
+ "layout": "LAYOUT_TRAINER_TOWER_8F",
+ "music": "MUS_RG_TRAINER_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TRAINER_TOWER_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_TRAINER_TOWER_DUDE",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_Owner",
+ "flag": "FLAG_TEMP_6"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_DOUBLES1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_0",
+ "x": 10,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_DoublesTrainer1",
+ "flag": "FLAG_TEMP_2"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_SINGLES",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_1",
+ "x": 15,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_SinglesTrainer",
+ "flag": "FLAG_TEMP_3"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_KNOCKOUT",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_2",
+ "x": 10,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_KnockoutTrainer",
+ "flag": "FLAG_TEMP_4"
+ },
+ {
+ "local_id": "LOCALID_TOWER_TRAINER_DOUBLES2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_3",
+ "x": 11,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_DoublesTrainer2",
+ "flag": "FLAG_TEMP_5"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 15,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_ROOF",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_7F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 13,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_E",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_SingleBattleTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 12,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": "0",
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerBottom"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/TrainerTower_8F_Frlg/scripts.inc b/data/maps/TrainerTower_8F_Frlg/scripts.inc
new file mode 100644
index 000000000000..2c67eebfbc3a
--- /dev/null
+++ b/data/maps/TrainerTower_8F_Frlg/scripts.inc
@@ -0,0 +1,27 @@
+TrainerTower_8F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ Below scripts are unused, the identical versions in the 1F script are used instead
+
+TrainerTower_8F_EventScript_DoublesTrainer1::
+ call TrainerTower_EventScript_SpeakToDoublesTrainer1
+ end
+
+TrainerTower_8F_EventScript_SinglesTrainer::
+ call TrainerTower_EventScript_SpeakToSinglesTrainer
+ end
+
+TrainerTower_8F_EventScript_KnockoutTrainer::
+ call TrainerTower_EventScript_SpeakToKnockoutTrainer
+ end
+
+TrainerTower_8F_EventScript_DoublesTrainer2::
+ call TrainerTower_EventScript_SpeakToDoublesTrainer2
+ end
+
+TrainerTower_8F_EventScript_Owner::
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/TrainerTower_Elevator_Frlg/map.json b/data/maps/TrainerTower_Elevator_Frlg/map.json
new file mode 100644
index 000000000000..9eef3ebde8b5
--- /dev/null
+++ b/data/maps/TrainerTower_Elevator_Frlg/map.json
@@ -0,0 +1,39 @@
+{
+ "id": "MAP_TRAINER_TOWER_ELEVATOR",
+ "name": "TrainerTower_Elevator_Frlg",
+ "layout": "LAYOUT_TRAINER_TOWER_ELEVATOR",
+ "music": "MUS_RG_TRAINER_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TRAINER_TOWER_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 0,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "TrainerTower_Elevator_EventScript_FloorSelect"
+ }
+ ]
+}
diff --git a/data/maps/TrainerTower_Elevator_Frlg/scripts.inc b/data/maps/TrainerTower_Elevator_Frlg/scripts.inc
new file mode 100644
index 000000000000..a09b181fd9e4
--- /dev/null
+++ b/data/maps/TrainerTower_Elevator_Frlg/scripts.inc
@@ -0,0 +1,79 @@
+TrainerTower_Elevator_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+TrainerTower_Elevator_EventScript_FloorSelect::
+ lockall
+ setvar VAR_0x8004, 6
+ call_if_unset FLAG_TEMP_2, EventScript_GetElevatorFloor
+ copyvar VAR_0x8005, VAR_ELEVATOR_FLOOR
+ special DrawElevatorCurrentFloorWindow
+ message gText_WantWhichFloor
+ waitmessage
+ setvar VAR_0x8004, 6
+ specialvar VAR_RESULT, InitElevatorFloorSelectMenuPos
+ switch VAR_RESULT
+ case 0, TrainerTower_Elevator_EventScript_FloorSelectFromRoof
+ case 1, TrainerTower_Elevator_EventScript_FloorSelectFromLobby
+ end
+
+TrainerTower_Elevator_EventScript_FloorSelectFromRoof::
+ multichoicedefault 0, 0, MULTI_ROOFTOP_B1F, 0, FALSE
+ goto TrainerTower_Elevator_EventScript_ChooseFloor
+ end
+
+TrainerTower_Elevator_EventScript_FloorSelectFromLobby::
+ multichoicedefault 0, 0, MULTI_ROOFTOP_B1F, 1, FALSE
+ goto TrainerTower_Elevator_EventScript_ChooseFloor
+ end
+
+TrainerTower_Elevator_EventScript_ChooseFloor::
+ switch VAR_RESULT
+ case 0, TrainerTower_Elevator_EventScript_SelectRoof
+ case 1, TrainerTower_Elevator_EventScript_SelectLobby
+ case 2, TrainerTower_Elevator_EventScript_CloseFloorSelect
+ case MULTI_B_PRESSED, TrainerTower_Elevator_EventScript_CloseFloorSelect
+ end
+
+TrainerTower_Elevator_EventScript_SelectLobby::
+ setvar VAR_0x8006, 3
+ setdynamicwarp MAP_TRAINER_TOWER_LOBBY, 17, 8
+ goto_if_eq VAR_ELEVATOR_FLOOR, 3, TrainerTower_Elevator_EventScript_CloseFloorSelect
+ call TrainerTower_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 3
+ special CloseElevatorCurrentFloorWindow
+ delay 25
+ applymovement LOCALID_PLAYER, TrainerTower_Elevator_Movement_ExitElevator
+ waitmovement 0
+ warp MAP_TRAINER_TOWER_LOBBY, 17, 8
+ waitstate
+ releaseall
+ end
+
+TrainerTower_Elevator_EventScript_SelectRoof::
+ goto TrainerTower_Elevator_EventScript_CloseFloorSelect
+ end
+
+TrainerTower_Elevator_EventScript_CloseFloorSelect::
+ special CloseElevatorCurrentFloorWindow
+ releaseall
+ end
+
+TrainerTower_Elevator_EventScript_MoveElevator::
+ special CloseElevatorCurrentFloorWindow
+ closemessage
+ waitse
+ special AnimateElevator
+ waitstate
+ setflag FLAG_TEMP_2
+ return
+
+TrainerTower_Elevator_Movement_ExitElevator::
+ walk_in_place_faster_down
+ delay_16
+ walk_down
+ walk_right
+ walk_right
+ walk_down
+ step_end
diff --git a/data/maps/TrainerTower_Lobby_Frlg/map.json b/data/maps/TrainerTower_Lobby_Frlg/map.json
new file mode 100644
index 000000000000..567daf430a3a
--- /dev/null
+++ b/data/maps/TrainerTower_Lobby_Frlg/map.json
@@ -0,0 +1,139 @@
+{
+ "id": "MAP_TRAINER_TOWER_LOBBY",
+ "name": "TrainerTower_Lobby_Frlg",
+ "layout": "LAYOUT_TRAINER_TOWER_LOBBY",
+ "music": "MUS_RG_TRAINER_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TRAINER_TOWER_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_TOWER_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 4,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_Lobby_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_TOWER_MART_CLERK",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_UNION_ROOM_RECEPTIONIST",
+ "x": 14,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_Lobby_EventScript_MartClerk",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_TOWER_RECEPTIONIST",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_UNION_ROOM_RECEPTIONIST",
+ "x": 11,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_Lobby_EventScript_Receptionist",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_TOWER_COOLTRAINER_F",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 12,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_Lobby_EventScript_CooltrainerF",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_TOWER_BALDING_MAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 2,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_Lobby_EventScript_BaldingMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 9,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 9,
+ "y": 15,
+ "elevation": 3,
+ "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 17,
+ "y": 8,
+ "elevation": 0,
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_TRAINER_TOWER",
+ "var_value": "0",
+ "script": "TrainerTower_Lobby_EventScript_EntryTrigger"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "TrainerTower_Lobby_EventScript_ShowRecords"
+ }
+ ]
+}
diff --git a/data/maps/TrainerTower_Lobby_Frlg/scripts.inc b/data/maps/TrainerTower_Lobby_Frlg/scripts.inc
new file mode 100644
index 000000000000..951d0da7bfb0
--- /dev/null
+++ b/data/maps/TrainerTower_Lobby_Frlg/scripts.inc
@@ -0,0 +1,342 @@
+TrainerTower_Lobby_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_Lobby_OnResume
+ map_script MAP_SCRIPT_ON_RETURN_TO_FIELD, TrainerTower_Lobby_OnReturnToField
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_Lobby_OnTransition
+ map_script MAP_SCRIPT_ON_LOAD, TrainerTower_Lobby_OnLoad
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_Lobby_OnFrame
+ .byte 0
+
+TrainerTower_Lobby_OnResume::
+ setvar VAR_TEMP_2, 0
+ ttower_resumetimer
+ ttower_shouldexit
+ goto_if_eq VAR_RESULT, FALSE, TrainerTower_Lobby_OnResumeEnd
+ @ Never reached, above always FALSE
+ setvar VAR_TEMP_0, 0
+ setobjectxy LOCALID_PLAYER, 9, 7
+ applymovement LOCALID_PLAYER, TrainerTower_Lobby_Movement_FaceReceptionist
+TrainerTower_Lobby_OnResumeEnd::
+ end
+
+TrainerTower_Lobby_OnReturnToField::
+ addobject LOCALID_TOWER_NURSE
+ addobject LOCALID_TOWER_MART_CLERK
+ addobject LOCALID_TOWER_RECEPTIONIST
+ addobject LOCALID_TOWER_COOLTRAINER_F
+ addobject LOCALID_TOWER_BALDING_MAN
+ end
+
+TrainerTower_Lobby_OnLoad::
+ call_if_eq VAR_TEMP_D, 17, TrainerTower_Lobby_OpenCounterBarrier
+ end
+
+TrainerTower_Lobby_OpenCounterBarrier::
+ setmetatile 17, 10, METATILE_TrainerTower_Floor_ShadeBottomLeft, 0
+ return
+
+TrainerTower_Lobby_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_TRAINER_TOWER_LOBBY
+ getplayerxy VAR_TEMP_D, VAR_RESULT
+ end
+
+TrainerTower_Lobby_OnFrame::
+ map_script_2 VAR_TEMP_0, 0, TrainerTower_Lobby_EventScript_Enter
+ map_script_2 VAR_TEMP_D, 17, TrainerTower_Lobby_EventScript_ExitElevator
+ .2byte 0
+
+TrainerTower_Lobby_EventScript_ExitElevator::
+ lockall
+ applymovement LOCALID_PLAYER, TrainerTower_Lobby_Movement_ExitElevator
+ waitmovement 0
+ setmetatile 17, 10, METATILE_TrainerTower_CounterBarrier, 1
+ special DrawWholeMapView
+ playse SE_CLICK
+ waitse
+ setvar VAR_TEMP_D, 0
+ releaseall
+ end
+
+TrainerTower_Lobby_Movement_ExitElevator::
+ walk_down
+ walk_down
+ step_end
+
+TrainerTower_Lobby_EventScript_Enter::
+ setvar VAR_TEMP_0, 1
+ ttower_getchallengestatus
+ switch VAR_RESULT
+ case TT_CHALLENGE_STATUS_LOST, TrainerTower_Lobby_EventScript_LostChallenge
+ case TT_CHALLENGE_STATUS_UNK, TrainerTower_Lobby_EventScript_ExitChallengeSpeakToReceptionist
+ case TT_CHALLENGE_STATUS_NORMAL, TrainerTower_Lobby_EventScript_EnterEnd
+
+TrainerTower_Lobby_EventScript_LostChallenge::
+ lock
+ faceplayer
+ applymovement LOCALID_PLAYER, TrainerTower_Lobby_Movement_FaceReceptionist
+ textcolor NPC_TEXT_COLOR_FEMALE
+ msgbox TrainerTower_Lobby_Text_TooBadComeBackTryAgain
+ goto TrainerTower_Lobby_EventScript_ExitChallenge
+
+@ Presumably E-Reader related
+TrainerTower_Lobby_EventScript_ExitChallengeSpeakToReceptionist::
+ lock
+ faceplayer
+ applymovement LOCALID_PLAYER, TrainerTower_Lobby_Movement_FaceReceptionist
+ textcolor NPC_TEXT_COLOR_FEMALE
+ msgbox TrainerTower_Lobby_Text_MoveCounterHereWhenTrainersSwitch
+TrainerTower_Lobby_EventScript_ExitChallenge::
+ closemessage
+ applymovement LOCALID_PLAYER, TrainerTower_Lobby_Movement_WalkDown
+ waitmovement 0
+ setvar VAR_MAP_SCENE_TRAINER_TOWER, 0
+ release
+TrainerTower_Lobby_EventScript_EnterEnd::
+ end
+
+TrainerTower_Lobby_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+TrainerTower_Lobby_EventScript_Receptionist::
+ lock
+ faceplayer
+ ttower_getbeatchallenge
+ goto_if_eq VAR_RESULT, TRUE, TrainerTower_Lobby_EventScript_ThanksForCompeting
+ msgbox TrainerTower_Lobby_Text_GiveItYourBest
+ goto TrainerTower_Lobby_EventScript_ReceptionistEnd
+
+TrainerTower_Lobby_EventScript_ThanksForCompeting::
+ msgbox TrainerTower_Lobby_Text_ThanksForCompeting
+TrainerTower_Lobby_EventScript_ReceptionistEnd::
+ release
+ end
+
+TrainerTower_Lobby_EventScript_MartClerk::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart TrainerTower_Lobby_Mart_Items
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+TrainerTower_Lobby_Mart_Items::
+ .2byte ITEM_ULTRA_BALL
+ .2byte ITEM_GREAT_BALL
+ .2byte ITEM_FULL_RESTORE
+ .2byte ITEM_MAX_POTION
+ .2byte ITEM_HYPER_POTION
+ .2byte ITEM_REVIVE
+ .2byte ITEM_FULL_HEAL
+ .2byte ITEM_ESCAPE_ROPE
+ .2byte ITEM_MAX_REPEL
+ .2byte ITEM_NONE
+ release
+ end
+
+TrainerTower_Lobby_EventScript_EntryTrigger::
+ lockall
+ applymovement LOCALID_PLAYER, TrainerTower_Lobby_Movement_FaceReceptionist
+ textcolor NPC_TEXT_COLOR_FEMALE
+ msgbox TrainerTower_Lobby_Text_WelcomeToTrainerTower
+ ttower_getnumfloors
+ goto_if_eq VAR_RESULT, FALSE, TrainerTower_Lobby_EventScript_AllFloorsUsed
+ msgbox TrainerTower_Lobby_Text_TrainersUpToFloorNum
+ goto TrainerTower_Lobby_EventScript_AskEnterChallenge
+
+TrainerTower_Lobby_EventScript_AllFloorsUsed::
+ msgbox TrainerTower_Lobby_Text_TrainersUpEighthFloor
+TrainerTower_Lobby_EventScript_AskEnterChallenge::
+ message TrainerTower_Lobby_Text_LikeToChallengeTrainers
+ waitmessage
+ multichoice 18, 6, MULTI_YESNOINFO, FALSE
+ switch VAR_RESULT
+ case 0, TrainerTower_Lobby_EventScript_ChooseChallenge
+ case 1, TrainerTower_Lobby_EventScript_DeclineChallenge
+ case 2, TrainerTower_Lobby_EventScript_ChallengeInfo
+ case MULTI_B_PRESSED, TrainerTower_Lobby_EventScript_DeclineChallenge
+ end
+
+TrainerTower_Lobby_EventScript_ChallengeInfo::
+ msgbox TrainerTower_Lobby_Text_ExplainTrainerTower
+ goto TrainerTower_Lobby_EventScript_AskEnterChallenge
+ end
+
+TrainerTower_Lobby_EventScript_ChooseChallenge::
+ multichoice 13, 3, MULTI_TRAINER_TOWER_MODE, FALSE
+ switch VAR_RESULT
+ case 0, TrainerTower_Lobby_EventScript_BeginChallenge
+ case 1, TrainerTower_Lobby_EventScript_BeginChallenge
+ case 2, TrainerTower_Lobby_EventScript_BeginChallenge
+ case 3, TrainerTower_Lobby_EventScript_BeginChallenge
+ case 4, TrainerTower_Lobby_EventScript_DeclineChallenge
+ case MULTI_B_PRESSED, TrainerTower_Lobby_EventScript_DeclineChallenge
+ end
+
+TrainerTower_Lobby_EventScript_BeginChallenge::
+ copyvar VAR_0x8005, VAR_RESULT
+ setvar VAR_MAP_SCENE_TRAINER_TOWER, 1
+ special HealPlayerParty
+ msgbox TrainerTower_Lobby_Text_StartClockGetSetGo
+ ttower_startchallenge
+ releaseall
+ end
+
+TrainerTower_Lobby_EventScript_DeclineChallenge::
+ msgbox TrainerTower_Lobby_Text_PleaseVisitUsAgain
+ closemessage
+ applymovement LOCALID_PLAYER, TrainerTower_Lobby_Movement_WalkDown
+ waitmovement 0
+ releaseall
+ end
+
+TrainerTower_Lobby_Movement_FaceReceptionist::
+ face_right
+ step_end
+
+TrainerTower_Lobby_Movement_WalkDown::
+ walk_down
+ step_end
+
+TrainerTower_Lobby_EventScript_ShowRecords::
+ lockall
+ fadescreen FADE_TO_BLACK
+ setvar VAR_0x8004, 1
+ special ShowTrainerHillRecords
+ waitstate
+ releaseall
+ end
+
+TrainerTower_Lobby_EventScript_CooltrainerF::
+ msgbox TrainerTower_Lobby_Text_WonderWhatKindsOfTrainers, MSGBOX_NPC
+ end
+
+TrainerTower_Lobby_EventScript_BaldingMan::
+ msgbox TrainerTower_Lobby_Text_StairsTougherThanAnyBattle, MSGBOX_NPC
+ end
+
+@ All Trainer Tower text (Lobby and Roof) is interleaved here
+
+TrainerTower_Lobby_Text_WelcomeToTrainerTower::
+ .string "Hello!\p"
+ .string "Welcome to TRAINER TOWER where\n"
+ .string "TRAINERS gather from all over!$"
+
+TrainerTower_Lobby_Text_TrainersUpToFloorNum::
+ .string "TRAINERS from all over the world\n"
+ .string "gather here to battle.\p"
+ .string "Let me see…\p"
+ .string "Right now, there are TRAINERS only\n"
+ .string "up to Floor {STR_VAR_1}.$"
+
+TrainerTower_Lobby_Text_TrainersUpEighthFloor::
+ .string "TRAINERS are awaiting your\n"
+ .string "challenge up to the eighth floor.$"
+
+TrainerTower_Lobby_Text_LikeToChallengeTrainers::
+ .string "Would you like to challenge the\n"
+ .string "waiting TRAINERS?$"
+
+TrainerTower_Lobby_Text_StartClockGetSetGo::
+ .string "Okay, I'll get the clock started,\n"
+ .string "so give it everything you have.\p"
+ .string "On your marks…\p"
+ .string "Get set…\p"
+ .string "Go!$"
+
+TrainerTower_Lobby_Text_PleaseVisitUsAgain::
+ .string "Please do visit us again!$"
+
+TrainerTower_Lobby_Text_TooBadComeBackTryAgain::
+ .string "That was too bad.\p"
+ .string "I think you put in a tremendous\n"
+ .string "effort in your battling.\p"
+ .string "Please come back and try again!$"
+
+TrainerTower_Lobby_Text_GiveItYourBest::
+ .string "I hope you give it your best.$"
+
+TrainerTower_Lobby_Text_MoveCounterHereWhenTrainersSwitch::
+ .string "When the TRAINERS switch places,\n"
+ .string "the movement can be hectic.\p"
+ .string "To avoid the stampede, we moved\n"
+ .string "the reception counter here.\p"
+ .string "I'm sorry for the inconvenience.$"
+
+TrainerTower_Roof_Text_ImOwnerBattledPerfectly::
+ .string "Hello…\p"
+ .string "I am the owner of this TOWER…\p"
+ .string "How the sky soars above this\n"
+ .string "rooftop…\p"
+ .string "The caress of the winds up here…\p"
+ .string "It's all so perfect…\p"
+ .string "The way you battled…\n"
+ .string "It, too, was perfection…$"
+
+TrainerTower_Roof_Text_ThisIsForYou::
+ .string "This is for you…$"
+
+TrainerTower_Roof_Text_DoneItInRecordTime::
+ .string "Oh!\n"
+ .string "Stupendous!\p"
+ .string "It's marvelous how you've come up\n"
+ .string "here so quickly.\p"
+ .string "The fact is, you've done it in\n"
+ .string "record time…\p"
+ .string "I'll have your record posted at\n"
+ .string "the reception counter.$"
+
+TrainerTower_Roof_Text_TookSweetTimeGettingHere::
+ .string "You seem to have taken your sweet\n"
+ .string "time getting here…$"
+
+TrainerTower_Roof_Text_IdLikeToSeeBetterTime::
+ .string "What I would like to see is a\n"
+ .string "better time out of you…\p"
+ .string "I'm counting on you.\p"
+ .string "Until then, farewell…$"
+
+TrainerTower_Text_XMinYZSec::
+ .string "{STR_VAR_1} min. {STR_VAR_2}.{STR_VAR_3} sec.$"
+
+TrainerTower_Lobby_Text_HereAreTheResults::
+ .string "せいせきひょうです$"
+
+TrainerTower_Lobby_Text_NeedTwoMonsForDouble::
+ .string "This is a two-on-two battle.\p"
+ .string "You may not battle unless you have\n"
+ .string "at least two POKéMON.$"
+
+TrainerTower_Lobby_Text_ExplainTrainerTower::
+ .string "Here at TRAINER TOWER, there is an\n"
+ .string "event called TIME ATTACK.\p"
+ .string "You will be timed on how quickly\n"
+ .string "you can get from the reception\l"
+ .string "counter to the OWNER on the roof.\p"
+ .string "The best times will be recorded on\n"
+ .string "the Time Board.\p"
+ .string "Try competing with friends to see\n"
+ .string "who can beat it the fastest.\p"
+ .string "You will not earn any EXP. Points\n"
+ .string "or money by beating TRAINERS here.$"
+
+TrainerTower_Lobby_Text_ThanksForCompeting::
+ .string "Thank you for competing!$"
+
+TrainerTower_Lobby_Text_WonderWhatKindsOfTrainers::
+ .string "I'm here to see how good I am.\p"
+ .string "I wonder what kinds of TRAINERS\n"
+ .string "are waiting for me?\p"
+ .string "It's nerve-racking!$"
+
+TrainerTower_Lobby_Text_StairsTougherThanAnyBattle::
+ .string "Gasp, gasp…\n"
+ .string "Gasp…\p"
+ .string "Never mind battling! These stairs…\n"
+ .string "They're tougher than any battle…$"
+
diff --git a/data/maps/TrainerTower_Roof_Frlg/map.json b/data/maps/TrainerTower_Roof_Frlg/map.json
new file mode 100644
index 000000000000..9e1086f70aec
--- /dev/null
+++ b/data/maps/TrainerTower_Roof_Frlg/map.json
@@ -0,0 +1,52 @@
+{
+ "id": "MAP_TRAINER_TOWER_ROOF",
+ "name": "TrainerTower_Roof_Frlg",
+ "layout": "LAYOUT_TRAINER_TOWER_ROOF",
+ "music": "MUS_RG_TRAINER_TOWER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TRAINER_TOWER_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_TRAINER_TOWER_DUDE",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TrainerTower_EventScript_Owner",
+ "flag": "FLAG_TEMP_6"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 13,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_8F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/TrainerTower_Roof_Frlg/scripts.inc b/data/maps/TrainerTower_Roof_Frlg/scripts.inc
new file mode 100644
index 000000000000..7b90ea4ab6e3
--- /dev/null
+++ b/data/maps/TrainerTower_Roof_Frlg/scripts.inc
@@ -0,0 +1,10 @@
+TrainerTower_Roof_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ Below script is unused, the identical version in the 1F script is used instead
+
+TrainerTower_Roof_EventScript_Owner::
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/TwoIsland_CapeBrink_Frlg/map.json b/data/maps/TwoIsland_CapeBrink_Frlg/map.json
new file mode 100644
index 000000000000..38650a4c9dc7
--- /dev/null
+++ b/data/maps/TwoIsland_CapeBrink_Frlg/map.json
@@ -0,0 +1,61 @@
+{
+ "id": "MAP_TWO_ISLAND_CAPE_BRINK",
+ "name": "TwoIsland_CapeBrink_Frlg",
+ "layout": "LAYOUT_TWO_ISLAND_CAPE_BRINK",
+ "music": "MUS_RG_ROUTE3",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CAPE_BRINK",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_TWO_ISLAND",
+ "offset": -24,
+ "direction": "down"
+ }
+ ],
+ "object_events": [
+
+ ],
+ "warp_events": [
+ {
+ "x": 12,
+ "y": 16,
+ "elevation": 0,
+ "dest_map": "MAP_TWO_ISLAND_CAPE_BRINK_HOUSE",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 16,
+ "y": 28,
+ "elevation": 3,
+ "item": "ITEM_PP_MAX",
+ "flag": "FLAG_HIDDEN_ITEM_TWO_ISLAND_CAPE_BRINK_PP_MAX",
+ "quantity": 1,
+ "underfoot": true
+ },
+ {
+ "type": "hidden_item",
+ "x": 15,
+ "y": 13,
+ "elevation": 3,
+ "item": "ITEM_RARE_CANDY",
+ "flag": "FLAG_HIDDEN_ITEM_TWO_ISLAND_CAPE_BRINK_RARE_CANDY",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/TwoIsland_CapeBrink_Frlg/scripts.inc b/data/maps/TwoIsland_CapeBrink_Frlg/scripts.inc
new file mode 100644
index 000000000000..95db895c9501
--- /dev/null
+++ b/data/maps/TwoIsland_CapeBrink_Frlg/scripts.inc
@@ -0,0 +1,2 @@
+TwoIsland_CapeBrink_Frlg_MapScripts::
+ .byte 0
diff --git a/data/maps/TwoIsland_CapeBrink_House_Frlg/map.json b/data/maps/TwoIsland_CapeBrink_House_Frlg/map.json
new file mode 100644
index 000000000000..0c05d35e8dea
--- /dev/null
+++ b/data/maps/TwoIsland_CapeBrink_House_Frlg/map.json
@@ -0,0 +1,46 @@
+{
+ "id": "MAP_TWO_ISLAND_CAPE_BRINK_HOUSE",
+ "name": "TwoIsland_CapeBrink_House_Frlg",
+ "layout": "LAYOUT_HOUSE3_FRLG",
+ "music": "MUS_RG_SEVII_123",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_CAPE_BRINK",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_CAPE_BRINK_TUTOR",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CHANNELER",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TwoIsland_CapeBrink_House_EventScript_StarterTutor",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_TWO_ISLAND_CAPE_BRINK",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/TwoIsland_CapeBrink_House_Frlg/scripts.inc b/data/maps/TwoIsland_CapeBrink_House_Frlg/scripts.inc
new file mode 100644
index 000000000000..274034bb9ac6
--- /dev/null
+++ b/data/maps/TwoIsland_CapeBrink_House_Frlg/scripts.inc
@@ -0,0 +1,58 @@
+TwoIsland_CapeBrink_House_Frlg_MapScripts::
+ .byte 0
+
+@ See move_tutors.inc
+
+Text_UltimateMoveThatMon::
+ .string "I perfected the ultimate move of\n"
+ .string "its type…\p"
+ .string "But will no one take it for\n"
+ .string "future use?\p"
+ .string "…Hm? Hmmm!\p"
+ .string "Y-you…\n"
+ .string "Th-that {STR_VAR_1}…$"
+
+Text_JustMistaken::
+ .string "…No…\n"
+ .string "I was just mistaken.$"
+
+Text_AllowMeToTeachMonUltimateMove::
+ .string "Oh! This is the one!\n"
+ .string "This is the POKéMON!\p"
+ .string "This {STR_VAR_1} is worthy of\n"
+ .string "learning my ultimate move!\p"
+ .string "Will you allow it?\p"
+ .string "Will you allow your {STR_VAR_1} to\n"
+ .string "learn my {STR_VAR_2}?$"
+
+Text_YouRejectIt::
+ .string "Gaah! You reject it?\n"
+ .string "No, I won't be dissuaded!$"
+
+Text_LetMeConferUltimateMove::
+ .string "You will allow it?\p"
+ .string "Then, let me confer my ultimate\n"
+ .string "{STR_VAR_2} on your {STR_VAR_1}.\p"
+ .string "Ggggrah-awooo!$"
+
+Text_TaughtMove::
+ .string "Gasp, gasp, gasp…\p"
+ .string "I didn't think I could teach that\n"
+ .string "move while I still lived…$"
+
+Text_MakeBestUseOfMove::
+ .string "I implore you to make the best\n"
+ .string "use of that move and gain power!$"
+
+Text_PassedOnEverythingIKnow::
+ .string "Gasp, gasp, gasp…\p"
+ .string "I have no regrets now.\n"
+ .string "I've passed on everything I know.\p"
+ .string "Now I can live out my life knowing\n"
+ .string "my work is done.$"
+
+Text_FeelRejuvenated::
+ .string "After I passed on my knowledge to\n"
+ .string "you, I felt so much relief.\p"
+ .string "In fact, I feel rejuvenated,\n"
+ .string "as if I were younger again!$"
diff --git a/data/maps/TwoIsland_Frlg/map.json b/data/maps/TwoIsland_Frlg/map.json
new file mode 100644
index 000000000000..5819228427b5
--- /dev/null
+++ b/data/maps/TwoIsland_Frlg/map.json
@@ -0,0 +1,211 @@
+{
+ "id": "MAP_TWO_ISLAND",
+ "name": "TwoIsland_Frlg",
+ "layout": "LAYOUT_TWO_ISLAND",
+ "music": "MUS_RG_SEVII_123",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TWO_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_TWO_ISLAND_CAPE_BRINK",
+ "offset": 24,
+ "direction": "up"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 28,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TwoIsland_EventScript_Clerk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 31,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TwoIsland_EventScript_Woman",
+ "flag": "FLAG_HIDE_TWO_ISLAND_WOMAN"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BEAUTY_FRLG",
+ "x": 30,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TwoIsland_EventScript_Beauty",
+ "flag": "FLAG_HIDE_TWO_ISLAND_BEAUTY"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 26,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TwoIsland_EventScript_Sailor",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SUPER_NERD",
+ "x": 27,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TwoIsland_EventScript_SuperNerd",
+ "flag": "FLAG_HIDE_TWO_ISLAND_SUPER_NERD"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 30,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 39,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TwoIsland_EventScript_ItemRevive",
+ "flag": "FLAG_HIDE_TWO_ISLAND_REVIVE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_BOY_FRLG",
+ "x": 37,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TwoIsland_EventScript_LittleBoy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 24,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TwoIsland_EventScript_Boy",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 39,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_TWO_ISLAND_JOYFUL_GAME_CORNER",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 33,
+ "y": 9,
+ "elevation": 0,
+ "dest_map": "MAP_TWO_ISLAND_HOUSE",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 21,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_TWO_ISLAND_POKEMON_CENTER_1F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 10,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_TWO_ISLAND_HARBOR",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 29,
+ "y": 8,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "TwoIsland_EventScript_IslandSign"
+ },
+ {
+ "type": "sign",
+ "x": 40,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "TwoIsland_EventScript_JoyfulGameCornerSign"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 3,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "TwoIsland_EventScript_FastCurrentSign"
+ }
+ ]
+}
diff --git a/data/maps/TwoIsland_Frlg/scripts.inc b/data/maps/TwoIsland_Frlg/scripts.inc
new file mode 100644
index 000000000000..e263bf0b408a
--- /dev/null
+++ b/data/maps/TwoIsland_Frlg/scripts.inc
@@ -0,0 +1,303 @@
+TwoIsland_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, TwoIsland_OnTransition
+ .byte 0
+
+TwoIsland_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_TWO_ISLAND
+ setflag FLAG_VISITED_TWO_ISLAND
+ call TwoIsland_EventScript_SetShopState
+ end
+
+TwoIsland_EventScript_SetShopState::
+ goto_if_set FLAG_IS_CHAMPION, TwoIsland_EventScript_SetShopStateAfterHoennLink
+ goto_if_set FLAG_SYS_GAME_CLEAR, TwoIsland_EventScript_SetShopStateAfterChampion
+ goto_if_set FLAG_RESCUED_LOSTELLE, TwoIsland_EventScript_SetShopStateAfterLostelleRescue
+ goto TwoIsland_EventScript_SetShopStateDefault
+ end
+
+TwoIsland_EventScript_SetShopStateAfterHoennLink::
+ goto_if_unset FLAG_TWO_ISLAND_SHOP_INTRODUCED, TwoIsland_EventScript_SetShopInitial
+ goto_if_unset FLAG_TWO_ISLAND_SHOP_EXPANDED_1, TwoIsland_EventScript_SetShopExpanded1
+ goto_if_unset FLAG_TWO_ISLAND_SHOP_EXPANDED_2, TwoIsland_EventScript_SetShopExpanded2
+ goto TwoIsland_EventScript_SetShopExpanded3
+ end
+
+TwoIsland_EventScript_SetShopStateAfterChampion::
+ goto_if_unset FLAG_TWO_ISLAND_SHOP_INTRODUCED, TwoIsland_EventScript_SetShopInitial
+ goto_if_unset FLAG_RESCUED_LOSTELLE, TwoIsland_EventScript_SetShopInitial
+ goto_if_unset FLAG_TWO_ISLAND_SHOP_EXPANDED_1, TwoIsland_EventScript_SetShopExpanded1
+ goto TwoIsland_EventScript_SetShopExpanded2
+ end
+
+TwoIsland_EventScript_SetShopStateAfterLostelleRescue::
+ goto_if_unset FLAG_TWO_ISLAND_SHOP_INTRODUCED, TwoIsland_EventScript_SetShopInitial
+ goto TwoIsland_EventScript_SetShopExpanded1
+ end
+
+TwoIsland_EventScript_SetShopStateDefault::
+ goto TwoIsland_EventScript_SetShopInitial
+ end
+
+TwoIsland_EventScript_SetShopInitial::
+ setvar VAR_MAP_SCENE_TWO_ISLAND, 1
+ return
+
+TwoIsland_EventScript_SetShopExpanded1::
+ setvar VAR_MAP_SCENE_TWO_ISLAND, 2
+ clearflag FLAG_HIDE_TWO_ISLAND_WOMAN
+ return
+
+TwoIsland_EventScript_SetShopExpanded2::
+ setvar VAR_MAP_SCENE_TWO_ISLAND, 3
+ clearflag FLAG_HIDE_TWO_ISLAND_BEAUTY
+ return
+
+TwoIsland_EventScript_SetShopExpanded3::
+ setvar VAR_MAP_SCENE_TWO_ISLAND, 4
+ clearflag FLAG_HIDE_TWO_ISLAND_SUPER_NERD
+ return
+
+TwoIsland_EventScript_Clerk::
+ lock
+ faceplayer
+ goto_if_eq VAR_MAP_SCENE_TWO_ISLAND, 4, TwoIsland_EventScript_ClerkShopExpanded3
+ goto_if_eq VAR_MAP_SCENE_TWO_ISLAND, 3, TwoIsland_EventScript_ClerkShopExpanded2
+ goto_if_eq VAR_MAP_SCENE_TWO_ISLAND, 2, TwoIsland_EventScript_ClerkShopExpanded1
+ goto TwoIsland_EventScript_ClerkShopInitial
+ end
+
+TwoIsland_EventScript_ClerkShopExpanded3::
+ goto_if_set FLAG_TWO_ISLAND_SHOP_EXPANDED_3, TwoIsland_EventScript_ClerkShopSkipIntro
+ setflag FLAG_TWO_ISLAND_SHOP_EXPANDED_3
+ message TwoIsland_Text_BringingItemsFromDistantLands
+ waitmessage
+ goto TwoIsland_EventScript_ShopExpanded3
+ end
+
+TwoIsland_EventScript_ClerkShopExpanded2::
+ goto_if_set FLAG_TWO_ISLAND_SHOP_EXPANDED_2, TwoIsland_EventScript_ClerkShopSkipIntro
+ setflag FLAG_TWO_ISLAND_SHOP_EXPANDED_2
+ message TwoIsland_Text_HopeYouGiveItYourBest
+ waitmessage
+ goto TwoIsland_EventScript_ShopExpanded2
+ end
+
+TwoIsland_EventScript_ClerkShopExpanded1::
+ goto_if_set FLAG_TWO_ISLAND_SHOP_EXPANDED_1, TwoIsland_EventScript_ClerkShopSkipIntro
+ setflag FLAG_TWO_ISLAND_SHOP_EXPANDED_1
+ message TwoIsland_Text_AddedMerchandiseForLostelle
+ waitmessage
+ goto TwoIsland_EventScript_ShopExpanded1
+ end
+
+TwoIsland_EventScript_ClerkShopInitial::
+ goto_if_set FLAG_TWO_ISLAND_SHOP_INTRODUCED, TwoIsland_EventScript_ClerkShopSkipIntro
+ setflag FLAG_TWO_ISLAND_SHOP_INTRODUCED
+ message TwoIsland_Text_WelcomeToShopMerchandiseLimited
+ waitmessage
+ goto TwoIsland_EventScript_ShopInitial
+ end
+
+TwoIsland_EventScript_ClerkShopSkipIntro::
+ message gText_HowMayIServeYou
+ waitmessage
+ goto_if_eq VAR_MAP_SCENE_TWO_ISLAND, 4, TwoIsland_EventScript_ShopExpanded3
+ goto_if_eq VAR_MAP_SCENE_TWO_ISLAND, 3, TwoIsland_EventScript_ShopExpanded2
+ goto_if_eq VAR_MAP_SCENE_TWO_ISLAND, 2, TwoIsland_EventScript_ShopExpanded1
+ goto TwoIsland_EventScript_ShopInitial
+ end
+
+TwoIsland_EventScript_ShopInitial::
+ pokemart TwoIsland_Items_ShopInitial
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+TwoIsland_Items_ShopInitial::
+ .2byte ITEM_GREAT_BALL
+ .2byte ITEM_FRESH_WATER
+ .2byte ITEM_NONE
+ release
+ end
+
+TwoIsland_EventScript_ShopExpanded1::
+ pokemart TwoIsland_Items_ShopExpanded1
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+TwoIsland_Items_ShopExpanded1::
+ .2byte ITEM_ULTRA_BALL
+ .2byte ITEM_GREAT_BALL
+ .2byte ITEM_SODA_POP
+ .2byte ITEM_FRESH_WATER
+ .2byte ITEM_NONE
+ release
+ end
+
+TwoIsland_EventScript_ShopExpanded2::
+ pokemart TwoIsland_Items_ShopExpanded2
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+TwoIsland_Items_ShopExpanded2::
+ .2byte ITEM_ULTRA_BALL
+ .2byte ITEM_GREAT_BALL
+ .2byte ITEM_LEMONADE
+ .2byte ITEM_SODA_POP
+ .2byte ITEM_FRESH_WATER
+ .2byte ITEM_MOOMOO_MILK
+ .2byte ITEM_NONE
+ release
+ end
+
+TwoIsland_EventScript_ShopExpanded3::
+ pokemart TwoIsland_Items_ShopExpanded3
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+TwoIsland_Items_ShopExpanded3::
+ .2byte ITEM_ULTRA_BALL
+ .2byte ITEM_REPEAT_BALL
+ .2byte ITEM_TIMER_BALL
+ .2byte ITEM_LEMONADE
+ .2byte ITEM_SODA_POP
+ .2byte ITEM_FRESH_WATER
+ .2byte ITEM_MOOMOO_MILK
+ .2byte ITEM_LAVA_COOKIE
+ .2byte ITEM_NONE
+ release
+ end
+
+TwoIsland_EventScript_Sailor::
+ msgbox TwoIsland_Text_FellowMovedFromCeladonCity, MSGBOX_NPC
+ end
+
+TwoIsland_EventScript_Woman::
+ msgbox TwoIsland_Text_ShopkeepersBrotherWorksGameCorner, MSGBOX_NPC
+ end
+
+TwoIsland_EventScript_Beauty::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_BRUNO, 4
+ msgbox TwoIsland_Text_BrunoCameToIslandWhileBack
+ release
+ end
+
+TwoIsland_EventScript_SuperNerd::
+ msgbox TwoIsland_Text_BuyRareItemsHere, MSGBOX_NPC
+ end
+
+TwoIsland_EventScript_Boy::
+ msgbox TwoIsland_Text_OldWomanLivesOutOnCape, MSGBOX_NPC
+ end
+
+TwoIsland_EventScript_LittleBoy::
+ msgbox TwoIsland_Text_HaveYouTriedJumpingGame, MSGBOX_NPC
+ end
+
+TwoIsland_EventScript_IslandSign::
+ msgbox TwoIsland_Text_IslandSign, MSGBOX_SIGN
+ end
+
+TwoIsland_EventScript_JoyfulGameCornerSign::
+ msgbox TwoIsland_Text_JoyfulGameCornerSign, MSGBOX_SIGN
+ end
+
+TwoIsland_EventScript_FastCurrentSign::
+ msgbox TwoIsland_Text_DangerFastCurrent, MSGBOX_SIGN
+ end
+
+TwoIsland_Text_IslandSign::
+ .string "TWO ISLAND\n"
+ .string "Boon Island for Two$"
+
+TwoIsland_Text_JoyfulGameCornerSign::
+ .string "Skip & Chomp!\n"
+ .string "Joyful GAME CORNER$"
+
+TwoIsland_Text_DangerFastCurrent::
+ .string "DANGER! FAST CURRENT!\n"
+ .string "Fishing and surfing prohibited!$"
+
+TwoIsland_Text_WelcomeToShopMerchandiseLimited::
+ .string "Oh!\n"
+ .string "Hello, welcome to my shop!\p"
+ .string "We've only opened up recently.\p"
+ .string "Our merchandise is limited, but I\n"
+ .string "hope we can serve your needs.$"
+
+TwoIsland_Text_AddedMerchandiseForLostelle::
+ .string "I can't tell you how grateful I am\n"
+ .string "for your rescue of LOSTELLE.\p"
+ .string "Thanks to your feat, the people of\n"
+ .string "THREE ISLAND have changed their\l"
+ .string "attitudes about KANTO people.\p"
+ .string "And, I'm from KANTO, you see.\p"
+ .string "The people of THREE ISLAND\n"
+ .string "helped me add to my merchandise.$"
+
+TwoIsland_Text_HopeYouGiveItYourBest::
+ .string "Hi! I'm giving it my best here.\n"
+ .string "I hope you do too, {PLAYER}.$"
+
+TwoIsland_Text_BringingItemsFromDistantLands::
+ .string "Oh, hello, {PLAYER}!\n"
+ .string "Welcome!\p"
+ .string "I've started bringing in items from\n"
+ .string "distant lands.\p"
+ .string "I've got some rare items in, too.\n"
+ .string "Please have a look!$"
+
+TwoIsland_Text_FellowMovedFromCeladonCity::
+ .string "That fellow there, he moved here\n"
+ .string "from CELADON CITY.\p"
+ .string "He started up a shop with his\n"
+ .string "younger brother.\p"
+ .string "You have to wonder if he knew what\n"
+ .string "he was getting into.$"
+
+TwoIsland_Text_ShopkeepersBrotherWorksGameCorner::
+ .string "The shopkeeper's brother took\n"
+ .string "a job at the GAME CORNER.\p"
+ .string "He's trying to pull together money\n"
+ .string "so they can buy more merchandise.$"
+
+TwoIsland_Text_BrunoCameToIslandWhileBack::
+ .string "Listen, listen.\n"
+ .string "Did you know?\p"
+ .string "A famous TRAINER came to the\n"
+ .string "ISLAND a little while back.\p"
+ .string "He's one of the ELITE FOUR.\n"
+ .string "His name is BRUNO.\p"
+ .string "He went away disappointed when he\n"
+ .string "found out that they were all sold\l"
+ .string "out of Rage Candybars.$"
+
+TwoIsland_Text_BuyRareItemsHere::
+ .string "The discerning TRAINER knows to\n"
+ .string "buy rare items here!$"
+
+TwoIsland_Text_OldWomanLivesOutOnCape::
+ .string "There's an old woman who lives in\n"
+ .string "a cottage out on the cape.\p"
+ .string "She gives the eye to POKéMON.\n"
+ .string "It's a bit unnerving.$"
+
+TwoIsland_Text_HaveYouTriedJumpingGame::
+ .string "Boing! Boing!\n"
+ .string "Have you tried the jumping game?\p"
+ .string "The POKéMON you can enter…\n"
+ .string "Boing!\p"
+ .string "Some go boing!\p"
+ .string "And some go boooooooing!\p"
+ .string "Did you know that?\n"
+ .string "Boing!$"
+
diff --git a/data/maps/TwoIsland_Harbor_Frlg/map.json b/data/maps/TwoIsland_Harbor_Frlg/map.json
new file mode 100644
index 000000000000..01bdc0b5b017
--- /dev/null
+++ b/data/maps/TwoIsland_Harbor_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_TWO_ISLAND_HARBOR",
+ "name": "TwoIsland_Harbor_Frlg",
+ "layout": "LAYOUT_ISLAND_HARBOR_FRLG",
+ "music": "MUS_RG_SEVII_123",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TWO_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SEAGALLOP",
+ "x": 8,
+ "y": 9,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 8,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TwoIsland_Harbor_EventScript_Sailor",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 8,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_TWO_ISLAND",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/TwoIsland_Harbor_Frlg/scripts.inc b/data/maps/TwoIsland_Harbor_Frlg/scripts.inc
new file mode 100644
index 000000000000..a27f96e22727
--- /dev/null
+++ b/data/maps/TwoIsland_Harbor_Frlg/scripts.inc
@@ -0,0 +1,11 @@
+TwoIsland_Harbor_Frlg_MapScripts::
+ .byte 0
+
+TwoIsland_Harbor_EventScript_Sailor::
+ lock
+ faceplayer
+ message Text_WhereDoYouWantToSail
+ waitmessage
+ setvar VAR_0x8004, SEAGALLOP_TWO_ISLAND
+ goto EventScript_ChooseDestFromTwoIsland
+ end
diff --git a/data/maps/TwoIsland_House_Frlg/map.json b/data/maps/TwoIsland_House_Frlg/map.json
new file mode 100644
index 000000000000..dbdda4111c6f
--- /dev/null
+++ b/data/maps/TwoIsland_House_Frlg/map.json
@@ -0,0 +1,45 @@
+{
+ "id": "MAP_TWO_ISLAND_HOUSE",
+ "name": "TwoIsland_House_Frlg",
+ "layout": "LAYOUT_HOUSE3_FRLG",
+ "music": "MUS_RG_SEVII_123",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TWO_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FAT_MAN_FRLG",
+ "x": 7,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TwoIsland_House_EventScript_MoveManiac",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_TWO_ISLAND",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/TwoIsland_House_Frlg/scripts.inc b/data/maps/TwoIsland_House_Frlg/scripts.inc
new file mode 100644
index 000000000000..e1c566fa9e05
--- /dev/null
+++ b/data/maps/TwoIsland_House_Frlg/scripts.inc
@@ -0,0 +1,166 @@
+.equ CHECKED_MUSHROOMS, FLAG_TEMP_1
+.equ HAS_BIG_MUSHROOM, FLAG_TEMP_2
+.equ HAS_TINY_MUSHROOMS, FLAG_TEMP_3
+.equ HAS_BOTH_MUSHROOMS, FLAG_TEMP_4
+
+TwoIsland_House_Frlg_MapScripts::
+ .byte 0
+
+TwoIsland_House_EventScript_MoveManiac::
+ lock
+ faceplayer
+ clearflag HAS_BIG_MUSHROOM
+ clearflag HAS_TINY_MUSHROOMS
+ clearflag HAS_BOTH_MUSHROOMS
+ goto_if_set CHECKED_MUSHROOMS, TwoIsland_House_EventScript_CheckPlayerHasMushrooms
+ msgbox TwoIsland_House_Text_TeachMonMoveForMushroom
+ setflag CHECKED_MUSHROOMS
+ goto TwoIsland_House_EventScript_CheckPlayerHasMushrooms
+ end
+
+TwoIsland_House_EventScript_CheckPlayerHasMushrooms::
+ checkitem ITEM_BIG_MUSHROOM
+ call_if_eq VAR_RESULT, TRUE, TwoIsland_House_EventScript_SetHasBigMushroom
+ checkitem ITEM_TINY_MUSHROOM, 2
+ call_if_eq VAR_RESULT, TRUE, TwoIsland_House_EventScript_SetHasTinyMushrooms
+ goto_if_set HAS_BIG_MUSHROOM, TwoIsland_House_EventScript_CheckAlsoHasTinyMushrooms
+ goto_if_set HAS_TINY_MUSHROOMS, TwoIsland_House_EventScript_CheckAlsoHasBigMushroom
+ goto TwoIsland_House_EventScript_EndTutorMove
+ end
+
+TwoIsland_House_EventScript_CheckAlsoHasTinyMushrooms::
+ call_if_set HAS_TINY_MUSHROOMS, TwoIsland_House_EventScript_SetHasBothMushrooms
+ goto TwoIsland_House_EventScript_AskTutorMon
+ end
+
+TwoIsland_House_EventScript_CheckAlsoHasBigMushroom::
+ call_if_set HAS_BIG_MUSHROOM, TwoIsland_House_EventScript_SetHasBothMushrooms
+ goto TwoIsland_House_EventScript_AskTutorMon
+ end
+
+TwoIsland_House_EventScript_AskTutorMon::
+ msgbox TwoIsland_House_Text_WantMeToTeachMove, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, TwoIsland_House_EventScript_EndTutorMove
+ goto TwoIsland_House_EventScript_ChooseMonToTutor
+ end
+
+TwoIsland_House_EventScript_ChooseMonToTutor::
+ msgbox TwoIsland_House_Text_TutorWhichMon
+ special ChooseMonForMoveRelearner
+ waitstate
+ goto_if_ge VAR_0x8004, PARTY_SIZE, TwoIsland_House_EventScript_EndTutorMove
+ special IsSelectedMonEgg
+ goto_if_eq VAR_RESULT, TRUE, TwoIsland_House_EventScript_CantTutorEgg
+ goto_if_eq VAR_0x8005, 0, TwoIsland_House_EventScript_NoMoveToTutorMon
+ goto TwoIsland_House_EventScript_ChooseMoveToTeach
+ end
+
+TwoIsland_House_EventScript_ChooseMoveToTeach::
+ msgbox TwoIsland_House_Text_TeachWhichMove
+ special TeachMoveRelearnerMove
+ waitstate
+ goto_if_eq VAR_0x8004, 0, TwoIsland_House_EventScript_ChooseMonToTutor
+ goto_if_set HAS_BOTH_MUSHROOMS, TwoIsland_House_EventScript_ChooseMushroom
+ goto_if_set HAS_BIG_MUSHROOM, TwoIsland_House_EventScript_GiveBigMushroom
+ goto_if_set HAS_TINY_MUSHROOMS, TwoIsland_House_EventScript_GiveTinyMushrooms
+ end
+
+TwoIsland_House_EventScript_GiveBigMushroom::
+ removeitem ITEM_BIG_MUSHROOM
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox TwoIsland_House_Text_HandedOverOneBigMushroom
+ call EventScript_RestorePrevTextColor
+ goto TwoIsland_House_EventScript_EndTutorMove
+ end
+
+TwoIsland_House_EventScript_GiveTinyMushrooms::
+ removeitem ITEM_TINY_MUSHROOM, 2
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox TwoIsland_House_Text_HandedOverTwoTinyMushrooms
+ call EventScript_RestorePrevTextColor
+ goto TwoIsland_House_EventScript_EndTutorMove
+ end
+
+TwoIsland_House_EventScript_ChooseMushroom::
+ message TwoIsland_House_Text_IllNeedMushroomOrTwo
+ waitmessage
+ multichoice 0, 0, MULTI_MUSHROOMS, TRUE
+ switch VAR_RESULT
+ case 0, TwoIsland_House_EventScript_GiveTinyMushrooms
+ case 1, TwoIsland_House_EventScript_GiveBigMushroom
+ end
+
+TwoIsland_House_EventScript_NoMoveToTutorMon::
+ msgbox TwoIsland_House_Text_NoMoveICanTeachThatMon
+ goto TwoIsland_House_EventScript_ChooseMonToTutor
+ end
+
+TwoIsland_House_EventScript_CantTutorEgg::
+ msgbox TwoIsland_House_Text_CantTeachAnEgg
+ goto TwoIsland_House_EventScript_ChooseMonToTutor
+ end
+
+TwoIsland_House_EventScript_EndTutorMove::
+ msgbox TwoIsland_House_Text_NeedMushroomOrTwoToLearnMove
+ release
+ end
+
+TwoIsland_House_EventScript_SetHasBigMushroom::
+ setflag HAS_BIG_MUSHROOM
+ return
+
+TwoIsland_House_EventScript_SetHasTinyMushrooms::
+ setflag HAS_TINY_MUSHROOMS
+ return
+
+TwoIsland_House_EventScript_SetHasBothMushrooms::
+ setflag HAS_BOTH_MUSHROOMS
+ return
+
+TwoIsland_House_Text_TeachMonMoveForMushroom::
+ .string "I'm the POKéMON MOVE MANIAC.\p"
+ .string "I know every single move that\n"
+ .string "POKéMON learn growing up.\p"
+ .string "I'm also a mushroom maniac.\p"
+ .string "Bring me two TINYMUSHROOMS,\n"
+ .string "or one BIG MUSHROOM.\p"
+ .string "If you do that for me, I'll teach\n"
+ .string "a move to one POKéMON.$"
+
+TwoIsland_House_Text_WantMeToTeachMove::
+ .string "Sniff, sniff…\n"
+ .string "Hm! You smell of MUSHROOMS!\p"
+ .string "Do you want me to teach a move\n"
+ .string "to a POKéMON of yours?$"
+
+TwoIsland_House_Text_TutorWhichMon::
+ .string "Which POKéMON needs tutoring?$"
+
+TwoIsland_House_Text_TeachWhichMove::
+ .string "Which move should I teach?$"
+
+TwoIsland_House_Text_NoMoveICanTeachThatMon::
+ .string "Sorry…\p"
+ .string "It doesn't appear as if I have a\n"
+ .string "move I can teach that POKéMON.$"
+
+TwoIsland_House_Text_IllNeedMushroomOrTwo::
+ .string "Then, I'll need a MUSHROOM or two.\n"
+ .string "What are you going to give me?$"
+
+TwoIsland_House_Text_HandedOverTwoTinyMushrooms::
+ .string "{PLAYER} handed over two\n"
+ .string "TINYMUSHROOMS in exchange.$"
+
+TwoIsland_House_Text_HandedOverOneBigMushroom::
+ .string "{PLAYER} handed over one\n"
+ .string "BIG MUSHROOM in exchange.$"
+
+TwoIsland_House_Text_NeedMushroomOrTwoToLearnMove::
+ .string "If your POKéMON need to learn a\n"
+ .string "move, I need a MUSHROOM or two.$"
+
+TwoIsland_House_Text_CantTeachAnEgg::
+ .string "Hunh? There isn't a single move\n"
+ .string "that I can teach an EGG.$"
+
diff --git a/data/maps/TwoIsland_JoyfulGameCorner_Frlg/map.json b/data/maps/TwoIsland_JoyfulGameCorner_Frlg/map.json
new file mode 100644
index 000000000000..e9ddb98d78ad
--- /dev/null
+++ b/data/maps/TwoIsland_JoyfulGameCorner_Frlg/map.json
@@ -0,0 +1,107 @@
+{
+ "id": "MAP_TWO_ISLAND_JOYFUL_GAME_CORNER",
+ "name": "TwoIsland_JoyfulGameCorner_Frlg",
+ "layout": "LAYOUT_TWO_ISLAND_JOYFUL_GAME_CORNER",
+ "music": "MUS_GAME_CORNER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TWO_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_JOYFUL_GAME_CORNER_DADDY",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 5,
+ "y": 5,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TwoIsland_JoyfulGameCorner_EventScript_LostellesDaddy",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_JOYFUL_GAME_CORNER_BIKER",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BIKER",
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "FLAG_HIDE_TWO_ISLAND_GAME_CORNER_BIKER"
+ },
+ {
+ "local_id": "LOCALID_JOYFUL_GAME_CORNER_LOSTELLE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 6,
+ "y": 5,
+ "elevation": 1,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TwoIsland_JoyfulGameCorner_EventScript_Lostelle",
+ "flag": "FLAG_HIDE_TWO_ISLAND_GAME_CORNER_LOSTELLE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TwoIsland_JoyfulGameCorner_EventScript_InfoMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_TWO_ISLAND",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 1,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "TwoIsland_JoyfulGameCorner_EventScript_ShowPokemonJumpRecords"
+ },
+ {
+ "type": "sign",
+ "x": 0,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "TwoIsland_JoyfulGameCorner_EventScript_ShowDodrioBerryPickingRecords"
+ }
+ ]
+}
diff --git a/data/maps/TwoIsland_JoyfulGameCorner_Frlg/scripts.inc b/data/maps/TwoIsland_JoyfulGameCorner_Frlg/scripts.inc
new file mode 100644
index 000000000000..b5c678718407
--- /dev/null
+++ b/data/maps/TwoIsland_JoyfulGameCorner_Frlg/scripts.inc
@@ -0,0 +1,303 @@
+TwoIsland_JoyfulGameCorner_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, TwoIsland_JoyfulGameCorner_OnTransition
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, TwoIsland_JoyfulGameCorner_OnWarp
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TwoIsland_JoyfulGameCorner_OnFrame
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ .byte 0
+
+TwoIsland_JoyfulGameCorner_OnTransition::
+ call_if_set FLAG_GOT_MOON_STONE_FROM_JOYFUL_GAME_CORNER, TwoIsland_JoyfulGameCorner_EventScript_SetLostelleReturnedPos
+ end
+
+TwoIsland_JoyfulGameCorner_EventScript_SetLostelleReturnedPos::
+ setobjectxyperm LOCALID_JOYFUL_GAME_CORNER_DADDY, 6, 2
+ setobjectmovementtype LOCALID_JOYFUL_GAME_CORNER_DADDY, MOVEMENT_TYPE_FACE_DOWN
+ setobjectmovementtype LOCALID_JOYFUL_GAME_CORNER_LOSTELLE, MOVEMENT_TYPE_LOOK_AROUND
+ setvar VAR_MAP_SCENE_TWO_ISLAND_JOYFUL_GAME_CORNER, 4
+ return
+
+TwoIsland_JoyfulGameCorner_OnWarp::
+ map_script_2 VAR_MAP_SCENE_TWO_ISLAND_JOYFUL_GAME_CORNER, 2, TwoIsland_JoyfulGameCorner_EventScript_TurnPlayerNorth
+ map_script_2 VAR_CABLE_CLUB_STATE, USING_MINIGAME, EventScript_CheckTurnAttendant_Frlg
+ .2byte 0
+
+TwoIsland_JoyfulGameCorner_EventScript_TurnPlayerNorth::
+ turnobject LOCALID_PLAYER, DIR_NORTH
+ end
+
+TwoIsland_JoyfulGameCorner_OnFrame::
+ map_script_2 VAR_MAP_SCENE_TWO_ISLAND_JOYFUL_GAME_CORNER, 0, TwoIsland_JoyfulGameCorner_EventScript_HelpFindLostelleScene
+ map_script_2 VAR_MAP_SCENE_TWO_ISLAND_JOYFUL_GAME_CORNER, 2, TwoIsland_JoyfulGameCorner_EventScript_FoundLostelleScene
+ map_script_2 VAR_CABLE_CLUB_STATE, USING_MINIGAME, CableClub_EventScript_ExitMinigameRoom
+ .2byte 0
+
+TwoIsland_JoyfulGameCorner_EventScript_FoundLostelleScene::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox TwoIsland_JoyfulGameCorner_Text_YouRescuedLostelle
+ textcolor NPC_TEXT_COLOR_FEMALE
+ special GetPlayerBigGuyGirlString
+ msgbox TwoIsland_JoyfulGameCorner_Text_LostelleItsOkayDaddy
+ closemessage
+ applymovement LOCALID_JOYFUL_GAME_CORNER_LOSTELLE, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ setvar VAR_MAP_SCENE_TWO_ISLAND_JOYFUL_GAME_CORNER, 3
+ releaseall
+ end
+
+TwoIsland_JoyfulGameCorner_EventScript_HelpFindLostelleScene::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_JOYFUL_GAME_CORNER_DADDY, TwoIsland_JoyfulGameCorner_Movement_DaddyPacing
+ waitmovement 0
+ msgbox TwoIsland_JoyfulGameCorner_Text_WhereHasLostelleGottenTo
+ closemessage
+ applymovement LOCALID_JOYFUL_GAME_CORNER_DADDY, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ playse SE_PIN
+ applymovement LOCALID_JOYFUL_GAME_CORNER_DADDY, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_JOYFUL_GAME_CORNER_DADDY, Common_Movement_Delay48
+ waitmovement 0
+ applymovement LOCALID_JOYFUL_GAME_CORNER_DADDY, TwoIsland_JoyfulGameCorner_Movement_DaddyApproachPlayer
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ msgbox TwoIsland_JoyfulGameCorner_Text_PleaseHelpFindLostelle
+ closemessage
+ playse SE_DOOR
+ waitse
+ applymovement LOCALID_PLAYER, TwoIsland_JoyfulGameCorner_Movement_PlayerFaceDaddy
+ waitmovement 0
+ playbgm MUS_RG_ENCOUNTER_BOY, 0
+ addobject LOCALID_JOYFUL_GAME_CORNER_BIKER
+ applymovement LOCALID_JOYFUL_GAME_CORNER_BIKER, TwoIsland_JoyfulGameCorner_Movement_BikerLookAround
+ waitmovement 0
+ msgbox TwoIsland_JoyfulGameCorner_Text_IsThisOnlyThreeIsland
+ applymovement LOCALID_JOYFUL_GAME_CORNER_BIKER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ msgbox TwoIsland_JoyfulGameCorner_Text_ThisIsTwoIslandMoveIt
+ msgbox TwoIsland_JoyfulGameCorner_Text_TheseIslandsAreConfusing
+ closemessage
+ applymovement LOCALID_JOYFUL_GAME_CORNER_BIKER, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ playse SE_EXIT
+ removeobject LOCALID_JOYFUL_GAME_CORNER_BIKER
+ fadedefaultbgm
+ delay 60
+ msgbox TwoIsland_JoyfulGameCorner_Text_PunkScuffedUpMyFloor
+ clearflag FLAG_HIDE_THREE_ISLAND_LONE_BIKER
+ setvar VAR_MAP_SCENE_THREE_ISLAND, 2
+ setvar VAR_MAP_SCENE_TWO_ISLAND_JOYFUL_GAME_CORNER, 1
+ releaseall
+ end
+
+TwoIsland_JoyfulGameCorner_Movement_DaddyPacing::
+ walk_left
+ walk_right
+ walk_right
+ delay_8
+ walk_in_place_faster_up
+ delay_16
+ step_end
+
+TwoIsland_JoyfulGameCorner_Movement_DaddyApproachPlayer::
+ walk_down
+ walk_down
+ walk_down
+ walk_in_place_faster_left
+ step_end
+
+TwoIsland_JoyfulGameCorner_Movement_PlayerFaceDaddy::
+ walk_left
+ walk_in_place_faster_right
+ step_end
+
+TwoIsland_JoyfulGameCorner_Movement_BikerLookAround::
+ walk_in_place_faster_left
+ delay_8
+ walk_in_place_faster_right
+ delay_8
+ walk_in_place_faster_up
+ step_end
+
+TwoIsland_JoyfulGameCorner_EventScript_InfoMan::
+ lock
+ faceplayer
+ goto_if_eq VAR_MAP_SCENE_TWO_ISLAND_JOYFUL_GAME_CORNER, 4, JoyfulGameCorner_EventScript_InfoMan2_Frlg
+ goto_if_set FLAG_RESCUED_LOSTELLE, TwoIsland_JoyfulGameCorner_EventScript_GetGamesGoingSoon
+ msgbox TwoIsland_JoyfulGameCorner_Text_NotRunningAnyGamesToday
+ release
+ end
+
+TwoIsland_JoyfulGameCorner_EventScript_GetGamesGoingSoon::
+ msgbox TwoIsland_JoyfulGameCorner_Text_GetGamesGoingSoon
+ release
+ end
+
+@ Only referred to as Lostelles Daddy in text
+TwoIsland_JoyfulGameCorner_EventScript_LostellesDaddy::
+ lock
+ faceplayer
+ goto_if_eq VAR_MAP_SCENE_TWO_ISLAND_JOYFUL_GAME_CORNER, 4, JoyfulGameCorner_EventScript_MinigameAttendant_Frlg
+ goto_if_set FLAG_GOT_MOON_STONE_FROM_JOYFUL_GAME_CORNER, TwoIsland_JoyfulGameCorner_EventScript_GetGameCornerRunning
+ goto_if_eq VAR_MAP_SCENE_TWO_ISLAND_JOYFUL_GAME_CORNER, 3, TwoIsland_JoyfulGameCorner_EventScript_GiveDaddyMeteorite
+ msgbox TwoIsland_JoyfulGameCorner_Text_PleaseGoToThreeIsland
+ release
+ end
+
+TwoIsland_JoyfulGameCorner_EventScript_GiveDaddyMeteorite::
+ goto_if_set FLAG_NO_ROOM_FOR_JOYFUL_GAME_CORNER_MOON_STONE, TwoIsland_JoyfulGameCorner_EventScript_ReceiveMoonStone
+ msgbox TwoIsland_JoyfulGameCorner_Text_ThisIsForMe
+ setvar VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 2
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_OBTAIN_TMHM
+ message TwoIsland_JoyfulGameCorner_Text_HandedMeteoriteToLostellesDaddy
+ waitmessage
+ waitfanfare
+ call EventScript_RestorePrevTextColor
+ removeitem ITEM_METEORITE
+ msgbox TwoIsland_JoyfulGameCorner_Text_OhThisIsFromBill
+ goto TwoIsland_JoyfulGameCorner_EventScript_ReceiveMoonStone
+ end
+
+TwoIsland_JoyfulGameCorner_EventScript_ReceiveMoonStone::
+ checkitemspace ITEM_MOON_STONE
+ goto_if_eq VAR_RESULT, FALSE, TwoIsland_JoyfulGameCorner_EventScript_NoRoomForMoonStone
+ additem ITEM_MOON_STONE
+ setflag FLAG_GOT_MOON_STONE_FROM_JOYFUL_GAME_CORNER
+ msgreceiveditem TwoIsland_JoyfulGameCorner_Text_ReceivedMoonStoneFromLostellesDaddy, ITEM_MOON_STONE
+ release
+ end
+
+TwoIsland_JoyfulGameCorner_EventScript_GetGameCornerRunning::
+ msgbox TwoIsland_JoyfulGameCorner_Text_IllGetGameCornerRunning
+ release
+ end
+
+TwoIsland_JoyfulGameCorner_EventScript_NoRoomForMoonStone::
+ setflag FLAG_NO_ROOM_FOR_JOYFUL_GAME_CORNER_MOON_STONE
+ msgbox TwoIsland_JoyfulGameCorner_Text_NotGoingToFitInBag
+ release
+ end
+
+TwoIsland_JoyfulGameCorner_EventScript_Lostelle::
+ lock
+ faceplayer
+ msgbox TwoIsland_JoyfulGameCorner_Text_PleaseShowMeYouBeingCool
+ release
+ end
+
+TwoIsland_JoyfulGameCorner_Text_WhereHasLostelleGottenTo::
+ .string "Now, where's LOSTELLE gotten to\n"
+ .string "today?\p"
+ .string "She always brings me lunch every\n"
+ .string "day right about now…$"
+
+TwoIsland_JoyfulGameCorner_Text_PleaseHelpFindLostelle::
+ .string "Hm? You, there!\n"
+ .string "Are you a friend of LOSTELLE's?\p"
+ .string "Have you seen LOSTELLE around?\n"
+ .string "I don't know where she might be.\l"
+ .string "She should've been here long ago.\p"
+ .string "LOSTELLE's a cutie - she got my\n"
+ .string "looks - so what if someone…\p"
+ .string "What if something's happened to\n"
+ .string "my LOSTELLE?!\p"
+ .string "Please, help me find her!\n"
+ .string "Please go search THREE ISLAND!$"
+
+TwoIsland_JoyfulGameCorner_Text_IsThisOnlyThreeIsland::
+ .string "Hah? What is this GAME CORNER?\n"
+ .string "How much sadder can this get?\p"
+ .string "Those clowns…\p"
+ .string "They said they'd be waiting on the\n"
+ .string "island, so where are they?\p"
+ .string "Hey, you! Is this the only THREE\n"
+ .string "ISLAND around here?$"
+
+TwoIsland_JoyfulGameCorner_Text_ThisIsTwoIslandMoveIt::
+ .string "Try waking up before you crawl out\n"
+ .string "of bed, you punk.\p"
+ .string "This is TWO ISLAND!\p"
+ .string "Move it! Get your filthy motorbike\n"
+ .string "out of my place!$"
+
+TwoIsland_JoyfulGameCorner_Text_TheseIslandsAreConfusing::
+ .string "Huh…\n"
+ .string "Oh, oh, gotcha.\p"
+ .string "Tch…\n"
+ .string "These islands are confusing…$"
+
+TwoIsland_JoyfulGameCorner_Text_PunkScuffedUpMyFloor::
+ .string "Would you look at that?\n"
+ .string "That punk scuffed up my floor.$"
+
+TwoIsland_JoyfulGameCorner_Text_PleaseGoToThreeIsland::
+ .string "Hey, but listen! I'm begging you,\n"
+ .string "you have to go to THREE ISLAND.\p"
+ .string "If anything were to happen to my\n"
+ .string "LOSTELLE…\p"
+ .string "My place is the house with the red\n"
+ .string "roof on THREE ISLAND.\p"
+ .string "She may just show up late here,\n"
+ .string "so I can't run off anywhere.\p"
+ .string "That's why I have to get you to do\n"
+ .string "me this big favor.$"
+
+TwoIsland_JoyfulGameCorner_Text_NotRunningAnyGamesToday::
+ .string "I'm sorry.\n"
+ .string "We're not running any games today.$"
+
+TwoIsland_JoyfulGameCorner_Text_GetGamesGoingSoon::
+ .string "We'll get the games going soon\n"
+ .string "for you!$"
+
+TwoIsland_JoyfulGameCorner_Text_YouRescuedLostelle::
+ .string "So you rescued LOSTELLE?\n"
+ .string "How can I thank you?\p"
+ .string "LOSTELLE, darling, forgive me!\p"
+ .string "Daddy didn't know you were scared\n"
+ .string "and in trouble!$"
+
+TwoIsland_JoyfulGameCorner_Text_LostelleItsOkayDaddy::
+ .string "LOSTELLE: It's okay, Daddy.\n"
+ .string "I got to be friends with {PLAYER}!$"
+
+TwoIsland_JoyfulGameCorner_Text_ThisIsForMe::
+ .string "Oh, what's that?\n"
+ .string "You're saying that this is for me?\p"
+ .string "How did you know that I love rare\n"
+ .string "rocks and gems?\p"
+ .string "You sure know how to make a guy\n"
+ .string "happy.$"
+
+TwoIsland_JoyfulGameCorner_Text_HandedMeteoriteToLostellesDaddy::
+ .string "{PLAYER} handed the METEORITE\n"
+ .string "to LOSTELLE's daddy.$"
+
+TwoIsland_JoyfulGameCorner_Text_OhThisIsFromBill::
+ .string "Oh, I see, this is from BILL!\n"
+ .string "You have to thank him for me!\p"
+ .string "You know, you've been fantastic.\n"
+ .string "I want you to have this.$"
+
+TwoIsland_JoyfulGameCorner_Text_ReceivedMoonStoneFromLostellesDaddy::
+ .string "{PLAYER} received a MOON STONE\n"
+ .string "from LOSTELLE's daddy.$"
+
+TwoIsland_JoyfulGameCorner_Text_NotGoingToFitInBag::
+ .string "Your BAG's not going to fit another\n"
+ .string "thing…$"
+
+TwoIsland_JoyfulGameCorner_Text_IllGetGameCornerRunning::
+ .string "All right, I'll get the GAME CORNER\n"
+ .string "running right away.\p"
+ .string "You have to come visit with a\n"
+ .string "friend.$"
+
+TwoIsland_JoyfulGameCorner_Text_PleaseShowMeYouBeingCool::
+ .string "Listen, listen!\p"
+ .string "Please show me you being cool\n"
+ .string "again!$"
+
diff --git a/data/maps/TwoIsland_PokemonCenter_1F_Frlg/map.json b/data/maps/TwoIsland_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..23b10899a2a6
--- /dev/null
+++ b/data/maps/TwoIsland_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,81 @@
+{
+ "id": "MAP_TWO_ISLAND_POKEMON_CENTER_1F",
+ "name": "TwoIsland_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TWO_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_TWO_ISLAND_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TwoIsland_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GBA_KID",
+ "x": 11,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TwoIsland_PokemonCenter_1F_EventScript_GBAKid",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "TwoIsland_PokemonCenter_1F_EventScript_BugCatcher",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_TWO_ISLAND",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_TWO_ISLAND_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/TwoIsland_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/TwoIsland_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..76e3ec8163d3
--- /dev/null
+++ b/data/maps/TwoIsland_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,38 @@
+TwoIsland_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, TwoIsland_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ .byte 0
+
+TwoIsland_PokemonCenter_1F_OnTransition::
+ setrespawn HEAL_LOCATION_TWO_ISLAND
+ end
+
+TwoIsland_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+TwoIsland_PokemonCenter_1F_EventScript_GBAKid::
+ msgbox TwoIsland_PokemonCenter_1F_Text_HaveYouVisitedGameCorner, MSGBOX_NPC
+ end
+
+TwoIsland_PokemonCenter_1F_EventScript_BugCatcher::
+ msgbox TwoIsland_PokemonCenter_1F_Text_OldLadyLivesOutOnCape, MSGBOX_NPC
+ end
+
+TwoIsland_PokemonCenter_1F_Text_HaveYouVisitedGameCorner::
+ .string "Have you visited the GAME CORNER\n"
+ .string "already?\p"
+ .string "It's no good to go alone.\n"
+ .string "You have to take a friend along.$"
+
+TwoIsland_PokemonCenter_1F_Text_OldLadyLivesOutOnCape::
+ .string "Not many people live on\n"
+ .string "TWO ISLAND.\p"
+ .string "There is this old lady who lives\n"
+ .string "out on the cape.\p"
+ .string "She's been there since I don't know\n"
+ .string "when.$"
+
diff --git a/data/maps/TwoIsland_PokemonCenter_2F_Frlg/map.json b/data/maps/TwoIsland_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..10e63f4262fa
--- /dev/null
+++ b/data/maps/TwoIsland_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_TWO_ISLAND_POKEMON_CENTER_2F",
+ "name": "TwoIsland_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_TWO_ISLAND",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_TWO_ISLAND_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/TwoIsland_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/TwoIsland_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..8250b8aad774
--- /dev/null
+++ b/data/maps/TwoIsland_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+TwoIsland_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+TwoIsland_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+TwoIsland_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+TwoIsland_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/UndergroundPath_EastEntrance_Frlg/map.json b/data/maps/UndergroundPath_EastEntrance_Frlg/map.json
new file mode 100644
index 000000000000..00f0614ebbfc
--- /dev/null
+++ b/data/maps/UndergroundPath_EastEntrance_Frlg/map.json
@@ -0,0 +1,66 @@
+{
+ "id": "MAP_UNDERGROUND_PATH_EAST_ENTRANCE",
+ "name": "UndergroundPath_EastEntrance_Frlg",
+ "layout": "LAYOUT_UNDERGROUND_PATH_ENTRANCE",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_UNDERGROUND_PATH_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 5,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "UndergroundPath_EastEntrance_EventScript_Woman",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE8",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE8",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE8",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_UNDERGROUND_PATH_EAST_WEST_TUNNEL",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/UndergroundPath_EastEntrance_Frlg/scripts.inc b/data/maps/UndergroundPath_EastEntrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..f5580e65b0d8
--- /dev/null
+++ b/data/maps/UndergroundPath_EastEntrance_Frlg/scripts.inc
@@ -0,0 +1,12 @@
+UndergroundPath_EastEntrance_Frlg_MapScripts::
+ .byte 0
+
+UndergroundPath_EastEntrance_EventScript_Woman::
+ msgbox UndergroundPath_EastEntrance_Text_DoYouGoToCeladonDeptStore, MSGBOX_NPC
+ end
+
+UndergroundPath_EastEntrance_Text_DoYouGoToCeladonDeptStore::
+ .string "The DEPARTMENT STORE in CELADON\n"
+ .string "has a great selection.\p"
+ .string "Do you go there very often?$"
+
diff --git a/data/maps/UndergroundPath_EastWestTunnel_Frlg/map.json b/data/maps/UndergroundPath_EastWestTunnel_Frlg/map.json
new file mode 100644
index 000000000000..e0c32ceba943
--- /dev/null
+++ b/data/maps/UndergroundPath_EastWestTunnel_Frlg/map.json
@@ -0,0 +1,108 @@
+{
+ "id": "MAP_UNDERGROUND_PATH_EAST_WEST_TUNNEL",
+ "name": "UndergroundPath_EastWestTunnel_Frlg",
+ "layout": "LAYOUT_UNDERGROUND_PATH_EAST_WEST_TUNNEL",
+ "music": "MUS_RG_ROUTE1",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_UNDERGROUND_PATH_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 76,
+ "y": 3,
+ "elevation": 3,
+ "dest_map": "MAP_UNDERGROUND_PATH_EAST_ENTRANCE",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 3,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_UNDERGROUND_PATH_WEST_ENTRANCE",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 7,
+ "y": 3,
+ "elevation": 3,
+ "item": "ITEM_POTION",
+ "flag": "FLAG_HIDDEN_ITEM_UNDERGROUND_PATH_EAST_WEST_TUNNEL_POTION",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 17,
+ "y": 5,
+ "elevation": 3,
+ "item": "ITEM_PARALYZE_HEAL",
+ "flag": "FLAG_HIDDEN_ITEM_UNDERGROUND_PATH_EAST_WEST_TUNNEL_PARALYZE_HEAL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 31,
+ "y": 4,
+ "elevation": 3,
+ "item": "ITEM_AWAKENING",
+ "flag": "FLAG_HIDDEN_ITEM_UNDERGROUND_PATH_EAST_WEST_TUNNEL_AWAKENING",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 45,
+ "y": 3,
+ "elevation": 3,
+ "item": "ITEM_BURN_HEAL",
+ "flag": "FLAG_HIDDEN_ITEM_UNDERGROUND_PATH_EAST_WEST_TUNNEL_BURN_HEAL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 70,
+ "y": 3,
+ "elevation": 3,
+ "item": "ITEM_ICE_HEAL",
+ "flag": "FLAG_HIDDEN_ITEM_UNDERGROUND_PATH_EAST_WEST_TUNNEL_ICE_HEAL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 55,
+ "y": 2,
+ "elevation": 3,
+ "item": "ITEM_ETHER",
+ "flag": "FLAG_HIDDEN_ITEM_UNDERGROUND_PATH_EAST_WEST_TUNNEL_ETHER",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 62,
+ "y": 5,
+ "elevation": 3,
+ "item": "ITEM_ANTIDOTE",
+ "flag": "FLAG_HIDDEN_ITEM_UNDERGROUND_PATH_EAST_WEST_TUNNEL_ANTIDOTE",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/UndergroundPath_EastWestTunnel_Frlg/scripts.inc b/data/maps/UndergroundPath_EastWestTunnel_Frlg/scripts.inc
new file mode 100644
index 000000000000..0f9594032139
--- /dev/null
+++ b/data/maps/UndergroundPath_EastWestTunnel_Frlg/scripts.inc
@@ -0,0 +1,7 @@
+UndergroundPath_EastWestTunnel_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, UndergroundPath_EastWestTunnel_OnTransition
+ .byte 0
+
+UndergroundPath_EastWestTunnel_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_UNDERGROUND_PATH_EAST_WEST_TUNNEL
+ end
diff --git a/data/maps/UndergroundPath_NorthEntrance_Frlg/map.json b/data/maps/UndergroundPath_NorthEntrance_Frlg/map.json
new file mode 100644
index 000000000000..c7c985545068
--- /dev/null
+++ b/data/maps/UndergroundPath_NorthEntrance_Frlg/map.json
@@ -0,0 +1,66 @@
+{
+ "id": "MAP_UNDERGROUND_PATH_NORTH_ENTRANCE",
+ "name": "UndergroundPath_NorthEntrance_Frlg",
+ "layout": "LAYOUT_UNDERGROUND_PATH_ENTRANCE",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_UNDERGROUND_PATH",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 5,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "UndergroundPath_NorthEntrance_EventScript_Saige",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE5",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE5",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE5",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_UNDERGROUND_PATH_NORTH_SOUTH_TUNNEL",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/UndergroundPath_NorthEntrance_Frlg/scripts.inc b/data/maps/UndergroundPath_NorthEntrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..0e616bf7a32f
--- /dev/null
+++ b/data/maps/UndergroundPath_NorthEntrance_Frlg/scripts.inc
@@ -0,0 +1,36 @@
+UndergroundPath_NorthEntrance_Frlg_MapScripts::
+ .byte 0
+
+UndergroundPath_NorthEntrance_EventScript_Saige::
+ lock
+ faceplayer
+ setvar VAR_0x8008, INGAME_TRADE_NIDORAN
+ call EventScript_GetInGameTradeSpeciesInfo
+ goto_if_set FLAG_DID_MS_NIDO_TRADE, UndergroundPath_NorthEntrance_EventScript_AlreadyTraded
+ msgbox Trade_Text_DoYouHaveMonWantToTradeForMon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, UndergroundPath_NorthEntrance_EventScript_DeclineTrade
+ call EventScript_ChooseMonForInGameTrade
+ goto_if_ge VAR_0x8004, PARTY_SIZE, UndergroundPath_NorthEntrance_EventScript_DeclineTrade
+ call EventScript_GetInGameTradeSpecies
+ goto_if_ne VAR_RESULT, VAR_0x8009, UndergroundPath_NorthEntrance_EventScript_NotRequestedMon
+ call EventScript_DoInGameTrade
+ msgbox Trade_Text_ThanksYoureAPal
+ setflag FLAG_DID_MS_NIDO_TRADE
+ release
+ end
+
+UndergroundPath_NorthEntrance_EventScript_DeclineTrade::
+ msgbox Trade_Text_ThatsTooBad
+ release
+ end
+
+UndergroundPath_NorthEntrance_EventScript_NotRequestedMon::
+ bufferspeciesname STR_VAR_1, VAR_0x8009
+ msgbox Trade_Text_ThisIsNoMon
+ release
+ end
+
+UndergroundPath_NorthEntrance_EventScript_AlreadyTraded::
+ msgbox Trade_Text_HowIsMyOldMon
+ release
+ end
diff --git a/data/maps/UndergroundPath_NorthSouthTunnel_Frlg/map.json b/data/maps/UndergroundPath_NorthSouthTunnel_Frlg/map.json
new file mode 100644
index 000000000000..65180d428ed2
--- /dev/null
+++ b/data/maps/UndergroundPath_NorthSouthTunnel_Frlg/map.json
@@ -0,0 +1,108 @@
+{
+ "id": "MAP_UNDERGROUND_PATH_NORTH_SOUTH_TUNNEL",
+ "name": "UndergroundPath_NorthSouthTunnel_Frlg",
+ "layout": "LAYOUT_UNDERGROUND_PATH_NORTH_SOUTH_TUNNEL",
+ "music": "MUS_RG_ROUTE1",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_UNDERGROUND_PATH",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 3,
+ "elevation": 3,
+ "dest_map": "MAP_UNDERGROUND_PATH_NORTH_ENTRANCE",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 3,
+ "y": 60,
+ "elevation": 3,
+ "dest_map": "MAP_UNDERGROUND_PATH_SOUTH_ENTRANCE",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 5,
+ "y": 30,
+ "elevation": 3,
+ "item": "ITEM_POTION",
+ "flag": "FLAG_HIDDEN_ITEM_UNDERGROUND_PATH_NORTH_SOUTH_TUNNEL_POTION",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 5,
+ "y": 6,
+ "elevation": 3,
+ "item": "ITEM_ANTIDOTE",
+ "flag": "FLAG_HIDDEN_ITEM_UNDERGROUND_PATH_NORTH_SOUTH_TUNNEL_ANTIDOTE",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 2,
+ "y": 57,
+ "elevation": 3,
+ "item": "ITEM_BURN_HEAL",
+ "flag": "FLAG_HIDDEN_ITEM_UNDERGROUND_PATH_NORTH_SOUTH_TUNNEL_BURN_HEAL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 1,
+ "y": 24,
+ "elevation": 3,
+ "item": "ITEM_AWAKENING",
+ "flag": "FLAG_HIDDEN_ITEM_UNDERGROUND_PATH_NORTH_SOUTH_TUNNEL_AWAKENING",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 6,
+ "y": 53,
+ "elevation": 3,
+ "item": "ITEM_ICE_HEAL",
+ "flag": "FLAG_HIDDEN_ITEM_UNDERGROUND_PATH_NORTH_SOUTH_TUNNEL_ICE_HEAL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 3,
+ "y": 15,
+ "elevation": 3,
+ "item": "ITEM_PARALYZE_HEAL",
+ "flag": "FLAG_HIDDEN_ITEM_UNDERGROUND_PATH_NORTH_SOUTH_TUNNEL_PARALYZE_HEAL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 3,
+ "y": 39,
+ "elevation": 3,
+ "item": "ITEM_ETHER",
+ "flag": "FLAG_HIDDEN_ITEM_UNDERGROUND_PATH_NORTH_SOUTH_TUNNEL_ETHER",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/UndergroundPath_NorthSouthTunnel_Frlg/scripts.inc b/data/maps/UndergroundPath_NorthSouthTunnel_Frlg/scripts.inc
new file mode 100644
index 000000000000..7f2b8ad1aa11
--- /dev/null
+++ b/data/maps/UndergroundPath_NorthSouthTunnel_Frlg/scripts.inc
@@ -0,0 +1,7 @@
+UndergroundPath_NorthSouthTunnel_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, UndergroundPath_NorthSouthTunnel_OnTransition
+ .byte 0
+
+UndergroundPath_NorthSouthTunnel_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_UNDERGROUND_PATH_NORTH_SOUTH_TUNNEL
+ end
diff --git a/data/maps/UndergroundPath_SouthEntrance_Frlg/map.json b/data/maps/UndergroundPath_SouthEntrance_Frlg/map.json
new file mode 100644
index 000000000000..b03ba4db3056
--- /dev/null
+++ b/data/maps/UndergroundPath_SouthEntrance_Frlg/map.json
@@ -0,0 +1,70 @@
+{
+ "id": "MAP_UNDERGROUND_PATH_SOUTH_ENTRANCE",
+ "name": "UndergroundPath_SouthEntrance_Frlg",
+ "layout": "LAYOUT_UNDERGROUND_PATH_ENTRANCE",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_UNDERGROUND_PATH",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 5,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "UndergroundPath_SouthEntrance_EventScript_Woman",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE6",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE6",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE6",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_UNDERGROUND_PATH_NORTH_SOUTH_TUNNEL",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+
+ ]
+}
diff --git a/data/maps/UndergroundPath_SouthEntrance_Frlg/scripts.inc b/data/maps/UndergroundPath_SouthEntrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..6fb80d2162ee
--- /dev/null
+++ b/data/maps/UndergroundPath_SouthEntrance_Frlg/scripts.inc
@@ -0,0 +1,11 @@
+UndergroundPath_SouthEntrance_Frlg_MapScripts::
+ .byte 0
+
+UndergroundPath_SouthEntrance_EventScript_Woman::
+ msgbox UndergroundPath_SouthEntrance_Text_PeopleLoseThingsInTheDarkness, MSGBOX_NPC
+ end
+
+UndergroundPath_SouthEntrance_Text_PeopleLoseThingsInTheDarkness::
+ .string "People often lose things in the\n"
+ .string "darkness of the UNDERGROUND PATH.$"
+
diff --git a/data/maps/UndergroundPath_WestEntrance_Frlg/map.json b/data/maps/UndergroundPath_WestEntrance_Frlg/map.json
new file mode 100644
index 000000000000..734cdefb691f
--- /dev/null
+++ b/data/maps/UndergroundPath_WestEntrance_Frlg/map.json
@@ -0,0 +1,66 @@
+{
+ "id": "MAP_UNDERGROUND_PATH_WEST_ENTRANCE",
+ "name": "UndergroundPath_WestEntrance_Frlg",
+ "layout": "LAYOUT_UNDERGROUND_PATH_ENTRANCE",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_UNDERGROUND_PATH_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 5,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "UndergroundPath_WestEntrance_EventScript_BaldingMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE7",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE7",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE7",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "dest_map": "MAP_UNDERGROUND_PATH_EAST_WEST_TUNNEL",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/UndergroundPath_WestEntrance_Frlg/scripts.inc b/data/maps/UndergroundPath_WestEntrance_Frlg/scripts.inc
new file mode 100644
index 000000000000..dac2f441c05c
--- /dev/null
+++ b/data/maps/UndergroundPath_WestEntrance_Frlg/scripts.inc
@@ -0,0 +1,11 @@
+UndergroundPath_WestEntrance_Frlg_MapScripts::
+ .byte 0
+
+UndergroundPath_WestEntrance_EventScript_BaldingMan::
+ msgbox UndergroundPath_WestEntrance_Text_SleepyMonNearCeladon, MSGBOX_NPC
+ end
+
+UndergroundPath_WestEntrance_Text_SleepyMonNearCeladon::
+ .string "I heard a sleepy POKéMON appeared\n"
+ .string "out near CELADON CITY, too.$"
+
diff --git a/data/maps/UnionRoom_Frlg/map.json b/data/maps/UnionRoom_Frlg/map.json
new file mode 100644
index 000000000000..fe48f7d72d79
--- /dev/null
+++ b/data/maps/UnionRoom_Frlg/map.json
@@ -0,0 +1,165 @@
+{
+ "id": "MAP_UNION_ROOM_FRLG",
+ "name": "UnionRoom_Frlg",
+ "layout": "LAYOUT_UNION_ROOM_FRLG",
+ "music": "MUS_RG_UNION_ROOM",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_SPECIAL_AREA",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_LINK",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_UNION_ROOM_RECEPTIONIST",
+ "x": 3,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "UnionRoom_EventScript_Attendant_Frlg",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_UNION_ROOM_PLAYER_4",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_3",
+ "x": 1,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "UnionRoom_EventScript_Player4_Frlg",
+ "flag": "FLAG_HIDE_UNION_ROOM_PLAYER_4"
+ },
+ {
+ "local_id": "LOCALID_UNION_ROOM_PLAYER_8",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_7",
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "UnionRoom_EventScript_Player8_Frlg",
+ "flag": "FLAG_HIDE_UNION_ROOM_PLAYER_8"
+ },
+ {
+ "local_id": "LOCALID_UNION_ROOM_PLAYER_7",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_6",
+ "x": 1,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "UnionRoom_EventScript_Player7_Frlg",
+ "flag": "FLAG_HIDE_UNION_ROOM_PLAYER_7"
+ },
+ {
+ "local_id": "LOCALID_UNION_ROOM_PLAYER_6",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_5",
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "UnionRoom_EventScript_Player6_Frlg",
+ "flag": "FLAG_HIDE_UNION_ROOM_PLAYER_6"
+ },
+ {
+ "local_id": "LOCALID_UNION_ROOM_PLAYER_5",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_4",
+ "x": 13,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "UnionRoom_EventScript_Player5_Frlg",
+ "flag": "FLAG_HIDE_UNION_ROOM_PLAYER_5"
+ },
+ {
+ "local_id": "LOCALID_UNION_ROOM_PLAYER_3",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_2",
+ "x": 10,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "UnionRoom_EventScript_Player3_Frlg",
+ "flag": "FLAG_HIDE_UNION_ROOM_PLAYER_3"
+ },
+ {
+ "local_id": "LOCALID_UNION_ROOM_PLAYER_2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_1",
+ "x": 13,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "UnionRoom_EventScript_Player2_Frlg",
+ "flag": "FLAG_HIDE_UNION_ROOM_PLAYER_2"
+ },
+ {
+ "local_id": "LOCALID_UNION_ROOM_PLAYER_1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_0",
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "UnionRoom_EventScript_Player1_Frlg",
+ "flag": "FLAG_HIDE_UNION_ROOM_PLAYER_1"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 7,
+ "y": 11,
+ "elevation": 3,
+ "dest_map": "MAP_DYNAMIC",
+ "dest_warp_id": "WARP_ID_DYNAMIC"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/UnionRoom_Frlg/scripts.inc b/data/maps/UnionRoom_Frlg/scripts.inc
new file mode 100644
index 000000000000..5412274032f8
--- /dev/null
+++ b/data/maps/UnionRoom_Frlg/scripts.inc
@@ -0,0 +1,107 @@
+UnionRoom_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_RESUME, UnionRoom_OnResume_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, UnionRoom_OnTransition_Frlg
+ .byte 0
+
+UnionRoom_OnResume_Frlg::
+ setflag FLAG_HIDE_UNION_ROOM_PLAYER_1
+ setflag FLAG_HIDE_UNION_ROOM_PLAYER_2
+ setflag FLAG_HIDE_UNION_ROOM_PLAYER_3
+ setflag FLAG_HIDE_UNION_ROOM_PLAYER_4
+ setflag FLAG_HIDE_UNION_ROOM_PLAYER_5
+ setflag FLAG_HIDE_UNION_ROOM_PLAYER_6
+ setflag FLAG_HIDE_UNION_ROOM_PLAYER_7
+ setflag FLAG_HIDE_UNION_ROOM_PLAYER_8
+ removeobject LOCALID_UNION_ROOM_PLAYER_1
+ removeobject LOCALID_UNION_ROOM_PLAYER_2
+ removeobject LOCALID_UNION_ROOM_PLAYER_3
+ removeobject LOCALID_UNION_ROOM_PLAYER_4
+ removeobject LOCALID_UNION_ROOM_PLAYER_5
+ removeobject LOCALID_UNION_ROOM_PLAYER_6
+ removeobject LOCALID_UNION_ROOM_PLAYER_7
+ removeobject LOCALID_UNION_ROOM_PLAYER_8
+ special RunUnionRoom
+ end
+
+UnionRoom_OnTransition_Frlg::
+ setflag FLAG_TEMP_HIDE_FOLLOWER
+ end
+
+UnionRoom_EventScript_Player1_Frlg::
+ lock
+ faceplayer
+ setvar VAR_RESULT, 1
+ waitstate
+ release
+ end
+
+UnionRoom_EventScript_Player2_Frlg::
+ lock
+ faceplayer
+ setvar VAR_RESULT, 2
+ waitstate
+ release
+ end
+
+UnionRoom_EventScript_Player3_Frlg::
+ lock
+ faceplayer
+ setvar VAR_RESULT, 3
+ waitstate
+ release
+ end
+
+UnionRoom_EventScript_Player4_Frlg::
+ lock
+ faceplayer
+ setvar VAR_RESULT, 4
+ waitstate
+ release
+ end
+
+UnionRoom_EventScript_Player5_Frlg::
+ lock
+ faceplayer
+ setvar VAR_RESULT, 5
+ waitstate
+ release
+ end
+
+UnionRoom_EventScript_Player6_Frlg::
+ lock
+ faceplayer
+ setvar VAR_RESULT, 6
+ waitstate
+ release
+ end
+
+UnionRoom_EventScript_Player7_Frlg::
+ lock
+ faceplayer
+ setvar VAR_RESULT, 7
+ waitstate
+ release
+ end
+
+UnionRoom_EventScript_Player8_Frlg::
+ lock
+ faceplayer
+ setvar VAR_RESULT, 8
+ waitstate
+ release
+ end
+
+UnionRoom_EventScript_Attendant_Frlg::
+ lock
+ faceplayer
+ setvar VAR_RESULT, 9
+ waitstate
+ release
+ end
+
+UnionRoom_EventScript_Unused_Frlg::
+ lockall
+ setvar VAR_RESULT, 10
+ waitstate
+ releaseall
+ end
diff --git a/data/maps/VermilionCity_Frlg/map.json b/data/maps/VermilionCity_Frlg/map.json
new file mode 100644
index 000000000000..2c3035bdfe63
--- /dev/null
+++ b/data/maps/VermilionCity_Frlg/map.json
@@ -0,0 +1,306 @@
+{
+ "id": "MAP_VERMILION_CITY",
+ "name": "VermilionCity_Frlg",
+ "layout": "LAYOUT_VERMILION_CITY",
+ "music": "MUS_RG_VERMILLION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VERMILION_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE6",
+ "offset": 12,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_ROUTE11",
+ "offset": 10,
+ "direction": "right"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 22,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 4,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 17,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_EventScript_OldMan1",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_2",
+ "x": 36,
+ "y": 10,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_EventScript_OldMan2",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MACHOP",
+ "x": 35,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_EventScript_Machop",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 31,
+ "y": 30,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 4,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_EventScript_Sailor",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_VERMILION_FERRY_SAILOR",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 24,
+ "y": 33,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_EventScript_FerrySailor",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 19,
+ "y": 24,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SCIENTIST",
+ "x": 25,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 4,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_EventScript_OaksAide",
+ "flag": "FLAG_HIDE_VERMILION_CITY_OAKS_AIDE"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 22,
+ "y": 34,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_EXTERIOR",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 23,
+ "y": 34,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_EXTERIOR",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 24,
+ "y": 34,
+ "elevation": 3,
+ "dest_map": "MAP_SSANNE_EXTERIOR",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 9,
+ "y": 6,
+ "elevation": 0,
+ "dest_map": "MAP_VERMILION_CITY_HOUSE1",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 15,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 12,
+ "y": 17,
+ "elevation": 0,
+ "dest_map": "MAP_VERMILION_CITY_POKEMON_FAN_CLUB",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 19,
+ "y": 17,
+ "elevation": 0,
+ "dest_map": "MAP_VERMILION_CITY_HOUSE2",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 29,
+ "y": 17,
+ "elevation": 0,
+ "dest_map": "MAP_VERMILION_CITY_MART",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 28,
+ "y": 24,
+ "elevation": 0,
+ "dest_map": "MAP_VERMILION_CITY_HOUSE3",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 14,
+ "y": 25,
+ "elevation": 0,
+ "dest_map": "MAP_VERMILION_CITY_GYM",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 22,
+ "y": 33,
+ "elevation": 0,
+ "var": "VAR_VERMILION_CITY_TICKET_CHECK_TRIGGER",
+ "var_value": "0",
+ "script": "VermilionCity_EventScript_CheckTicketLeft"
+ },
+ {
+ "type": "trigger",
+ "x": 23,
+ "y": 33,
+ "elevation": 0,
+ "var": "VAR_VERMILION_CITY_TICKET_CHECK_TRIGGER",
+ "var_value": "0",
+ "script": "VermilionCity_EventScript_CheckTicketRight"
+ },
+ {
+ "type": "trigger",
+ "x": 22,
+ "y": 32,
+ "elevation": 0,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "VermilionCity_EventScript_ExitedTicketCheck"
+ },
+ {
+ "type": "trigger",
+ "x": 23,
+ "y": 32,
+ "elevation": 0,
+ "var": "VAR_TEMP_1",
+ "var_value": "0",
+ "script": "VermilionCity_EventScript_ExitedTicketCheck"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 33,
+ "y": 6,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_EventScript_CitySign"
+ },
+ {
+ "type": "sign",
+ "x": 10,
+ "y": 17,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_EventScript_PokemonFanClubSign"
+ },
+ {
+ "type": "sign",
+ "x": 10,
+ "y": 24,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_EventScript_GymSign"
+ },
+ {
+ "type": "sign",
+ "x": 34,
+ "y": 18,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_EventScript_HarborSign"
+ },
+ {
+ "type": "sign",
+ "x": 45,
+ "y": 17,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_EventScript_SnorlaxNotice"
+ },
+ {
+ "type": "hidden_item",
+ "x": 14,
+ "y": 11,
+ "elevation": 3,
+ "item": "ITEM_MAX_ETHER",
+ "flag": "FLAG_HIDDEN_ITEM_VERMILION_CITY_MAX_ETHER",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/VermilionCity_Frlg/scripts.inc b/data/maps/VermilionCity_Frlg/scripts.inc
new file mode 100644
index 000000000000..f5acbc95e3ea
--- /dev/null
+++ b/data/maps/VermilionCity_Frlg/scripts.inc
@@ -0,0 +1,396 @@
+VermilionCity_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, VermilionCity_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, VermilionCity_OnFrame
+ .byte 0
+
+VermilionCity_OnFrame::
+ map_script_2 VAR_MAP_SCENE_VERMILION_CITY, 2, VermilionCity_EventScript_ExitSSAnne
+ .2byte 0
+
+VermilionCity_EventScript_ExitSSAnne::
+ lockall
+ applymovement LOCALID_PLAYER, VermilionCity_Movement_ExitSSAnne
+ waitmovement 0
+ setvar VAR_MAP_SCENE_VERMILION_CITY, 3
+ releaseall
+ end
+
+VermilionCity_Movement_ExitSSAnne::
+ walk_up
+ walk_up
+ step_end
+
+VermilionCity_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_VERMILION_CITY
+ call_if_set FLAG_TALKED_TO_OAKS_AIDE_IN_VERMILION, VermilionCity_EventScript_HideOaksAide
+ end
+
+VermilionCity_EventScript_HideOaksAide::
+ setflag FLAG_HIDE_VERMILION_CITY_OAKS_AIDE
+ return
+
+VermilionCity_EventScript_Woman::
+ msgbox VermilionCity_Text_GrimerMultipliesInSludge, MSGBOX_NPC
+ end
+
+VermilionCity_EventScript_OldMan1::
+ lock
+ faceplayer
+ goto_if_eq VAR_MAP_SCENE_VERMILION_CITY, 3, VermilionCity_EventScript_OldMan1SSAnneLeft
+ msgbox VermilionCity_Text_DidYouSeeSSAnneInHarbor
+ release
+ end
+
+VermilionCity_EventScript_OldMan1SSAnneLeft::
+ msgbox VermilionCity_Text_SSAnneHasDepartedForYear
+ release
+ end
+
+VermilionCity_EventScript_FerrySailor::
+ lock
+ faceplayer
+ goto_if_eq VAR_MAP_SCENE_VERMILION_CITY, 3, VermilionCity_EventScript_CheckSeagallopPresent
+ msgbox VermilionCity_Text_WelcomeToTheSSAnne
+ release
+ end
+
+VermilionCity_EventScript_CheckHasMysticTicket::
+ goto_if_unset FLAG_ENABLE_SHIP_NAVEL_ROCK, EventScript_SetResultFalse
+ checkitem ITEM_MYSTIC_TICKET
+ goto_if_eq VAR_RESULT, FALSE, EventScript_SetResultFalse
+ goto EventScript_SetResultTrue
+ end
+
+VermilionCity_EventScript_CheckHasAuroraTicket::
+ goto_if_unset FLAG_ENABLE_SHIP_BIRTH_ISLAND, EventScript_SetResultFalse
+ checkitem ITEM_AURORA_TICKET
+ goto_if_eq VAR_RESULT, FALSE, EventScript_SetResultFalse
+ goto EventScript_SetResultTrue
+ end
+
+VermilionCity_EventScript_CheckSeagallopPresent::
+ setvar VAR_0x8004, SEAGALLOP_VERMILION_CITY
+ 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_ChooseSeagallopDestRainbowPass::
+ call VermilionCity_EventScript_CheckHasMysticTicket
+ goto_if_eq VAR_RESULT, TRUE, VermilionCity_EventScript_HasMysticTicket
+ call VermilionCity_EventScript_CheckHasAuroraTicket
+ goto_if_eq VAR_RESULT, TRUE, VermilionCity_EventScript_HasAuroraTicket
+ setvar VAR_0x8004, SEAGALLOP_VERMILION_CITY
+ message VermilionCity_Text_BoardSeagallopRainbowPass
+ waitmessage
+ goto EventScript_SeviiDestinationsPage1
+ end
+
+VermilionCity_EventScript_HasMysticTicket::
+ call VermilionCity_EventScript_CheckHasAuroraTicket
+ goto_if_eq VAR_RESULT, TRUE, VermilionCity_EventScript_HasMysticAndAuroraTickets
+ call_if_unset FLAG_SHOWN_MYSTIC_TICKET, VermilionCity_EventScript_ShowMysticTicket
+ message VermilionCity_Text_BoardSeagallopFerry
+ waitmessage
+ multichoice 17, 6, MULTI_SEVII_NAVEL, FALSE
+ switch VAR_RESULT
+ case 0, EventScript_SeviiDestinationsPage1
+ case 1, EventScript_SailToNavelRock
+ case 2, EventScript_CancelSail
+ case 127, EventScript_CancelSail
+ end
+
+VermilionCity_EventScript_ShowMysticTicket::
+ setflag FLAG_SHOWN_MYSTIC_TICKET
+ msgbox VermilionCity_Text_OhMysticTicketTakeYouToNavelRock
+ return
+
+VermilionCity_EventScript_HasAuroraTicket::
+ call_if_unset FLAG_SHOWN_AURORA_TICKET, VermilionCity_EventScript_ShowAuroraTicket
+ message VermilionCity_Text_BoardSeagallopFerry
+ waitmessage
+ multichoice 13, 6, MULTI_SEVII_BIRTH, FALSE
+ switch VAR_RESULT
+ case 0, EventScript_SeviiDestinationsPage1
+ case 1, EventScript_SailToBirthIsland
+ case 2, EventScript_CancelSail
+ case 127, EventScript_CancelSail
+ end
+
+VermilionCity_EventScript_ShowAuroraTicket::
+ setflag FLAG_SHOWN_AURORA_TICKET
+ msgbox VermilionCity_Text_OhAuroraTicketTakeYouToBirthIsland
+ return
+
+VermilionCity_EventScript_HasMysticAndAuroraTickets::
+ call_if_unset FLAG_SHOWN_MYSTIC_TICKET, VermilionCity_EventScript_ShowMysticTicket
+ call_if_unset FLAG_SHOWN_AURORA_TICKET, VermilionCity_EventScript_ShowAuroraTicket
+ message VermilionCity_Text_BoardSeagallopFerry
+ waitmessage
+ multichoice 13, 5, MULTI_SEVII_NAVEL_BIRTH, FALSE
+ switch VAR_RESULT
+ case 0, EventScript_SeviiDestinationsPage1
+ case 1, EventScript_SailToNavelRock
+ case 2, EventScript_SailToBirthIsland
+ case 3, EventScript_CancelSail
+ case 127, EventScript_CancelSail
+ end
+
+EventScript_SailToNavelRock::
+ msgbox VermilionCity_Text_Seagallop10Departing
+ setvar VAR_0x8004, SEAGALLOP_VERMILION_CITY
+ setvar VAR_0x8006, SEAGALLOP_NAVEL_ROCK
+ goto EventScript_SetSail
+ end
+
+EventScript_SailToBirthIsland::
+ msgbox VermilionCity_Text_Seagallop12Departing
+ setvar VAR_0x8004, SEAGALLOP_VERMILION_CITY
+ setvar VAR_0x8006, SEAGALLOP_BIRTH_ISLAND
+ goto EventScript_SetSail
+ end
+
+VermilionCity_EventScript_ChooseSeagallopDestTriPass::
+ message VermilionCity_Text_BoardSeagallopTriPass
+ waitmessage
+ setvar VAR_0x8004, SEAGALLOP_VERMILION_CITY
+ multichoice 19, 5, MULTI_SEAGALLOP_123, FALSE
+ switch VAR_RESULT
+ case 0, EventScript_SailToOneIsland2
+ case 1, EventScript_SailToTwoIsland2
+ case 2, EventScript_SailToThreeIsland2
+ case 3, EventScript_CancelSail
+ case 127, EventScript_CancelSail
+ end
+
+@ Unreachable
+Vermilion_EventScript_Unused::
+ release
+ end
+
+VermilionCity_EventScript_CheckTicketLeft::
+ lockall
+ goto VermilionCity_EventScript_CheckTicket
+ end
+
+VermilionCity_EventScript_CheckTicketRight::
+ lockall
+ goto VermilionCity_EventScript_CheckTicket
+ end
+
+VermilionCity_EventScript_ExitedTicketCheck::
+ lockall
+ setvar VAR_VERMILION_CITY_TICKET_CHECK_TRIGGER, 0
+ releaseall
+ end
+
+VermilionCity_EventScript_CheckTicket::
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_VERMILION_FERRY_SAILOR, Common_Movement_WalkInPlaceFasterLeft
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ goto_if_eq VAR_MAP_SCENE_VERMILION_CITY, 3, VermilionCity_EventScript_CheckSeagallopPresentTrigger
+ msgbox VermilionCity_Text_DoYouHaveATicket
+ goto_if_unset FLAG_GOT_SS_TICKET, VermilionCity_EventScript_DontHaveSSTicket
+ msgbox VermilionCity_Text_FlashedSSTicket
+ setvar VAR_VERMILION_CITY_TICKET_CHECK_TRIGGER, 1
+ releaseall
+ end
+
+VermilionCity_EventScript_DontHaveSSTicket::
+ msgbox VermilionCity_Text_DontHaveNeededSSTicket
+ closemessage
+ goto VermilionCity_EventScript_WalkUpPier
+ end
+
+VermilionCity_EventScript_CheckSeagallopPresentTrigger::
+ setvar VAR_0x8004, SEAGALLOP_VERMILION_CITY
+ 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
+ closemessage
+ goto VermilionCity_EventScript_WalkUpPier
+ end
+
+VermilionCity_EventScript_Sailor::
+ msgbox VermilionCity_Text_SSAnneVisitsOnceAYear, MSGBOX_NPC
+ end
+
+VermilionCity_EventScript_OaksAide::
+ lock
+ faceplayer
+ setflag FLAG_TALKED_TO_OAKS_AIDE_IN_VERMILION
+ msgbox VermilionCity_Text_Route2AideHasPackageForYou
+ release
+ end
+
+VermilionCity_EventScript_OldMan2::
+ msgbox VermilionCity_Text_BuildingOnThisLand, MSGBOX_NPC
+ end
+
+VermilionCity_EventScript_Machop::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_MACHOP, CRY_MODE_NORMAL
+ msgbox VermilionCity_Text_Machop
+ waitmoncry
+ msgbox VermilionCity_Text_MachopStompingLandFlat
+ release
+ end
+
+VermilionCity_EventScript_CitySign::
+ msgbox VermilionCity_Text_CitySign, MSGBOX_SIGN
+ end
+
+VermilionCity_EventScript_SnorlaxNotice::
+ msgbox VermilionCity_Text_SnorlaxBlockingRoute12, MSGBOX_SIGN
+ end
+
+VermilionCity_EventScript_PokemonFanClubSign::
+ msgbox VermilionCity_Text_PokemonFanClubSign, MSGBOX_SIGN
+ end
+
+VermilionCity_EventScript_GymSign::
+ lockall
+ famechecker FAMECHECKER_LTSURGE, 0
+ msgbox VermilionCity_Text_GymSign
+ releaseall
+ end
+
+VermilionCity_EventScript_HarborSign::
+ msgbox VermilionCity_Text_VermilionHarbor, MSGBOX_SIGN
+ end
+
+VermilionCity_Text_GrimerMultipliesInSludge::
+ .string "We're careful about pollution here.\p"
+ .string "We've heard GRIMER multiplies in\n"
+ .string "toxic sludge.$"
+
+VermilionCity_Text_DidYouSeeSSAnneInHarbor::
+ .string "Did you see the S.S. ANNE moored\n"
+ .string "in the harbor?$"
+
+VermilionCity_Text_SSAnneHasDepartedForYear::
+ .string "So, the S.S. ANNE has departed?\p"
+ .string "She'll be back in VERMILION about\n"
+ .string "this time next year.$"
+
+VermilionCity_Text_BuildingOnThisLand::
+ .string "I'm putting up a building on this\n"
+ .string "plot of land. I own it all.\p"
+ .string "My POKéMON is tamping the land\n"
+ .string "to lay the foundation.$"
+
+VermilionCity_Text_Machop::
+ .string "MACHOP: Guoh! Gogogoh!$"
+
+VermilionCity_Text_MachopStompingLandFlat::
+ .string "A MACHOP is stomping the land flat.$"
+
+VermilionCity_Text_SSAnneVisitsOnceAYear::
+ .string "The S.S. ANNE is a famous luxury\n"
+ .string "cruise ship.\p"
+ .string "It visits VERMILION once a year.$"
+
+VermilionCity_Text_CitySign::
+ .string "VERMILION CITY\n"
+ .string "The Port of Exquisite Sunsets$"
+
+VermilionCity_Text_SnorlaxBlockingRoute12::
+ .string "NOTICE!\p"
+ .string "ROUTE 12 may be blocked off by a\n"
+ .string "sleeping POKéMON.\p"
+ .string "Detour through ROCK TUNNEL to\n"
+ .string "LAVENDER TOWN.\p"
+ .string "VERMILION POLICE$"
+
+VermilionCity_Text_PokemonFanClubSign::
+ .string "POKéMON FAN CLUB\n"
+ .string "All POKéMON fans welcome!$"
+
+VermilionCity_Text_GymSign::
+ .string "VERMILION CITY POKéMON GYM\n"
+ .string "LEADER: LT. SURGE\l"
+ .string "The Lightning American!$"
+
+VermilionCity_Text_VermilionHarbor::
+ .string "VERMILION HARBOR$"
+
+VermilionCity_Text_WelcomeToTheSSAnne::
+ .string "Welcome to the S.S. ANNE!$"
+
+VermilionCity_Text_DoYouHaveATicket::
+ .string "Welcome to the S.S. ANNE!\p"
+ .string "Excuse me, do you have a ticket?$"
+
+VermilionCity_Text_FlashedSSTicket::
+ .string "{FONT_NORMAL}{PLAYER} flashed the S.S. TICKET!\p"
+ .string "{FONT_MALE}Great!\n"
+ .string "Welcome to the S.S. ANNE!$"
+
+VermilionCity_Text_DontHaveNeededSSTicket::
+ .string "{FONT_NORMAL}{PLAYER} doesn't have the needed\n"
+ .string "S.S. TICKET.\p"
+ .string "{FONT_MALE}Sorry!\p"
+ .string "You need a ticket to get aboard.$"
+
+VermilionCity_Text_TheShipSetSail::
+ .string "The ship set sail.$"
+
+VermilionCity_Text_BoardSeagallopTriPass::
+ .string "Ah, you have a TRI-PASS.\p"
+ .string "Would you like to board\n"
+ .string "a SEAGALLOP ferry?$"
+
+VermilionCity_Text_Seagallop7Departing::
+ .string "Okay, everything's in order.\p"
+ .string "SEAGALLOP HI-SPEED 7 will be\n"
+ .string "departing immediately.$"
+
+VermilionCity_Text_BoardSeagallopRainbowPass::
+ .string "Ah, you have a RAINBOW PASS.\p"
+ .string "Would you like to board\n"
+ .string "a SEAGALLOP ferry?$"
+
+VermilionCity_Text_OhMysticTicketTakeYouToNavelRock::
+ .string "Oh! That's a MYSTICTICKET!\n"
+ .string "Now that is rare.\p"
+ .string "We'll be happy to take you to\n"
+ .string "NAVEL ROCK anytime.$"
+
+VermilionCity_Text_OhAuroraTicketTakeYouToBirthIsland::
+ .string "Oh! That's an AURORATICKET!\n"
+ .string "Now that is rare.\p"
+ .string "We'll be happy to take you to\n"
+ .string "BIRTH ISLAND anytime.$"
+
+VermilionCity_Text_BoardSeagallopFerry::
+ .string "Would you like to board\n"
+ .string "a SEAGALLOP ferry?$"
+
+VermilionCity_Text_Seagallop10Departing::
+ .string "Okay, everything's in order for you\n"
+ .string "to board a special ferry.\p"
+ .string "SEAGALLOP HI-SPEED 10 will be\n"
+ .string "departing immediately.$"
+
+VermilionCity_Text_Seagallop12Departing::
+ .string "Okay, everything's in order for you\n"
+ .string "to board a special ferry.\p"
+ .string "SEAGALLOP HI-SPEED 12 will be\n"
+ .string "departing immediately.$"
+
+VermilionCity_Text_Route2AideHasPackageForYou::
+ .string "Oh, hello, {PLAYER}!\n"
+ .string "How are you doing?\p"
+ .string "It's me, one of PROF. OAK's AIDES.\p"
+ .string "Did you meet the other AIDE?\p"
+ .string "He had a package from PROF. OAK\n"
+ .string "for you, {PLAYER}.\p"
+ .string "He said he'd look for you around\n"
+ .string "ROUTE 2, {PLAYER}.\p"
+ .string "If you're in the ROUTE 2 area,\n"
+ .string "please look for him.$"
+
diff --git a/data/maps/VermilionCity_Gym_Frlg/map.json b/data/maps/VermilionCity_Gym_Frlg/map.json
new file mode 100644
index 000000000000..070d9112e193
--- /dev/null
+++ b/data/maps/VermilionCity_Gym_Frlg/map.json
@@ -0,0 +1,252 @@
+{
+ "id": "MAP_VERMILION_CITY_GYM",
+ "name": "VermilionCity_Gym_Frlg",
+ "layout": "LAYOUT_VERMILION_CITY_GYM",
+ "music": "MUS_GYM",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VERMILION_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_GYM",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LT_SURGE",
+ "x": 5,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_Gym_EventScript_LtSurge",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 2,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "VermilionCity_Gym_EventScript_Baily",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SAILOR_FRLG",
+ "x": 8,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "VermilionCity_Gym_EventScript_Dwayne",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GYM_GUY",
+ "x": 4,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_Gym_EventScript_GymGuy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "VermilionCity_Gym_EventScript_Tucker",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 19,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "9"
+ },
+ {
+ "x": 5,
+ "y": 19,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "9"
+ },
+ {
+ "x": 6,
+ "y": 19,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "9"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 17,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_Gym_EventScript_GymStatue"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 17,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_Gym_EventScript_GymStatue"
+ },
+ {
+ "type": "sign",
+ "x": 1,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_Gym_EventScript_TrashCan1"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_Gym_EventScript_TrashCan2"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_Gym_EventScript_TrashCan3"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_Gym_EventScript_TrashCan4"
+ },
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_Gym_EventScript_TrashCan5"
+ },
+ {
+ "type": "sign",
+ "x": 1,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_Gym_EventScript_TrashCan6"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_Gym_EventScript_TrashCan7"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_Gym_EventScript_TrashCan8"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_Gym_EventScript_TrashCan9"
+ },
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_Gym_EventScript_TrashCan10"
+ },
+ {
+ "type": "sign",
+ "x": 1,
+ "y": 14,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_Gym_EventScript_TrashCan11"
+ },
+ {
+ "type": "sign",
+ "x": 3,
+ "y": 14,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_Gym_EventScript_TrashCan12"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 14,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_Gym_EventScript_TrashCan13"
+ },
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 14,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_Gym_EventScript_TrashCan14"
+ },
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 14,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_Gym_EventScript_TrashCan15"
+ }
+ ]
+}
diff --git a/data/maps/VermilionCity_Gym_Frlg/scripts.inc b/data/maps/VermilionCity_Gym_Frlg/scripts.inc
new file mode 100644
index 000000000000..37aa1b698b18
--- /dev/null
+++ b/data/maps/VermilionCity_Gym_Frlg/scripts.inc
@@ -0,0 +1,421 @@
+.equ FOUND_FIRST_SWITCH, FLAG_TEMP_1
+.equ SWITCH1_ID, VAR_0x8004
+.equ SWITCH2_ID, VAR_0x8005
+.equ TRASH_CAN_ID, VAR_0x8008
+
+VermilionCity_Gym_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, VermilionCity_Gym_OnLoad
+ map_script MAP_SCRIPT_ON_TRANSITION, VermilionCity_Gym_OnTransition
+ .byte 0
+
+VermilionCity_Gym_OnLoad::
+ call_if_set FOUND_FIRST_SWITCH, VermilionCity_Gym_EventScript_SetOneBeamOff
+ call_if_set FLAG_FOUND_BOTH_VERMILION_GYM_SWITCHES, VermilionCity_Gym_EventScript_SetBeamsOff
+ end
+
+VermilionCity_Gym_EventScript_SetOneBeamOff::
+ setmetatile 3, 6, METATILE_VermilionGym_Beam_Node_TopLeft_HalfOn, 1
+ setmetatile 4, 6, METATILE_VermilionGym_Beam_Node_TopLeft_Edge_HalfOn, 1
+ setmetatile 5, 6, METATILE_VermilionGym_Beam_MidTop_HalfOn, 1
+ setmetatile 6, 6, METATILE_VermilionGym_Beam_Node_TopRight_Edge_HalfOn, 1
+ setmetatile 7, 6, METATILE_VermilionGym_Beam_Node_TopRight_HalfOn, 1
+ setmetatile 3, 7, METATILE_VermilionGym_Beam_Node_BottomLeft_HalfOn, 1
+ setmetatile 4, 7, METATILE_VermilionGym_Beam_Node_BottomLeft_Edge_HalfOn, 1
+ setmetatile 5, 7, METATILE_VermilionGym_Beam_MidBottom_HalfOn, 1
+ setmetatile 6, 7, METATILE_VermilionGym_Beam_Node_BottomRight_Edge_HalfOn, 1
+ setmetatile 7, 7, METATILE_VermilionGym_Beam_Node_BottomRight_HalfOn, 1
+ return
+
+VermilionCity_Gym_EventScript_SetBeamsOff::
+ setmetatile 3, 6, METATILE_VermilionGym_Beam_Node_TopLeft_Off, 1
+ setmetatile 4, 6, METATILE_VermilionGym_Beam_Node_TopLeft_Edge_Off, 0
+ setmetatile 5, 6, METATILE_VermilionGym_Floor, 0
+ setmetatile 6, 6, METATILE_VermilionGym_Beam_Node_TopRight_Edge_Off, 0
+ setmetatile 7, 6, METATILE_VermilionGym_Beam_Node_TopRight_Off, 1
+ setmetatile 3, 7, METATILE_VermilionGym_Beam_Node_BottomLeft_Off, 1
+ setmetatile 4, 7, METATILE_VermilionGym_Beam_Node_BottomLeft_Edge_Off, 0
+ setmetatile 5, 7, METATILE_VermilionGym_Floor, 0
+ setmetatile 6, 7, METATILE_VermilionGym_Beam_Node_BottomRight_Edge_Off, 0
+ setmetatile 7, 7, METATILE_VermilionGym_Beam_Node_BottomRight_Off, 1
+ return
+
+VermilionCity_Gym_OnTransition::
+ call VermilionCity_Gym_EventScript_InitTrashCans
+ end
+
+VermilionCity_Gym_EventScript_InitTrashCans::
+ goto_if_set FLAG_FOUND_BOTH_VERMILION_GYM_SWITCHES, Common_EventScript_NopReturn
+ special SetVermilionTrashCans
+ copyvar VAR_TEMP_0, SWITCH1_ID
+ copyvar VAR_TEMP_1, SWITCH2_ID
+ return
+
+VermilionCity_Gym_EventScript_TrashCan1::
+ lockall
+ setvar TRASH_CAN_ID, 1
+ goto VermilionCity_Gym_EventScript_TrashCan
+ end
+
+VermilionCity_Gym_EventScript_TrashCan2::
+ lockall
+ setvar TRASH_CAN_ID, 2
+ goto VermilionCity_Gym_EventScript_TrashCan
+ end
+
+VermilionCity_Gym_EventScript_TrashCan3::
+ lockall
+ setvar TRASH_CAN_ID, 3
+ goto VermilionCity_Gym_EventScript_TrashCan
+ end
+
+VermilionCity_Gym_EventScript_TrashCan4::
+ lockall
+ setvar TRASH_CAN_ID, 4
+ goto VermilionCity_Gym_EventScript_TrashCan
+ end
+
+VermilionCity_Gym_EventScript_TrashCan5::
+ lockall
+ setvar TRASH_CAN_ID, 5
+ goto VermilionCity_Gym_EventScript_TrashCan
+ end
+
+VermilionCity_Gym_EventScript_TrashCan6::
+ lockall
+ setvar TRASH_CAN_ID, 6
+ goto VermilionCity_Gym_EventScript_TrashCan
+ end
+
+VermilionCity_Gym_EventScript_TrashCan7::
+ lockall
+ setvar TRASH_CAN_ID, 7
+ goto VermilionCity_Gym_EventScript_TrashCan
+ end
+
+VermilionCity_Gym_EventScript_TrashCan8::
+ lockall
+ setvar TRASH_CAN_ID, 8
+ goto VermilionCity_Gym_EventScript_TrashCan
+ end
+
+VermilionCity_Gym_EventScript_TrashCan9::
+ lockall
+ setvar TRASH_CAN_ID, 9
+ goto VermilionCity_Gym_EventScript_TrashCan
+ end
+
+VermilionCity_Gym_EventScript_TrashCan10::
+ lockall
+ setvar TRASH_CAN_ID, 10
+ goto VermilionCity_Gym_EventScript_TrashCan
+ end
+
+VermilionCity_Gym_EventScript_TrashCan11::
+ lockall
+ setvar TRASH_CAN_ID, 11
+ goto VermilionCity_Gym_EventScript_TrashCan
+ end
+
+VermilionCity_Gym_EventScript_TrashCan12::
+ lockall
+ setvar TRASH_CAN_ID, 12
+ goto VermilionCity_Gym_EventScript_TrashCan
+ end
+
+VermilionCity_Gym_EventScript_TrashCan13::
+ lockall
+ setvar TRASH_CAN_ID, 13
+ goto VermilionCity_Gym_EventScript_TrashCan
+ end
+
+VermilionCity_Gym_EventScript_TrashCan14::
+ lockall
+ setvar TRASH_CAN_ID, 14
+ goto VermilionCity_Gym_EventScript_TrashCan
+ end
+
+VermilionCity_Gym_EventScript_TrashCan15::
+ lockall
+ setvar TRASH_CAN_ID, 15
+ goto VermilionCity_Gym_EventScript_TrashCan
+ end
+
+VermilionCity_Gym_EventScript_TrashCan::
+ copyvar SWITCH1_ID, VAR_TEMP_0
+ copyvar SWITCH2_ID, VAR_TEMP_1
+ goto_if_set FLAG_FOUND_BOTH_VERMILION_GYM_SWITCHES, VermilionCity_Gym_EventScript_LocksAlreadyOpen
+ goto_if_set FOUND_FIRST_SWITCH, VermilionCity_Gym_EventScript_TrySwitchTwo
+ goto_if_eq SWITCH1_ID, TRASH_CAN_ID, VermilionCity_Gym_EventScript_FoundSwitchOne
+ msgbox VermilionCity_Gym_Text_NopeOnlyTrashHere
+ releaseall
+ end
+
+VermilionCity_Gym_EventScript_FoundSwitchOne::
+ msgbox VermilionCity_Gym_Text_SwitchUnderTrashFirstLockOpened
+ playse SE_PIN
+ waitse
+ call VermilionCity_Gym_EventScript_SetOneBeamOff
+ special DrawWholeMapView
+ setflag FOUND_FIRST_SWITCH
+ releaseall
+ end
+
+VermilionCity_Gym_EventScript_TrySwitchTwo::
+ goto_if_eq SWITCH2_ID, TRASH_CAN_ID, VermilionCity_Gym_EventScript_FoundSwitchTwo
+ msgbox VermilionCity_Gym_Text_OnlyTrashLocksWereReset
+ clearflag FOUND_FIRST_SWITCH
+ special SetVermilionTrashCans
+ copyvar VAR_TEMP_0, SWITCH1_ID
+ copyvar VAR_TEMP_1, SWITCH2_ID
+ call VermilionCity_Gym_EventScript_SetBeamsOn
+ special DrawWholeMapView
+ releaseall
+ end
+
+VermilionCity_Gym_EventScript_FoundSwitchTwo::
+ msgbox VermilionCity_Gym_Text_SecondLockOpened
+ closemessage
+ call VermilionCity_Gym_EventScript_SetBeamsOff
+ special DrawWholeMapView
+ playse SE_UNLOCK
+ waitse
+ setflag FLAG_FOUND_BOTH_VERMILION_GYM_SWITCHES
+ releaseall
+ end
+
+VermilionCity_Gym_EventScript_LocksAlreadyOpen::
+ msgbox VermilionCity_Gym_Text_NopeOnlyTrashHere
+ releaseall
+ end
+
+VermilionCity_Gym_EventScript_SetBeamsOn::
+ setmetatile 3, 6, METATILE_VermilionGym_Beam_Node_TopLeft_On, 1
+ setmetatile 4, 6, METATILE_VermilionGym_Beam_Node_TopLeft_Edge_On, 1
+ setmetatile 5, 6, METATILE_VermilionGym_Beam_MidTop, 1
+ setmetatile 6, 6, METATILE_VermilionGym_Beam_Node_TopRight_Edge_On, 1
+ setmetatile 7, 6, METATILE_VermilionGym_Beam_Node_TopRight_On, 1
+ setmetatile 3, 7, METATILE_VermilionGym_Beam_Node_BottomLeft_On, 1
+ setmetatile 4, 7, METATILE_VermilionGym_Beam_Node_BottomLeft_Edge_On, 1
+ setmetatile 5, 7, METATILE_VermilionGym_Beam_MidBottom, 1
+ setmetatile 6, 7, METATILE_VermilionGym_Beam_Node_BottomRight_Edge_On, 1
+ setmetatile 7, 7, METATILE_VermilionGym_Beam_Node_BottomRight_On, 1
+ return
+
+VermilionCity_Gym_EventScript_LtSurge::
+ famechecker FAMECHECKER_LTSURGE, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
+ trainerbattle_single TRAINER_LEADER_LT_SURGE, VermilionCity_Gym_Text_LtSurgeIntro, VermilionCity_Gym_Text_LtSurgeDefeat, VermilionCity_Gym_EventScript_DefeatedLtSurge, NO_MUSIC
+ goto_if_unset FLAG_GOT_TM34_FROM_SURGE, VermilionCity_Gym_EventScript_GiveTM34
+ msgbox VermilionCity_Gym_Text_LtSurgePostBattle
+ release
+ end
+
+VermilionCity_Gym_EventScript_DefeatedLtSurge::
+ famechecker FAMECHECKER_LTSURGE, 1
+ call_if_unset FLAG_GOT_HM05, VermilionCity_Gym_EventScript_ShowOaksAide
+ clearflag FLAG_HIDE_FAME_CHECKER_LT_SURGE_JOURNAL
+ setflag FLAG_DEFEATED_LT_SURGE
+ setflag FLAG_BADGE03_GET
+ set_gym_trainers_frlg 3
+ goto VermilionCity_Gym_EventScript_GiveTM34
+ end
+
+VermilionCity_Gym_EventScript_ShowOaksAide::
+ clearflag FLAG_HIDE_VERMILION_CITY_OAKS_AIDE
+ return
+
+VermilionCity_Gym_EventScript_GiveTM34::
+ msgbox VermilionCity_Gym_Text_ExplainThunderBadgeTakeThis
+ checkitemspace ITEM_TM34
+ goto_if_eq VAR_RESULT, FALSE, VermilionCity_Gym_EventScript_NoRoomForTM34
+ giveitem_msg VermilionCity_Gym_Text_ReceivedTM34FromLtSurge, ITEM_TM34
+ setflag FLAG_GOT_TM34_FROM_SURGE
+ msgbox VermilionCity_Gym_Text_ExplainTM34
+ release
+ end
+
+VermilionCity_Gym_EventScript_NoRoomForTM34::
+ msgbox VermilionCity_Gym_Text_MakeRoomInYourBag
+ release
+ end
+
+VermilionCity_Gym_EventScript_Dwayne::
+ trainerbattle_single TRAINER_SAILOR_DWAYNE, VermilionCity_Gym_Text_DwayneIntro, VermilionCity_Gym_Text_DwayneDefeat
+ famechecker FAMECHECKER_LTSURGE, 4
+ msgbox VermilionCity_Gym_Text_DwaynePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+VermilionCity_Gym_EventScript_Baily::
+ trainerbattle_single TRAINER_ENGINEER_BAILY, VermilionCity_Gym_Text_BailyIntro, VermilionCity_Gym_Text_BailyDefeat
+ msgbox VermilionCity_Gym_Text_BailyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+VermilionCity_Gym_EventScript_Tucker::
+ trainerbattle_single TRAINER_GENTLEMAN_TUCKER, VermilionCity_Gym_Text_TuckerIntro, VermilionCity_Gym_Text_TuckerDefeat, VermilionCity_Gym_EventScript_DefeatedTucker
+ famechecker FAMECHECKER_LTSURGE, 3
+ msgbox VermilionCity_Gym_Text_TuckerPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+VermilionCity_Gym_EventScript_DefeatedTucker::
+ famechecker FAMECHECKER_LTSURGE, 2
+ release
+ end
+
+VermilionCity_Gym_EventScript_GymGuy::
+ lock
+ faceplayer
+ goto_if_set FLAG_DEFEATED_LT_SURGE, VermilionCity_Gym_EventScript_GymGuyPostVictory
+ msgbox VermilionCity_Gym_Text_GymGuyAdvice
+ release
+ end
+
+VermilionCity_Gym_EventScript_GymGuyPostVictory::
+ msgbox VermilionCity_Gym_Text_GymGuyPostVictory
+ release
+ end
+
+VermilionCity_Gym_EventScript_GymStatue::
+ lockall
+ goto_if_set FLAG_BADGE03_GET, VermilionCity_Gym_EventScript_GymStatuePostVictory
+ msgbox VermilionCity_Gym_Text_GymStatue
+ releaseall
+ end
+
+VermilionCity_Gym_EventScript_GymStatuePostVictory::
+ msgbox VermilionCity_Gym_Text_GymStatuePlayerWon
+ releaseall
+ end
+
+VermilionCity_Gym_Text_LtSurgeIntro::
+ .string "Hey, kid! What do you think you're\n"
+ .string "doing here?\p"
+ .string "You won't live long in combat!\n"
+ .string "Not with your puny power!\p"
+ .string "I tell you, kid, electric POKéMON\n"
+ .string "saved me during the war!\p"
+ .string "They zapped my enemies into\n"
+ .string "paralysis!\p"
+ .string "The same as I'll do to you!{PLAY_BGM}{MUS_RG_ENCOUNTER_GYM_LEADER}$"
+
+VermilionCity_Gym_Text_LtSurgePostBattle::
+ .string "A little word of advice, kid!\p"
+ .string "Electricity is sure powerful!\p"
+ .string "But, it's useless against GROUND-\n"
+ .string "type POKéMON!$"
+
+VermilionCity_Gym_Text_ExplainThunderBadgeTakeThis::
+ .string "The THUNDERBADGE cranks up your\n"
+ .string "POKéMON's SPEED!\p"
+ .string "It also lets your POKéMON FLY\n"
+ .string "lightning-quick anytime, kid!\p"
+ .string "You're special, kid!\n"
+ .string "Take this!$"
+
+VermilionCity_Gym_Text_ReceivedTM34FromLtSurge::
+ .string "{PLAYER} received TM34\n"
+ .string "from LT. SURGE.$"
+
+VermilionCity_Gym_Text_ExplainTM34::
+ .string "TM34 contains SHOCK WAVE!\p"
+ .string "Teach it to an ELECTRIC POKéMON!$"
+
+VermilionCity_Gym_Text_MakeRoomInYourBag::
+ .string "Yo, kid, make room in your BAG!$"
+
+VermilionCity_Gym_Text_LtSurgeDefeat::
+ .string "Now that's a shocker!\p"
+ .string "You're the real deal, kid!\p"
+ .string "Fine, then, take the THUNDERBADGE!$"
+
+VermilionCity_Gym_Text_TuckerIntro::
+ .string "When I was in the Army, LT. SURGE\n"
+ .string "was my strict CO.\p"
+ .string "He was a hard taskmaster.$"
+
+VermilionCity_Gym_Text_TuckerDefeat::
+ .string "Stop!\n"
+ .string "You're very good!$"
+
+VermilionCity_Gym_Text_TuckerPostBattle::
+ .string "It's not easy opening that door.\p"
+ .string "LT. SURGE was always famous for\n"
+ .string "his cautious nature in the Army.$"
+
+VermilionCity_Gym_Text_BailyIntro::
+ .string "I'm a lightweight, but I'm good\n"
+ .string "with electricity!\p"
+ .string "That's why I joined this GYM.$"
+
+VermilionCity_Gym_Text_BailyDefeat::
+ .string "Fried!$"
+
+VermilionCity_Gym_Text_BailyPostBattle::
+ .string "Okay, I'll talk!\p"
+ .string "LT. SURGE said he hid door\n"
+ .string "switches inside something.$"
+
+VermilionCity_Gym_Text_DwayneIntro::
+ .string "This is no place for kids!\n"
+ .string "Not even if you're good!$"
+
+VermilionCity_Gym_Text_DwayneDefeat::
+ .string "Wow!\n"
+ .string "Surprised me!$"
+
+VermilionCity_Gym_Text_DwaynePostBattle::
+ .string "LT. SURGE installed the traps in\n"
+ .string "the GYM himself.\p"
+ .string "He set up double locks everywhere.\n"
+ .string "Let me give you a hint.\p"
+ .string "When you open the first lock, the\n"
+ .string "second lock is right next to it.$"
+
+VermilionCity_Gym_Text_GymGuyAdvice::
+ .string "Yo!\n"
+ .string "Champ in the making!\p"
+ .string "LT. SURGE has a nickname.\p"
+ .string "People refer to him as the\n"
+ .string "Lightning American!\p"
+ .string "He's an expert on electric\n"
+ .string "POKéMON.\p"
+ .string "BIRD/WATER-type POKéMON match\n"
+ .string "poorly against the ELECTRIC type.\p"
+ .string "Beware of paralysis, too.\p"
+ .string "LT. SURGE is very cautious.\p"
+ .string "He's locked himself in, so it won't\n"
+ .string "be easy getting to him.$"
+
+VermilionCity_Gym_Text_GymGuyPostVictory::
+ .string "Whew!\n"
+ .string "That match was electric!$"
+
+VermilionCity_Gym_Text_GymStatue::
+ .string "VERMILION POKéMON GYM\n"
+ .string "LEADER: LT. SURGE\p"
+ .string "WINNING TRAINERS:\n"
+ .string "{RIVAL}$"
+
+VermilionCity_Gym_Text_GymStatuePlayerWon::
+ .string "VERMILION POKéMON GYM\n"
+ .string "LEADER: LT. SURGE\p"
+ .string "WINNING TRAINERS:\n"
+ .string "{RIVAL}, {PLAYER}$"
+
+VermilionCity_Gym_Text_NopeOnlyTrashHere::
+ .string "Nope!\n"
+ .string "There's only trash here.$"
+
+VermilionCity_Gym_Text_SwitchUnderTrashFirstLockOpened::
+ .string "Hey! There's a switch under the\n"
+ .string "trash! Turn it on!\p"
+ .string "The first electric lock opened!$"
+
+VermilionCity_Gym_Text_SecondLockOpened::
+ .string "The second electric lock opened!\n"
+ .string "The motorized door opened!$"
+
+VermilionCity_Gym_Text_OnlyTrashLocksWereReset::
+ .string "Nope!\n"
+ .string "There's only trash here.\p"
+ .string "Hey!\n"
+ .string "The electric locks were reset!$"
+
diff --git a/data/maps/VermilionCity_House1_Frlg/map.json b/data/maps/VermilionCity_House1_Frlg/map.json
new file mode 100644
index 000000000000..84071cef12ef
--- /dev/null
+++ b/data/maps/VermilionCity_House1_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_VERMILION_CITY_HOUSE1",
+ "name": "VermilionCity_House1_Frlg",
+ "layout": "LAYOUT_HOUSE1_FRLG",
+ "music": "MUS_RG_FUCHSIA",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VERMILION_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FISHER",
+ "x": 4,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_House1_EventScript_FishingGuru",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/VermilionCity_House1_Frlg/scripts.inc b/data/maps/VermilionCity_House1_Frlg/scripts.inc
new file mode 100644
index 000000000000..c39ce8b8b597
--- /dev/null
+++ b/data/maps/VermilionCity_House1_Frlg/scripts.inc
@@ -0,0 +1,68 @@
+VermilionCity_House1_Frlg_MapScripts::
+ .byte 0
+
+VermilionCity_House1_EventScript_FishingGuru::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_OLD_ROD, VermilionCity_House1_EventScript_AlreadyGotOldRod
+ msgbox VermilionCity_House1_Text_ImFishingGuruDoYouLikeToFish, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, VermilionCity_House1_EventScript_GiveOldRod
+ msgbox VermilionCity_House1_Text_OhThatsSoDisappointing
+ release
+ end
+
+VermilionCity_House1_EventScript_AlreadyGotOldRod::
+ msgbox VermilionCity_House1_Text_HowAreTheFishBiting
+ release
+ end
+
+VermilionCity_House1_EventScript_GiveOldRod::
+ checkitemspace ITEM_OLD_ROD
+ goto_if_eq VAR_RESULT, FALSE, VermilionCity_House1_EventScript_NoRoomForOldRod
+ additem ITEM_OLD_ROD
+ msgbox VermilionCity_House1_Text_TakeThisAndFish
+ msgreceiveditem VermilionCity_House1_Text_ReceivedOldRodFromFishingGuru, ITEM_OLD_ROD
+ setflag FLAG_GOT_OLD_ROD
+ msgbox VermilionCity_House1_Text_FishingIsAWayOfLife
+ release
+ end
+
+VermilionCity_House1_EventScript_NoRoomForOldRod::
+ msgbox VermilionCity_House1_Text_NoRoomForNiceGift
+ release
+ end
+
+VermilionCity_House1_Text_ImFishingGuruDoYouLikeToFish::
+ .string "I'm the FISHING GURU!\p"
+ .string "I simply looove fishing!\n"
+ .string "I can't bear to go without.\p"
+ .string "Tell me, do you like to fish?$"
+
+VermilionCity_House1_Text_TakeThisAndFish::
+ .string "Grand! I like your style.\n"
+ .string "I think we can be friends.\p"
+ .string "Take this and fish, young friend!$"
+
+VermilionCity_House1_Text_ReceivedOldRodFromFishingGuru::
+ .string "{PLAYER} received an OLD ROD from\n"
+ .string "the FISHING GURU.$"
+
+VermilionCity_House1_Text_FishingIsAWayOfLife::
+ .string "Fishing is a way of life!\n"
+ .string "It is like the finest poetry.\p"
+ .string "From the seas to rivers, go out\n"
+ .string "and land the big one, my friend.$"
+
+VermilionCity_House1_Text_OhThatsSoDisappointing::
+ .string "Oh…\n"
+ .string "That's so disappointing…$"
+
+VermilionCity_House1_Text_HowAreTheFishBiting::
+ .string "Hello there, {PLAYER}!\p"
+ .string "How are the fish biting?$"
+
+VermilionCity_House1_Text_NoRoomForNiceGift::
+ .string "Oh, no!\p"
+ .string "I had a nice gift for you, but you\n"
+ .string "have no room for it!$"
+
diff --git a/data/maps/VermilionCity_House2_Frlg/map.json b/data/maps/VermilionCity_House2_Frlg/map.json
new file mode 100644
index 000000000000..74ce99ae3b2a
--- /dev/null
+++ b/data/maps/VermilionCity_House2_Frlg/map.json
@@ -0,0 +1,59 @@
+{
+ "id": "MAP_VERMILION_CITY_HOUSE2",
+ "name": "VermilionCity_House2_Frlg",
+ "layout": "LAYOUT_HOUSE1_FRLG",
+ "music": "MUS_RG_VERMILLION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VERMILION_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 4,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_House2_EventScript_Elyssa",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "6"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "6"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/VermilionCity_House2_Frlg/scripts.inc b/data/maps/VermilionCity_House2_Frlg/scripts.inc
new file mode 100644
index 000000000000..0f1bac6e8818
--- /dev/null
+++ b/data/maps/VermilionCity_House2_Frlg/scripts.inc
@@ -0,0 +1,57 @@
+VermilionCity_House2_Frlg_MapScripts::
+ .byte 0
+
+VermilionCity_House2_EventScript_Elyssa::
+ lock
+ faceplayer
+ setvar VAR_0x8008, INGAME_TRADE_FARFETCHD
+ call EventScript_GetInGameTradeSpeciesInfo
+ goto_if_set FLAG_DID_CH_DING_TRADE, VermilionCity_House2_EventScript_AlreadyTraded
+ msgbox VermilionCity_House2_Text_DoYouHaveMonWantToTradeForMyMon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, VermilionCity_House2_EventScript_DeclineTrade
+ call EventScript_ChooseMonForInGameTrade
+ goto_if_ge VAR_0x8004, PARTY_SIZE, VermilionCity_House2_EventScript_DeclineTrade
+ call EventScript_GetInGameTradeSpecies
+ goto_if_ne VAR_RESULT, VAR_0x8009, VermilionCity_House2_EventScript_NotRequestedMon
+ call EventScript_DoInGameTrade
+ msgbox VermilionCity_House2_Text_ThankYou
+ setflag FLAG_DID_CH_DING_TRADE
+ release
+ end
+
+VermilionCity_House2_EventScript_DeclineTrade::
+ msgbox VermilionCity_House2_Text_ThatsTooBad
+ release
+ end
+
+VermilionCity_House2_EventScript_NotRequestedMon::
+ bufferspeciesname STR_VAR_1, VAR_0x8009
+ msgbox VermilionCity_House2_Text_ThisIsNoMon
+ release
+ end
+
+VermilionCity_House2_EventScript_AlreadyTraded::
+ msgbox VermilionCity_House2_Text_HowIsMyOldMon
+ release
+ end
+
+VermilionCity_House2_Text_DoYouHaveMonWantToTradeForMyMon::
+ .string "Hi!\n"
+ .string "Do you have a {STR_VAR_1}?\p"
+ .string "Want to trade it for my\n"
+ .string "{STR_VAR_2}?$"
+
+VermilionCity_House2_Text_ThatsTooBad::
+ .string "That's too bad.$"
+
+VermilionCity_House2_Text_ThisIsNoMon::
+ .string "…This is no {STR_VAR_1}.\p"
+ .string "If you get one, please trade it\n"
+ .string "to me!$"
+
+VermilionCity_House2_Text_ThankYou::
+ .string "Thank you!$"
+
+VermilionCity_House2_Text_HowIsMyOldMon::
+ .string "How is my old {STR_VAR_2}?\p"
+ .string "My {STR_VAR_1} is doing great!$"
diff --git a/data/maps/VermilionCity_House3_Frlg/map.json b/data/maps/VermilionCity_House3_Frlg/map.json
new file mode 100644
index 000000000000..73dbbb1fad12
--- /dev/null
+++ b/data/maps/VermilionCity_House3_Frlg/map.json
@@ -0,0 +1,110 @@
+{
+ "id": "MAP_VERMILION_CITY_HOUSE3",
+ "name": "VermilionCity_House3_Frlg",
+ "layout": "LAYOUT_HOUSE1_FRLG",
+ "music": "MUS_RG_VERMILLION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VERMILION_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_House3_EventScript_Boy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PIDGEY",
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 2,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_House3_EventScript_Pidgey",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLIPBOARD",
+ "x": 6,
+ "y": 4,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "0x0",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 2,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_House3_EventScript_Lass",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "8"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "8"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "8"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 4,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_House3_EventScript_Letter"
+ }
+ ]
+}
diff --git a/data/maps/VermilionCity_House3_Frlg/scripts.inc b/data/maps/VermilionCity_House3_Frlg/scripts.inc
new file mode 100644
index 000000000000..94c76a8ecbe3
--- /dev/null
+++ b/data/maps/VermilionCity_House3_Frlg/scripts.inc
@@ -0,0 +1,45 @@
+VermilionCity_House3_Frlg_MapScripts::
+ .byte 0
+
+VermilionCity_House3_EventScript_Boy::
+ msgbox VermilionCity_House3_Text_PidgeyFlyLetterToSaffron, MSGBOX_NPC
+ end
+
+VermilionCity_House3_EventScript_Lass::
+ msgbox VermilionCity_House3_Text_SendMyPidgeyToUnionRoom, MSGBOX_NPC
+ end
+
+VermilionCity_House3_EventScript_Pidgey::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_PIDGEY, CRY_MODE_NORMAL
+ msgbox VermilionCity_House3_Text_Pidgey
+ waitmoncry
+ release
+ end
+
+VermilionCity_House3_EventScript_Letter::
+ msgbox VermilionCity_House3_Text_DearPippiLetter, MSGBOX_SIGN
+ end
+
+VermilionCity_House3_Text_PidgeyFlyLetterToSaffron::
+ .string "I'm getting my PIDGEY to fly a\n"
+ .string "letter to SAFFRON in the north.$"
+
+VermilionCity_House3_Text_Pidgey::
+ .string "PIDGEY: Kurukkoo!$"
+
+VermilionCity_House3_Text_DearPippiLetter::
+ .string "Dear PIPPI,\n"
+ .string "I hope to see you soon.\p"
+ .string "I heard SAFFRON has problems with\n"
+ .string "TEAM ROCKET.\p"
+ .string "VERMILION appears to be safe.$"
+
+VermilionCity_House3_Text_SendMyPidgeyToUnionRoom::
+ .string "I want to exchange MAIL with all\n"
+ .string "sorts of people.\p"
+ .string "I send my PIDGEY to a UNION ROOM\n"
+ .string "to exchange MAIL for me.$"
+
diff --git a/data/maps/VermilionCity_Mart_Frlg/map.json b/data/maps/VermilionCity_Mart_Frlg/map.json
new file mode 100644
index 000000000000..1ed89fb400d3
--- /dev/null
+++ b/data/maps/VermilionCity_Mart_Frlg/map.json
@@ -0,0 +1,87 @@
+{
+ "id": "MAP_VERMILION_CITY_MART",
+ "name": "VermilionCity_Mart_Frlg",
+ "layout": "LAYOUT_MART_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VERMILION_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 2,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_Mart_EventScript_Clerk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 4,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_Mart_EventScript_CooltrainerF",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 9,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_Mart_EventScript_BaldingMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "7"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "7"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/VermilionCity_Mart_Frlg/scripts.inc b/data/maps/VermilionCity_Mart_Frlg/scripts.inc
new file mode 100644
index 000000000000..5b518c168738
--- /dev/null
+++ b/data/maps/VermilionCity_Mart_Frlg/scripts.inc
@@ -0,0 +1,48 @@
+VermilionCity_Mart_Frlg_MapScripts::
+ .byte 0
+
+VermilionCity_Mart_EventScript_CooltrainerF::
+ msgbox VermilionCity_Mart_Text_MonsGoodOrBadDependingOnTrainer, MSGBOX_NPC
+ end
+
+VermilionCity_Mart_EventScript_BaldingMan::
+ msgbox VermilionCity_Mart_Text_TeamRocketAreWickedPeople, MSGBOX_NPC
+ end
+
+VermilionCity_Mart_EventScript_Clerk::
+ lock
+ faceplayer
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart VermilionCity_Mart_Items
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+VermilionCity_Mart_Items::
+ .2byte ITEM_POKE_BALL
+ .2byte ITEM_SUPER_POTION
+ .2byte ITEM_ANTIDOTE
+ .2byte ITEM_PARALYZE_HEAL
+ .2byte ITEM_AWAKENING
+ .2byte ITEM_ICE_HEAL
+ .2byte ITEM_REPEL
+ .2byte ITEM_NONE
+ release
+ end
+
+VermilionCity_Mart_Text_TeamRocketAreWickedPeople::
+ .string "There are wicked people who will\n"
+ .string "use POKéMON for criminal acts.\p"
+ .string "TEAM ROCKET traffics in rare\n"
+ .string "POKéMON, for example.\p"
+ .string "They also abandon POKéMON that\n"
+ .string "they consider unpopular or useless.\p"
+ .string "That's the sort of horrid people\n"
+ .string "they are, TEAM ROCKET.$"
+
+VermilionCity_Mart_Text_MonsGoodOrBadDependingOnTrainer::
+ .string "I think POKéMON can be good or\n"
+ .string "bad. It depends on the TRAINER.$"
+
diff --git a/data/maps/VermilionCity_PokemonCenter_1F_Frlg/map.json b/data/maps/VermilionCity_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..554f525bab1d
--- /dev/null
+++ b/data/maps/VermilionCity_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,151 @@
+{
+ "id": "MAP_VERMILION_CITY_POKEMON_CENTER_1F",
+ "name": "VermilionCity_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VERMILION_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_VERMILION_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 4,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_PokemonCenter_1F_EventScript_Man",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_HIKER_FRLG",
+ "x": 12,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_PokemonCenter_1F_EventScript_Hiker",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 14,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_PokemonCenter_1F_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 6,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_PokemonCenter_1F_EventScript_VSSeekerWoman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_PokemonCenter_1F_EventScript_PokemonJournalLtSurge",
+ "flag": "FLAG_HIDE_FAME_CHECKER_LT_SURGE_JOURNAL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "0",
+ "x": 3,
+ "y": 1,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_INVISIBLE",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_PokemonCenter_1F_EventScript_PokemonJournalLtSurge",
+ "flag": "FLAG_HIDE_FAME_CHECKER_LT_SURGE_JOURNAL"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 8,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_VERMILION_CITY_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/VermilionCity_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/VermilionCity_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..d261b8d030ed
--- /dev/null
+++ b/data/maps/VermilionCity_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,89 @@
+VermilionCity_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, VermilionCity_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ .byte 0
+
+VermilionCity_PokemonCenter_1F_OnTransition::
+ setrespawn HEAL_LOCATION_VERMILION_CITY
+ end
+
+VermilionCity_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+VermilionCity_PokemonCenter_1F_EventScript_Man::
+ msgbox VermilionCity_PokemonCenter_1F_Text_PoisonedMonFaintedWhileWalking, MSGBOX_NPC
+ end
+
+VermilionCity_PokemonCenter_1F_EventScript_Hiker::
+ msgbox VermilionCity_PokemonCenter_1F_Text_TrainerMonsStrongerThanWild, MSGBOX_NPC
+ end
+
+VermilionCity_PokemonCenter_1F_EventScript_Youngster::
+ msgbox VermilionCity_PokemonCenter_1F_Text_AllMonWeakToSpecificTypes, MSGBOX_NPC
+ end
+
+VermilionCity_PokemonCenter_1F_EventScript_VSSeekerWoman::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_VS_SEEKER, VermilionCity_PokemonCenter_1F_EventScript_ExplainVSSeeker
+ msgbox VermilionCity_PokemonCenter_1F_Text_UrgeToBattleSomeoneAgain
+ setflag FLAG_GOT_VS_SEEKER
+ giveitem ITEM_VS_SEEKER
+ goto_if_eq VAR_RESULT, FALSE, EventScript_BagIsFull
+ msgbox VermilionCity_PokemonCenter_1F_Text_UseDeviceForRematches
+ release
+ end
+
+VermilionCity_PokemonCenter_1F_EventScript_ExplainVSSeeker::
+ msgbox VermilionCity_PokemonCenter_1F_Text_ExplainVSSeeker
+ release
+ end
+
+VermilionCity_PokemonCenter_1F_Text_TrainerMonsStrongerThanWild::
+ .string "Even if they are the same level,\n"
+ .string "POKéMON can have very different\l"
+ .string "stats and abilities.\p"
+ .string "A POKéMON raised by a TRAINER is\n"
+ .string "stronger than one in the wild.$"
+
+VermilionCity_PokemonCenter_1F_Text_PoisonedMonFaintedWhileWalking::
+ .string "My POKéMON was poisoned!\n"
+ .string "It fainted while we were walking!$"
+
+VermilionCity_PokemonCenter_1F_Text_AllMonWeakToSpecificTypes::
+ .string "It is true that a higher-level\n"
+ .string "POKéMON will be more powerful…\p"
+ .string "But, all POKéMON will have weak\n"
+ .string "points against specific types.\p"
+ .string "So, there appears to be no\n"
+ .string "universally strong POKéMON.$"
+
+VermilionCity_PokemonCenter_1F_Text_UrgeToBattleSomeoneAgain::
+ .string "The urge to battle with someone\n"
+ .string "you've tangled with before…\p"
+ .string "Have you ever had that urge?\n"
+ .string "I'm sure you have.\p"
+ .string "I wanted to battle certain people\n"
+ .string "again over and over, too.\p"
+ .string "So, I've been giving these away.\n"
+ .string "Please, take one!$"
+
+VermilionCity_PokemonCenter_1F_Text_UseDeviceForRematches::
+ .string "Use that device and you'll find\n"
+ .string "TRAINERS looking for a rematch.\p"
+ .string "You have to charge its battery to\n"
+ .string "use it, though.$"
+
+VermilionCity_PokemonCenter_1F_Text_ExplainVSSeeker::
+ .string "How do you use the VS SEEKER?\n"
+ .string "There's nothing to it.\p"
+ .string "Use it like beep-beep-beep, and\n"
+ .string "TRAINERS around you will notice.\p"
+ .string "If any TRAINER wants a rematch,\n"
+ .string "it will let you know immediately.\p"
+ .string "Charge its battery and use it\n"
+ .string "while you're on a road.$"
diff --git a/data/maps/VermilionCity_PokemonCenter_2F_Frlg/map.json b/data/maps/VermilionCity_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..46fa157d820a
--- /dev/null
+++ b/data/maps/VermilionCity_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_VERMILION_CITY_POKEMON_CENTER_2F",
+ "name": "VermilionCity_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VERMILION_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_VERMILION_CITY_POKEMON_CENTER_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/VermilionCity_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/VermilionCity_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..6e11d58462d2
--- /dev/null
+++ b/data/maps/VermilionCity_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+VermilionCity_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+VermilionCity_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+VermilionCity_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+VermilionCity_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/VermilionCity_PokemonFanClub_Frlg/map.json b/data/maps/VermilionCity_PokemonFanClub_Frlg/map.json
new file mode 100644
index 000000000000..80c39648509b
--- /dev/null
+++ b/data/maps/VermilionCity_PokemonFanClub_Frlg/map.json
@@ -0,0 +1,148 @@
+{
+ "id": "MAP_VERMILION_CITY_POKEMON_FAN_CLUB",
+ "name": "VermilionCity_PokemonFanClub_Frlg",
+ "layout": "LAYOUT_VERMILION_CITY_POKEMON_FAN_CLUB",
+ "music": "MUS_RG_VERMILLION",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VERMILION_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 5,
+ "y": 4,
+ "elevation": 4,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_PokemonFanClub_EventScript_Chairman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WORKER_F",
+ "x": 6,
+ "y": 4,
+ "elevation": 4,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_PokemonFanClub_EventScript_WorkerF",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PIKACHU_FRLG",
+ "x": 7,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_PokemonFanClub_EventScript_Pikachu",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SEEL",
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_PokemonFanClub_EventScript_Seel",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_POKEMON_FAN_CLUB_WOMAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 4,
+ "y": 5,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_PokemonFanClub_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_POKEMON_FAN_CLUB_FAT_MAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FAT_MAN_FRLG",
+ "x": 7,
+ "y": 5,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VermilionCity_PokemonFanClub_EventScript_FatMan",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 4,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 5,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "5"
+ },
+ {
+ "x": 6,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_VERMILION_CITY",
+ "dest_warp_id": "5"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 2,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_PokemonFanClub_EventScript_RulesSign1"
+ },
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "VermilionCity_PokemonFanClub_EventScript_RulesSign2"
+ }
+ ]
+}
diff --git a/data/maps/VermilionCity_PokemonFanClub_Frlg/scripts.inc b/data/maps/VermilionCity_PokemonFanClub_Frlg/scripts.inc
new file mode 100644
index 000000000000..1af2995d8d24
--- /dev/null
+++ b/data/maps/VermilionCity_PokemonFanClub_Frlg/scripts.inc
@@ -0,0 +1,216 @@
+.set SPOKE_TO_WOMAN_LAST, FLAG_TEMP_2
+.set SPOKE_TO_FAT_MAN_LAST, FLAG_TEMP_3
+
+VermilionCity_PokemonFanClub_Frlg_MapScripts::
+ .byte 0
+
+VermilionCity_PokemonFanClub_EventScript_Chairman::
+ lock
+ faceplayer
+ goto_if_set FLAG_GOT_BIKE_VOUCHER, VermilionCity_PokemonFanClub_EventScript_AlreadyHeardStory
+ msgbox VermilionCity_PokemonFanClub_Text_DidYouComeToHearAboutMyMons, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, VermilionCity_PokemonFanClub_EventScript_ChairmanStory
+ msgbox VermilionCity_PokemonFanClub_Text_ComeBackToHearStory
+ release
+ end
+
+VermilionCity_PokemonFanClub_EventScript_AlreadyHeardStory::
+ msgbox VermilionCity_PokemonFanClub_Text_DidntComeToSeeAboutMonsAgain
+ release
+ end
+
+VermilionCity_PokemonFanClub_EventScript_ChairmanStory::
+ msgbox VermilionCity_PokemonFanClub_Text_ChairmansStory
+ checkitemspace ITEM_BIKE_VOUCHER
+ goto_if_eq VAR_RESULT, FALSE, VermilionCity_PokemonFanClub_EventScript_NoRoomForBikeVoucher
+ setflag FLAG_GOT_BIKE_VOUCHER
+ giveitem_msg VermilionCity_PokemonFanClub_Text_ReceivedBikeVoucherFromChairman, ITEM_BIKE_VOUCHER, 1, MUS_RG_OBTAIN_KEY_ITEM
+ msgbox VermilionCity_PokemonFanClub_Text_ExplainBikeVoucher
+ release
+ end
+
+VermilionCity_PokemonFanClub_EventScript_NoRoomForBikeVoucher::
+ msgbox VermilionCity_PokemonFanClub_Text_MakeRoomForThis
+ release
+ end
+
+VermilionCity_PokemonFanClub_EventScript_WorkerF::
+ lock
+ faceplayer
+ goto_if_set FLAG_SYS_GAME_CLEAR, VermilionCity_PokemonFanClub_EventScript_WorkerFGameClear
+ msgbox VermilionCity_PokemonFanClub_Text_ChairmanVeryVocalAboutPokemon
+ release
+ end
+
+VermilionCity_PokemonFanClub_EventScript_WorkerFGameClear::
+ famechecker FAMECHECKER_DAISY, 1
+ msgbox VermilionCity_PokemonFanClub_Text_ChairmanReallyAdoresHisMons
+ release
+ end
+
+VermilionCity_PokemonFanClub_EventScript_Woman::
+ lock
+ faceplayer
+ goto_if_set SPOKE_TO_FAT_MAN_LAST, VermilionCity_PokemonFanClub_EventScript_WomanSpokeToFatMan
+ msgbox VermilionCity_PokemonFanClub_Text_AdoreMySeel
+ closemessage
+ applymovement LOCALID_POKEMON_FAN_CLUB_WOMAN, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ setflag SPOKE_TO_WOMAN_LAST
+ release
+ end
+
+VermilionCity_PokemonFanClub_EventScript_WomanSpokeToFatMan::
+ msgbox VermilionCity_PokemonFanClub_Text_SeelFarMoreAttractive
+ closemessage
+ applymovement LOCALID_POKEMON_FAN_CLUB_WOMAN, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ clearflag SPOKE_TO_FAT_MAN_LAST
+ release
+ end
+
+VermilionCity_PokemonFanClub_EventScript_FatMan::
+ lock
+ faceplayer
+ goto_if_set SPOKE_TO_WOMAN_LAST, VermilionCity_PokemonFanClub_EventScript_FatManSpokeToWoman
+ msgbox VermilionCity_PokemonFanClub_Text_AdmirePikachusTail
+ closemessage
+ applymovement LOCALID_POKEMON_FAN_CLUB_FAT_MAN, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ setflag SPOKE_TO_FAT_MAN_LAST
+ release
+ end
+
+VermilionCity_PokemonFanClub_EventScript_FatManSpokeToWoman::
+ msgbox VermilionCity_PokemonFanClub_Text_PikachuTwiceAsCute
+ closemessage
+ applymovement LOCALID_POKEMON_FAN_CLUB_FAT_MAN, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ clearflag SPOKE_TO_WOMAN_LAST
+ release
+ end
+
+VermilionCity_PokemonFanClub_EventScript_Pikachu::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_PIKACHU, CRY_MODE_NORMAL
+ msgbox VermilionCity_PokemonFanClub_Text_Pikachu
+ waitmoncry
+ release
+ end
+
+VermilionCity_PokemonFanClub_EventScript_Seel::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_SEEL, CRY_MODE_NORMAL
+ msgbox VermilionCity_PokemonFanClub_Text_Seel
+ waitmoncry
+ release
+ end
+
+VermilionCity_PokemonFanClub_EventScript_RulesSign1::
+ msgbox VermilionCity_PokemonFanClub_Text_ListenPolitelyToOtherTrainers, MSGBOX_SIGN
+ end
+
+VermilionCity_PokemonFanClub_EventScript_RulesSign2::
+ msgbox VermilionCity_PokemonFanClub_Text_SomeoneBragsBragBack, MSGBOX_SIGN
+ end
+
+VermilionCity_PokemonFanClub_Text_AdmirePikachusTail::
+ .string "Won't you admire my PIKACHU's\n"
+ .string "adorable tail?$"
+
+VermilionCity_PokemonFanClub_Text_PikachuTwiceAsCute::
+ .string "Humph!\p"
+ .string "My PIKACHU is twice as cute as\n"
+ .string "that one!$"
+
+VermilionCity_PokemonFanClub_Text_AdoreMySeel::
+ .string "I just adore my SEEL!\n"
+ .string "It's so lovable!\p"
+ .string "It squeals, “Kyuuuh,” when I\n"
+ .string "hug it!$"
+
+VermilionCity_PokemonFanClub_Text_SeelFarMoreAttractive::
+ .string "Oh, dear!\p"
+ .string "My SEEL is far more attractive.\n"
+ .string "By double, I would say.$"
+
+VermilionCity_PokemonFanClub_Text_Pikachu::
+ .string "PIKACHU: Chu! Pikachu!$"
+
+VermilionCity_PokemonFanClub_Text_Seel::
+ .string "SEEL: Kyuoo!$"
+
+VermilionCity_PokemonFanClub_Text_DidYouComeToHearAboutMyMons::
+ .string "I chair the POKéMON Fan Club!\p"
+ .string "I raise more than a hundred\n"
+ .string "POKéMON!\p"
+ .string "I'm very fussy when it comes to\n"
+ .string "POKéMON! I surely am!\p"
+ .string "So…\p"
+ .string "Did you come visit to hear about\n"
+ .string "my POKéMON?$"
+
+VermilionCity_PokemonFanClub_Text_ChairmansStory::
+ .string "Good!\n"
+ .string "Then listen up!\p"
+ .string "My favorite RAPIDASH…\p"
+ .string "It's…cute…lovely…smart… \n"
+ .string "plus…amazing…you think so?…\l"
+ .string "oh yes…it's…stunning…\l"
+ .string "kindly…love it!\p"
+ .string "Hug it…when…sleeping…warm\n"
+ .string "and cuddly…spectacular…\l"
+ .string "ravishing…\l"
+ .string "…Oops! Look at the time!\l"
+ .string "I kept you too long!\p"
+ .string "Thanks for hearing me out!\n"
+ .string "I want you to have this!$"
+
+VermilionCity_PokemonFanClub_Text_ReceivedBikeVoucherFromChairman::
+ .string "{PLAYER} received a BIKE VOUCHER\n"
+ .string "from the CHAIRMAN.$"
+
+VermilionCity_PokemonFanClub_Text_ExplainBikeVoucher::
+ .string "Take that BIKE VOUCHER to the\n"
+ .string "BIKE SHOP in CERULEAN CITY.\p"
+ .string "Exchange that for a BICYCLE\n"
+ .string "free of charge!\p"
+ .string "Don't worry, my favorite FEAROW\n"
+ .string "will FLY me anywhere I need to go.\p"
+ .string "So, I have no need for a BICYCLE.\p"
+ .string "I hope you like cycling!$"
+
+VermilionCity_PokemonFanClub_Text_ComeBackToHearStory::
+ .string "Oh. Come back when you want to\n"
+ .string "hear my story!$"
+
+VermilionCity_PokemonFanClub_Text_DidntComeToSeeAboutMonsAgain::
+ .string "Hello, {PLAYER}!\p"
+ .string "Did you come see me about my\n"
+ .string "POKéMON again?\p"
+ .string "No?\n"
+ .string "Too bad!$"
+
+VermilionCity_PokemonFanClub_Text_MakeRoomForThis::
+ .string "Make room for this!$"
+
+VermilionCity_PokemonFanClub_Text_ChairmanVeryVocalAboutPokemon::
+ .string "Our CHAIRMAN is very vocal about\n"
+ .string "POKéMON.$"
+
+VermilionCity_PokemonFanClub_Text_ListenPolitelyToOtherTrainers::
+ .string "Let's all listen politely to other\n"
+ .string "TRAINERS!$"
+
+VermilionCity_PokemonFanClub_Text_SomeoneBragsBragBack::
+ .string "If someone brags, brag right back!$"
+
+VermilionCity_PokemonFanClub_Text_ChairmanReallyAdoresHisMons::
+ .string "Our CHAIRMAN really does adore his\n"
+ .string "POKéMON.\p"
+ .string "But the person who is most liked by\n"
+ .string "POKéMON is DAISY, I think.$"
diff --git a/data/maps/VictoryRoad_1F_Frlg/map.json b/data/maps/VictoryRoad_1F_Frlg/map.json
new file mode 100644
index 000000000000..ef3f543dfcb5
--- /dev/null
+++ b/data/maps/VictoryRoad_1F_Frlg/map.json
@@ -0,0 +1,168 @@
+{
+ "id": "MAP_VICTORY_ROAD_1F_FRLG",
+ "name": "VictoryRoad_1F_Frlg",
+ "layout": "LAYOUT_VICTORY_ROAD_1F_FRLG",
+ "music": "MUS_RG_MT_MOON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_KANTO_VICTORY_ROAD",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 5,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "VictoryRoad_1F_EventScript_Rolando",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 14,
+ "y": 6,
+ "elevation": 4,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "VictoryRoad_1F_EventScript_Naomi",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 12,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VictoryRoad_1F_EventScript_ItemRareCandy",
+ "flag": "FLAG_HIDE_VICTORY_ROAD_1F_RARE_CANDY"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 14,
+ "y": 1,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VictoryRoad_1F_EventScript_ItemTM02",
+ "flag": "FLAG_HIDE_VICTORY_ROAD_1F_TM02"
+ },
+ {
+ "local_id": "LOCALID_VICTORY_ROAD_1F_BOULDER",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 7,
+ "y": 18,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 4,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 16,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_VICTORY_ROAD_2F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 11,
+ "y": 20,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE23",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 20,
+ "y": 16,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_VICTORY_ROAD_1F",
+ "var_value": "99",
+ "script": "VictoryRoad_1F_EventScript_FloorSwitch"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "hidden_item",
+ "x": 12,
+ "y": 12,
+ "elevation": 0,
+ "item": "ITEM_ULTRA_BALL",
+ "flag": "FLAG_HIDDEN_ITEM_VICTORY_ROAD_1F_ULTRA_BALL",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 16,
+ "y": 1,
+ "elevation": 0,
+ "item": "ITEM_FULL_RESTORE",
+ "flag": "FLAG_HIDDEN_ITEM_VICTORY_ROAD_1F_FULL_RESTORE",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/VictoryRoad_1F_Frlg/scripts.inc b/data/maps/VictoryRoad_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..d8689878886f
--- /dev/null
+++ b/data/maps/VictoryRoad_1F_Frlg/scripts.inc
@@ -0,0 +1,67 @@
+VictoryRoad_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, VictoryRoad_1F_Frlg_OnLoad
+ map_script MAP_SCRIPT_ON_TRANSITION, VictoryRoad_1F_Frlg_OnTransition
+ .byte 0
+
+VictoryRoad_1F_Frlg_OnLoad::
+ call_if_ne VAR_MAP_SCENE_VICTORY_ROAD_1F, 100, VictoryRoad_1F_EventScript_SetRockBarrier
+ end
+
+VictoryRoad_1F_EventScript_SetRockBarrier::
+ setmetatile 12, 14, METATILE_Cave_RockBarrier_Top, 1
+ setmetatile 12, 15, METATILE_Cave_RockBarrier_Bottom, 1
+ return
+
+VictoryRoad_1F_Frlg_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_VICTORY_ROAD_1F
+ end
+
+VictoryRoad_1F_EventScript_FloorSwitch::
+ lockall
+ goto_if_eq VAR_MAP_SCENE_VICTORY_ROAD_1F, 100, VictoryRoad_1F_EventScript_FloorSwitchAlreadyPressed
+ setmetatile 12, 14, METATILE_Cave_Floor_Ledge_Top, 0
+ setmetatile 12, 15, METATILE_Cave_Floor_Ledge_Bottom, 0
+ playse SE_ICE_BREAK
+ special DrawWholeMapView
+ waitse
+ copyobjectxytoperm LOCALID_VICTORY_ROAD_1F_BOULDER
+ setvar VAR_MAP_SCENE_VICTORY_ROAD_1F, 100
+ releaseall
+ end
+
+VictoryRoad_1F_EventScript_FloorSwitchAlreadyPressed::
+ releaseall
+ end
+
+VictoryRoad_1F_EventScript_Naomi::
+ trainerbattle_single TRAINER_COOLTRAINER_NAOMI, VictoryRoad_1F_Text_NaomiIntro, VictoryRoad_1F_Text_NaomiDefeat
+ msgbox VictoryRoad_1F_Text_NaomiPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+VictoryRoad_1F_EventScript_Rolando::
+ trainerbattle_single TRAINER_COOLTRAINER_ROLANDO, VictoryRoad_1F_Text_RolandoIntro, VictoryRoad_1F_Text_RolandoDefeat
+ msgbox VictoryRoad_1F_Text_RolandoPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+VictoryRoad_1F_Text_NaomiIntro::
+ .string "I wonder if you are good enough\n"
+ .string "for me?$"
+
+VictoryRoad_1F_Text_NaomiDefeat::
+ .string "I lost out…$"
+
+VictoryRoad_1F_Text_NaomiPostBattle::
+ .string "I never wanted to lose to anybody,\n"
+ .string "especially to a younger kid…$"
+
+VictoryRoad_1F_Text_RolandoIntro::
+ .string "I can see you're good.\n"
+ .string "Let me see exactly how good!$"
+
+VictoryRoad_1F_Text_RolandoDefeat::
+ .string "I had a chance…$"
+
+VictoryRoad_1F_Text_RolandoPostBattle::
+ .string "Tch!\n"
+ .string "I concede, you are better than I!$"
+
diff --git a/data/maps/VictoryRoad_2F_Frlg/map.json b/data/maps/VictoryRoad_2F_Frlg/map.json
new file mode 100644
index 000000000000..2072f49ada20
--- /dev/null
+++ b/data/maps/VictoryRoad_2F_Frlg/map.json
@@ -0,0 +1,290 @@
+{
+ "id": "MAP_VICTORY_ROAD_2F",
+ "name": "VictoryRoad_2F_Frlg",
+ "layout": "LAYOUT_VICTORY_ROAD_2F",
+ "music": "MUS_RG_MT_MOON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_KANTO_VICTORY_ROAD",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SUPER_NERD",
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "VictoryRoad_2F_EventScript_Dawson",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 20,
+ "y": 11,
+ "elevation": 4,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "VictoryRoad_2F_EventScript_Daisuke",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 31,
+ "y": 16,
+ "elevation": 4,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "VictoryRoad_2F_EventScript_Nelson",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 26,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_LEFT_UP",
+ "movement_range_x": 4,
+ "movement_range_y": 4,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "VictoryRoad_2F_EventScript_Vincent",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ROCKER",
+ "x": 36,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "VictoryRoad_2F_EventScript_Gregory",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 17,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VictoryRoad_2F_EventScript_ItemGuardSpec",
+ "flag": "FLAG_HIDE_VICTORY_ROAD_2F_GUARD_SPEC"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 40,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VictoryRoad_2F_EventScript_ItemTM07",
+ "flag": "FLAG_HIDE_VICTORY_ROAD_2F_TM07"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 25,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VictoryRoad_2F_EventScript_ItemFullHeal",
+ "flag": "FLAG_HIDE_VICTORY_ROAD_2F_FULL_HEAL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 14,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VictoryRoad_2F_EventScript_ItemTM37",
+ "flag": "FLAG_HIDE_VICTORY_ROAD_2F_TM37"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 8,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_VICTORY_ROAD_2F_BOULDER1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 6,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_VICTORY_ROAD_2F_BOULDER2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 33,
+ "y": 19,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "FLAG_HIDE_VICTORY_ROAD_2F_BOULDER"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 40,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VictoryRoad_2F_EventScript_DoubleEdgeTutor",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_VICTORY_ROAD_1F_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 3,
+ "y": 3,
+ "elevation": 3,
+ "dest_map": "MAP_VICTORY_ROAD_3F",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 34,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_VICTORY_ROAD_3F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 38,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_VICTORY_ROAD_3F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 36,
+ "y": 17,
+ "elevation": 4,
+ "dest_map": "MAP_VICTORY_ROAD_3F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 49,
+ "y": 13,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE23",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 48,
+ "y": 12,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE23",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 47,
+ "y": 13,
+ "elevation": 0,
+ "dest_map": "MAP_ROUTE23",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 34,
+ "y": 19,
+ "elevation": 3,
+ "dest_map": "MAP_VICTORY_ROAD_3F",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 2,
+ "y": 19,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_VICTORY_ROAD_2F_BOULDER1",
+ "var_value": "99",
+ "script": "VictoryRoad_2F_EventScript_FloorSwitch1"
+ },
+ {
+ "type": "trigger",
+ "x": 14,
+ "y": 19,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_VICTORY_ROAD_2F_BOULDER2",
+ "var_value": "99",
+ "script": "VictoryRoad_2F_EventScript_FloorSwitch2"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/VictoryRoad_2F_Frlg/scripts.inc b/data/maps/VictoryRoad_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..e3e718ebaaa6
--- /dev/null
+++ b/data/maps/VictoryRoad_2F_Frlg/scripts.inc
@@ -0,0 +1,136 @@
+VictoryRoad_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, VictoryRoad_2F_OnLoad
+ .byte 0
+
+VictoryRoad_2F_OnLoad::
+ call_if_ne VAR_MAP_SCENE_VICTORY_ROAD_2F_BOULDER1, 100, VictoryRoad_2F_EventScript_SetRockBarrier1
+ call_if_ne VAR_MAP_SCENE_VICTORY_ROAD_2F_BOULDER2, 100, VictoryRoad_2F_EventScript_SetRockBarrier2
+ end
+
+VictoryRoad_2F_EventScript_SetRockBarrier1::
+ setmetatile 13, 10, METATILE_Cave_RockBarrier_Top, 1
+ setmetatile 13, 11, METATILE_Cave_RockBarrier_Bottom, 1
+ return
+
+VictoryRoad_2F_EventScript_SetRockBarrier2::
+ setmetatile 33, 16, METATILE_Cave_RockBarrier_Top, 1
+ setmetatile 33, 17, METATILE_Cave_RockBarrier_Bottom, 1
+ return
+
+VictoryRoad_2F_EventScript_FloorSwitch1::
+ lockall
+ goto_if_eq VAR_MAP_SCENE_VICTORY_ROAD_2F_BOULDER1, 100, VictoryRoad_2F_EventScript_FloorSwitch1AlreadyPressed
+ setmetatile 13, 10, METATILE_Cave_Floor_Ledge_Top, 0
+ setmetatile 13, 11, METATILE_Cave_Floor_Ledge_Bottom, 0
+ playse SE_ICE_BREAK
+ special DrawWholeMapView
+ waitse
+ copyobjectxytoperm LOCALID_VICTORY_ROAD_2F_BOULDER1
+ setvar VAR_MAP_SCENE_VICTORY_ROAD_2F_BOULDER1, 100
+ releaseall
+ end
+
+VictoryRoad_2F_EventScript_FloorSwitch1AlreadyPressed::
+ releaseall
+ end
+
+VictoryRoad_2F_EventScript_FloorSwitch2::
+ lockall
+ goto_if_eq VAR_MAP_SCENE_VICTORY_ROAD_2F_BOULDER2, 100, VictoryRoad_2F_EventScript_FloorSwitch2AlreadyPressed
+ setmetatile 33, 16, METATILE_Cave_Floor_Ledge_Top, 0
+ setmetatile 33, 17, METATILE_Cave_Floor_Ledge_Bottom, 0
+ playse SE_ICE_BREAK
+ special DrawWholeMapView
+ waitse
+ copyobjectxytoperm LOCALID_VICTORY_ROAD_2F_BOULDER2
+ setvar VAR_MAP_SCENE_VICTORY_ROAD_2F_BOULDER2, 100
+ releaseall
+ end
+
+VictoryRoad_2F_EventScript_FloorSwitch2AlreadyPressed::
+ releaseall
+ end
+
+VictoryRoad_2F_EventScript_Dawson::
+ trainerbattle_single TRAINER_POKEMANIAC_DAWSON, VictoryRoad_2F_Text_DawsonIntro, VictoryRoad_2F_Text_DawsonDefeat
+ msgbox VictoryRoad_2F_Text_DawsonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+VictoryRoad_2F_EventScript_Daisuke::
+ trainerbattle_single TRAINER_BLACK_BELT_DAISUKE, VictoryRoad_2F_Text_DaisukeIntro, VictoryRoad_2F_Text_DaisukeDefeat
+ msgbox VictoryRoad_2F_Text_DaisukePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+VictoryRoad_2F_EventScript_Nelson::
+ trainerbattle_single TRAINER_JUGGLER_NELSON, VictoryRoad_2F_Text_NelsonIntro, VictoryRoad_2F_Text_NelsonDefeat
+ msgbox VictoryRoad_2F_Text_NelsonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+VictoryRoad_2F_EventScript_Gregory::
+ trainerbattle_single TRAINER_JUGGLER_GREGORY, VictoryRoad_2F_Text_GregoryIntro, VictoryRoad_2F_Text_GregoryDefeat
+ msgbox VictoryRoad_2F_Text_GregoryPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+VictoryRoad_2F_EventScript_Vincent::
+ trainerbattle_single TRAINER_TAMER_VINCENT, VictoryRoad_2F_Text_VincentIntro, VictoryRoad_2F_Text_VincentDefeat
+ msgbox VictoryRoad_2F_Text_VincentPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+VictoryRoad_2F_Text_DawsonIntro::
+ .string "If you can get through here,\n"
+ .string "you can go meet the ELITE FOUR.$"
+
+VictoryRoad_2F_Text_DawsonDefeat::
+ .string "No!\n"
+ .string "Unbelievable!$"
+
+VictoryRoad_2F_Text_DawsonPostBattle::
+ .string "I can beat you when it comes to\n"
+ .string "knowledge about POKéMON!$"
+
+VictoryRoad_2F_Text_DaisukeIntro::
+ .string "This here is VICTORY ROAD.\n"
+ .string "It's the final test for TRAINERS!$"
+
+VictoryRoad_2F_Text_DaisukeDefeat::
+ .string "Atcho!$"
+
+VictoryRoad_2F_Text_DaisukePostBattle::
+ .string "If you get stuck, try moving some\n"
+ .string "boulders around.$"
+
+VictoryRoad_2F_Text_NelsonIntro::
+ .string "Ah, so you wish to challenge the\n"
+ .string "ELITE FOUR?$"
+
+VictoryRoad_2F_Text_NelsonDefeat::
+ .string "You got me!$"
+
+VictoryRoad_2F_Text_NelsonPostBattle::
+ .string "{RIVAL} also came through here.$"
+
+VictoryRoad_2F_Text_VincentIntro::
+ .string "Come on!\n"
+ .string "I'll whip you!$"
+
+VictoryRoad_2F_Text_VincentDefeat::
+ .string "I got whipped!$"
+
+VictoryRoad_2F_Text_VincentPostBattle::
+ .string "You earned the right to be on\n"
+ .string "VICTORY ROAD…$"
+
+VictoryRoad_2F_Text_GregoryIntro::
+ .string "Is VICTORY ROAD too tough?$"
+
+VictoryRoad_2F_Text_GregoryDefeat::
+ .string "Well done!$"
+
+VictoryRoad_2F_Text_GregoryPostBattle::
+ .string "Many TRAINERS give up their\n"
+ .string "challenge here and go home.$"
+
+@ Unused, old text for Moltres
+VictoryRoad_2F_Text_Gyaoo::
+ .string "ギヤーオ!$"
+
diff --git a/data/maps/VictoryRoad_3F_Frlg/map.json b/data/maps/VictoryRoad_3F_Frlg/map.json
new file mode 100644
index 000000000000..cbbdd9cfa0f1
--- /dev/null
+++ b/data/maps/VictoryRoad_3F_Frlg/map.json
@@ -0,0 +1,239 @@
+{
+ "id": "MAP_VICTORY_ROAD_3F",
+ "name": "VictoryRoad_3F_Frlg",
+ "layout": "LAYOUT_VICTORY_ROAD_3F",
+ "music": "MUS_RG_MT_MOON",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_KANTO_VICTORY_ROAD",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_UNDERGROUND",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 40,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "VictoryRoad_3F_EventScript_George",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 21,
+ "y": 5,
+ "elevation": 4,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "VictoryRoad_3F_EventScript_Alexa",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 10,
+ "y": 17,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "VictoryRoad_3F_EventScript_Colby",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 11,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "VictoryRoad_3F_EventScript_Caroline",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 38,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VictoryRoad_3F_EventScript_ItemMaxRevive",
+ "flag": "FLAG_HIDE_VICTORY_ROAD_3F_MAX_REVIVE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 12,
+ "y": 9,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "VictoryRoad_3F_EventScript_ItemTM50",
+ "flag": "FLAG_HIDE_VICTORY_ROAD_3F_TM50"
+ },
+ {
+ "local_id": "LOCALID_VICTORY_ROAD_3F_BOULDER1",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 19,
+ "y": 15,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 33,
+ "y": 18,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "FLAG_HIDE_VICTORY_ROAD_2F_BOULDER",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "FLAG_HIDE_VICTORY_ROAD_3F_BOULDER"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 35,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_VICTORY_ROAD_3F_BOULDER2",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_PUSHABLE_BOULDER",
+ "x": 32,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_StrengthBoulder",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 38,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "VictoryRoad_3F_EventScript_Ray",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_F",
+ "x": 39,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "VictoryRoad_3F_EventScript_Tyra",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 5,
+ "y": 2,
+ "elevation": 3,
+ "dest_map": "MAP_VICTORY_ROAD_2F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 34,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_VICTORY_ROAD_2F",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 37,
+ "y": 10,
+ "elevation": 3,
+ "dest_map": "MAP_VICTORY_ROAD_2F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 39,
+ "y": 17,
+ "elevation": 3,
+ "dest_map": "MAP_VICTORY_ROAD_2F",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 34,
+ "y": 18,
+ "elevation": 3,
+ "dest_map": "MAP_VICTORY_ROAD_2F",
+ "dest_warp_id": "8"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 7,
+ "y": 7,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_VICTORY_ROAD_3F",
+ "var_value": "99",
+ "script": "VictoryRoad_3F_EventScript_FloorSwitch"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/VictoryRoad_3F_Frlg/scripts.inc b/data/maps/VictoryRoad_3F_Frlg/scripts.inc
new file mode 100644
index 000000000000..467906927da5
--- /dev/null
+++ b/data/maps/VictoryRoad_3F_Frlg/scripts.inc
@@ -0,0 +1,161 @@
+VictoryRoad_3F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, VictoryRoad_3F_OnLoad
+ .byte 0
+
+VictoryRoad_3F_OnLoad::
+ call_if_ne VAR_MAP_SCENE_VICTORY_ROAD_3F, 100, VictoryRoad_3F_EventScript_SetRockBarrier
+ end
+
+VictoryRoad_3F_EventScript_SetRockBarrier::
+ setmetatile 12, 12, METATILE_Cave_RockBarrier_Top, 1
+ setmetatile 12, 13, METATILE_Cave_RockBarrier_Bottom, 1
+ return
+
+VictoryRoad_3F_EventScript_FloorSwitch::
+ lockall
+ goto_if_eq VAR_MAP_SCENE_VICTORY_ROAD_3F, 100, VictoryRoad_3F_EventScript_FloorSwitchAlreadyPressed
+ setmetatile 12, 12, METATILE_Cave_Floor_Ledge_Top, 0
+ setmetatile 12, 13, METATILE_Cave_Floor_Ledge_Bottom, 0
+ playse SE_ICE_BREAK
+ special DrawWholeMapView
+ waitse
+ copyobjectxytoperm LOCALID_VICTORY_ROAD_3F_BOULDER1
+ copyobjectxytoperm LOCALID_VICTORY_ROAD_3F_BOULDER2
+ setvar VAR_MAP_SCENE_VICTORY_ROAD_3F, 100
+ releaseall
+ end
+
+VictoryRoad_3F_EventScript_FloorSwitchAlreadyPressed::
+ releaseall
+ end
+
+VictoryRoad_3F_EventScript_George::
+ trainerbattle_single TRAINER_COOLTRAINER_GEORGE, VictoryRoad_3F_Text_GeorgeIntro, VictoryRoad_3F_Text_GeorgeDefeat
+ msgbox VictoryRoad_3F_Text_GeorgePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+VictoryRoad_3F_EventScript_Colby::
+ trainerbattle_single TRAINER_COOLTRAINER_COLBY, VictoryRoad_3F_Text_ColbyIntro, VictoryRoad_3F_Text_ColbyDefeat
+ msgbox VictoryRoad_3F_Text_ColbyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+VictoryRoad_3F_EventScript_Caroline::
+ trainerbattle_single TRAINER_COOLTRAINER_CAROLINE, VictoryRoad_3F_Text_CarolineIntro, VictoryRoad_3F_Text_CarolineDefeat
+ msgbox VictoryRoad_3F_Text_CarolinePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+VictoryRoad_3F_EventScript_Alexa::
+ trainerbattle_single TRAINER_COOLTRAINER_ALEXA, VictoryRoad_3F_Text_AlexaIntro, VictoryRoad_3F_Text_AlexaDefeat
+ msgbox VictoryRoad_3F_Text_AlexaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+VictoryRoad_3F_EventScript_Ray::
+ trainerbattle_double TRAINER_COOL_COUPLE_RAY_TYRA, VictoryRoad_3F_Text_RayIntro, VictoryRoad_3F_Text_RayDefeat, VictoryRoad_3F_Text_RayNotEnoughMons
+ msgbox VictoryRoad_3F_Text_RayPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+VictoryRoad_3F_EventScript_Tyra::
+ trainerbattle_double TRAINER_COOL_COUPLE_RAY_TYRA, VictoryRoad_3F_Text_TyraIntro, VictoryRoad_3F_Text_TyraDefeat, VictoryRoad_3F_Text_TyraNotEnoughMons
+ msgbox VictoryRoad_3F_Text_TyraPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Text_DoubleEdgeTeach::
+ .string "You should be proud of yourself,\n"
+ .string "having battled your way through\l"
+ .string "VICTORY ROAD so courageously.\p"
+ .string "In recognition of your feat,\n"
+ .string "I'll teach you DOUBLE-EDGE.\p"
+ .string "Would you like me to teach that\n"
+ .string "technique?$"
+
+Text_DoubleEdgeDeclined::
+ .string "I'll teach you the technique\n"
+ .string "anytime.$"
+
+Text_DoubleEdgeWhichMon::
+ .string "Which POKéMON should I teach\n"
+ .string "DOUBLE-EDGE?$"
+
+Text_DoubleEdgeTaught::
+ .string "Keep that drive going for the\n"
+ .string "POKéMON LEAGUE!\p"
+ .string "Take a run at them and knock 'em\n"
+ .string "out!$"
+
+VictoryRoad_3F_Text_GeorgeIntro::
+ .string "I heard rumors of a child prodigy.$"
+
+VictoryRoad_3F_Text_GeorgeDefeat::
+ .string "The rumors were true!$"
+
+VictoryRoad_3F_Text_GeorgePostBattle::
+ .string "So, it was you who beat GIOVANNI\n"
+ .string "of TEAM ROCKET?$"
+
+VictoryRoad_3F_Text_AlexaIntro::
+ .string "TRAINERS live to seek stronger\n"
+ .string "opponents.$"
+
+VictoryRoad_3F_Text_AlexaDefeat::
+ .string "Oh!\n"
+ .string "So strong!$"
+
+VictoryRoad_3F_Text_AlexaPostBattle::
+ .string "By fighting tough battles, you get\n"
+ .string "stronger.$"
+
+VictoryRoad_3F_Text_CarolineIntro::
+ .string "I'll show you just how good you\n"
+ .string "are. Not!$"
+
+VictoryRoad_3F_Text_CarolineDefeat::
+ .string "I'm furious!$"
+
+VictoryRoad_3F_Text_CarolinePostBattle::
+ .string "You showed me just how good\n"
+ .string "I was…$"
+
+VictoryRoad_3F_Text_ColbyIntro::
+ .string "Only the chosen can pass here!$"
+
+VictoryRoad_3F_Text_ColbyDefeat::
+ .string "I don't believe it!$"
+
+VictoryRoad_3F_Text_ColbyPostBattle::
+ .string "All TRAINERS here are headed to\n"
+ .string "the POKéMON LEAGUE.\p"
+ .string "Don't let down your guard.$"
+
+VictoryRoad_3F_Text_RayIntro::
+ .string "RAY: Together, the two of us are\n"
+ .string "destined for greatness!$"
+
+VictoryRoad_3F_Text_RayDefeat::
+ .string "RAY: Ludicrous!\n"
+ .string "This can't be!$"
+
+VictoryRoad_3F_Text_RayPostBattle::
+ .string "RAY: You've beaten us.\n"
+ .string "Greatness remains elusive…$"
+
+VictoryRoad_3F_Text_RayNotEnoughMons::
+ .string "RAY: Together, the two of us are\n"
+ .string "striving for the pinnacle.\p"
+ .string "We need you to bring two POKéMON\n"
+ .string "into battle with us.$"
+
+VictoryRoad_3F_Text_TyraIntro::
+ .string "TYRA: We're trying to become\n"
+ .string "champions together.$"
+
+VictoryRoad_3F_Text_TyraDefeat::
+ .string "TYRA: Oh, but…$"
+
+VictoryRoad_3F_Text_TyraPostBattle::
+ .string "TYRA: You've taught me that power\n"
+ .string "can be infinite in shape and form.$"
+
+VictoryRoad_3F_Text_TyraNotEnoughMons::
+ .string "TYRA: You can't battle with us if\n"
+ .string "you have only one POKéMON.$"
+
diff --git a/data/maps/ViridianCity_Frlg/map.json b/data/maps/ViridianCity_Frlg/map.json
new file mode 100644
index 000000000000..f9bb7f17c31f
--- /dev/null
+++ b/data/maps/ViridianCity_Frlg/map.json
@@ -0,0 +1,283 @@
+{
+ "id": "MAP_VIRIDIAN_CITY",
+ "name": "ViridianCity_Frlg",
+ "layout": "LAYOUT_VIRIDIAN_CITY",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VIRIDIAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_SUNNY",
+ "map_type": "MAP_TYPE_TOWN",
+ "allow_cycling": true,
+ "allow_escaping": false,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": [
+ {
+ "map": "MAP_ROUTE2",
+ "offset": 12,
+ "direction": "up"
+ },
+ {
+ "map": "MAP_ROUTE1",
+ "offset": 12,
+ "direction": "down"
+ },
+ {
+ "map": "MAP_ROUTE22",
+ "offset": 10,
+ "direction": "left"
+ }
+ ],
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_FAT_MAN_FRLG",
+ "x": 8,
+ "y": 26,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_EventScript_DreamEaterTutor",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 11,
+ "y": 24,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_11"
+ },
+ {
+ "local_id": "LOCALID_VIRIDIAN_OLD_MAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_OLD_MAN_1",
+ "x": 34,
+ "y": 11,
+ "elevation": 3,
+ "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": "ViridianCity_EventScript_OldMan",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_TUTORIAL_MAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_VAR_0",
+ "x": 21,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 2,
+ "movement_range_y": 3,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_EventScript_TutorialOldMan",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_VIRIDIAN_WOMAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_3_FRLG",
+ "x": 20,
+ "y": 12,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 3,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 33,
+ "y": 26,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 16,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_EventScript_Boy",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_VIRIDIAN_BORDER_TREE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CUTTABLE_TREE_FRLG",
+ "x": 18,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "EventScript_CutTree",
+ "flag": "FLAG_TEMP_12"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 17,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_EventScript_ItemPotion",
+ "flag": "FLAG_HIDE_VIRIDIAN_CITY_POTION"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 26,
+ "y": 26,
+ "elevation": 0,
+ "dest_map": "MAP_VIRIDIAN_CITY_POKEMON_CENTER_1F",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 25,
+ "y": 11,
+ "elevation": 3,
+ "dest_map": "MAP_VIRIDIAN_CITY_HOUSE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 36,
+ "y": 10,
+ "elevation": 0,
+ "dest_map": "MAP_VIRIDIAN_CITY_GYM",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 25,
+ "y": 18,
+ "elevation": 0,
+ "dest_map": "MAP_VIRIDIAN_CITY_SCHOOL",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 36,
+ "y": 19,
+ "elevation": 0,
+ "dest_map": "MAP_VIRIDIAN_CITY_MART",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 22,
+ "y": 11,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_VIRIDIAN_CITY_OLD_MAN",
+ "var_value": "0",
+ "script": "ViridianCity_EventScript_RoadBlocked"
+ },
+ {
+ "type": "trigger",
+ "x": 36,
+ "y": 11,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_VIRIDIAN_CITY_GYM_DOOR",
+ "var_value": "0",
+ "script": "ViridianCity_EventScript_GymDoorLocked"
+ },
+ {
+ "type": "trigger",
+ "x": 20,
+ "y": 8,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_VIRIDIAN_CITY_OLD_MAN",
+ "var_value": "1",
+ "script": "ViridianCity_EventScript_TutorialTriggerLeft"
+ },
+ {
+ "type": "trigger",
+ "x": 22,
+ "y": 8,
+ "elevation": 3,
+ "var": "VAR_MAP_SCENE_VIRIDIAN_CITY_OLD_MAN",
+ "var_value": "1",
+ "script": "ViridianCity_EventScript_TutorialTriggerRight"
+ }
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 23,
+ "y": 1,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ViridianCity_EventScript_TrainerTips1"
+ },
+ {
+ "type": "sign",
+ "x": 32,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ViridianCity_EventScript_GymSign"
+ },
+ {
+ "type": "sign",
+ "x": 20,
+ "y": 31,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ViridianCity_EventScript_TrainerTips2"
+ },
+ {
+ "type": "sign",
+ "x": 20,
+ "y": 16,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ViridianCity_EventScript_CitySign"
+ },
+ {
+ "type": "sign",
+ "x": 36,
+ "y": 10,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ViridianCity_EventScript_GymDoor"
+ }
+ ]
+}
diff --git a/data/maps/ViridianCity_Frlg/scripts.inc b/data/maps/ViridianCity_Frlg/scripts.inc
new file mode 100644
index 000000000000..d77e34c990b4
--- /dev/null
+++ b/data/maps/ViridianCity_Frlg/scripts.inc
@@ -0,0 +1,359 @@
+ViridianCity_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, ViridianCity_OnTransition
+ .byte 0
+
+ViridianCity_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_VIRIDIAN_CITY
+ call_if_eq VAR_MAP_SCENE_VIRIDIAN_CITY_OLD_MAN, 0, ViridianCity_EventScript_SetOldManBlockingRoad
+ call_if_eq VAR_MAP_SCENE_VIRIDIAN_CITY_OLD_MAN, 1, ViridianCity_EventScript_SetOldManStandingByRoad
+ call_if_ge VAR_MAP_SCENE_VIRIDIAN_CITY_OLD_MAN, 2, ViridianCity_EventScript_SetOldManNormal
+ call_if_eq VAR_MAP_SCENE_VIRIDIAN_CITY_GYM_DOOR, 0, ViridianCity_EventScript_TryUnlockGym
+ end
+
+ViridianCity_EventScript_SetOldManNormal::
+ setvar VAR_OBJ_GFX_ID_0, OBJ_EVENT_GFX_OLD_MAN_1
+ return
+
+ViridianCity_EventScript_SetOldManStandingByRoad::
+ setvar VAR_OBJ_GFX_ID_0, OBJ_EVENT_GFX_OLD_MAN_1
+ setobjectxyperm LOCALID_TUTORIAL_MAN, 21, 8
+ setobjectmovementtype LOCALID_TUTORIAL_MAN, MOVEMENT_TYPE_LOOK_AROUND
+ return
+
+ViridianCity_EventScript_SetOldManBlockingRoad::
+ setvar VAR_OBJ_GFX_ID_0, OBJ_EVENT_GFX_OLD_MAN_LYING_DOWN
+ setobjectxyperm LOCALID_TUTORIAL_MAN, 21, 11
+ setobjectmovementtype LOCALID_TUTORIAL_MAN, MOVEMENT_TYPE_FACE_DOWN
+ return
+
+ViridianCity_EventScript_TryUnlockGym::
+ goto_if_unset FLAG_BADGE02_GET, Common_EventScript_NopReturn
+ goto_if_unset FLAG_BADGE03_GET, Common_EventScript_NopReturn
+ goto_if_unset FLAG_BADGE04_GET, Common_EventScript_NopReturn
+ goto_if_unset FLAG_BADGE05_GET, Common_EventScript_NopReturn
+ goto_if_unset FLAG_BADGE06_GET, Common_EventScript_NopReturn
+ goto_if_unset FLAG_BADGE07_GET, Common_EventScript_NopReturn
+ setvar VAR_MAP_SCENE_VIRIDIAN_CITY_GYM_DOOR, 1
+ return
+
+ViridianCity_EventScript_GymDoorLocked::
+ lockall
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ delay 20
+ msgbox ViridianCity_Text_GymDoorsAreLocked
+ closemessage
+ applymovement LOCALID_PLAYER, ViridianCity_Movement_JumpDownLedge
+ waitmovement 0
+ releaseall
+ end
+
+ViridianCity_Movement_JumpDownLedge::
+ jump_2_down
+ step_end
+
+ViridianCity_EventScript_CitySign::
+ msgbox ViridianCity_Text_CitySign, MSGBOX_SIGN
+ end
+
+ViridianCity_EventScript_TrainerTips1::
+ msgbox ViridianCity_Text_CatchMonsForEasierBattles, MSGBOX_SIGN
+ end
+
+ViridianCity_EventScript_TrainerTips2::
+ msgbox ViridianCity_Text_MovesLimitedByPP, MSGBOX_SIGN
+ end
+
+ViridianCity_EventScript_GymSign::
+ msgbox ViridianCity_Text_GymSign, MSGBOX_SIGN
+ end
+
+ViridianCity_EventScript_GymDoor::
+ msgbox ViridianCity_Text_GymDoorsAreLocked, MSGBOX_SIGN
+ end
+
+ViridianCity_EventScript_Boy::
+ msgbox ViridianCity_Text_CanCarryMonsAnywhere, MSGBOX_NPC
+ end
+
+@ Other old man, not the tutorial old man
+ViridianCity_EventScript_OldMan::
+ lock
+ faceplayer
+ goto_if_eq VAR_MAP_SCENE_VIRIDIAN_CITY_GYM_DOOR, 1, ViridianCity_EventScript_OldManGymLeaderReturned
+ msgbox ViridianCity_Text_GymClosedWonderWhoLeaderIs
+ closemessage
+ applymovement LOCALID_VIRIDIAN_OLD_MAN, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+ViridianCity_EventScript_OldManGymLeaderReturned::
+ msgbox ViridianCity_Text_ViridiansGymLeaderReturned
+ release
+ end
+
+ViridianCity_EventScript_TutorialOldMan::
+ lock
+ faceplayer
+ goto_if_set FLAG_BADGE01_GET, ViridianCity_EventScript_AskIfTeachyTVHelpful
+ goto_if_ge VAR_MAP_SCENE_VIRIDIAN_CITY_OLD_MAN, 2, ViridianCity_EventScript_TutorialCompleted
+ goto_if_eq VAR_MAP_SCENE_VIRIDIAN_CITY_OLD_MAN, 1, ViridianCity_EventScript_TutorialStart
+ goto_if_eq VAR_MAP_SCENE_VIRIDIAN_CITY_OLD_MAN, 0, ViridianCity_EventScript_TutorialNotReady
+ end
+
+ViridianCity_EventScript_AskIfTeachyTVHelpful::
+ msgbox ViridianCity_Text_HowsTeachyTVHelping, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, ViridianCity_EventScript_TeachyTVNotHelpful
+ msgbox ViridianCity_Text_MyGrandsonOnTheShow
+ release
+ end
+
+ViridianCity_EventScript_TeachyTVNotHelpful::
+ msgbox ViridianCity_Text_TooBusyForTeachyTV
+ release
+ end
+
+ViridianCity_EventScript_TutorialCompleted::
+ msgbox ViridianCity_Text_WeakenMonsFirstToCatch
+ release
+ end
+
+ViridianCity_EventScript_TutorialStart::
+ call ViridianCity_EventScript_DoTutorialBattle
+ release
+ end
+
+@ Unused
+ViridianCity_EventScript_WatchToLearnBasics::
+ msgbox ViridianCity_Text_WatchThatToLearnBasics
+ release
+ end
+
+@ Unused. Starts battle after the post battle text, which is odd.
+ViridianCity_EventScript_TutorialUnused::
+ msgbox ViridianCity_Text_ThatWasEducationalTakeThis
+ special StartOldManTutorialBattle
+ waitstate
+ release
+ end
+
+ViridianCity_EventScript_TutorialNotReady::
+ msgbox ViridianCity_Text_ThisIsPrivateProperty
+ closemessage
+ release
+ end
+
+ViridianCity_EventScript_Youngster::
+ lock
+ faceplayer
+ msgbox ViridianCity_Text_WantToKnowAboutCaterpillarMons, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, ViridianCity_EventScript_YoungsterExplainCaterpillars
+ goto_if_eq VAR_RESULT, NO, ViridianCity_EventScript_YoungsterDeclineExplanation
+ end
+
+ViridianCity_EventScript_YoungsterExplainCaterpillars::
+ msgbox ViridianCity_Text_ExplainCaterpieWeedle
+ release
+ end
+
+ViridianCity_EventScript_YoungsterDeclineExplanation::
+ msgbox ViridianCity_Text_OhOkayThen
+ release
+ end
+
+ViridianCity_EventScript_Woman::
+ lock
+ faceplayer
+ goto_if_eq VAR_MAP_SCENE_VIRIDIAN_CITY_OLD_MAN, 0, ViridianCity_EventScript_WomanRoadBlocked
+ msgbox ViridianCity_Text_GoShoppingInPewterOccasionally
+ release
+ end
+
+ViridianCity_EventScript_WomanRoadBlocked::
+ msgbox ViridianCity_Text_GrandpaHasntHadCoffeeYet
+ closemessage
+ applymovement LOCALID_VIRIDIAN_WOMAN, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+ViridianCity_EventScript_DreamEaterTutor::
+ goto EventScript_DreamEaterTutor
+ end
+
+ViridianCity_EventScript_RoadBlocked::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox ViridianCity_Text_ThisIsPrivateProperty
+ closemessage
+ applymovement LOCALID_PLAYER, ViridianCity_Movement_WalkDown
+ waitmovement 0
+ releaseall
+ end
+
+ViridianCity_Movement_WalkDown::
+ walk_down
+ step_end
+
+ViridianCity_EventScript_TutorialTriggerLeft::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_TUTORIAL_MAN, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ call ViridianCity_EventScript_DoTutorialBattle
+ release
+ end
+
+ViridianCity_EventScript_TutorialTriggerRight::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_TUTORIAL_MAN, Common_Movement_WalkInPlaceFasterRight
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ call ViridianCity_EventScript_DoTutorialBattle
+ release
+ end
+
+ViridianCity_EventScript_DoTutorialBattle::
+ msgbox ViridianCity_Text_ShowYouHowToCatchMons
+ closemessage
+ special StartOldManTutorialBattle
+ waitstate
+ lock
+ faceplayer
+ msgbox ViridianCity_Text_ThatWasEducationalTakeThis
+ setvar VAR_MAP_SCENE_VIRIDIAN_CITY_OLD_MAN, 2
+ giveitem ITEM_TEACHY_TV
+ msgbox ViridianCity_Text_WatchThatToLearnBasics
+ return
+
+ViridianCity_Text_CanCarryMonsAnywhere::
+ .string "Those POKé BALLS at your waist!\n"
+ .string "You have POKéMON, don't you?\p"
+ .string "It's great that you can carry and\n"
+ .string "use POKéMON anytime, anywhere.$"
+
+ViridianCity_Text_GymClosedWonderWhoLeaderIs::
+ .string "This POKéMON GYM is always closed.\p"
+ .string "I wonder who the LEADER is?$"
+
+ViridianCity_Text_ViridiansGymLeaderReturned::
+ .string "VIRIDIAN GYM's LEADER returned!$"
+
+ViridianCity_Text_WantToKnowAboutCaterpillarMons::
+ .string "You want to know about the two\n"
+ .string "kinds of caterpillar POKéMON?$"
+
+ViridianCity_Text_OhOkayThen::
+ .string "Oh, okay then!$"
+
+ViridianCity_Text_ExplainCaterpieWeedle::
+ .string "CATERPIE has no poison,\n"
+ .string "but WEEDLE does.\p"
+ .string "Watch that your POKéMON aren't\n"
+ .string "stabbed by WEEDLE's POISON STING.$"
+
+ViridianCity_Text_GrandpaHasntHadCoffeeYet::
+ .string "Oh, Grandpa!\n"
+ .string "Don't be so mean!\p"
+ .string "I'm so sorry.\n"
+ .string "He hasn't had his coffee yet.$"
+
+ViridianCity_Text_GoShoppingInPewterOccasionally::
+ .string "I go shopping in PEWTER CITY\n"
+ .string "occasionally.\p"
+ .string "I have to take the winding trail in\n"
+ .string "VIRIDIAN FOREST when I go.$"
+
+ViridianCity_Text_ThisIsPrivateProperty::
+ .string "I absolutely forbid you from\n"
+ .string "going through here!\p"
+ .string "This is private property!$"
+
+ViridianCity_Text_ShowYouHowToCatchMons::
+ .string "Well, now, I've had my coffee, and\n"
+ .string "that's what I need to get going!\p"
+ .string "Hm?\n"
+ .string "What is that red box you have?\p"
+ .string "Ah, so you're working on your\n"
+ .string "POKéDEX.\p"
+ .string "Then let me give you a word of\n"
+ .string "advice.\p"
+ .string "Whenever you catch a POKéMON,\n"
+ .string "the POKéDEX automatically updates\l"
+ .string "its data.\p"
+ .string "…You don't know how to catch\n"
+ .string "a POKéMON?\p"
+ .string "I suppose I had better show you\n"
+ .string "then!$"
+
+ViridianCity_Text_ThatWasEducationalTakeThis::
+ .string "There! Now tell me, that was\n"
+ .string "educational, was it not?\p"
+ .string "And here, take this, too.$"
+
+ViridianCity_Text_WatchThatToLearnBasics::
+ .string "If there's something you don't\n"
+ .string "understand, watch that.\p"
+ .string "It will teach you about the basics\n"
+ .string "of being a POKéMON TRAINER.$"
+
+ViridianCity_Text_WeakenMonsFirstToCatch::
+ .string "Well, now, I've had my coffee, and\n"
+ .string "that's what I need to get going!\p"
+ .string "But I made it too strong.\n"
+ .string "It gave me a headache…\p"
+ .string "Incidentally, are you filling your\n"
+ .string "POKéDEX?\p"
+ .string "At first, focus on weakening the\n"
+ .string "POKéMON before trying to catch it.$"
+
+ViridianCity_Text_HowsTeachyTVHelping::
+ .string "Well, now, I've had my coffee, and\n"
+ .string "that's what I need to get going!\p"
+ .string "But I made it too strong.\n"
+ .string "It gave me a headache…\p"
+ .string "Incidentally, is my old TEACHY TV\n"
+ .string "helping you?$"
+
+ViridianCity_Text_MyGrandsonOnTheShow::
+ .string "Wahaha!\n"
+ .string "It's my grandson on the show!\p"
+ .string "Since he's the one doing the\n"
+ .string "teaching, you're bound to learn.$"
+
+ViridianCity_Text_TooBusyForTeachyTV::
+ .string "Hm… You're too busy to not even\n"
+ .string "have the time for TEACHY TV…\p"
+ .string "Time is money, and neither should\n"
+ .string "be ill spent…$"
+
+ViridianCity_Text_CitySign::
+ .string "VIRIDIAN CITY \n"
+ .string "The Eternally Green Paradise$"
+
+ViridianCity_Text_CatchMonsForEasierBattles::
+ .string "TRAINER TIPS\p"
+ .string "Catch POKéMON and expand your\n"
+ .string "collection.\p"
+ .string "The more you have, the easier it\n"
+ .string "is to battle.$"
+
+ViridianCity_Text_MovesLimitedByPP::
+ .string "TRAINER TIPS\p"
+ .string "The battle moves of POKéMON are\n"
+ .string "limited by their POWER POINTS, PP.\p"
+ .string "To replenish PP, rest your tired\n"
+ .string "POKéMON at a POKéMON CENTER.$"
+
+ViridianCity_Text_GymSign::
+ .string "VIRIDIAN CITY POKéMON GYM$"
+
+ViridianCity_Text_GymDoorsAreLocked::
+ .string "VIRIDIAN GYM's doors are locked…$"
+
diff --git a/data/maps/ViridianCity_Gym_Frlg/map.json b/data/maps/ViridianCity_Gym_Frlg/map.json
new file mode 100644
index 000000000000..057038f91d95
--- /dev/null
+++ b/data/maps/ViridianCity_Gym_Frlg/map.json
@@ -0,0 +1,213 @@
+{
+ "id": "MAP_VIRIDIAN_CITY_GYM",
+ "name": "ViridianCity_Gym_Frlg",
+ "layout": "LAYOUT_VIRIDIAN_CITY_GYM",
+ "music": "MUS_GYM",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VIRIDIAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_GYM",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "ViridianCity_Gym_EventScript_Takashi",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 12,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "ViridianCity_Gym_EventScript_Yuji",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 11,
+ "y": 14,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "ViridianCity_Gym_EventScript_Atsushi",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 10,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "ViridianCity_Gym_EventScript_Jason",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MAN",
+ "x": 2,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "ViridianCity_Gym_EventScript_Cole",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BLACKBELT",
+ "x": 3,
+ "y": 11,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "2",
+ "script": "ViridianCity_Gym_EventScript_Kiyo",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "ViridianCity_Gym_EventScript_Samuel",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_VIRIDIAN_GIOVANNI",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GIOVANNI",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_Gym_EventScript_Giovanni",
+ "flag": "FLAG_HIDE_VIRIDIAN_GIOVANNI"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_COOLTRAINER_M",
+ "x": 13,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "3",
+ "script": "ViridianCity_Gym_EventScript_Warren",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GYM_GUY",
+ "x": 16,
+ "y": 20,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_Gym_EventScript_GymGuy",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 16,
+ "y": 22,
+ "elevation": 3,
+ "dest_map": "MAP_VIRIDIAN_CITY",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 17,
+ "y": 22,
+ "elevation": 3,
+ "dest_map": "MAP_VIRIDIAN_CITY",
+ "dest_warp_id": "2"
+ },
+ {
+ "x": 18,
+ "y": 22,
+ "elevation": 3,
+ "dest_map": "MAP_VIRIDIAN_CITY",
+ "dest_warp_id": "2"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 15,
+ "y": 20,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ViridianCity_Gym_EventScript_GymStatue"
+ },
+ {
+ "type": "sign",
+ "x": 19,
+ "y": 20,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ViridianCity_Gym_EventScript_GymStatue"
+ },
+ {
+ "type": "hidden_item",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "item": "ITEM_MACHO_BRACE",
+ "flag": "FLAG_HIDDEN_ITEM_VIRIDIAN_CITY_GYM_MACHO_BRACE",
+ "quantity": 1,
+ "underfoot": true
+ }
+ ]
+}
diff --git a/data/maps/ViridianCity_Gym_Frlg/scripts.inc b/data/maps/ViridianCity_Gym_Frlg/scripts.inc
new file mode 100644
index 000000000000..7cbe9a6800a4
--- /dev/null
+++ b/data/maps/ViridianCity_Gym_Frlg/scripts.inc
@@ -0,0 +1,277 @@
+ViridianCity_Gym_Frlg_MapScripts::
+ .byte 0
+
+ViridianCity_Gym_EventScript_Giovanni::
+ famechecker FAMECHECKER_GIOVANNI, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
+ trainerbattle_single TRAINER_LEADER_GIOVANNI, ViridianCity_Gym_Text_GiovanniIntro, ViridianCity_Gym_Text_GiovanniDefeat, ViridianCity_Gym_EventScript_DefeatedGiovanni, NO_MUSIC
+ goto_if_unset FLAG_GOT_TM26_FROM_GIOVANNI, ViridianCity_Gym_EventScript_GiveTM26
+ msgbox ViridianCity_Gym_Text_GiovanniPostBattle
+ closemessage
+ fadescreen FADE_TO_BLACK
+ removeobject LOCALID_VIRIDIAN_GIOVANNI
+ fadescreen FADE_FROM_BLACK
+ release
+ end
+
+ViridianCity_Gym_EventScript_DefeatedGiovanni::
+ famechecker FAMECHECKER_GIOVANNI, 3
+ setflag FLAG_HIDE_MISC_KANTO_ROCKETS
+ setflag FLAG_DEFEATED_LEADER_GIOVANNI
+ setflag FLAG_BADGE08_GET
+ setvar VAR_MAP_SCENE_ROUTE22, 3
+ set_gym_trainers_frlg 8
+ goto ViridianCity_Gym_EventScript_GiveTM26
+ end
+
+ViridianCity_Gym_EventScript_GiveTM26::
+ msgbox ViridianCity_Gym_Text_ExplainEarthBadgeTakeThis
+ checkitemspace ITEM_TM26
+ goto_if_eq VAR_RESULT, FALSE, ViridianCity_Gym_EventScript_NoRoomForTM26
+ giveitem_msg ViridianCity_Gym_Text_ReceivedTM26FromGiovanni, ITEM_TM26
+ setflag FLAG_GOT_TM26_FROM_GIOVANNI
+ msgbox ViridianCity_Gym_Text_ExplainTM26
+ release
+ end
+
+ViridianCity_Gym_EventScript_NoRoomForTM26::
+ msgbox ViridianCity_Gym_Text_YouDoNotHaveSpace
+ release
+ end
+
+ViridianCity_Gym_EventScript_Jason::
+ trainerbattle_single TRAINER_TAMER_JASON, ViridianCity_Gym_Text_JasonIntro, ViridianCity_Gym_Text_JasonDefeat
+ msgbox ViridianCity_Gym_Text_JasonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ViridianCity_Gym_EventScript_Cole::
+ trainerbattle_single TRAINER_TAMER_COLE, ViridianCity_Gym_Text_ColeIntro, ViridianCity_Gym_Text_ColeDefeat
+ msgbox ViridianCity_Gym_Text_ColePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ViridianCity_Gym_EventScript_Atsushi::
+ trainerbattle_single TRAINER_BLACK_BELT_ATSUSHI, ViridianCity_Gym_Text_AtsushiIntro, ViridianCity_Gym_Text_AtsushiDefeat
+ msgbox ViridianCity_Gym_Text_AtsushiPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ViridianCity_Gym_EventScript_Kiyo::
+ trainerbattle_single TRAINER_BLACK_BELT_KIYO, ViridianCity_Gym_Text_KiyoIntro, ViridianCity_Gym_Text_KiyoDefeat
+ msgbox ViridianCity_Gym_Text_KiyoPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ViridianCity_Gym_EventScript_Takashi::
+ trainerbattle_single TRAINER_BLACK_BELT_TAKASHI, ViridianCity_Gym_Text_TakashiIntro, ViridianCity_Gym_Text_TakashiDefeat
+ msgbox ViridianCity_Gym_Text_TakashiPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ViridianCity_Gym_EventScript_Samuel::
+ trainerbattle_single TRAINER_COOLTRAINER_SAMUEL, ViridianCity_Gym_Text_SamuelIntro, ViridianCity_Gym_Text_SamuelDefeat
+ msgbox ViridianCity_Gym_Text_SamuelPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ViridianCity_Gym_EventScript_Yuji::
+ trainerbattle_single TRAINER_COOLTRAINER_YUJI, ViridianCity_Gym_Text_YujiIntro, ViridianCity_Gym_Text_YujiDefeat
+ msgbox ViridianCity_Gym_Text_YujiPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ViridianCity_Gym_EventScript_Warren::
+ trainerbattle_single TRAINER_COOLTRAINER_WARREN, ViridianCity_Gym_Text_WarrenIntro, ViridianCity_Gym_Text_WarrenDefeat
+ msgbox ViridianCity_Gym_Text_WarrenPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ViridianCity_Gym_EventScript_GymGuy::
+ lock
+ faceplayer
+ goto_if_set FLAG_DEFEATED_LEADER_GIOVANNI, ViridianCity_Gym_EventScript_GymGuyPostVictory
+ msgbox ViridianCity_Gym_Text_GymGuyAdvice
+ release
+ end
+
+ViridianCity_Gym_EventScript_GymGuyPostVictory::
+ famechecker FAMECHECKER_GIOVANNI, 4
+ msgbox ViridianCity_Gym_Text_GymGuyPostVictory
+ release
+ end
+
+ViridianCity_Gym_EventScript_GymStatue::
+ lockall
+ goto_if_set FLAG_BADGE08_GET, ViridianCity_Gym_EventScript_GymStatuePostVictory
+ msgbox ViridianCity_Gym_Text_GymStatue
+ releaseall
+ end
+
+ViridianCity_Gym_EventScript_GymStatuePostVictory::
+ msgbox ViridianCity_Gym_Text_GymStatuePlayerWon
+ releaseall
+ end
+
+ViridianCity_Gym_Text_GiovanniIntro::
+ .string "Fwahahaha!\n"
+ .string "Welcome to my hideout!\p"
+ .string "It shall be so until I can restore\n"
+ .string "TEAM ROCKET to its former glory.\p"
+ .string "But, you have found me again.\n"
+ .string "So be it.\l"
+ .string "This time, I'm not holding back!\p"
+ .string "Once more, you shall face\n"
+ .string "GIOVANNI, the greatest TRAINER!{PLAY_BGM}{MUS_RG_ENCOUNTER_ROCKET}$"
+
+ViridianCity_Gym_Text_GiovanniDefeat::
+ .string "Ha!\n"
+ .string "That was a truly intense fight.\l"
+ .string "You have won!\p"
+ .string "As proof, here is the EARTHBADGE!\n"
+ .string "{PAUSE_MUSIC}{PLAY_BGM}{MUS_OBTAIN_BADGE}{PAUSE 0xFE}{PAUSE 0x56}{RESUME_MUSIC}$"
+
+ViridianCity_Gym_Text_GiovanniPostBattle::
+ .string "Having lost in this fashion, \n"
+ .string "I can't face my followers.\l"
+ .string "I have betrayed their trust.\p"
+ .string "As of today, TEAM ROCKET is\n"
+ .string "finished forever!\p"
+ .string "As for myself, I shall dedicate\n"
+ .string "my life to training again.\p"
+ .string "Let us meet again someday!\n"
+ .string "Farewell!$"
+
+ViridianCity_Gym_Text_ExplainEarthBadgeTakeThis::
+ .string "The EARTHBADGE makes POKéMON of\n"
+ .string "any level obey without question.\p"
+ .string "It is evidence of your mastery as\n"
+ .string "a POKéMON TRAINER.\p"
+ .string "With it, you can challenge the\n"
+ .string "POKéMON LEAGUE.\p"
+ .string "Also, take this TM.\p"
+ .string "Consider it a gift for your POKéMON\n"
+ .string "LEAGUE challenge.$"
+
+ViridianCity_Gym_Text_ReceivedTM26FromGiovanni::
+ .string "{PLAYER} received TM26\n"
+ .string "from GIOVANNI.$"
+
+ViridianCity_Gym_Text_ExplainTM26::
+ .string "TM26 contains EARTHQUAKE.\p"
+ .string "It is a powerful attack that causes\n"
+ .string "a massive tremor.\p"
+ .string "I made it when I ran the GYM here,\n"
+ .string "far too long ago… $"
+
+ViridianCity_Gym_Text_YouDoNotHaveSpace::
+ .string "You do not have space for this!$"
+
+ViridianCity_Gym_Text_YujiIntro::
+ .string "Heh!\n"
+ .string "You must be running out of steam\l"
+ .string "by now!$"
+
+ViridianCity_Gym_Text_YujiDefeat::
+ .string "I ran out of gas!$"
+
+ViridianCity_Gym_Text_YujiPostBattle::
+ .string "You'll need power to keep up with\n"
+ .string "our GYM LEADER.$"
+
+ViridianCity_Gym_Text_AtsushiIntro::
+ .string "Rrrroar!\n"
+ .string "I'm working myself into a rage!$"
+
+ViridianCity_Gym_Text_AtsushiDefeat::
+ .string "Wargh!$"
+
+ViridianCity_Gym_Text_AtsushiPostBattle::
+ .string "I'm still not worthy!$"
+
+ViridianCity_Gym_Text_JasonIntro::
+ .string "POKéMON and I, we make wonderful\n"
+ .string "music together!$"
+
+ViridianCity_Gym_Text_JasonDefeat::
+ .string "You are in perfect harmony!$"
+
+ViridianCity_Gym_Text_JasonPostBattle::
+ .string "Do you know the identity of our\n"
+ .string "GYM LEADER?$"
+
+ViridianCity_Gym_Text_KiyoIntro::
+ .string "Karate is the ultimate form of\n"
+ .string "martial arts!$"
+
+ViridianCity_Gym_Text_KiyoDefeat::
+ .string "Aiyah!$"
+
+ViridianCity_Gym_Text_KiyoPostBattle::
+ .string "If my POKéMON were as good at\n"
+ .string "karate as I…$"
+
+ViridianCity_Gym_Text_WarrenIntro::
+ .string "The truly talented win with style.$"
+
+ViridianCity_Gym_Text_WarrenDefeat::
+ .string "I lost my grip!$"
+
+ViridianCity_Gym_Text_WarrenPostBattle::
+ .string "The LEADER will scold me for\n"
+ .string "losing this way…$"
+
+ViridianCity_Gym_Text_TakashiIntro::
+ .string "I'm the KARATE KING!\n"
+ .string "Your fate rests with me!$"
+
+ViridianCity_Gym_Text_TakashiDefeat::
+ .string "Ayah!$"
+
+ViridianCity_Gym_Text_TakashiPostBattle::
+ .string "The POKéMON LEAGUE?\n"
+ .string "You? Don't get cocky!$"
+
+ViridianCity_Gym_Text_ColeIntro::
+ .string "Your POKéMON will cower at the\n"
+ .string "crack of my whip!$"
+
+ViridianCity_Gym_Text_ColeDefeat::
+ .string "Yowch!\n"
+ .string "Whiplash!$"
+
+ViridianCity_Gym_Text_ColePostBattle::
+ .string "Wait!\n"
+ .string "I was just careless!$"
+
+ViridianCity_Gym_Text_SamuelIntro::
+ .string "VIRIDIAN GYM was closed for a\n"
+ .string "long time.\p"
+ .string "But now, our LEADER is back!$"
+
+ViridianCity_Gym_Text_SamuelDefeat::
+ .string "I was beaten?$"
+
+ViridianCity_Gym_Text_SamuelPostBattle::
+ .string "You can go on to the POKéMON\n"
+ .string "LEAGUE only by defeating our GYM\l"
+ .string "LEADER!$"
+
+ViridianCity_Gym_Text_GymGuyAdvice::
+ .string "Yo!\n"
+ .string "Champ in the making!\p"
+ .string "Even I don't know the VIRIDIAN\n"
+ .string "LEADER's identity.\p"
+ .string "But one thing's certain.\n"
+ .string "This will be the toughest of all\l"
+ .string "the GYM LEADERS.\p"
+ .string "Also, I heard that the TRAINERS\n"
+ .string "here like GROUND-type POKéMON.$"
+
+ViridianCity_Gym_Text_GymGuyPostVictory::
+ .string "Blow me away! GIOVANNI was the\n"
+ .string "GYM LEADER of VIRIDIAN?$"
+
+ViridianCity_Gym_Text_GymStatue::
+ .string "VIRIDIAN POKéMON GYM\n"
+ .string "LEADER: ?\p"
+ .string "WINNING TRAINERS:\n"
+ .string "{RIVAL}$"
+
+ViridianCity_Gym_Text_GymStatuePlayerWon::
+ .string "VIRIDIAN POKéMON GYM\n"
+ .string "LEADER: GIOVANNI\p"
+ .string "WINNING TRAINERS:\n"
+ .string "{RIVAL}, {PLAYER}$"
+
diff --git a/data/maps/ViridianCity_House_Frlg/map.json b/data/maps/ViridianCity_House_Frlg/map.json
new file mode 100644
index 000000000000..102544fdc2a6
--- /dev/null
+++ b/data/maps/ViridianCity_House_Frlg/map.json
@@ -0,0 +1,96 @@
+{
+ "id": "MAP_VIRIDIAN_CITY_HOUSE",
+ "name": "ViridianCity_House_Frlg",
+ "layout": "LAYOUT_VIRIDIAN_CITY_HOUSE",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VIRIDIAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BALDING_MAN",
+ "x": 7,
+ "y": 4,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_House_EventScript_BaldingMan",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LITTLE_GIRL_FRLG",
+ "x": 2,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 2,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_House_EventScript_LittleGirl",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_SPEAROW",
+ "x": 6,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT",
+ "movement_range_x": 4,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_House_EventScript_Speary",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_VIRIDIAN_CITY",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_VIRIDIAN_CITY",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_VIRIDIAN_CITY",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 7,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ViridianCity_House_EventScript_NicknameSign"
+ }
+ ]
+}
diff --git a/data/maps/ViridianCity_House_Frlg/scripts.inc b/data/maps/ViridianCity_House_Frlg/scripts.inc
new file mode 100644
index 000000000000..17041c37d73d
--- /dev/null
+++ b/data/maps/ViridianCity_House_Frlg/scripts.inc
@@ -0,0 +1,41 @@
+ViridianCity_House_Frlg_MapScripts::
+ .byte 0
+
+ViridianCity_House_EventScript_BaldingMan::
+ msgbox ViridianCity_House_Text_NicknamingIsFun, MSGBOX_NPC
+ end
+
+ViridianCity_House_EventScript_LittleGirl::
+ msgbox ViridianCity_House_Text_MyDaddyLovesMonsToo, MSGBOX_NPC
+ end
+
+ViridianCity_House_EventScript_Speary::
+ lock
+ faceplayer
+ waitse
+ playmoncry SPECIES_SPEAROW, CRY_MODE_NORMAL
+ msgbox ViridianCity_House_Text_Speary
+ waitmoncry
+ release
+ end
+
+ViridianCity_House_EventScript_NicknameSign::
+ msgbox ViridianCity_House_Text_SpearowNameSpeary, MSGBOX_SIGN
+ end
+
+ViridianCity_House_Text_NicknamingIsFun::
+ .string "Coming up with nicknames is fun,\n"
+ .string "but it's not so easy to do.\p"
+ .string "Clever names are nice, but simple\n"
+ .string "names are easier to remember.$"
+
+ViridianCity_House_Text_MyDaddyLovesMonsToo::
+ .string "My daddy loves POKéMON, too.$"
+
+ViridianCity_House_Text_Speary::
+ .string "SPEARY: Tetweet!$"
+
+ViridianCity_House_Text_SpearowNameSpeary::
+ .string "SPEAROW\n"
+ .string "Name: SPEARY$"
+
diff --git a/data/maps/ViridianCity_Mart_Frlg/map.json b/data/maps/ViridianCity_Mart_Frlg/map.json
new file mode 100644
index 000000000000..387a1e14bfd0
--- /dev/null
+++ b/data/maps/ViridianCity_Mart_Frlg/map.json
@@ -0,0 +1,88 @@
+{
+ "id": "MAP_VIRIDIAN_CITY_MART",
+ "name": "ViridianCity_Mart_Frlg",
+ "layout": "LAYOUT_MART_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VIRIDIAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_VIRIDIAN_MART_CLERK",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CLERK",
+ "x": 2,
+ "y": 3,
+ "elevation": 0,
+ "movement_type": "MOVEMENT_TYPE_FACE_RIGHT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_Mart_EventScript_Clerk",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_Mart_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_1_FRLG",
+ "x": 9,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_UP_AND_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_Mart_EventScript_Woman",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_VIRIDIAN_CITY",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_VIRIDIAN_CITY",
+ "dest_warp_id": "4"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_VIRIDIAN_CITY",
+ "dest_warp_id": "4"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/ViridianCity_Mart_Frlg/scripts.inc b/data/maps/ViridianCity_Mart_Frlg/scripts.inc
new file mode 100644
index 000000000000..b29ca6fd7daa
--- /dev/null
+++ b/data/maps/ViridianCity_Mart_Frlg/scripts.inc
@@ -0,0 +1,111 @@
+ViridianCity_Mart_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_LOAD, ViridianCity_Mart_OnLoad
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, ViridianCity_Mart_OnFrame
+ .byte 0
+
+ViridianCity_Mart_OnLoad::
+ goto_if_unset FLAG_SYS_POKEDEX_GET, ViridianCity_Mart_EventScript_HideQuestionnaire
+ end
+
+ViridianCity_Mart_EventScript_HideQuestionnaire::
+ setmetatile 1, 3, METATILE_Mart_CounterMid_Top, 1
+ setmetatile 1, 4, METATILE_Mart_CounterMid_Bottom, 1
+ end
+
+ViridianCity_Mart_OnFrame::
+ map_script_2 VAR_MAP_SCENE_VIRIDIAN_CITY_MART, 0, ViridianCity_Mart_EventScript_ParcelScene
+ .2byte 0
+
+ViridianCity_Mart_EventScript_ParcelScene::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement LOCALID_VIRIDIAN_MART_CLERK, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ msgbox ViridianCity_Mart_Text_YouCameFromPallet
+ closemessage
+ applymovement LOCALID_VIRIDIAN_MART_CLERK, ViridianCity_Mart_Movement_FacePlayer
+ applymovement LOCALID_PLAYER, ViridianCity_Mart_Movement_ApproachCounter
+ waitmovement 0
+ msgbox ViridianCity_Mart_Text_TakeThisToProfOak
+ setvar VAR_MAP_SCENE_VIRIDIAN_CITY_MART, 1
+ giveitem_msg ViridianCity_Mart_Text_ReceivedOaksParcelFromClerk, ITEM_OAKS_PARCEL, 1, MUS_RG_OBTAIN_KEY_ITEM
+ setvar VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 5
+ releaseall
+ end
+
+ViridianCity_Mart_Movement_ApproachCounter::
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_in_place_faster_left
+ step_end
+
+ViridianCity_Mart_Movement_FacePlayer::
+ delay_16
+ delay_16
+ delay_16
+ delay_16
+ walk_in_place_faster_right
+ step_end
+
+ViridianCity_Mart_EventScript_Clerk::
+ lock
+ faceplayer
+ goto_if_eq VAR_MAP_SCENE_VIRIDIAN_CITY_MART, 1, ViridianCity_Mart_EventScript_SayHiToOak
+ message gText_HowMayIServeYou
+ waitmessage
+ pokemart ViridianCity_Mart_Items
+ msgbox gText_PleaseComeAgain
+ release
+ end
+
+ .align 2
+ViridianCity_Mart_Items::
+ .2byte ITEM_POKE_BALL
+ .2byte ITEM_POTION
+ .2byte ITEM_ANTIDOTE
+ .2byte ITEM_PARALYZE_HEAL
+ .2byte ITEM_NONE
+ release
+ end
+
+ViridianCity_Mart_EventScript_SayHiToOak::
+ msgbox ViridianCity_Mart_Text_SayHiToOakForMe
+ release
+ end
+
+ViridianCity_Mart_EventScript_Woman::
+ msgbox ViridianCity_Mart_Text_ShopDoesGoodBusinessInAntidotes, MSGBOX_NPC
+ end
+
+ViridianCity_Mart_EventScript_Youngster::
+ msgbox ViridianCity_Mart_Text_GotToBuySomePotions, MSGBOX_NPC
+ end
+
+ViridianCity_Mart_Text_YouCameFromPallet::
+ .string "Hey!\n"
+ .string "You came from PALLET TOWN?$"
+
+ViridianCity_Mart_Text_TakeThisToProfOak::
+ .string "You know PROF. OAK, right?\p"
+ .string "His order came in.\n"
+ .string "Can I get you to take it to him?$"
+
+ViridianCity_Mart_Text_ReceivedOaksParcelFromClerk::
+ .string "{PLAYER} received OAK'S PARCEL\n"
+ .string "from the POKéMON MART clerk.$"
+
+ViridianCity_Mart_Text_SayHiToOakForMe::
+ .string "Okay, thanks! Please say hi to\n"
+ .string "PROF. OAK for me, too.$"
+
+ViridianCity_Mart_Text_ShopDoesGoodBusinessInAntidotes::
+ .string "This shop does good business in\n"
+ .string "ANTIDOTES, I've heard.$"
+
+ViridianCity_Mart_Text_GotToBuySomePotions::
+ .string "I've got to buy some POTIONS.\p"
+ .string "You never know when your POKéMON\n"
+ .string "will need quick healing.$"
+
diff --git a/data/maps/ViridianCity_PokemonCenter_1F_Frlg/map.json b/data/maps/ViridianCity_PokemonCenter_1F_Frlg/map.json
new file mode 100644
index 000000000000..4a7d67f2a8e6
--- /dev/null
+++ b/data/maps/ViridianCity_PokemonCenter_1F_Frlg/map.json
@@ -0,0 +1,109 @@
+{
+ "id": "MAP_VIRIDIAN_CITY_POKEMON_CENTER_1F",
+ "name": "ViridianCity_PokemonCenter_1F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_1F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VIRIDIAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_VIRIDIAN_NURSE",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_NURSE_FRLG",
+ "x": 7,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_PokemonCenter_1F_EventScript_Nurse",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_GENTLEMAN_FRLG",
+ "x": 12,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_PokemonCenter_1F_EventScript_Gentleman",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 4,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_LOOK_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_PokemonCenter_1F_EventScript_Boy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 2,
+ "y": 3,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_WANDER_AROUND",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_PokemonCenter_1F_EventScript_Youngster",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 6,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_VIRIDIAN_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 7,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_VIRIDIAN_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 8,
+ "y": 8,
+ "elevation": 3,
+ "dest_map": "MAP_VIRIDIAN_CITY",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_VIRIDIAN_CITY_POKEMON_CENTER_2F",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/ViridianCity_PokemonCenter_1F_Frlg/scripts.inc b/data/maps/ViridianCity_PokemonCenter_1F_Frlg/scripts.inc
new file mode 100644
index 000000000000..eb57a4cc12ab
--- /dev/null
+++ b/data/maps/ViridianCity_PokemonCenter_1F_Frlg/scripts.inc
@@ -0,0 +1,46 @@
+ViridianCity_PokemonCenter_1F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, ViridianCity_PokemonCenter_1F_OnTransition
+ map_script MAP_SCRIPT_ON_RESUME, CableClub_OnResume
+ .byte 0
+
+ViridianCity_PokemonCenter_1F_OnTransition::
+ setrespawn HEAL_LOCATION_VIRIDIAN_CITY
+ end
+
+ViridianCity_PokemonCenter_1F_EventScript_Nurse::
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse_Frlg
+ release
+ end
+
+ViridianCity_PokemonCenter_1F_EventScript_Boy::
+ msgbox ViridianCity_PokemonCenter_1F_Text_PokeCenterInEveryTown, MSGBOX_NPC
+ end
+
+ViridianCity_PokemonCenter_1F_EventScript_Gentleman::
+ msgbox ViridianCity_PokemonCenter_1F_Text_FeelFreeToUsePC, MSGBOX_NPC
+ end
+
+ViridianCity_PokemonCenter_1F_EventScript_Youngster::
+ msgbox ViridianCity_PokemonCenter_1F_Text_PokeCentersHealMons, MSGBOX_NPC
+ end
+
+ViridianCity_PokemonCenter_1F_Text_FeelFreeToUsePC::
+ .string "Please feel free to use that PC in\n"
+ .string "the corner.\p"
+ .string "The receptionist told me so.\n"
+ .string "It's so kind of her!$"
+
+ViridianCity_PokemonCenter_1F_Text_PokeCenterInEveryTown::
+ .string "There's a POKéMON CENTER in every\n"
+ .string "town ahead.\p"
+ .string "They charge no money, so don't\n"
+ .string "be shy about healing POKéMON.$"
+
+ViridianCity_PokemonCenter_1F_Text_PokeCentersHealMons::
+ .string "POKéMON CENTERS heal your tired,\n"
+ .string "hurt, or fainted POKéMON.\p"
+ .string "They make all POKéMON completely\n"
+ .string "healthy.$"
+
diff --git a/data/maps/ViridianCity_PokemonCenter_2F_Frlg/map.json b/data/maps/ViridianCity_PokemonCenter_2F_Frlg/map.json
new file mode 100644
index 000000000000..5601653c6a18
--- /dev/null
+++ b/data/maps/ViridianCity_PokemonCenter_2F_Frlg/map.json
@@ -0,0 +1,101 @@
+{
+ "id": "MAP_VIRIDIAN_CITY_POKEMON_CENTER_2F",
+ "name": "ViridianCity_PokemonCenter_2F_Frlg",
+ "layout": "LAYOUT_POKEMON_CENTER_2F_FRLG",
+ "music": "MUS_POKE_CENTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VIRIDIAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_UnionRoomAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 2,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_WirelessClubAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST",
+ "x": 10,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 0,
+ "movement_range_y": 0,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "Common_EventScript_DirectCornerAttendant",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_MG_DELIVERYMAN",
+ "x": 1,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "CableClub_EventScript_MysteryGiftMan_Frlg",
+ "flag": "FLAG_HIDE_MG_DELIVERYMEN"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 1,
+ "y": 6,
+ "elevation": 4,
+ "dest_map": "MAP_VIRIDIAN_CITY_POKEMON_CENTER_1F",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_UNION_ROOM_FRLG",
+ "dest_warp_id": "0"
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "elevation": 0,
+ "dest_map": "MAP_TRADE_CENTER_FRLG",
+ "dest_warp_id": "0"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": []
+}
diff --git a/data/maps/ViridianCity_PokemonCenter_2F_Frlg/scripts.inc b/data/maps/ViridianCity_PokemonCenter_2F_Frlg/scripts.inc
new file mode 100644
index 000000000000..7bf08cdf063c
--- /dev/null
+++ b/data/maps/ViridianCity_PokemonCenter_2F_Frlg/scripts.inc
@@ -0,0 +1,19 @@
+ViridianCity_PokemonCenter_2F_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, CableClub_OnFrame_Frlg
+ map_script MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE, CableClub_OnWarp_Frlg
+ map_script MAP_SCRIPT_ON_LOAD, CableClub_OnLoad_Frlg
+ map_script MAP_SCRIPT_ON_TRANSITION, CableClub_OnTransition_Frlg
+ .byte 0
+
+@ The below 3 are unused and leftover from RS
+ViridianCity_PokemonCenter_2F_EventScript_Colosseum::
+ call CableClub_EventScript_Colosseum_Frlg
+ end
+
+ViridianCity_PokemonCenter_2F_EventScript_TradeCenter::
+ call CableClub_EventScript_TradeCenter_Frlg
+ end
+
+ViridianCity_PokemonCenter_2F_EventScript_RecordCorner::
+ call CableClub_EventScript_RecordCorner_Frlg
+ end
diff --git a/data/maps/ViridianCity_School_Frlg/map.json b/data/maps/ViridianCity_School_Frlg/map.json
new file mode 100644
index 000000000000..cc6e77a96f45
--- /dev/null
+++ b/data/maps/ViridianCity_School_Frlg/map.json
@@ -0,0 +1,116 @@
+{
+ "id": "MAP_VIRIDIAN_CITY_SCHOOL",
+ "name": "ViridianCity_School_Frlg",
+ "layout": "LAYOUT_VIRIDIAN_CITY_SCHOOL",
+ "music": "MUS_RG_PEWTER",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VIRIDIAN_CITY",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "object_events": [
+ {
+ "local_id": "LOCALID_SCHOOL_WOMAN",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_WOMAN_2_FRLG",
+ "x": 6,
+ "y": 2,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_School_EventScript_Woman",
+ "flag": "0"
+ },
+ {
+ "local_id": "LOCALID_SCHOOL_LASS",
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_LASS_FRLG",
+ "x": 4,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianCity_School_EventScript_Lass",
+ "flag": "0"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 3,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_VIRIDIAN_CITY",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 4,
+ "y": 7,
+ "elevation": 0,
+ "dest_map": "MAP_VIRIDIAN_CITY",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 7,
+ "elevation": 3,
+ "dest_map": "MAP_VIRIDIAN_CITY",
+ "dest_warp_id": "3"
+ }
+ ],
+ "coord_events": [],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 4,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ViridianCity_School_EventScript_Notebook"
+ },
+ {
+ "type": "sign",
+ "x": 5,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ViridianCity_School_EventScript_Blackboard"
+ },
+ {
+ "type": "sign",
+ "x": 4,
+ "y": 1,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ViridianCity_School_EventScript_Blackboard"
+ },
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "ViridianCity_School_EventScript_PokemonJournal"
+ },
+ {
+ "type": "sign",
+ "x": 8,
+ "y": 2,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_NORTH",
+ "script": "ViridianCity_School_EventScript_PokemonJournal"
+ }
+ ]
+}
diff --git a/data/maps/ViridianCity_School_Frlg/scripts.inc b/data/maps/ViridianCity_School_Frlg/scripts.inc
new file mode 100644
index 000000000000..2c8fe149775d
--- /dev/null
+++ b/data/maps/ViridianCity_School_Frlg/scripts.inc
@@ -0,0 +1,188 @@
+ViridianCity_School_Frlg_MapScripts::
+ .byte 0
+
+ViridianCity_School_EventScript_Lass::
+ lock
+ faceplayer
+ msgbox ViridianCity_School_Text_TryingToMemorizeNotes
+ closemessage
+ applymovement LOCALID_SCHOOL_LASS, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ release
+ end
+
+ViridianCity_School_EventScript_Woman::
+ lock
+ faceplayer
+ msgbox ViridianCity_School_Text_ReadBlackboardCarefully
+ closemessage
+ applymovement LOCALID_SCHOOL_WOMAN, Common_Movement_FaceOriginalDirection
+ waitmovement 0
+ release
+ end
+
+ViridianCity_School_EventScript_Notebook::
+ lockall
+ msgbox ViridianCity_School_Text_NotebookFirstPage
+ msgbox ViridianCity_School_Text_TurnThePage, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, ViridianCity_School_EventScript_StopReadingNotebook
+ msgbox ViridianCity_School_Text_NotebookSecondPage
+ msgbox ViridianCity_School_Text_TurnThePage, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, ViridianCity_School_EventScript_StopReadingNotebook
+ msgbox ViridianCity_School_Text_NotebookThirdPage
+ msgbox ViridianCity_School_Text_TurnThePage, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, ViridianCity_School_EventScript_StopReadingNotebook
+ msgbox ViridianCity_School_Text_NotebookFourthPage
+ applymovement LOCALID_SCHOOL_LASS, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ textcolor NPC_TEXT_COLOR_FEMALE
+ msgbox ViridianCity_School_Text_HeyDontLookAtMyNotes
+ releaseall
+ end
+
+ViridianCity_School_EventScript_StopReadingNotebook::
+ releaseall
+ end
+
+ViridianCity_School_EventScript_Blackboard::
+ lockall
+ msgbox ViridianCity_School_Text_BlackboardListsStatusProblems
+ goto ViridianCity_School_EventScript_ChooseBlackboardTopic
+ end
+
+ViridianCity_School_EventScript_ChooseBlackboardTopic::
+ message ViridianCity_School_Text_ReadWhichTopic
+ waitmessage
+ multichoicegrid 7, 1, MULTI_STATUS_INFO, 3, FALSE
+ switch VAR_RESULT
+ case 0, ViridianCity_School_EventScript_ReadSleep
+ case 1, ViridianCity_School_EventScript_ReadPoison
+ case 2, ViridianCity_School_EventScript_ReadParalysis
+ case 3, ViridianCity_School_EventScript_ReadBurn
+ case 4, ViridianCity_School_EventScript_ReadFreeze
+ case 5, ViridianCity_School_EventScript_ExitBlackboard
+ case 127, ViridianCity_School_EventScript_ExitBlackboard
+ end
+
+ViridianCity_School_EventScript_ReadSleep::
+ msgbox ViridianCity_School_Text_ExplainSleep
+ goto ViridianCity_School_EventScript_ChooseBlackboardTopic
+ end
+
+ViridianCity_School_EventScript_ReadBurn::
+ msgbox ViridianCity_School_Text_ExplainBurn
+ goto ViridianCity_School_EventScript_ChooseBlackboardTopic
+ end
+
+ViridianCity_School_EventScript_ReadPoison::
+ msgbox ViridianCity_School_Text_ExplainPoison
+ goto ViridianCity_School_EventScript_ChooseBlackboardTopic
+ end
+
+ViridianCity_School_EventScript_ReadFreeze::
+ msgbox ViridianCity_School_Text_ExplainFreeze
+ goto ViridianCity_School_EventScript_ChooseBlackboardTopic
+ end
+
+ViridianCity_School_EventScript_ReadParalysis::
+ msgbox ViridianCity_School_Text_ExplainParalysis
+ goto ViridianCity_School_EventScript_ChooseBlackboardTopic
+ end
+
+ViridianCity_School_EventScript_ExitBlackboard::
+ releaseall
+ end
+
+ViridianCity_School_Text_TryingToMemorizeNotes::
+ .string "Whew! I'm trying to memorize all my\n"
+ .string "notes.$"
+
+ViridianCity_School_Text_ReadBlackboardCarefully::
+ .string "Okay!\p"
+ .string "Be sure to read what's on the\n"
+ .string "blackboard carefully!$"
+
+ViridianCity_School_Text_NotebookFirstPage::
+ .string "Let's check out the notebook.\p"
+ .string "First page…\p"
+ .string "POKé BALLS are used to catch\n"
+ .string "POKéMON.\p"
+ .string "Up to six POKéMON can be carried\n"
+ .string "in your party.\p"
+ .string "People who raise and battle\n"
+ .string "with POKéMON are called TRAINERS.$"
+
+ViridianCity_School_Text_NotebookSecondPage::
+ .string "Second page…\p"
+ .string "A healthy POKéMON may be hard to\n"
+ .string "catch, so weaken it first.\p"
+ .string "Poison, burn, or cause another\n"
+ .string "status problem to weaken it.$"
+
+ViridianCity_School_Text_NotebookThirdPage::
+ .string "Third page…\p"
+ .string "POKéMON TRAINERS seek others to\n"
+ .string "engage in POKéMON battles.\p"
+ .string "To TRAINERS, the taste of victory\n"
+ .string "is sweet, indeed.\p"
+ .string "Battles are constantly waged at\n"
+ .string "POKéMON GYMS everywhere.$"
+
+ViridianCity_School_Text_NotebookFourthPage::
+ .string "Fourth page…\p"
+ .string "The ultimate goal for all POKéMON\n"
+ .string "TRAINERS is simple.\p"
+ .string "It is to defeat the top eight\n"
+ .string "POKéMON GYM LEADERS.\p"
+ .string "Do so to earn the right to face…\p"
+ .string "The ELITE FOUR of the POKéMON\n"
+ .string "LEAGUE!$"
+
+ViridianCity_School_Text_TurnThePage::
+ .string "Turn the page?$"
+
+ViridianCity_School_Text_HeyDontLookAtMyNotes::
+ .string "GIRL: Hey!\n"
+ .string "Don't look at my notes!$"
+
+ViridianCity_School_Text_BlackboardListsStatusProblems::
+ .string "The blackboard lists POKéMON\n"
+ .string "STATUS problems during battles.$"
+
+ViridianCity_School_Text_ReadWhichTopic::
+ .string "Which topic do you want to read?$"
+
+ViridianCity_School_Text_ExplainSleep::
+ .string "A POKéMON can't attack if it's\n"
+ .string "asleep.\p"
+ .string "POKéMON will stay asleep even\n"
+ .string "after battles.\p"
+ .string "Use AWAKENING to awaken one\n"
+ .string "from sleep.$"
+
+ViridianCity_School_Text_ExplainBurn::
+ .string "A burn reduces ATTACK power.\n"
+ .string "It also causes ongoing HP loss.\p"
+ .string "A burn remains after a battle.\n"
+ .string "Use BURN HEAL to cure a burn.$"
+
+ViridianCity_School_Text_ExplainPoison::
+ .string "When poisoned, a POKéMON's health\n"
+ .string "steadily drops.\p"
+ .string "Poison lingers after battles.\n"
+ .string "Use an ANTIDOTE to cure poison!$"
+
+ViridianCity_School_Text_ExplainFreeze::
+ .string "A frozen POKéMON becomes\n"
+ .string "helplessly immobile.\p"
+ .string "It stays frozen even after the\n"
+ .string "battle ends.\p"
+ .string "Use ICE HEAL to thaw out the\n"
+ .string "suffering POKéMON.$"
+
+ViridianCity_School_Text_ExplainParalysis::
+ .string "Paralysis reduces SPEED and may\n"
+ .string "prevent the POKéMON from moving.\p"
+ .string "Paralysis remains after battles.\n"
+ .string "Use PARLYZ HEAL for treatment.$"
+
diff --git a/data/maps/ViridianForest_Frlg/map.json b/data/maps/ViridianForest_Frlg/map.json
new file mode 100644
index 000000000000..dc06c2a86e3c
--- /dev/null
+++ b/data/maps/ViridianForest_Frlg/map.json
@@ -0,0 +1,291 @@
+{
+ "id": "MAP_VIRIDIAN_FOREST",
+ "name": "ViridianForest_Frlg",
+ "layout": "LAYOUT_VIRIDIAN_FOREST",
+ "music": "MUS_RG_VIRIDIAN_FOREST",
+ "region": "REGION_KANTO",
+ "region_map_section": "MAPSEC_VIRIDIAN_FOREST",
+ "requires_flash": false,
+ "weather": "WEATHER_SHADE",
+ "map_type": "MAP_TYPE_ROUTE",
+ "allow_cycling": true,
+ "allow_escaping": true,
+ "allow_running": true,
+ "show_map_name": true,
+ "floor_number": 0,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": 0,
+ "object_events": [
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_YOUNGSTER_FRLG",
+ "x": 29,
+ "y": 58,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianForest_EventScript_Youngster",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BOY",
+ "x": 45,
+ "y": 58,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianForest_EventScript_Boy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 47,
+ "y": 45,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "5",
+ "script": "ViridianForest_EventScript_Rick",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 47,
+ "y": 29,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "ViridianForest_EventScript_Doug",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 7,
+ "y": 22,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "4",
+ "script": "ViridianForest_EventScript_Sammy",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 5,
+ "y": 41,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianForest_EventScript_ItemPokeBall",
+ "flag": "FLAG_HIDE_VIRIDIAN_FOREST_POKE_BALL"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 40,
+ "y": 21,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianForest_EventScript_ItemAntidote",
+ "flag": "FLAG_HIDE_VIRIDIAN_FOREST_ANTIDOTE"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 21,
+ "y": 34,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianForest_EventScript_ItemPotion",
+ "flag": "FLAG_HIDE_VIRIDIAN_FOREST_POTION"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 43,
+ "y": 6,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN_AND_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "ViridianForest_EventScript_Anthony",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_BUG_CATCHER_FRLG",
+ "x": 16,
+ "y": 5,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NORMAL",
+ "trainer_sight_or_berry_tree_id": "1",
+ "script": "ViridianForest_EventScript_Charlie",
+ "flag": "0"
+ },
+ {
+ "type": "object",
+ "graphics_id": "OBJ_EVENT_GFX_ITEM_BALL",
+ "x": 49,
+ "y": 60,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": "TRAINER_TYPE_NONE",
+ "trainer_sight_or_berry_tree_id": "0",
+ "script": "ViridianForest_EventScript_ItemPotion2",
+ "flag": "FLAG_HIDE_VIRIDIAN_FOREST_POTION_2"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 29,
+ "y": 62,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 28,
+ "y": 62,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 5,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2_VIRIDIAN_FOREST_NORTH_ENTRANCE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 6,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2_VIRIDIAN_FOREST_NORTH_ENTRANCE",
+ "dest_warp_id": "1"
+ },
+ {
+ "x": 30,
+ "y": 62,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2_VIRIDIAN_FOREST_SOUTH_ENTRANCE",
+ "dest_warp_id": "3"
+ },
+ {
+ "x": 4,
+ "y": 9,
+ "elevation": 3,
+ "dest_map": "MAP_ROUTE2_VIRIDIAN_FOREST_NORTH_ENTRANCE",
+ "dest_warp_id": "1"
+ }
+ ],
+ "coord_events": [
+
+ ],
+ "bg_events": [
+ {
+ "type": "sign",
+ "x": 39,
+ "y": 59,
+ "elevation": 3,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ViridianForest_EventScript_TrainerTips1"
+ },
+ {
+ "type": "sign",
+ "x": 43,
+ "y": 26,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ViridianForest_EventScript_TrainerTips3"
+ },
+ {
+ "type": "sign",
+ "x": 9,
+ "y": 29,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ViridianForest_EventScript_TrainerTips4"
+ },
+ {
+ "type": "sign",
+ "x": 6,
+ "y": 12,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ViridianForest_EventScript_ExitSign"
+ },
+ {
+ "type": "sign",
+ "x": 28,
+ "y": 44,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ViridianForest_EventScript_TrainerTips2"
+ },
+ {
+ "type": "sign",
+ "x": 31,
+ "y": 60,
+ "elevation": 0,
+ "player_facing_dir": "BG_EVENT_PLAYER_FACING_ANY",
+ "script": "ViridianForest_EventScript_TrainerTips5"
+ },
+ {
+ "type": "hidden_item",
+ "x": 3,
+ "y": 22,
+ "elevation": 3,
+ "item": "ITEM_POTION",
+ "flag": "FLAG_HIDDEN_ITEM_VIRIDIAN_FOREST_POTION",
+ "quantity": 1,
+ "underfoot": false
+ },
+ {
+ "type": "hidden_item",
+ "x": 28,
+ "y": 57,
+ "elevation": 0,
+ "item": "ITEM_ANTIDOTE",
+ "flag": "FLAG_HIDDEN_ITEM_VIRIDIAN_FOREST_ANTIDOTE",
+ "quantity": 1,
+ "underfoot": false
+ }
+ ]
+}
diff --git a/data/maps/ViridianForest_Frlg/scripts.inc b/data/maps/ViridianForest_Frlg/scripts.inc
new file mode 100644
index 000000000000..a8f69bac9981
--- /dev/null
+++ b/data/maps/ViridianForest_Frlg/scripts.inc
@@ -0,0 +1,170 @@
+ViridianForest_Frlg_MapScripts::
+ map_script MAP_SCRIPT_ON_TRANSITION, ViridianForest_OnTransition
+ .byte 0
+
+ViridianForest_OnTransition::
+ setworldmapflag FLAG_WORLD_MAP_VIRIDIAN_FOREST
+ end
+
+ViridianForest_EventScript_Youngster::
+ msgbox ViridianForest_Text_FriendsItchingToBattle, MSGBOX_NPC
+ end
+
+ViridianForest_EventScript_Boy::
+ msgbox ViridianForest_Text_RanOutOfPokeBalls, MSGBOX_NPC
+ end
+
+ViridianForest_EventScript_TrainerTips1::
+ msgbox ViridianForest_Text_AvoidGrassyAreasWhenWeak, MSGBOX_SIGN
+ end
+
+ViridianForest_EventScript_TrainerTips2::
+ msgbox ViridianForest_Text_UseAntidoteForPoison, MSGBOX_SIGN
+ end
+
+ViridianForest_EventScript_TrainerTips3::
+ msgbox ViridianForest_Text_ContactOakViaPCToRatePokedex, MSGBOX_SIGN
+ end
+
+ViridianForest_EventScript_TrainerTips4::
+ msgbox ViridianForest_Text_CantCatchOwnedMons, MSGBOX_SIGN
+ end
+
+ViridianForest_EventScript_TrainerTips5::
+ msgbox ViridianForest_Text_WeakenMonsBeforeCapture, MSGBOX_SIGN
+ end
+
+ViridianForest_EventScript_ExitSign::
+ msgbox ViridianForest_Text_LeavingViridianForest, MSGBOX_SIGN
+ end
+
+ViridianForest_EventScript_Rick::
+ trainerbattle_single TRAINER_BUG_CATCHER_RICK, ViridianForest_Text_RickIntro, ViridianForest_Text_RickDefeat
+ msgbox ViridianForest_Text_RickPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ViridianForest_EventScript_Doug::
+ trainerbattle_single TRAINER_BUG_CATCHER_DOUG, ViridianForest_Text_DougIntro, ViridianForest_Text_DougDefeat
+ msgbox ViridianForest_Text_DougPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ViridianForest_EventScript_Sammy::
+ trainerbattle_single TRAINER_BUG_CATCHER_SAMMY, ViridianForest_Text_SammyIntro, ViridianForest_Text_SammyDefeat
+ msgbox ViridianForest_Text_SammyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ViridianForest_EventScript_Anthony::
+ trainerbattle_single TRAINER_BUG_CATCHER_ANTHONY, ViridianForest_Text_AnthonyIntro, ViridianForest_Text_AnthonyDefeat
+ msgbox ViridianForest_Text_AnthonyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ViridianForest_EventScript_Charlie::
+ trainerbattle_single TRAINER_BUG_CATCHER_CHARLIE, ViridianForest_Text_CharlieIntro, ViridianForest_Text_CharlieDefeat
+ msgbox ViridianForest_Text_CharliePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ViridianForest_Text_FriendsItchingToBattle::
+ .string "I came here with some friends to\n"
+ .string "catch us some BUG POKéMON!\p"
+ .string "They're all itching to get into\n"
+ .string "some POKéMON battles!$"
+
+ViridianForest_Text_RickIntro::
+ .string "Hey! You have POKéMON!\n"
+ .string "Come on!\l"
+ .string "Let's battle 'em!$"
+
+ViridianForest_Text_RickDefeat::
+ .string "No!\nCATERPIE can't hack it!$"
+
+ViridianForest_Text_RickPostBattle::
+ .string "Ssh! You'll scare the bugs away.\n"
+ .string "Another time, okay?$"
+
+ViridianForest_Text_DougIntro::
+ .string "Yo!\n"
+ .string "You can't jam out if you're a\l"
+ .string "POKéMON TRAINER!$"
+
+ViridianForest_Text_DougDefeat::
+ .string "Huh?\n"
+ .string "I ran out of POKéMON!$"
+
+ViridianForest_Text_DougPostBattle::
+ .string "That totally stinks! I'm going to\n"
+ .string "catch some stronger ones!$"
+
+ViridianForest_Text_SammyIntro::
+ .string "Hey, wait up!\n"
+ .string "What's the hurry? Why the rush?$"
+
+ViridianForest_Text_SammyDefeat::
+ .string "I give!\n"
+ .string "You're good at this!$"
+
+ViridianForest_Text_SammyPostBattle::
+ .string "Sometimes, you can find stuff on\n"
+ .string "the ground.\p"
+ .string "I'm looking for the stuff I\n"
+ .string "dropped. Can you help me?$"
+
+ViridianForest_Text_AnthonyIntro::
+ .string "I might be little, but I won't like\n"
+ .string "it if you go easy on me!$"
+
+ViridianForest_Text_AnthonyDefeat::
+ .string "Oh, boo.\n"
+ .string "Nothing went right.$"
+
+ViridianForest_Text_AnthonyPostBattle::
+ .string "I lost some of my allowance…$"
+
+ViridianForest_Text_CharlieIntro::
+ .string "Did you know that POKéMON evolve?$"
+
+ViridianForest_Text_CharlieDefeat::
+ .string "Oh!\n"
+ .string "I lost!$"
+
+ViridianForest_Text_CharliePostBattle::
+ .string "BUG POKéMON evolve quickly.\n"
+ .string "They're a lot of fun!$"
+
+ViridianForest_Text_RanOutOfPokeBalls::
+ .string "I was throwing POKé BALLS to\n"
+ .string "catch POKéMON, and I ran out.\p"
+ .string "That's why you can never have too\n"
+ .string "many POKé BALLS.$"
+
+ViridianForest_Text_AvoidGrassyAreasWhenWeak::
+ .string "TRAINER TIPS\p"
+ .string "If your POKéMON are weak and you\n"
+ .string "want to avoid battles, stay away\l"
+ .string "from grassy areas!$"
+
+ViridianForest_Text_UseAntidoteForPoison::
+ .string "For poison, use ANTIDOTE!\n"
+ .string "Get it at POKéMON MARTS!$"
+
+ViridianForest_Text_ContactOakViaPCToRatePokedex::
+ .string "TRAINER TIPS\p"
+ .string "Contact PROF. OAK via a PC to\n"
+ .string "get your POKéDEX evaluated!$"
+
+ViridianForest_Text_CantCatchOwnedMons::
+ .string "TRAINER TIPS\p"
+ .string "You can't catch a POKéMON that\n"
+ .string "belongs to someone else.\p"
+ .string "Throw POKé BALLS only at wild\n"
+ .string "POKéMON to catch them!$"
+
+ViridianForest_Text_WeakenMonsBeforeCapture::
+ .string "TRAINER TIPS\p"
+ .string "Weaken POKéMON before attempting\n"
+ .string "capture!\p"
+ .string "When healthy, they may escape!$"
+
+ViridianForest_Text_LeavingViridianForest::
+ .string "LEAVING VIRIDIAN FOREST\n"
+ .string "PEWTER CITY AHEAD$"
+
diff --git a/data/maps/map_groups.json b/data/maps/map_groups.json
index 78e82055f6f2..d6320f485b9f 100644
--- a/data/maps/map_groups.json
+++ b/data/maps/map_groups.json
@@ -33,7 +33,48 @@
"gMapGroup_IndoorRoute113",
"gMapGroup_IndoorRoute123",
"gMapGroup_IndoorRoute119",
- "gMapGroup_IndoorRoute124"
+ "gMapGroup_IndoorRoute124",
+ "gMapGroup_Link_Frlg",
+ "gMapGroup_Dungeons_Frlg",
+ "gMapGroup_SpecialArea_Frlg",
+ "gMapGroup_TownsAndRoutes_Frlg",
+ "gMapGroup_IndoorPallet_Frlg",
+ "gMapGroup_IndoorViridian_Frlg",
+ "gMapGroup_IndoorPewter_Frlg",
+ "gMapGroup_IndoorCerulean_Frlg",
+ "gMapGroup_IndoorLavender_Frlg",
+ "gMapGroup_IndoorVermilion_Frlg",
+ "gMapGroup_IndoorCeladon_Frlg",
+ "gMapGroup_IndoorFuchsia_Frlg",
+ "gMapGroup_IndoorCinnabar_Frlg",
+ "gMapGroup_IndoorIndigoPlateau_Frlg",
+ "gMapGroup_IndoorSaffron_Frlg",
+ "gMapGroup_IndoorRoute2_Frlg",
+ "gMapGroup_IndoorRoute4_Frlg",
+ "gMapGroup_IndoorRoute5_Frlg",
+ "gMapGroup_IndoorRoute6_Frlg",
+ "gMapGroup_IndoorRoute7_Frlg",
+ "gMapGroup_IndoorRoute8_Frlg",
+ "gMapGroup_IndoorRoute10_Frlg",
+ "gMapGroup_IndoorRoute11_Frlg",
+ "gMapGroup_IndoorRoute12_Frlg",
+ "gMapGroup_IndoorRoute15_Frlg",
+ "gMapGroup_IndoorRoute16_Frlg",
+ "gMapGroup_IndoorRoute18_Frlg",
+ "gMapGroup_IndoorRoute22_Frlg",
+ "gMapGroup_IndoorRoute25_Frlg",
+ "gMapGroup_IndoorSevenIsland_Frlg",
+ "gMapGroup_IndoorOneIsland_Frlg",
+ "gMapGroup_IndoorTwoIsland_Frlg",
+ "gMapGroup_IndoorThreeIsland_Frlg",
+ "gMapGroup_IndoorFourIsland_Frlg",
+ "gMapGroup_IndoorFiveIsland_Frlg",
+ "gMapGroup_IndoorSixIsland_Frlg",
+ "gMapGroup_IndoorThreeIslandRoute_Frlg",
+ "gMapGroup_IndoorFiveIslandRoute_Frlg",
+ "gMapGroup_IndoorTwoIslandRoute_Frlg",
+ "gMapGroup_IndoorSixIslandRoute_Frlg",
+ "gMapGroup_IndoorSevenIslandRoute_Frlg"
],
"gMapGroup_TownsAndRoutes": [
"PetalburgCity",
@@ -620,5 +661,504 @@
],
"gMapGroup_IndoorRoute124": [
"Route124_DivingTreasureHuntersHouse"
+ ],
+ "gMapGroup_Link_Frlg": [
+ "BattleColosseum_2P_Frlg",
+ "TradeCenter_Frlg",
+ "RecordCorner_Frlg",
+ "BattleColosseum_4P_Frlg",
+ "UnionRoom_Frlg"
+ ],
+ "gMapGroup_Dungeons_Frlg": [
+ "ViridianForest_Frlg",
+ "MtMoon_1F_Frlg",
+ "MtMoon_B1F_Frlg",
+ "MtMoon_B2F_Frlg",
+ "SSAnne_Exterior_Frlg",
+ "SSAnne_1F_Corridor_Frlg",
+ "SSAnne_2F_Corridor_Frlg",
+ "SSAnne_3F_Corridor_Frlg",
+ "SSAnne_B1F_Corridor_Frlg",
+ "SSAnne_Deck_Frlg",
+ "SSAnne_Kitchen_Frlg",
+ "SSAnne_CaptainsOffice_Frlg",
+ "SSAnne_1F_Room1_Frlg",
+ "SSAnne_1F_Room2_Frlg",
+ "SSAnne_1F_Room3_Frlg",
+ "SSAnne_1F_Room4_Frlg",
+ "SSAnne_1F_Room5_Frlg",
+ "SSAnne_1F_Room7_Frlg",
+ "SSAnne_2F_Room1_Frlg",
+ "SSAnne_2F_Room2_Frlg",
+ "SSAnne_2F_Room3_Frlg",
+ "SSAnne_2F_Room4_Frlg",
+ "SSAnne_2F_Room5_Frlg",
+ "SSAnne_2F_Room6_Frlg",
+ "SSAnne_B1F_Room1_Frlg",
+ "SSAnne_B1F_Room2_Frlg",
+ "SSAnne_B1F_Room3_Frlg",
+ "SSAnne_B1F_Room4_Frlg",
+ "SSAnne_B1F_Room5_Frlg",
+ "SSAnne_1F_Room6_Frlg",
+ "UndergroundPath_NorthEntrance_Frlg",
+ "UndergroundPath_NorthSouthTunnel_Frlg",
+ "UndergroundPath_SouthEntrance_Frlg",
+ "UndergroundPath_WestEntrance_Frlg",
+ "UndergroundPath_EastWestTunnel_Frlg",
+ "UndergroundPath_EastEntrance_Frlg",
+ "DiglettsCave_NorthEntrance_Frlg",
+ "DiglettsCave_B1F_Frlg",
+ "DiglettsCave_SouthEntrance_Frlg",
+ "VictoryRoad_1F_Frlg",
+ "VictoryRoad_2F_Frlg",
+ "VictoryRoad_3F_Frlg",
+ "RocketHideout_B1F_Frlg",
+ "RocketHideout_B2F_Frlg",
+ "RocketHideout_B3F_Frlg",
+ "RocketHideout_B4F_Frlg",
+ "RocketHideout_Elevator_Frlg",
+ "SilphCo_1F_Frlg",
+ "SilphCo_2F_Frlg",
+ "SilphCo_3F_Frlg",
+ "SilphCo_4F_Frlg",
+ "SilphCo_5F_Frlg",
+ "SilphCo_6F_Frlg",
+ "SilphCo_7F_Frlg",
+ "SilphCo_8F_Frlg",
+ "SilphCo_9F_Frlg",
+ "SilphCo_10F_Frlg",
+ "SilphCo_11F_Frlg",
+ "SilphCo_Elevator_Frlg",
+ "PokemonMansion_1F_Frlg",
+ "PokemonMansion_2F_Frlg",
+ "PokemonMansion_3F_Frlg",
+ "PokemonMansion_B1F_Frlg",
+ "SafariZone_Center_Frlg",
+ "SafariZone_East_Frlg",
+ "SafariZone_North_Frlg",
+ "SafariZone_West_Frlg",
+ "SafariZone_Center_RestHouse_Frlg",
+ "SafariZone_East_RestHouse_Frlg",
+ "SafariZone_North_RestHouse_Frlg",
+ "SafariZone_West_RestHouse_Frlg",
+ "SafariZone_SecretHouse_Frlg",
+ "CeruleanCave_1F_Frlg",
+ "CeruleanCave_2F_Frlg",
+ "CeruleanCave_B1F_Frlg",
+ "PokemonLeague_LoreleisRoom_Frlg",
+ "PokemonLeague_BrunosRoom_Frlg",
+ "PokemonLeague_AgathasRoom_Frlg",
+ "PokemonLeague_LancesRoom_Frlg",
+ "PokemonLeague_ChampionsRoom_Frlg",
+ "PokemonLeague_HallOfFame_Frlg",
+ "RockTunnel_1F_Frlg",
+ "RockTunnel_B1F_Frlg",
+ "SeafoamIslands_1F_Frlg",
+ "SeafoamIslands_B1F_Frlg",
+ "SeafoamIslands_B2F_Frlg",
+ "SeafoamIslands_B3F_Frlg",
+ "SeafoamIslands_B4F_Frlg",
+ "PokemonTower_1F_Frlg",
+ "PokemonTower_2F_Frlg",
+ "PokemonTower_3F_Frlg",
+ "PokemonTower_4F_Frlg",
+ "PokemonTower_5F_Frlg",
+ "PokemonTower_6F_Frlg",
+ "PokemonTower_7F_Frlg",
+ "PowerPlant_Frlg",
+ "MtEmber_RubyPath_B4F_Frlg",
+ "MtEmber_Exterior_Frlg",
+ "MtEmber_SummitPath_1F_Frlg",
+ "MtEmber_SummitPath_2F_Frlg",
+ "MtEmber_SummitPath_3F_Frlg",
+ "MtEmber_Summit_Frlg",
+ "MtEmber_RubyPath_B5F_Frlg",
+ "MtEmber_RubyPath_1F_Frlg",
+ "MtEmber_RubyPath_B1F_Frlg",
+ "MtEmber_RubyPath_B2F_Frlg",
+ "MtEmber_RubyPath_B3F_Frlg",
+ "MtEmber_RubyPath_B1F_Stairs_Frlg",
+ "MtEmber_RubyPath_B2F_Stairs_Frlg",
+ "ThreeIsland_BerryForest_Frlg",
+ "FourIsland_IcefallCave_Entrance_Frlg",
+ "FourIsland_IcefallCave_1F_Frlg",
+ "FourIsland_IcefallCave_B1F_Frlg",
+ "FourIsland_IcefallCave_Back_Frlg",
+ "FiveIsland_RocketWarehouse_Frlg",
+ "SixIsland_DottedHole_1F_Frlg",
+ "SixIsland_DottedHole_B1F_Frlg",
+ "SixIsland_DottedHole_B2F_Frlg",
+ "SixIsland_DottedHole_B3F_Frlg",
+ "SixIsland_DottedHole_B4F_Frlg",
+ "SixIsland_DottedHole_SapphireRoom_Frlg",
+ "SixIsland_PatternBush_Frlg",
+ "SixIsland_AlteringCave_Frlg"
+ ],
+ "gMapGroup_SpecialArea_Frlg": [
+ "NavelRock_Exterior_Frlg",
+ "TrainerTower_1F_Frlg",
+ "TrainerTower_2F_Frlg",
+ "TrainerTower_3F_Frlg",
+ "TrainerTower_4F_Frlg",
+ "TrainerTower_5F_Frlg",
+ "TrainerTower_6F_Frlg",
+ "TrainerTower_7F_Frlg",
+ "TrainerTower_8F_Frlg",
+ "TrainerTower_Roof_Frlg",
+ "TrainerTower_Lobby_Frlg",
+ "TrainerTower_Elevator_Frlg",
+ "FiveIsland_LostCave_Entrance_Frlg",
+ "FiveIsland_LostCave_Room1_Frlg",
+ "FiveIsland_LostCave_Room2_Frlg",
+ "FiveIsland_LostCave_Room3_Frlg",
+ "FiveIsland_LostCave_Room4_Frlg",
+ "FiveIsland_LostCave_Room5_Frlg",
+ "FiveIsland_LostCave_Room6_Frlg",
+ "FiveIsland_LostCave_Room7_Frlg",
+ "FiveIsland_LostCave_Room8_Frlg",
+ "FiveIsland_LostCave_Room9_Frlg",
+ "FiveIsland_LostCave_Room10_Frlg",
+ "FiveIsland_LostCave_Room11_Frlg",
+ "FiveIsland_LostCave_Room12_Frlg",
+ "FiveIsland_LostCave_Room13_Frlg",
+ "FiveIsland_LostCave_Room14_Frlg",
+ "SevenIsland_TanobyRuins_MoneanChamber_Frlg",
+ "SevenIsland_TanobyRuins_LiptooChamber_Frlg",
+ "SevenIsland_TanobyRuins_WeepthChamber_Frlg",
+ "SevenIsland_TanobyRuins_DilfordChamber_Frlg",
+ "SevenIsland_TanobyRuins_ScufibChamber_Frlg",
+ "SevenIsland_TanobyRuins_RixyChamber_Frlg",
+ "SevenIsland_TanobyRuins_ViapoisChamber_Frlg",
+ "ThreeIsland_DunsparceTunnel_Frlg",
+ "SevenIsland_SevaultCanyon_TanobyKey_Frlg",
+ "NavelRock_1F_Frlg",
+ "NavelRock_Summit_Frlg",
+ "NavelRock_Base_Frlg",
+ "NavelRock_SummitPath_2F_Frlg",
+ "NavelRock_SummitPath_3F_Frlg",
+ "NavelRock_SummitPath_4F_Frlg",
+ "NavelRock_SummitPath_5F_Frlg",
+ "NavelRock_BasePath_B1F_Frlg",
+ "NavelRock_BasePath_B2F_Frlg",
+ "NavelRock_BasePath_B3F_Frlg",
+ "NavelRock_BasePath_B4F_Frlg",
+ "NavelRock_BasePath_B5F_Frlg",
+ "NavelRock_BasePath_B6F_Frlg",
+ "NavelRock_BasePath_B7F_Frlg",
+ "NavelRock_BasePath_B8F_Frlg",
+ "NavelRock_BasePath_B9F_Frlg",
+ "NavelRock_BasePath_B10F_Frlg",
+ "NavelRock_BasePath_B11F_Frlg",
+ "NavelRock_B1F_Frlg",
+ "NavelRock_Fork_Frlg",
+ "BirthIsland_Exterior_Frlg",
+ "OneIsland_KindleRoad_EmberSpa_Frlg",
+ "BirthIsland_Harbor_Frlg",
+ "NavelRock_Harbor_Frlg"
+ ],
+ "gMapGroup_TownsAndRoutes_Frlg": [
+ "PalletTown_Frlg",
+ "ViridianCity_Frlg",
+ "PewterCity_Frlg",
+ "CeruleanCity_Frlg",
+ "LavenderTown_Frlg",
+ "VermilionCity_Frlg",
+ "CeladonCity_Frlg",
+ "FuchsiaCity_Frlg",
+ "CinnabarIsland_Frlg",
+ "IndigoPlateau_Exterior_Frlg",
+ "SaffronCity_Frlg",
+ "SaffronCity_Connection_Frlg",
+ "OneIsland_Frlg",
+ "TwoIsland_Frlg",
+ "ThreeIsland_Frlg",
+ "FourIsland_Frlg",
+ "FiveIsland_Frlg",
+ "SevenIsland_Frlg",
+ "SixIsland_Frlg",
+ "Route1_Frlg",
+ "Route2_Frlg",
+ "Route3_Frlg",
+ "Route4_Frlg",
+ "Route5_Frlg",
+ "Route6_Frlg",
+ "Route7_Frlg",
+ "Route8_Frlg",
+ "Route9_Frlg",
+ "Route10_Frlg",
+ "Route11_Frlg",
+ "Route12_Frlg",
+ "Route13_Frlg",
+ "Route14_Frlg",
+ "Route15_Frlg",
+ "Route16_Frlg",
+ "Route17_Frlg",
+ "Route18_Frlg",
+ "Route19_Frlg",
+ "Route20_Frlg",
+ "Route21_North_Frlg",
+ "Route21_South_Frlg",
+ "Route22_Frlg",
+ "Route23_Frlg",
+ "Route24_Frlg",
+ "Route25_Frlg",
+ "OneIsland_KindleRoad_Frlg",
+ "OneIsland_TreasureBeach_Frlg",
+ "TwoIsland_CapeBrink_Frlg",
+ "ThreeIsland_BondBridge_Frlg",
+ "ThreeIsland_Port_Frlg",
+ "FiveIsland_ResortGorgeous_Frlg",
+ "FiveIsland_WaterLabyrinth_Frlg",
+ "FiveIsland_Meadow_Frlg",
+ "FiveIsland_MemorialPillar_Frlg",
+ "SixIsland_OutcastIsland_Frlg",
+ "SixIsland_GreenPath_Frlg",
+ "SixIsland_WaterPath_Frlg",
+ "SixIsland_RuinValley_Frlg",
+ "SevenIsland_TrainerTower_Frlg",
+ "SevenIsland_SevaultCanyon_Entrance_Frlg",
+ "SevenIsland_SevaultCanyon_Frlg",
+ "SevenIsland_TanobyRuins_Frlg"
+ ],
+ "gMapGroup_IndoorPallet_Frlg": [
+ "PalletTown_PlayersHouse_1F_Frlg",
+ "PalletTown_PlayersHouse_2F_Frlg",
+ "PalletTown_RivalsHouse_Frlg",
+ "PalletTown_ProfessorOaksLab_Frlg"
+ ],
+ "gMapGroup_IndoorViridian_Frlg": [
+ "ViridianCity_House_Frlg",
+ "ViridianCity_Gym_Frlg",
+ "ViridianCity_School_Frlg",
+ "ViridianCity_Mart_Frlg",
+ "ViridianCity_PokemonCenter_1F_Frlg",
+ "ViridianCity_PokemonCenter_2F_Frlg"
+ ],
+ "gMapGroup_IndoorPewter_Frlg": [
+ "PewterCity_Museum_1F_Frlg",
+ "PewterCity_Museum_2F_Frlg",
+ "PewterCity_Gym_Frlg",
+ "PewterCity_Mart_Frlg",
+ "PewterCity_House1_Frlg",
+ "PewterCity_PokemonCenter_1F_Frlg",
+ "PewterCity_PokemonCenter_2F_Frlg",
+ "PewterCity_House2_Frlg"
+ ],
+ "gMapGroup_IndoorCerulean_Frlg": [
+ "CeruleanCity_House1_Frlg",
+ "CeruleanCity_House2_Frlg",
+ "CeruleanCity_House3_Frlg",
+ "CeruleanCity_PokemonCenter_1F_Frlg",
+ "CeruleanCity_PokemonCenter_2F_Frlg",
+ "CeruleanCity_Gym_Frlg",
+ "CeruleanCity_BikeShop_Frlg",
+ "CeruleanCity_Mart_Frlg",
+ "CeruleanCity_House4_Frlg",
+ "CeruleanCity_House5_Frlg"
+ ],
+ "gMapGroup_IndoorLavender_Frlg": [
+ "LavenderTown_PokemonCenter_1F_Frlg",
+ "LavenderTown_PokemonCenter_2F_Frlg",
+ "LavenderTown_VolunteerPokemonHouse_Frlg",
+ "LavenderTown_House1_Frlg",
+ "LavenderTown_House2_Frlg",
+ "LavenderTown_Mart_Frlg"
+ ],
+ "gMapGroup_IndoorVermilion_Frlg": [
+ "VermilionCity_House1_Frlg",
+ "VermilionCity_PokemonCenter_1F_Frlg",
+ "VermilionCity_PokemonCenter_2F_Frlg",
+ "VermilionCity_PokemonFanClub_Frlg",
+ "VermilionCity_House2_Frlg",
+ "VermilionCity_Mart_Frlg",
+ "VermilionCity_Gym_Frlg",
+ "VermilionCity_House3_Frlg"
+ ],
+ "gMapGroup_IndoorCeladon_Frlg": [
+ "CeladonCity_DepartmentStore_1F_Frlg",
+ "CeladonCity_DepartmentStore_2F_Frlg",
+ "CeladonCity_DepartmentStore_3F_Frlg",
+ "CeladonCity_DepartmentStore_4F_Frlg",
+ "CeladonCity_DepartmentStore_5F_Frlg",
+ "CeladonCity_DepartmentStore_Roof_Frlg",
+ "CeladonCity_DepartmentStore_Elevator_Frlg",
+ "CeladonCity_Condominiums_1F_Frlg",
+ "CeladonCity_Condominiums_2F_Frlg",
+ "CeladonCity_Condominiums_3F_Frlg",
+ "CeladonCity_Condominiums_Roof_Frlg",
+ "CeladonCity_Condominiums_RoofRoom_Frlg",
+ "CeladonCity_PokemonCenter_1F_Frlg",
+ "CeladonCity_PokemonCenter_2F_Frlg",
+ "CeladonCity_GameCorner_Frlg",
+ "CeladonCity_GameCorner_PrizeRoom_Frlg",
+ "CeladonCity_Gym_Frlg",
+ "CeladonCity_Restaurant_Frlg",
+ "CeladonCity_House1_Frlg",
+ "CeladonCity_Hotel_Frlg"
+ ],
+ "gMapGroup_IndoorFuchsia_Frlg": [
+ "FuchsiaCity_SafariZone_Entrance_Frlg",
+ "FuchsiaCity_Mart_Frlg",
+ "FuchsiaCity_SafariZone_Office_Frlg",
+ "FuchsiaCity_Gym_Frlg",
+ "FuchsiaCity_House1_Frlg",
+ "FuchsiaCity_PokemonCenter_1F_Frlg",
+ "FuchsiaCity_PokemonCenter_2F_Frlg",
+ "FuchsiaCity_WardensHouse_Frlg",
+ "FuchsiaCity_House2_Frlg",
+ "FuchsiaCity_House3_Frlg"
+ ],
+ "gMapGroup_IndoorCinnabar_Frlg": [
+ "CinnabarIsland_Gym_Frlg",
+ "CinnabarIsland_PokemonLab_Entrance_Frlg",
+ "CinnabarIsland_PokemonLab_Lounge_Frlg",
+ "CinnabarIsland_PokemonLab_ResearchRoom_Frlg",
+ "CinnabarIsland_PokemonLab_ExperimentRoom_Frlg",
+ "CinnabarIsland_PokemonCenter_1F_Frlg",
+ "CinnabarIsland_PokemonCenter_2F_Frlg",
+ "CinnabarIsland_Mart_Frlg"
+ ],
+ "gMapGroup_IndoorIndigoPlateau_Frlg": [
+ "IndigoPlateau_PokemonCenter_1F_Frlg",
+ "IndigoPlateau_PokemonCenter_2F_Frlg"
+ ],
+ "gMapGroup_IndoorSaffron_Frlg": [
+ "SaffronCity_CopycatsHouse_1F_Frlg",
+ "SaffronCity_CopycatsHouse_2F_Frlg",
+ "SaffronCity_Dojo_Frlg",
+ "SaffronCity_Gym_Frlg",
+ "SaffronCity_House_Frlg",
+ "SaffronCity_Mart_Frlg",
+ "SaffronCity_PokemonCenter_1F_Frlg",
+ "SaffronCity_PokemonCenter_2F_Frlg",
+ "SaffronCity_MrPsychicsHouse_Frlg",
+ "SaffronCity_PokemonTrainerFanClub_Frlg"
+ ],
+ "gMapGroup_IndoorRoute2_Frlg": [
+ "Route2_ViridianForest_SouthEntrance_Frlg",
+ "Route2_House_Frlg",
+ "Route2_EastBuilding_Frlg",
+ "Route2_ViridianForest_NorthEntrance_Frlg"
+ ],
+ "gMapGroup_IndoorRoute4_Frlg": [
+ "Route4_PokemonCenter_1F_Frlg",
+ "Route4_PokemonCenter_2F_Frlg"
+ ],
+ "gMapGroup_IndoorRoute5_Frlg": [
+ "Route5_PokemonDayCare_Frlg",
+ "Route5_SouthEntrance_Frlg"
+ ],
+ "gMapGroup_IndoorRoute6_Frlg": [
+ "Route6_NorthEntrance_Frlg"
+ ],
+ "gMapGroup_IndoorRoute7_Frlg": [
+ "Route7_EastEntrance_Frlg"
+ ],
+ "gMapGroup_IndoorRoute8_Frlg": [
+ "Route8_WestEntrance_Frlg"
+ ],
+ "gMapGroup_IndoorRoute10_Frlg": [
+ "Route10_PokemonCenter_1F_Frlg",
+ "Route10_PokemonCenter_2F_Frlg"
+ ],
+ "gMapGroup_IndoorRoute11_Frlg": [
+ "Route11_EastEntrance_1F_Frlg",
+ "Route11_EastEntrance_2F_Frlg"
+ ],
+ "gMapGroup_IndoorRoute12_Frlg": [
+ "Route12_NorthEntrance_1F_Frlg",
+ "Route12_NorthEntrance_2F_Frlg",
+ "Route12_FishingHouse_Frlg"
+ ],
+ "gMapGroup_IndoorRoute15_Frlg": [
+ "Route15_WestEntrance_1F_Frlg",
+ "Route15_WestEntrance_2F_Frlg"
+ ],
+ "gMapGroup_IndoorRoute16_Frlg": [
+ "Route16_House_Frlg",
+ "Route16_NorthEntrance_1F_Frlg",
+ "Route16_NorthEntrance_2F_Frlg"
+ ],
+ "gMapGroup_IndoorRoute18_Frlg": [
+ "Route18_EastEntrance_1F_Frlg",
+ "Route18_EastEntrance_2F_Frlg"
+ ],
+ "gMapGroup_IndoorRoute22_Frlg": [
+ "Route22_NorthEntrance_Frlg"
+ ],
+ "gMapGroup_IndoorRoute25_Frlg": [
+ "Route25_SeaCottage_Frlg"
+ ],
+ "gMapGroup_IndoorSevenIsland_Frlg": [
+ "SevenIsland_House_Room1_Frlg",
+ "SevenIsland_House_Room2_Frlg",
+ "SevenIsland_Mart_Frlg",
+ "SevenIsland_PokemonCenter_1F_Frlg",
+ "SevenIsland_PokemonCenter_2F_Frlg",
+ "SevenIsland_Harbor_Frlg"
+ ],
+ "gMapGroup_IndoorOneIsland_Frlg": [
+ "OneIsland_PokemonCenter_1F_Frlg",
+ "OneIsland_PokemonCenter_2F_Frlg",
+ "OneIsland_House1_Frlg",
+ "OneIsland_House2_Frlg",
+ "OneIsland_Harbor_Frlg"
+ ],
+ "gMapGroup_IndoorTwoIsland_Frlg": [
+ "TwoIsland_JoyfulGameCorner_Frlg",
+ "TwoIsland_House_Frlg",
+ "TwoIsland_PokemonCenter_1F_Frlg",
+ "TwoIsland_PokemonCenter_2F_Frlg",
+ "TwoIsland_Harbor_Frlg"
+ ],
+ "gMapGroup_IndoorThreeIsland_Frlg": [
+ "ThreeIsland_House1_Frlg",
+ "ThreeIsland_PokemonCenter_1F_Frlg",
+ "ThreeIsland_PokemonCenter_2F_Frlg",
+ "ThreeIsland_Mart_Frlg",
+ "ThreeIsland_House2_Frlg",
+ "ThreeIsland_House3_Frlg",
+ "ThreeIsland_House4_Frlg",
+ "ThreeIsland_House5_Frlg"
+ ],
+ "gMapGroup_IndoorFourIsland_Frlg": [
+ "FourIsland_PokemonDayCare_Frlg",
+ "FourIsland_PokemonCenter_1F_Frlg",
+ "FourIsland_PokemonCenter_2F_Frlg",
+ "FourIsland_House1_Frlg",
+ "FourIsland_LoreleisHouse_Frlg",
+ "FourIsland_Harbor_Frlg",
+ "FourIsland_House2_Frlg",
+ "FourIsland_Mart_Frlg"
+ ],
+ "gMapGroup_IndoorFiveIsland_Frlg": [
+ "FiveIsland_PokemonCenter_1F_Frlg",
+ "FiveIsland_PokemonCenter_2F_Frlg",
+ "FiveIsland_Harbor_Frlg",
+ "FiveIsland_House1_Frlg",
+ "FiveIsland_House2_Frlg"
+ ],
+ "gMapGroup_IndoorSixIsland_Frlg": [
+ "SixIsland_PokemonCenter_1F_Frlg",
+ "SixIsland_PokemonCenter_2F_Frlg",
+ "SixIsland_Harbor_Frlg",
+ "SixIsland_House_Frlg",
+ "SixIsland_Mart_Frlg"
+ ],
+ "gMapGroup_IndoorThreeIslandRoute_Frlg": [
+ "ThreeIsland_Harbor_Frlg"
+ ],
+ "gMapGroup_IndoorFiveIslandRoute_Frlg": [
+ "FiveIsland_ResortGorgeous_House_Frlg"
+ ],
+ "gMapGroup_IndoorTwoIslandRoute_Frlg": [
+ "TwoIsland_CapeBrink_House_Frlg"
+ ],
+ "gMapGroup_IndoorSixIslandRoute_Frlg": [
+ "SixIsland_WaterPath_House1_Frlg",
+ "SixIsland_WaterPath_House2_Frlg"
+ ],
+ "gMapGroup_IndoorSevenIslandRoute_Frlg": [
+ "SevenIsland_SevaultCanyon_House_Frlg"
]
}
diff --git a/data/pinball/flipper_normal_angles.bin b/data/pinball/flipper_normal_angles.bin
new file mode 100644
index 000000000000..273454d82fa3
Binary files /dev/null and b/data/pinball/flipper_normal_angles.bin differ
diff --git a/data/pinball/flipper_radii.bin b/data/pinball/flipper_radii.bin
new file mode 100644
index 000000000000..9b1322cf6e39
Binary files /dev/null and b/data/pinball/flipper_radii.bin differ
diff --git a/data/pinball/gastly_normal_angles.bin b/data/pinball/gastly_normal_angles.bin
new file mode 100644
index 000000000000..7783c2fe84bb
--- /dev/null
+++ b/data/pinball/gastly_normal_angles.bin
@@ -0,0 +1,8 @@
+xz{|}~tvwxyz|}~ stuvwyz{}~
+qrsuvwxz{|~
pqrstuvxy{|~
+
nopqrstvwyz|~
+
mmnopqrsuvxz|}
+
llmnopqrtuwy{}
+
jkklmnopqstvx{} iijkllmopqsuwz}
+ghhiijklmnprtvy|
ffgghiijkmnprux|
+
eeeffghhiklnpsv{ cdddeeffghikmptybbccccddeefhilpv aaaaaabbbbcdefip```_``````````_`1^^^^^^]]]]\[ZYVO?/(%$#""!!!!! ]]\\\\[[ZZYWVSOI?6/+(&%$$##"""""\[[[ZZYYXWVTROKF?93/,*('&%%$$###ZZZYYXWWVTSQOLID?:62/-+)('&&%%$$YYXXWVVTTRQOMJGC?;741/-+*)(''&&&WWVVUTSRQOMKIFC?<9631/-,+*)(''VVUTTSRPONLJHEB?<:7520/-,++))(TTSRQPONLKIGDB?=:86420/.-,+*SSRQPONMKJHFDB?=;975310/.-,+RQPONMLJIGECB?=;9764310/.-PONMLKJHFECA?><:8653210/NMLKJIGFDCA?><:9764321LLKIHGFDCA?><;986543KJIHFEDBA?><;:8764GFECBA?>=;:9
\ No newline at end of file
diff --git a/data/pinball/gengar_normal_angles.bin b/data/pinball/gengar_normal_angles.bin
new file mode 100644
index 000000000000..1e622b09d9fa
--- /dev/null
+++ b/data/pinball/gengar_normal_angles.bin
@@ -0,0 +1,19 @@
+xyz{|}~vwxyz{|}~tuvwxyz{|}~ rrstuvwyz{|}~
+pqrstuvwxz{|}~
+
nopqrtuvwxy{|}~
+
mnopqrstuwxyz|}~
+
klmnopqstuvxyz{}~
+jklmnopqrsuvwyz{}~
+
jjklmnoprstvwxz{}~
+
ijjkklmopqrtuvxy{|~
+
jiijjklmnoqrsuvxy{|~
+
hiiijjklmopqstvwyz|~ fhhiiijjkmnoqrtuwxz|~
+
ghhhiiijklmnpqsuvxz|~
+gghhhiiijklnoqrtvxz|}
gggghhhiiijkmnprsuwy{}
+fgggghhhiijklmoqsuwy{}
+fffggghhhiijklnprtvx{}
fffffgggghhiijkmoqsuxz}
+eeeffffggghhiijlnpruwz}
+
eeeeefffggghhiikloqtvy| dddeeeefffgghhijkmpsvy| cddddeeeefffgghhijlnqux|
+cccdddddeeeffgghhijmpsw{ccccccddddeeeffghhiknrv{
bbccccccddddeeffgghilpuz
+bbbbbbcccccdddeeffghjmsyaabbbbbbbcccccddeefghjpwaaaaaaaabbbbbcccddefghlu
+`aaaaaaaaaaaabbbbccdefhp`````````````aaaaaabbceh__```_```_`__``````__`__)______________^^^^^]]\ZW?($#"!!! _^^^^^^^^^^^^]]]]\\[ZYWO?.(&$##"""!!!!!!! ^^^^^^^^]]]]]\\\[[ZYXWSJ?3*(&%$$##""""!!!!!!!!!!^^]]]]]]]]\\\\[[ZZYXWUOH?6.)('&%$$###""""""!!!!!]]]]]]]\\\\[[[ZZYYXWURLF?81+)('&%%$$####"""""""!]]\\\\\\[[[[ZZYYXXWVSOJE?93.*)('&&%%$$$####"""""\\\\\[[[[[ZZZYYXWWVTQMID?:50,*)('&&%%%$$$######"\\\[[[[[ZZZYYXXWWVUROLHD?;62.+)((''&&%%$$$$$####[[[[[ZZZYYYXXWWVUSQNJGC?;730,*)((''&&%%%$$$$$#[[[ZZZZYYYXXWWVUTROLIFC?<851.+*)((''&&&%%%$$$$ZZZZZYYYXXXWWVVTSPNKIFC?<952/-+))((''&&&%%%%$$ZZZYYYYXXXWWVVUSQOMJHEB?<9631.,*))(('''&&&%%%%ZYYYXXXWWWVVUTRPNLJGEB?=:742/-+*))(('''&&&%%YYYXXXWWWVVUTSQOMKIGDB?=:8530.,+*))(('''&&&&YYXXXWWWVVUTSRPNLJHFDB?=:8631/-+*))((('''&&&XXXWWWVVVUTRQONLJHFDB?=;96420.,+*))(((''''XXWWWVVVUTSQPNMKIGEDB?=;97531/-,+*))((('''YWWWVVVUTSRQONLJIGECA?=;975320.,+**))((((&WWVVVUTTSQPOMKJHGECA?=<:86421/-,+*)))(((UVVVUUTSRQONLKIHFECA?><:865310.-++*)))(*VVVUTSRQPOMLJIGFDCA?><:875320/-,+**))(UUTTSRPONMKJIGFDCA?><:976421/.-,+*))UTTSRQPOMLKJHGEDBA?><;9764320/-,+**)TSRQPONMLJIHGEDBA?><;9865321/.-,+*SRQPONLKJIHFEDBA?>=;:8754310/.,+QPONMLKJIGFECBA?>=;:8764321/.-PONMLJIHGFECBA?>=;:97653210/NMLKJIHGFDCBA?>=;:98654310LKJIHFEDCBA?>=<:987543IHGFEDCBA?>=<;9876GFEDCBA?>=<;98
\ No newline at end of file
diff --git a/data/pinball/haunter_normal_angles.bin b/data/pinball/haunter_normal_angles.bin
new file mode 100644
index 000000000000..5f9835543f2e
--- /dev/null
+++ b/data/pinball/haunter_normal_angles.bin
@@ -0,0 +1,7 @@
+qknsy~k
rksxyz|}~
+mruvwyz{}~
?rstvwxz{|~ ?jqrstuvxy{|~
+
kopqrstvwyz|~
lmnopqrsuvxz|~
+
jlmnopqrtuwy{}
+
jkklmnopqstvx{} jjjkklmopqsuwz}
+ghiijjklmnprtvy|
ighhhijjkmnprux|
+
?gggghhijklnpsv{ ?iffffggghijkmptyfeeeeefffgghjlpv ddddddddeeeffgjpcccccccccccccccc(cbbbaaaaaa``_^\W?'# eaaa````__^]\ZWO?.'$"!! f``___^^]]\[YWSJ?3*'%$#"!! i__^^^]]\[ZYWUOH?6.)'%$##"!! @^^]]\\[[ZYWVRLF?81+)'&%$##"!!!?g]]\\[[ZYXWVSOJE?93.*('&%$$##""b\\[[ZZYXWVTQMID?:50,)('&%%$###^[[ZYYXWVUROLHD?;62.+)('&%%$$!fZZYYXWVUSQNJGC?;730,*)('&&%$jZYYXWVVTROLIFC?<851.+))('&&%_YXXWWVTSPNKIFC?<952/-+)(('&&!`XWWVUSQOMJHEB?<9631.,*)(('iWWVUTRPNLJGEB?=:742/-+*)((ZYVUTSQOMKIGDB?=:8530.,+))#&@VTSRPNLJHFDB?=:8631/-+*)PXTRQONLJHFDB?=;96420.,+'.ASQPNMKIGEDB?=;97531/-,>EQONLJIGECB?=;975320.:NJOMLJHGECA?=<:8642151LHLKIHFECA?><:865373MCJIGFDCA?><:875<2AFGFDCA?><:9:>D?BAA?>>?<
\ No newline at end of file
diff --git a/data/pinball/meowth_jewel_normal_angles.bin b/data/pinball/meowth_jewel_normal_angles.bin
new file mode 100644
index 000000000000..fb8de1ed3db7
--- /dev/null
+++ b/data/pinball/meowth_jewel_normal_angles.bin
@@ -0,0 +1,5 @@
+{|~vwyz|~suvxz|}
+qrtuwy{}
+
opqstvx{} lmopqsuwz}
+jklmnprtvy|
hijkmnprux|
+
ghhiklnpsv{ eeffghikmptyccddeefhilpv aabbbccdefip``````_````_1^^]]]]\[ZYVO?/(%$#""!!!!\\[[ZZYWVSOI?6/+(&%$$##"ZYYXWVTROKF?93/,*('&%%XWWVTSQOLID?:62/-+)('&WVTTRQOMJGC?;741/-+*)(TSRQOMKIFC?<9631/-,+RQONLJHEB?<:7420/.ONLKIGDB?=:86420MKJHFDB?=;9753JIGECB?=;976ECA?><
\ No newline at end of file
diff --git a/data/pinball/meowth_normal_angles.bin b/data/pinball/meowth_normal_angles.bin
new file mode 100644
index 000000000000..5b9cd82a2a9f
Binary files /dev/null and b/data/pinball/meowth_normal_angles.bin differ
diff --git a/data/pinball/seel_normal_angles.bin b/data/pinball/seel_normal_angles.bin
new file mode 100644
index 000000000000..7783c2fe84bb
--- /dev/null
+++ b/data/pinball/seel_normal_angles.bin
@@ -0,0 +1,8 @@
+xz{|}~tvwxyz|}~ stuvwyz{}~
+qrsuvwxz{|~
pqrstuvxy{|~
+
nopqrstvwyz|~
+
mmnopqrsuvxz|}
+
llmnopqrtuwy{}
+
jkklmnopqstvx{} iijkllmopqsuwz}
+ghhiijklmnprtvy|
ffgghiijkmnprux|
+
eeeffghhiklnpsv{ cdddeeffghikmptybbccccddeefhilpv aaaaaabbbbcdefip```_``````````_`1^^^^^^]]]]\[ZYVO?/(%$#""!!!!! ]]\\\\[[ZZYWVSOI?6/+(&%$$##"""""\[[[ZZYYXWVTROKF?93/,*('&%%$$###ZZZYYXWWVTSQOLID?:62/-+)('&&%%$$YYXXWVVTTRQOMJGC?;741/-+*)(''&&&WWVVUTSRQOMKIFC?<9631/-,+*)(''VVUTTSRPONLJHEB?<:7520/-,++))(TTSRQPONLKIGDB?=:86420/.-,+*SSRQPONMKJHFDB?=;975310/.-,+RQPONMLJIGECB?=;9764310/.-PONMLKJHFECA?><:8653210/NMLKJIGFDCA?><:9764321LLKIHGFDCA?><;986543KJIHFEDBA?><;:8764GFECBA?>=;:9
\ No newline at end of file
diff --git a/data/pinball/tilt_down_deltas.bin b/data/pinball/tilt_down_deltas.bin
new file mode 100644
index 000000000000..beb2d4eebf31
Binary files /dev/null and b/data/pinball/tilt_down_deltas.bin differ
diff --git a/data/pinball/tilt_down_left_deltas.bin b/data/pinball/tilt_down_left_deltas.bin
new file mode 100644
index 000000000000..70ebbcc6f7b2
Binary files /dev/null and b/data/pinball/tilt_down_left_deltas.bin differ
diff --git a/data/pinball/tilt_down_right_deltas.bin b/data/pinball/tilt_down_right_deltas.bin
new file mode 100644
index 000000000000..75987a55c135
Binary files /dev/null and b/data/pinball/tilt_down_right_deltas.bin differ
diff --git a/data/pinball/tilt_left_deltas.bin b/data/pinball/tilt_left_deltas.bin
new file mode 100644
index 000000000000..d68143e1bc73
Binary files /dev/null and b/data/pinball/tilt_left_deltas.bin differ
diff --git a/data/pinball/tilt_right_deltas.bin b/data/pinball/tilt_right_deltas.bin
new file mode 100644
index 000000000000..af9472d05b42
Binary files /dev/null and b/data/pinball/tilt_right_deltas.bin differ
diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc
index a3defef83ef1..0fe74f83b030 100644
--- a/data/script_cmd_table.inc
+++ b/data/script_cmd_table.inc
@@ -221,7 +221,7 @@ gScriptCmdTable::
script_cmd_table_entry SCR_OP_SETESCAPEWARP ScrCmd_setescapewarp, requests_effects=1 @ 0xc4
script_cmd_table_entry SCR_OP_WAITMONCRY ScrCmd_waitmoncry, requests_effects=1 @ 0xc5
script_cmd_table_entry SCR_OP_BUFFERBOXNAME ScrCmd_bufferboxname, requests_effects=1 @ 0xc6
- script_cmd_table_entry SCR_OP_TEXTCOLOR ScrCmd_nop1, requests_effects=1 @ 0xc7
+ script_cmd_table_entry SCR_OP_TEXTCOLOR ScrCmd_textcolor, requests_effects=1 @ 0xc7
script_cmd_table_entry SCR_OP_LOADHELP ScrCmd_nop1, requests_effects=1 @ 0xc8
script_cmd_table_entry SCR_OP_UNLOADHELP ScrCmd_nop1, requests_effects=1 @ 0xc9
script_cmd_table_entry SCR_OP_SIGNMSG ScrCmd_nop1, requests_effects=1 @ 0xca
@@ -230,7 +230,7 @@ gScriptCmdTable::
script_cmd_table_entry SCR_OP_SETMODERNFATEFULENCOUNTER ScrCmd_setmodernfatefulencounter, requests_effects=1 @ 0xcd
script_cmd_table_entry SCR_OP_CHECKMODERNFATEFULENCOUNTER ScrCmd_checkmodernfatefulencounter, requests_effects=1 @ 0xce
script_cmd_table_entry SCR_OP_TRYWONDERCARDSCRIPT ScrCmd_trywondercardscript, requests_effects=1 @ 0xcf
- script_cmd_table_entry SCR_OP_SETWORLDMAPFLAG ScrCmd_nop1, requests_effects=1 @ 0xd0
+ script_cmd_table_entry SCR_OP_SETWORLDMAPFLAG ScrCmd_setworldmapflag, requests_effects=1 @ 0xd0
script_cmd_table_entry SCR_OP_WARPSPINENTER ScrCmd_warpspinenter, requests_effects=1 @ 0xd1
script_cmd_table_entry SCR_OP_SETMONMETLOCATION ScrCmd_setmonmetlocation, requests_effects=1 @ 0xd2
script_cmd_table_entry SCR_OP_MOVEROTATINGTILEOBJECTS ScrCmd_moverotatingtileobjects, requests_effects=1 @ 0xd3
@@ -252,6 +252,7 @@ gScriptCmdTable::
script_cmd_table_entry SCR_OP_DYNMULTICHOICE ScrCmd_dynmultichoice, requests_effects=1 @ 0xe3
script_cmd_table_entry SCR_OP_DYNMULTIPUSH ScrCmd_dynmultipush, requests_effects=1 @ 0xe4
script_cmd_table_entry SCR_OP_HIDEFOLLOWER ScrCmd_hidefollower, requests_effects=1 @ 0xe5
+ script_cmd_table_entry SCR_OP_GETBRAILLESTRINGWIDTH ScrCmd_getbraillestringwidth, requests_effects=1 @ 0xe6
.if ALLOCATE_SCRIPT_CMD_TABLE
gScriptCmdTableEnd::
diff --git a/data/scripts/aide.inc b/data/scripts/aide.inc
new file mode 100644
index 000000000000..113a0a001a65
--- /dev/null
+++ b/data/scripts/aide.inc
@@ -0,0 +1,30 @@
+Aide_EventScript_HaventCaughtEnough::
+ msgbox Aide_Text_HaventCaughtEnoughMonsForItem
+ release
+ end
+
+Aide_EventScript_NoRoomForItem::
+ msgbox Aide_Text_DontHaveAnyRoomForItem
+ release
+ end
+
+Aide_EventScript_DeclineCheckMons::
+ msgbox Aide_Text_GetEnoughMonsComeBackForItem
+ release
+ end
+
+Aide_Text_HaventCaughtEnoughMonsForItem::
+ .string "Let's see…\n"
+ .string "Uh-oh! You have caught only\l"
+ .string "{STR_VAR_3} kinds of POKéMON!\p"
+ .string "You need {STR_VAR_1} kinds\n"
+ .string "if you want the {STR_VAR_2}.$"
+
+Aide_Text_GetEnoughMonsComeBackForItem::
+ .string "…Oh. I see.\p"
+ .string "When you get {STR_VAR_1} kinds of POKéMON,\n"
+ .string "come back for the {STR_VAR_2}.$"
+
+Aide_Text_DontHaveAnyRoomForItem::
+ .string "Oh! I see you don't have any\n"
+ .string "room for the {STR_VAR_2}.$"
diff --git a/data/scripts/cable_club_frlg.inc b/data/scripts/cable_club_frlg.inc
new file mode 100644
index 000000000000..90b97a6ab2fa
--- /dev/null
+++ b/data/scripts/cable_club_frlg.inc
@@ -0,0 +1,1719 @@
+CableClub_OnTransition_Frlg::
+ call CableClub_EventScript_HideOrShowMysteryGiftMan_Frlg
+ end
+
+CableClub_EventScript_HideOrShowMysteryGiftMan_Frlg::
+ specialvar VAR_RESULT, ValidateSavedWonderCard
+ goto_if_eq VAR_RESULT, FALSE, EventScript_HideMysteryGiftMan_Frlg
+ clearflag FLAG_HIDE_MG_DELIVERYMEN
+ return
+
+EventScript_HideMysteryGiftMan_Frlg::
+ setflag FLAG_HIDE_MG_DELIVERYMEN
+ return
+
+CableClub_EventScript_MysteryGiftMan_Frlg::
+ trywondercardscript
+
+@ Unused
+EventScript_MysteryGiftThankYou_Frlg::
+ msgbox gText_ThankYouForAccessingMysteryGift, MSGBOX_NPC
+ end
+
+CableClub_OnWarp_Frlg::
+ map_script_2 VAR_CABLE_CLUB_STATE, USING_SINGLE_BATTLE, EventScript_CheckTurnAttendant_Frlg
+ map_script_2 VAR_CABLE_CLUB_STATE, USING_DOUBLE_BATTLE, EventScript_CheckTurnAttendant_Frlg
+ map_script_2 VAR_CABLE_CLUB_STATE, USING_MULTI_BATTLE, EventScript_CheckTurnAttendant_Frlg
+ map_script_2 VAR_CABLE_CLUB_STATE, USING_TRADE_CENTER, EventScript_CheckTurnAttendant_Frlg
+ map_script_2 VAR_CABLE_CLUB_STATE, USING_UNION_ROOM, EventScript_CheckTurnAttendant_Frlg
+ map_script_2 VAR_CABLE_CLUB_STATE, USING_BERRY_CRUSH, EventScript_CheckTurnAttendant_Frlg
+ map_script_2 VAR_CABLE_CLUB_STATE, USING_MINIGAME, EventScript_CheckTurnAttendant_Frlg
+ .2byte 0
+
+EventScript_CheckTurnAttendant_Frlg::
+ goto_if_eq VAR_0x8007, 0, EventScript_CheckTurnAttendantEnd
+ turnobject VAR_0x8007, DIR_WEST
+EventScript_CheckTurnAttendantEnd:
+ end
+
+CableClub_OnLoad_Frlg::
+ goto_if_eq VAR_CABLE_CLUB_STATE, USING_SINGLE_BATTLE, EventScript_OnLoadFromColosseum_Frlg
+ goto_if_eq VAR_CABLE_CLUB_STATE, USING_DOUBLE_BATTLE, EventScript_OnLoadFromColosseum_Frlg
+ goto_if_eq VAR_CABLE_CLUB_STATE, USING_MULTI_BATTLE, EventScript_OnLoadFromColosseum_Frlg
+ goto_if_eq VAR_CABLE_CLUB_STATE, USING_TRADE_CENTER, EventScript_OnLoadFromTradeCenter_Frlg
+ goto_if_eq VAR_CABLE_CLUB_STATE, USING_UNION_ROOM, EventScript_OnLoadFromUnionRoom_Frlg
+ goto_if_eq VAR_CABLE_CLUB_STATE, USING_BERRY_CRUSH, EventScript_OnLoadFromBerryCrush_Frlg
+ goto_if_eq VAR_CABLE_CLUB_STATE, USING_MINIGAME, EventScript_OnLoadFromGameCorner_Frlg
+ end
+
+EventScript_OnLoadFromColosseum_Frlg::
+ call CableClub_EventScript_OpenDirectCornerBarrier_Frlg
+ end
+
+EventScript_OnLoadFromTradeCenter_Frlg::
+ call CableClub_EventScript_OpenDirectCornerBarrier_Frlg
+ end
+
+EventScript_OnLoadFromUnionRoom_Frlg::
+ call CableClub_EventScript_OpenUnionRoomBarrier_Frlg
+ end
+
+EventScript_OnLoadFromBerryCrush_Frlg::
+ call CableClub_EventScript_OpenDirectCornerBarrier_Frlg
+ end
+
+EventScript_OnLoadFromGameCorner_Frlg::
+ call CableClub_EventScript_OpenGameCornerBarrier_Frlg
+ end
+
+CableClub_OnFrame_Frlg::
+ map_script_2 VAR_MAP_SCENE_POKEMON_CENTER_TEALA, 1, CableClub_EventScript_Tutorial_Frlg
+ map_script_2 VAR_CABLE_CLUB_STATE, USING_SINGLE_BATTLE, CableClub_EventScript_ExitLinkRoom_Frlg
+ map_script_2 VAR_CABLE_CLUB_STATE, USING_DOUBLE_BATTLE, CableClub_EventScript_ExitLinkRoom_Frlg
+ map_script_2 VAR_CABLE_CLUB_STATE, USING_MULTI_BATTLE, CableClub_EventScript_ExitLinkRoom_Frlg
+ map_script_2 VAR_CABLE_CLUB_STATE, USING_TRADE_CENTER, CableClub_EventScript_ExitTradeCenter_Frlg
+ map_script_2 VAR_CABLE_CLUB_STATE, USING_UNION_ROOM, CableClub_EventScript_ExitUnionRoom_Frlg
+ map_script_2 VAR_CABLE_CLUB_STATE, USING_BERRY_CRUSH, CableClub_EventScript_ExitLinkRoom_Frlg
+ map_script_2 VAR_CABLE_CLUB_STATE, USING_MINIGAME, CableClub_EventScript_ExitMinigameRoom_Frlg
+ .2byte 0
+
+CableClub_EventScript_ExitLinkRoom_Frlg::
+ lockall
+ call CableClub_EventScript_CloseLinkAndExitLinkRoom_Frlg
+ call CableClub_EventScript_CloseDirectCornerBarrier_Frlg
+ special DrawWholeMapView
+ playse SE_CLICK
+ erasebox 0, 0, 29, 19
+ releaseall
+ end
+
+CableClub_EventScript_ExitMinigameRoom_Frlg::
+ lockall
+ call CableClub_EventScript_CloseLinkAndExitLinkRoom_Frlg
+ call CableClub_EventScript_CloseGameCornerBarrier_Frlg
+ special DrawWholeMapView
+ playse SE_CLICK
+ erasebox 0, 0, 29, 19
+ releaseall
+ end
+
+CableClub_EventScript_CloseLinkAndExitLinkRoom_Frlg::
+ setvar VAR_CABLE_CLUB_STATE, 0
+ textcolor NPC_TEXT_COLOR_FEMALE
+ goto_if_eq VAR_0x8007, 0, CableClub_EventScript_PlayerExitLinkRoom_Frlg
+ applymovement VAR_0x8007, Movement_AttendantFaceLeft
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Movement_PlayerExitLinkRoom
+ waitmovement 0
+ applymovement VAR_0x8007, Movement_AttendantFaceDown
+ waitmovement 0
+ return
+
+CableClub_EventScript_ExitTradeCenter_Frlg::
+ lockall
+ call CableClub_EventScript_PlayerExitTradeCenter_Frlg
+ call CableClub_EventScript_CloseDirectCornerBarrier_Frlg
+ special DrawWholeMapView
+ playse SE_CLICK
+ erasebox 0, 0, 29, 19
+ releaseall
+ end
+
+CableClub_EventScript_PlayerExitTradeCenter_Frlg::
+ special CloseLink
+ setvar VAR_CABLE_CLUB_STATE, 0
+ textcolor NPC_TEXT_COLOR_FEMALE
+ goto_if_eq VAR_0x8007, 0, CableClub_EventScript_PlayerExitLinkRoom_Frlg
+ applymovement LOCALID_PLAYER, Movement_PlayerFaceAttendantRight
+ waitmovement 0
+ applymovement VAR_0x8007, Movement_AttendantFaceLeft
+ waitmovement 0
+ call CableClub_EventScript_TrainerCardDataOverwritten_Frlg
+ return
+
+CableClub_EventScript_ExitUnionRoom_Frlg::
+ lockall
+ call CableClub_EventScript_PlayerExitUnionRoom_Frlg
+ call CableClub_EventScript_CloseUnionRoomBarrier_Frlg
+ special DrawWholeMapView
+ playse SE_CLICK
+ erasebox 0, 0, 29, 19
+ releaseall
+ end
+
+CableClub_EventScript_PlayerExitUnionRoom_Frlg::
+ setvar VAR_CABLE_CLUB_STATE, 0
+ textcolor NPC_TEXT_COLOR_FEMALE
+ goto_if_eq VAR_0x8007, 0, CableClub_EventScript_PlayerExitLinkRoom_Frlg
+ applymovement LOCALID_PLAYER, Movement_PlayerFaceAttendantRight
+ waitmovement 0
+ applymovement VAR_0x8007, Movement_AttendantFaceLeft
+ waitmovement 0
+ call CableClub_EventScript_TrainerCardDataOverwritten_Frlg
+ return
+
+CableClub_EventScript_TrainerCardDataOverwritten_Frlg::
+ message CableClub_Text_TrainerCardDataOverwritten_Frlg
+ waitmessage
+ playse SE_PIN
+ message CableClub_Text_HopeToSeeYouAgain_Frlg
+ waitmessage
+ applymovement LOCALID_PLAYER, Movement_PlayerExitLinkRoom
+ waitmovement 0
+ applymovement VAR_0x8007, Movement_AttendantFaceDown
+ waitmovement 0
+ return
+
+CableClub_EventScript_PlayerExitLinkRoom_Frlg::
+ applymovement LOCALID_PLAYER, Movement_PlayerExitLinkRoom
+ waitmovement 0
+ return
+
+CableClub_EventScript_Tutorial_Frlg::
+ lockall
+ textcolor NPC_TEXT_COLOR_FEMALE
+ applymovement LOCALID_PLAYER, Common_Movement_WalkInPlaceFasterUp
+ waitmovement 0
+ msgbox CableClub_Text_FirstTimeRightThisWay_Frlg
+ closemessage
+ applymovement LOCALID_PLAYER, Movement_PlayerApproachCounter
+ waitmovement 0
+ delay 30
+ msgbox CableClub_Text_ExplainWirelessClubFirstTime_Frlg
+ setvar VAR_MAP_SCENE_POKEMON_CENTER_TEALA, 2
+ releaseall
+ end
+
+Movement_PlayerApproachCounter:
+ walk_up
+ walk_up
+ step_end
+
+CableClub_EventScript_WelcomeToCableClub_Frlg::
+ message CableClub_Text_WelcomeWhichCableClubService_Frlg
+ waitmessage
+ delay 15
+ goto CableClub_EventScript_SelectCableClubRoom_Frlg
+ end
+
+CableClub_EventScript_UnusedWelcomeToCableClub_Frlg::
+ msgbox CableClub_Text_WhichService_Frlg
+ goto CableClub_EventScript_SelectCableClubRoom_Frlg
+ end
+
+CableClub_EventScript_SelectCableClubRoom_Frlg::
+ setvar VAR_0x8004, 0
+ multichoice 0, 0, MULTI_CABLE_CLUB_NO_RECORD_MIX, FALSE
+ switch VAR_RESULT
+ case 0, CableClub_EventScript_TradeCenter_Frlg
+ case 1, CableClub_EventScript_Colosseum_Frlg
+ case 2, CableClub_EventScript_AbortLink_Frlg
+ case MULTI_B_PRESSED, CableClub_EventScript_AbortLink_Frlg
+ end
+
+CableClub_EventScript_Colosseum_Frlg::
+ copyvar VAR_0x8007, VAR_LAST_TALKED
+ goto CableClub_EventScript_SelectBattleMode_Frlg
+ end
+
+CableClub_EventScript_SelectBattleMode_Frlg::
+ message CableClub_Text_PlayWhichBattleMode_Frlg
+ waitmessage
+ multichoice 0, 0, MULTI_BATTLE_MODE, FALSE
+ switch VAR_RESULT
+ case 0, CableClub_EventScript_SingleBattleMode_Frlg
+ case 1, CableClub_EventScript_DoubleBattleMode_Frlg
+ case 2, CableClub_EventScript_MultiBattleMode_Frlg
+ case 3, CableClub_EventScript_BattleModeInfo_Frlg
+ case 4, CableClub_EventScript_AbortLink_Frlg
+ case MULTI_B_PRESSED, CableClub_EventScript_AbortLink_Frlg
+ end
+
+CableClub_EventScript_BattleModeInfo_Frlg::
+ msgbox CableClub_Text_ExplainBattleModes_Frlg
+ goto CableClub_EventScript_SelectBattleMode_Frlg
+ end
+
+CableClub_EventScript_SingleBattleMode_Frlg::
+ setvar VAR_0x8004, USING_SINGLE_BATTLE
+ goto CableClub_EventScript_TryEnterColosseum_Frlg
+ end
+
+CableClub_EventScript_DoubleBattleMode_Frlg::
+ special HasEnoughMonsForDoubleBattle
+ goto_if_ne VAR_RESULT, PLAYER_HAS_TWO_USABLE_MONS, CableClub_EventScript_NeedTwoMonsForDoubleBattle_Frlg
+ setvar VAR_0x8004, USING_DOUBLE_BATTLE
+ goto CableClub_EventScript_TryEnterColosseum_Frlg
+ end
+
+CableClub_EventScript_NeedTwoMonsForDoubleBattle_Frlg::
+ msgbox CableClub_Text_NeedTwoMonsForDoubleBattle_Frlg
+ goto CableClub_EventScript_SelectBattleMode_Frlg
+ end
+
+CableClub_EventScript_MultiBattleMode_Frlg::
+ setvar VAR_0x8004, USING_MULTI_BATTLE
+ goto CableClub_EventScript_TryEnterColosseum_Frlg
+ end
+
+CableClub_EventScript_TryEnterColosseum_Frlg::
+ call Common_EventScript_SaveGame
+ goto_if_eq VAR_RESULT, 0, CableClub_EventScript_AbortLink_Frlg
+ message CableClub_Text_PleaseWaitBCancel_Frlg
+ waitmessage
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ special TryBattleLinkup
+ waitstate
+ call EventScript_RestorePrevTextColor
+ goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterColosseum_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_SOMEONE_NOT_READY, CableClub_EventScript_AbortLinkSomeoneNotReady_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_DIFF_SELECTIONS, CableClub_EventScript_AbortLinkDifferentSelections_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_WRONG_NUM_PLAYERS, CableClub_EventScript_AbortLinkIncorrectNumberOfBattlers_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_AbortLink_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_CONNECTION_ERROR, CableClub_EventScript_AbortLinkConnectionError_Frlg
+ end
+
+CableClub_EventScript_EnterColosseum_Frlg::
+ special HealPlayerParty
+ special SavePlayerParty
+ special LoadPlayerBag
+ copyvar VAR_CABLE_CLUB_STATE, VAR_0x8004
+ messageautoscroll CableClub_Text_PleaseEnter_Frlg
+ waitmessage
+ call CableClub_EventScript_OpenDirectCornerBarrier_Frlg
+ special DrawWholeMapView
+ playse SE_CLICK
+ delay 60
+ applymovement VAR_LAST_TALKED, Movement_AttendantFaceLeft
+ waitmovement 0
+ closemessage
+ applymovement LOCALID_PLAYER, Movement_PlayerApproachLinkRoomLeft
+ waitmovement 0
+ opendoor 9, 1
+ waitdooranim
+ applymovement LOCALID_PLAYER, Movement_PlayerEnterLinkRoom
+ waitmovement 0
+ hideplayer
+ closedoor 9, 1
+ waitdooranim
+ release
+ goto_if_eq VAR_0x8004, USING_MULTI_BATTLE, CableClub_EventScript_WarpTo4PColosseum_Frlg
+ special SetCableClubWarp
+ warp MAP_BATTLE_COLOSSEUM_2P, 6, 8
+ special DoCableClubWarp
+ waitstate
+ end
+
+@ Unused
+CableClub_EventScript_PlayerApproachLinkRoomRight_Frlg::
+ applymovement LOCALID_PLAYER, Movement_PlayerApproachLinkRoomRight
+ waitmovement 0
+ return
+
+CableClub_EventScript_WarpTo4PColosseum_Frlg::
+ special SetCableClubWarp
+ warp MAP_BATTLE_COLOSSEUM_4P, 5, 8
+ special DoCableClubWarp
+ waitstate
+ end
+
+CableClub_EventScript_AbortLinkIncorrectNumberOfBattlers_Frlg::
+ switch VAR_0x8004
+ case USING_SINGLE_BATTLE, CableClub_EventScript_AbortLinkWrongNumberForSingleBattle_Frlg
+ case USING_DOUBLE_BATTLE, CableClub_EventScript_AbortLinkWrongNumberForDoubleBattle_Frlg
+ case USING_MULTI_BATTLE, CableClub_EventScript_AbortLinkNeedFourPlayers_Frlg
+ goto CableClub_EventScript_AbortLinkIncorrectNumberOfParticipants_Frlg
+ end
+
+CableClub_EventScript_AbortLinkNeedFourPlayers_Frlg::
+ special CloseLink
+ msgbox CableClub_Text_NeedFourPlayers_Frlg
+ goto CableClub_EventScript_ConfirmNumberAndRestart_Frlg
+ end
+
+CableClub_EventScript_AbortLinkWrongNumberForDoubleBattle_Frlg::
+ special CloseLink
+ msgbox CableClub_Text_CantDoubleBattleWithXPlayers_Frlg
+ goto CableClub_EventScript_ConfirmNumberAndRestart_Frlg
+ end
+
+CableClub_EventScript_AbortLinkWrongNumberForSingleBattle_Frlg::
+ special CloseLink
+ msgbox CableClub_Text_CantSingleBattleWithXPlayers_Frlg
+ goto CableClub_EventScript_ConfirmNumberAndRestart_Frlg
+ end
+
+CableClub_EventScript_ConfirmNumberAndRestart_Frlg::
+ special CloseLink @ Redundant
+ msgbox CableClub_Text_PleaseConfirmNumberAndRestart_Frlg
+ release
+ end
+
+CableClub_EventScript_TradeCenter_Frlg::
+ copyvar VAR_0x8007, VAR_LAST_TALKED
+ call CableClub_EventScript_CheckPartyTradeRequirements_Frlg
+ goto_if_eq VAR_RESULT, 0, CableClub_EventScript_AbortLink_Frlg
+ call Common_EventScript_SaveGame
+ goto_if_eq VAR_RESULT, 0, CableClub_EventScript_AbortLink_Frlg
+ message CableClub_Text_PleaseWaitBCancel_Frlg
+ waitmessage
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ special TryTradeLinkup
+ waitstate
+ call EventScript_RestorePrevTextColor
+ goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterTradeCenter_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_SOMEONE_NOT_READY, CableClub_EventScript_AbortLinkSomeoneNotReady_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_DIFF_SELECTIONS, CableClub_EventScript_AbortLinkDifferentSelections_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_WRONG_NUM_PLAYERS, CableClub_EventScript_AbortLinkIncorrectNumberOfParticipants_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_AbortLink_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_CONNECTION_ERROR, CableClub_EventScript_AbortLinkConnectionError_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_PLAYER_NOT_READY, CableClub_EventScript_AbortLinkPlayerNotReady_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_PARTNER_NOT_READY, CableClub_EventScript_AbortLinkOtherTrainerNotReady_Frlg
+ end
+
+CableClub_EventScript_EnterTradeCenter_Frlg::
+ setvar VAR_0x8004, USING_TRADE_CENTER
+ copyvar VAR_CABLE_CLUB_STATE, VAR_0x8004
+ messageautoscroll CableClub_Text_PleaseEnter_Frlg
+ waitmessage
+ call CableClub_EventScript_OpenDirectCornerBarrier_Frlg
+ special DrawWholeMapView
+ playse SE_CLICK
+ delay 60
+ applymovement VAR_LAST_TALKED, Movement_AttendantFaceLeft
+ waitmovement 0
+ closemessage
+ applymovement LOCALID_PLAYER, Movement_PlayerApproachLinkRoomLeft
+ waitmovement 0
+ opendoor 9, 1
+ waitdooranim
+ applymovement LOCALID_PLAYER, Movement_PlayerEnterLinkRoom
+ waitmovement 0
+ hideplayer
+ closedoor 9, 1
+ waitdooranim
+ release
+ special SetCableClubWarp
+ setwarp MAP_TRADE_CENTER_FRLG, 5, 8
+ special DoCableClubWarp
+ waitstate
+ end
+
+CableClub_EventScript_CheckPartyTradeRequirements_Frlg::
+ specialvar VAR_RESULT, CalculatePlayerPartyCount
+ goto_if_lt VAR_RESULT, 2, CableClub_EventScript_NeedTwoMonsToTrade_Frlg
+ specialvar VAR_RESULT, DoesPartyHaveEnigmaBerry
+ goto_if_eq VAR_RESULT, TRUE, CableClub_EventScript_CantTradeEnigmaBerry_Frlg
+ setvar VAR_RESULT, TRUE
+ return
+
+CableClub_EventScript_NeedTwoMonsToTrade_Frlg::
+ msgbox CableClub_Text_NeedTwoMonsToTrade_Frlg
+ setvar VAR_RESULT, FALSE
+ return
+
+CableClub_EventScript_CantTradeEnigmaBerry_Frlg::
+ msgbox CableClub_Text_CantTradeEnigmaBerry_Frlg
+ setvar VAR_RESULT, FALSE
+ return
+
+@ Record Corner is nopped in FRLG
+CableClub_EventScript_RecordCorner_Frlg::
+ end
+
+CableClub_EventScript_AbortLinkPlayerNotReady_Frlg::
+ special CloseLink
+ msgbox CableClub_Text_NotSetUpForFarAwayRegion_Frlg
+ release
+ end
+
+CableClub_EventScript_AbortLinkOtherTrainerNotReady_Frlg::
+ special CloseLink
+ msgbox CableClub_Text_OtherTrainerNotReady_Frlg
+ release
+ end
+
+CableClub_EventScript_AbortLinkConnectionError_Frlg::
+ special CloseLink
+ msgbox CableClub_Text_LinkErrorPleaseReset_Frlg
+ release
+ end
+
+CableClub_EventScript_AbortLinkSomeoneNotReady_Frlg::
+ special CloseLink
+ msgbox CableClub_Text_SomeoneIsNotReadyToLink_Frlg
+ release
+ end
+
+CableClub_EventScript_AbortLinkDifferentSelections_Frlg::
+ special CloseLink
+ msgbox CableClub_Text_PlayersMadeDifferentSelections_Frlg
+ release
+ end
+
+CableClub_EventScript_AbortLink_Frlg::
+ special CloseLink
+ msgbox CableClub_Text_PleaseVisitAgain_Frlg
+ release
+ end
+
+CableClub_EventScript_AbortMinigame_Frlg::
+ special CloseLink
+ msgbox CableClub_Text_ComeAgain_Frlg
+ release
+ end
+
+@ Unused
+CableClub_EventScript_CableClubWarp_Frlg::
+ special SetCableClubWarp
+ special DoCableClubWarp
+ waitstate
+ end
+
+CableClub_EventScript_AbortLinkIncorrectNumberOfParticipants_Frlg::
+ special CloseLink
+ msgbox CableClub_Text_IncorrectNumberOfParticipants_Frlg
+ release
+ end
+
+CableClub_EventScript_AbortLinkPlayerHasBadEgg_Frlg::
+ special CloseLink
+ msgbox CableClub_Text_YouHaveAMonThatCantBeTaken_Frlg
+ release
+ end
+
+CableClub_EventScript_WirelessClubAdjustements_Frlg::
+ msgbox Text_WirelessClubUndergoingAdjustments
+ release
+ end
+
+CableClub_EventScript_NotReadyYet_Frlg::
+ msgbox Text_AppearsToBeUndergoingAdjustments
+ releaseall
+ end
+
+Movement_AttendantFaceDown_Frlg::
+ face_down
+ step_end
+
+@ Unused
+Movement_AttendantFaceRight_Frlg::
+ face_right
+ step_end
+
+Movement_AttendantFaceLeft_Frlg::
+ face_left
+ step_end
+
+Movement_PlayerExitLinkRoom_Frlg::
+ walk_down
+ walk_down
+ step_end
+
+Movement_PlayerApproachLinkRoomRight_Frlg::
+ walk_right
+ walk_up
+ walk_up
+ step_end
+
+Movement_PlayerApproachLinkRoomLeft_Frlg::
+ walk_left
+ walk_up
+ walk_up
+ step_end
+
+Movement_PlayerEnterLinkRoom_Frlg::
+ walk_up
+ step_end
+
+@ Unused
+Movement_PlayerFaceAttendantLeft_Frlg::
+ face_left
+ step_end
+
+Movement_PlayerFaceAttendantRight_Frlg::
+ face_right
+ step_end
+
+Movement_PlayerEnterMinigameRoom_Frlg::
+ walk_left
+ walk_up
+ walk_up
+ walk_up
+ step_end
+
+CableClub_EventScript_ShowBattleRecords_Frlg::
+ lockall
+ fadescreen FADE_TO_BLACK
+ setvar VAR_0x8004, 0
+ special ShowTrainerHillRecords
+ waitstate
+ releaseall
+ end
+
+BattleColosseum_2P_EventScript_PlayerSpot0::
+ setvar VAR_0x8005, 0
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ special ColosseumPlayerSpotTriggered
+ waitstate
+ end
+
+BattleColosseum_2P_EventScript_PlayerSpot1::
+ setvar VAR_0x8005, 1
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ special ColosseumPlayerSpotTriggered
+ waitstate
+ end
+
+BattleColosseum_4P_EventScript_PlayerSpot0::
+ fadescreen FADE_TO_BLACK
+ special ChooseHalfPartyForBattle
+ waitstate
+ goto_if_eq VAR_RESULT, 0, BattleColosseum_4P_EventScript_CancelSpotTrigger_Frlg
+ setvar VAR_0x8005, 0
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ special ColosseumPlayerSpotTriggered
+ waitstate
+ end
+
+BattleColosseum_4P_EventScript_PlayerSpot1::
+ fadescreen FADE_TO_BLACK
+ special ChooseHalfPartyForBattle
+ waitstate
+ goto_if_eq VAR_RESULT, 0, BattleColosseum_4P_EventScript_CancelSpotTrigger_Frlg
+ setvar VAR_0x8005, 1
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ special ColosseumPlayerSpotTriggered
+ waitstate
+ end
+
+BattleColosseum_4P_EventScript_PlayerSpot2::
+ fadescreen FADE_TO_BLACK
+ special ChooseHalfPartyForBattle
+ waitstate
+ goto_if_eq VAR_RESULT, 0, BattleColosseum_4P_EventScript_CancelSpotTrigger_Frlg
+ setvar VAR_0x8005, 2
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ special ColosseumPlayerSpotTriggered
+ waitstate
+ end
+
+BattleColosseum_4P_EventScript_PlayerSpot3::
+ fadescreen FADE_TO_BLACK
+ special ChooseHalfPartyForBattle
+ waitstate
+ goto_if_eq VAR_RESULT, 0, BattleColosseum_4P_EventScript_CancelSpotTrigger_Frlg
+ setvar VAR_0x8005, 3
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ special ColosseumPlayerSpotTriggered
+ waitstate
+ end
+
+BattleColosseum_4P_EventScript_CancelSpotTrigger_Frlg::
+ end
+
+TradeCenter_EventScript_Chair0::
+ setvar VAR_0x8005, 0
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ special PlayerEnteredTradeSeat
+ waitstate
+ end
+
+TradeCenter_EventScript_Chair1::
+ setvar VAR_0x8005, 1
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ special PlayerEnteredTradeSeat
+ waitstate
+ end
+
+@ Unused
+TradeCenter_EventScript_Chair2_Frlg::
+ setvar VAR_0x8005, 2
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ special PlayerEnteredTradeSeat
+ waitstate
+ end
+
+@ Unused
+TradeCenter_EventScript_Chair3_Frlg::
+ setvar VAR_0x8005, 3
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ special PlayerEnteredTradeSeat
+ waitstate
+ end
+
+@ Nop in FRLG
+@ Separate labels to match GetDirectionForEventScript
+RecordCorner_EventScript_Spot0::
+RecordCorner_EventScript_Spot1::
+RecordCorner_EventScript_Spot2::
+RecordCorner_EventScript_Spot3::
+ end
+
+CableClub_EventScript_ReadTrainerCard_Frlg::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox Text_LookedAtPlayersTrainerCard_Frlg
+ fadescreen FADE_TO_BLACK
+ special Script_ShowLinkTrainerCard
+ waitstate
+ end
+
+CableClub_EventScript_ReadTrainerCardColored_Frlg::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox Text_LookedAtPlayersTrainerCardColored_Frlg
+ fadescreen FADE_TO_BLACK
+ special Script_ShowLinkTrainerCard
+ waitstate
+ end
+
+CableClub_EventScript_TooBusyToNotice_Frlg::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox Text_TrainerTooBusyToNotice_Frlg
+ closemessage
+ end
+
+BattleColosseum_2P_EventScript_Attendant_Frlg::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ special Script_FacePlayer
+ msgbox Text_TakeSeatStartBattle_Frlg
+ special Script_ClearHeldMovement
+ closemessage
+ end
+
+TradeCenter_EventScript_Attendant_Frlg::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ special Script_FacePlayer
+ msgbox Text_TakeSeatStartTrade_Frlg
+ special Script_ClearHeldMovement
+ closemessage
+ end
+
+@ Nop in FRLG
+RecordCorner_EventScript_Attendant_Frlg::
+ end
+
+TradeCenter_ConfirmLeaveRoom_Frlg::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox Text_TerminateLinkIfYouLeaveRoom_Frlg, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, TradeCenter_TerminateLink_Frlg
+ erasebox 0, 0, 29, 19
+ releaseall
+ end
+
+TradeCenter_TerminateLink_Frlg::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ messageautoscroll Text_TerminateLinkConfirmation
+ waitmessage
+ special ExitLinkRoom
+ end
+
+CableClub_EventScript_DoLinkRoomExit_Frlg::
+ special CleanupLinkRoomState
+ special ReturnFromLinkRoom
+ waitstate
+ end
+
+CableClub_EventScript_UnionRoomAttendant_Frlg::
+ lock
+ faceplayer
+ goto_if_unset FLAG_SYS_POKEDEX_GET, CableClub_EventScript_WirelessClubAdjustements_Frlg
+ specialvar VAR_RESULT, IsBadEggInParty
+ goto_if_eq VAR_RESULT, TRUE, CableClub_EventScript_AbortLinkPlayerHasBadEgg_Frlg
+ copyvar VAR_0x8007, VAR_LAST_TALKED
+ specialvar VAR_RESULT, IsWirelessAdapterConnected
+ goto_if_eq VAR_RESULT, FALSE, CableClub_EventScript_UnionRoomAdapterNotConnected_Frlg
+ message CableClub_Text_WelcomeUnionRoomEnter_Frlg
+ waitmessage
+ goto CableClub_EventScript_AskEnterUnionRoom_Frlg
+ end
+
+CableClub_EventScript_AskEnterUnionRoom_Frlg::
+ multichoice 18, 6, MULTI_YESNOINFO, FALSE
+ switch VAR_RESULT
+ case 0, CableClub_EventScript_EnterUnionRoom_Frlg
+ case 1, CableClub_EventScript_AbortLink_Frlg
+ case 2, CableClub_EventScript_UnionRoomInfo_Frlg
+ case MULTI_B_PRESSED, CableClub_EventScript_AbortLink_Frlg
+ end
+
+CableClub_EventScript_UnionRoomInfo_Frlg::
+ message CableClub_Text_UnionRoomInfo_Frlg
+ waitmessage
+ goto CableClub_EventScript_AskEnterUnionRoom_Frlg
+ end
+
+CableClub_EventScript_EnterUnionRoom_Frlg::
+ call CableClub_EventScript_CheckPartyUnionRoomRequirements_Frlg
+ goto_if_eq VAR_RESULT, FALSE, CableClub_EventScript_AbortLink_Frlg
+ call Common_EventScript_SaveGame
+ goto_if_eq VAR_RESULT, 0, CableClub_EventScript_AbortLink_Frlg
+ msgbox CableClub_Text_EnjoyUnionRoom_Frlg
+ closemessage
+ special HealPlayerParty
+ setvar VAR_0x8004, USING_UNION_ROOM
+ copyvar VAR_CABLE_CLUB_STATE, VAR_0x8004
+ call CableClub_EventScript_OpenUnionRoomBarrier_Frlg
+ special DrawWholeMapView
+ playse SE_CLICK
+ delay 60
+ applymovement VAR_LAST_TALKED, Movement_AttendantFaceLeft
+ waitmovement 0
+ applymovement LOCALID_PLAYER, Movement_PlayerApproachLinkRoomLeft
+ waitmovement 0
+ opendoor 5, 1
+ waitdooranim
+ applymovement LOCALID_PLAYER, Movement_PlayerEnterLinkRoom
+ waitmovement 0
+ hideplayer
+ closedoor 5, 1
+ waitdooranim
+ special Script_ResetUnionRoomTrade
+ special SetCableClubWarp
+ warpspinenter MAP_UNION_ROOM_FRLG, 7, 11
+ waitstate
+ special RunUnionRoom
+ waitstate
+ end
+
+CableClub_EventScript_CheckPartyUnionRoomRequirements_Frlg::
+ specialvar VAR_RESULT, CountPartyNonEggMons
+ goto_if_lt VAR_RESULT, 2, CableClub_EventScript_NeedTwoMonsForUnionRoom_Frlg
+ specialvar VAR_RESULT, DoesPartyHaveEnigmaBerry
+ goto_if_eq VAR_RESULT, TRUE, CableClub_EventScript_NoEnigmaBerryInUnionRoom_Frlg
+ setvar VAR_RESULT, TRUE
+ return
+
+CableClub_EventScript_NeedTwoMonsForUnionRoom_Frlg::
+ msgbox CableClub_Text_NeedTwoMonsForUnionRoom_Frlg
+ goto EventScript_SetResultFalse
+ end
+
+CableClub_EventScript_NoEnigmaBerryInUnionRoom_Frlg::
+ msgbox CableClub_Text_NoEnigmaBerryInUnionRoom_Frlg
+ goto EventScript_SetResultFalse
+ end
+
+CableClub_EventScript_UnionRoomAdapterNotConnected_Frlg::
+ msgbox CableClub_Text_UnionRoomAdapterNotConnected_Frlg
+ release
+ return
+
+CableClub_EventScript_WirelessClubAttendant_Frlg::
+ lock
+ faceplayer
+ goto_if_unset FLAG_SYS_POKEDEX_GET, CableClub_EventScript_WirelessClubAdjustements_Frlg
+ msgbox CableClub_Text_AskAboutLinking_Frlg, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CableClub_EventScript_DontAskAboutLinking_Frlg
+ msgbox CableClub_Text_ExplainWirelessClub_Frlg
+ release
+ return
+
+CableClub_EventScript_DontAskAboutLinking_Frlg::
+ msgbox CableClub_Text_HopeYouEnjoyWirelessSystem_Frlg
+ release
+ return
+
+CableClub_EventScript_DirectCornerAttendant_Frlg::
+ lock
+ faceplayer
+ goto_if_unset FLAG_SYS_POKEDEX_GET, CableClub_EventScript_WirelessClubAdjustements_Frlg
+ specialvar VAR_RESULT, IsBadEggInParty
+ goto_if_eq VAR_RESULT, TRUE, CableClub_EventScript_AbortLinkPlayerHasBadEgg_Frlg
+ specialvar VAR_RESULT, IsWirelessAdapterConnected
+ goto_if_eq VAR_RESULT, FALSE, CableClub_EventScript_WelcomeToCableClub_Frlg
+ message CableClub_Text_WelcomeWhichDirectCornerRoom_Frlg
+ waitmessage
+ delay 15
+ goto CableClub_EventScript_DirectCornerSelectService_Frlg
+ end
+
+CableClub_EventScript_DirectCornerSelectService_Frlg::
+ goto_if_unset FLAG_GOT_POWDER_JAR, CableClub_EventScript_DirectCornerNoBerry_Frlg
+ multichoice 0, 0, MULTI_WIRELESS_NO_RECORD, FALSE
+ switch VAR_RESULT
+ case 0, CableClub_EventScript_WirelessTrade_Frlg
+ case 1, CableClub_EventScript_WirelessBattleSelect_Frlg
+ case 2, CableClub_EventScript_WirelessBerryCrush_Frlg
+ case 3, CableClub_EventScript_AbortLink_Frlg
+ case MULTI_B_PRESSED, CableClub_EventScript_AbortLink_Frlg
+ end
+
+CableClub_EventScript_DirectCornerNoBerry_Frlg::
+ multichoice 0, 0, MULTI_WIRELESS_NO_RECORD_BERRY, FALSE
+ switch VAR_RESULT
+ case 0, CableClub_EventScript_WirelessTrade_Frlg
+ case 1, CableClub_EventScript_WirelessBattleSelect_Frlg
+ case 2, CableClub_EventScript_AbortLink_Frlg
+ case MULTI_B_PRESSED, CableClub_EventScript_AbortLink_Frlg
+ end
+
+CableClub_EventScript_WirelessTrade_Frlg::
+ msgbox CableClub_Text_TradePokemon_Frlg, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CableClub_EventScript_AbortLink_Frlg
+ call CableClub_EventScript_CheckPartyTradeRequirements_Frlg
+ goto_if_eq VAR_RESULT, FALSE, CableClub_EventScript_AbortLink_Frlg
+ setvar VAR_0x8004, LINK_GROUP_TRADE
+ goto CableClub_EventScript_SaveAndChooseLinkLeader_Frlg
+ end
+
+CableClub_EventScript_WirelessBattleSelect_Frlg::
+ message CableClub_Text_PlayWhichBattleMode_Frlg
+ waitmessage
+ multichoice 0, 0, MULTI_BATTLE_MODE, FALSE
+ switch VAR_RESULT
+ case 0, CableClub_EventScript_WirelessSingleBattle_Frlg
+ case 1, CableClub_EventScript_WirelessDoubleBattle_Frlg
+ case 2, CableClub_EventScript_WirelessMultiBattle_Frlg
+ case 3, CableClub_EventScript_WirelessBattleInfo_Frlg
+ case 4, CableClub_EventScript_AbortLink_Frlg
+ case MULTI_B_PRESSED, CableClub_EventScript_AbortLink_Frlg
+ end
+
+CableClub_EventScript_WirelessSingleBattle_Frlg::
+ setvar VAR_0x8004, LINK_GROUP_SINGLE_BATTLE
+ goto CableClub_EventScript_SaveAndChooseLinkLeader_Frlg
+ end
+
+CableClub_EventScript_WirelessDoubleBattle_Frlg::
+ special HasEnoughMonsForDoubleBattle
+ goto_if_ne VAR_RESULT, PLAYER_HAS_TWO_USABLE_MONS, CableClub_EventScript_TwoMonsNeededForWirelessDoubleBattle_Frlg
+ setvar VAR_0x8004, LINK_GROUP_DOUBLE_BATTLE
+ goto CableClub_EventScript_SaveAndChooseLinkLeader_Frlg
+ end
+
+CableClub_EventScript_TwoMonsNeededForWirelessDoubleBattle_Frlg::
+ msgbox CableClub_Text_NeedTwoMonsForDoubleBattle_Frlg
+ goto CableClub_EventScript_WirelessBattleSelect_Frlg
+ end
+
+CableClub_EventScript_WirelessMultiBattle_Frlg::
+ setvar VAR_0x8004, LINK_GROUP_MULTI_BATTLE
+ goto CableClub_EventScript_SaveAndChooseLinkLeader_Frlg
+ end
+
+CableClub_EventScript_WirelessBattleInfo_Frlg::
+ msgbox CableClub_Text_ExplainBattleModes_Frlg
+ goto CableClub_EventScript_WirelessBattleSelect_Frlg
+ end
+
+CableClub_EventScript_WirelessBerryCrush_Frlg::
+ msgbox CableClub_Text_UseBerryCrush_Frlg, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CableClub_EventScript_AbortLink_Frlg
+ special HasAtLeastOneBerry
+ goto_if_eq VAR_RESULT, FALSE, CableClub_EventScript_NeedBerryForBerryCrush_Frlg
+ setvar VAR_0x8004, LINK_GROUP_BERRY_CRUSH
+ goto CableClub_EventScript_SaveAndChooseLinkLeader_Frlg
+ end
+
+CableClub_EventScript_NeedBerryForBerryCrush_Frlg::
+ msgbox CableClub_Text_NeedBerryForBerryCrush_Frlg
+ goto CableClub_EventScript_DirectCornerSelectService_Frlg
+ end
+
+CableClub_EventScript_SaveAndChooseLinkLeader_Frlg::
+ call Common_EventScript_SaveGame
+ goto_if_eq VAR_RESULT, 0, CableClub_EventScript_AbortLink_Frlg
+ switch VAR_0x8004
+ case LINK_GROUP_TRADE, CableClub_EventScript_ChooseLinkLeaderFrom2_Frlg
+ case LINK_GROUP_SINGLE_BATTLE, CableClub_EventScript_ChooseLinkLeaderFrom2_Frlg
+ case LINK_GROUP_DOUBLE_BATTLE, CableClub_EventScript_ChooseLinkLeaderFrom2_Frlg
+ case LINK_GROUP_MULTI_BATTLE, CableClub_EventScript_ChooseLinkLeaderFrom4_Frlg
+ case LINK_GROUP_BERRY_CRUSH, CableClub_EventScript_ChooseLinkLeader_Frlg
+ end
+
+CableClub_EventScript_ChooseLinkLeaderFrom2_Frlg::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ message CableClub_Text_ChooseGroupLeaderOfTwo_Frlg
+ waitmessage
+ call EventScript_RestorePrevTextColor
+ multichoice 13, 6, MULTI_LINK_LEADER, FALSE
+ switch VAR_RESULT
+ case 0, CableClub_EventScript_TryJoinGroup2Players_Frlg
+ case 1, CableClub_EventScript_TryLeadGroup2Players_Frlg
+ case 2, CableClub_EventScript_AbortLink_Frlg
+ case MULTI_B_PRESSED, CableClub_EventScript_AbortLink_Frlg
+ end
+
+CableClub_EventScript_TryLeadGroup2Players_Frlg::
+ call CableClub_EventScript_TryBecomeLinkLeader_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderFrom2_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryLeadGroup2Players_Frlg
+ release
+ return
+
+CableClub_EventScript_TryJoinGroup2Players_Frlg::
+ call CableClub_EventScript_TryJoinLinkGroup_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderFrom2_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryJoinGroup2Players_Frlg
+ release
+ return
+
+CableClub_EventScript_ChooseLinkLeaderFrom4_Frlg::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ message CableClub_Text_ChooseGroupLeaderOfFour_Frlg
+ waitmessage
+ call EventScript_RestorePrevTextColor
+ multichoice 13, 6, MULTI_LINK_LEADER, FALSE
+ switch VAR_RESULT
+ case 0, CableClub_EventScript_TryJoinGroup4Players_Frlg
+ case 1, CableClub_EventScript_TryLeadGroup4Players_Frlg
+ case 2, CableClub_EventScript_AbortLink_Frlg
+ case MULTI_B_PRESSED, CableClub_EventScript_AbortLink_Frlg
+ end
+
+CableClub_EventScript_TryLeadGroup4Players_Frlg::
+ call CableClub_EventScript_TryBecomeLinkLeader_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderFrom4_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryLeadGroup4Players_Frlg
+ release
+ return
+
+CableClub_EventScript_TryJoinGroup4Players_Frlg::
+ call CableClub_EventScript_TryJoinLinkGroup_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderFrom4_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryJoinGroup4Players_Frlg
+ release
+ return
+
+CableClub_EventScript_ChooseLinkLeader_Frlg::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ message CableClub_Text_ChooseGroupLeader_Frlg
+ waitmessage
+ call EventScript_RestorePrevTextColor
+ multichoice 13, 6, MULTI_LINK_LEADER, FALSE
+ switch VAR_RESULT
+ case 0, CableClub_EventScript_TryJoinGroupXPlayers_Frlg
+ case 1, CableClub_EventScript_TryLeadGroupXPlayers_Frlg
+ case 2, CableClub_EventScript_AbortLink_Frlg
+ case MULTI_B_PRESSED, CableClub_EventScript_AbortLink_Frlg
+ end
+
+CableClub_EventScript_TryLeadGroupXPlayers_Frlg::
+ call CableClub_EventScript_TryBecomeLinkLeader_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeader_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryLeadGroupXPlayers_Frlg
+ release
+ return
+
+CableClub_EventScript_TryJoinGroupXPlayers_Frlg::
+ call CableClub_EventScript_TryJoinLinkGroup_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeader_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryJoinGroupXPlayers_Frlg
+ release
+ return
+
+CableClub_EventScript_TryBecomeLinkLeader_Frlg::
+ special TryBecomeLinkLeader
+ waitstate
+ return
+
+CableClub_EventScript_TryJoinLinkGroup_Frlg::
+ special TryJoinLinkGroup
+ waitstate
+ return
+
+CableClub_EventScript_EnterWirelessLinkRoom_Frlg::
+ messageautoscroll CableClub_Text_DirectYouToYourRoom_Frlg
+ waitmessage
+ delay 60
+ closemessage
+ copyvar VAR_0x8007, VAR_LAST_TALKED
+ call CableClub_EventScript_OpenDirectCornerBarrier_Frlg
+ special DrawWholeMapView
+ playse SE_CLICK
+ delay 60
+ applymovement VAR_LAST_TALKED, Movement_AttendantFaceLeft
+ waitmovement 0
+ closemessage
+ applymovement LOCALID_PLAYER, Movement_PlayerApproachLinkRoomLeft
+ waitmovement 0
+ opendoor 9, 1
+ waitdooranim
+ applymovement LOCALID_PLAYER, Movement_PlayerEnterLinkRoom
+ waitmovement 0
+ hideplayer
+ closedoor 9, 1
+ waitdooranim
+ release
+ waitstate
+ end
+
+CableClub_EventScript_ShowWirelessCommunicationScreen_Frlg::
+ lockall
+ goto_if_unset FLAG_SYS_POKEDEX_GET, CableClub_EventScript_NotReadyYet_Frlg
+ specialvar VAR_RESULT, IsWirelessAdapterConnected
+ goto_if_eq VAR_RESULT, FALSE, CableClub_EventScript_AdapterNotConnected_Frlg
+ fadescreen FADE_TO_BLACK
+ special ShowWirelessCommunicationScreen
+ waitstate
+ msgbox CableClub_Text_ParticipantsStepUpToCounter_Frlg
+ releaseall
+ end
+
+CableClub_EventScript_AdapterNotConnected_Frlg::
+ msgbox CableClub_Text_AdapterNotConnected_Frlg
+ releaseall
+ end
+
+CableClub_EventScript_OpenUnionRoomBarrier_Frlg::
+ setmetatile 5, 3, METATILE_PokemonCenterFrlg_Floor_ShadeLeft, 0
+ return
+
+CableClub_EventScript_CloseUnionRoomBarrier_Frlg::
+ setmetatile 5, 3, METATILE_PokemonCenterFrlg_CounterBarrier, 1
+ return
+
+CableClub_EventScript_OpenDirectCornerBarrier_Frlg::
+ setmetatile 9, 3, METATILE_PokemonCenterFrlg_Floor_ShadeLeft, 0
+ return
+
+CableClub_EventScript_CloseDirectCornerBarrier_Frlg::
+ setmetatile 9, 3, METATILE_PokemonCenterFrlg_CounterBarrier, 1
+ return
+
+CableClub_EventScript_OpenGameCornerBarrier_Frlg::
+ setmetatile 5, 3, METATILE_GameCorner_CheckeredFloor_ShadeLeft, 0
+ return
+
+CableClub_EventScript_CloseGameCornerBarrier_Frlg::
+ setmetatile 5, 3, METATILE_GameCorner_CounterBarrier, 1
+ return
+
+CableClub_OnResume_Frlg::
+ special InitUnionRoom
+ end
+
+JoyfulGameCorner_EventScript_InfoMan2_Frlg::
+ lock
+ faceplayer
+ message Text_DescribeWhichGame_Frlg
+ waitmessage
+ multichoice 0, 0, MULTI_WIRELESS_MINIGAME, FALSE
+ switch VAR_RESULT
+ case 0, CableClub_EventScript_PokemonJumpInfo_Frlg
+ case 1, CableClub_EventScript_DodrioBerryPickingInfo_Frlg
+ case 2, CableClub_EventScript_MinigameInfoExit_Frlg
+ case MULTI_B_PRESSED, CableClub_EventScript_MinigameInfoExit_Frlg
+ end
+
+CableClub_EventScript_PokemonJumpInfo_Frlg::
+ msgbox Text_PokemonJumpInfo_Frlg
+ release
+ end
+
+CableClub_EventScript_DodrioBerryPickingInfo_Frlg::
+ msgbox Text_DodrioBerryPickingInfo_Frlg
+ release
+ end
+
+CableClub_EventScript_MinigameInfoExit_Frlg::
+ msgbox Text_TalkToManToPlay_Frlg
+ release
+ end
+
+JoyfulGameCorner_EventScript_MinigameAttendant_Frlg::
+ lock
+ faceplayer
+ message Text_WelcomeCanYouWait_Frlg
+ waitmessage
+ specialvar VAR_RESULT, IsWirelessAdapterConnected
+ goto_if_eq VAR_RESULT, FALSE, CableClub_EventScript_AdapterNotConnectedMinigame_Frlg
+ delay 60
+ message Text_PlayWhichGame_Frlg
+ waitmessage
+ multichoice 0, 0, MULTI_WIRELESS_MINIGAME, FALSE
+ switch VAR_RESULT
+ case 0, CableClub_EventScript_PlayPokemonJump_Frlg
+ case 1, CableClub_EventScript_PlayDodrioBerryPicking_Frlg
+ case 2, CableClub_EventScript_AbortMinigame_Frlg
+ case MULTI_B_PRESSED, CableClub_EventScript_AbortMinigame_Frlg
+ end
+
+CableClub_EventScript_PlayPokemonJump_Frlg::
+ setvar VAR_0x8005, 0
+ special IsPokemonJumpSpeciesInParty
+ goto_if_eq VAR_RESULT, FALSE, CableClub_EventScript_NoEligiblePkmn_Frlg
+ msgbox Text_EnterWhichPokemon_Frlg
+ setvar VAR_0x8005, 0
+ special ChooseMonForWirelessMinigame
+ waitstate
+ goto_if_ge VAR_0x8004, PARTY_SIZE, CableClub_EventScript_AbortMinigame_Frlg
+ call Common_EventScript_SaveGame
+ goto_if_eq VAR_RESULT, 0, CableClub_EventScript_AbortMinigame_Frlg
+ setvar VAR_0x8004, LINK_GROUP_POKEMON_JUMP
+ goto CableClub_EventScript_ChooseLinkLeaderMinigame_Frlg
+ end
+
+CableClub_EventScript_PlayDodrioBerryPicking_Frlg::
+ setvar VAR_0x8005, 1
+ special IsDodrioInParty
+ goto_if_eq VAR_RESULT, 0, CableClub_EventScript_NoEligiblePkmn_Frlg
+ msgbox Text_EnterWhichPokemon_Frlg
+ setvar VAR_0x8005, 1
+ special ChooseMonForWirelessMinigame
+ waitstate
+ goto_if_ge VAR_0x8004, PARTY_SIZE, CableClub_EventScript_AbortMinigame_Frlg
+ call Common_EventScript_SaveGame
+ goto_if_eq VAR_RESULT, 0, CableClub_EventScript_AbortMinigame_Frlg
+ setvar VAR_0x8004, LINK_GROUP_BERRY_PICKING
+ goto CableClub_EventScript_ChooseLinkLeaderMinigame_Frlg
+ end
+
+CableClub_EventScript_ChooseLinkLeaderMinigame_Frlg::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ message CableClub_Text_ChooseGroupLeader_Frlg
+ waitmessage
+ call EventScript_RestorePrevTextColor
+ multichoice 13, 6, MULTI_LINK_LEADER, FALSE
+ switch VAR_RESULT
+ case 0, CableClub_EventScript_TryJoinMinigameLinkGroup_Frlg
+ case 1, CableClub_EventScript_TryBecomeMinigameLinkLeader_Frlg
+ case 2, CableClub_EventScript_AbortMinigame_Frlg
+ case MULTI_B_PRESSED, CableClub_EventScript_AbortMinigame_Frlg
+ end
+
+CableClub_EventScript_TryBecomeMinigameLinkLeader_Frlg::
+ call CableClub_EventScript_TryBecomeLinkLeader_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterMinigame_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderMinigame_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryBecomeMinigameLinkLeader_Frlg
+ release
+ return
+
+CableClub_EventScript_TryJoinMinigameLinkGroup_Frlg::
+ call CableClub_EventScript_TryJoinLinkGroup_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterMinigame_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderMinigame_Frlg
+ goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryJoinMinigameLinkGroup_Frlg
+ release
+ return
+
+CableClub_EventScript_EnterMinigame_Frlg::
+ messageautoscroll Text_AllGoodToGo_Frlg
+ waitmessage
+ delay 120
+ closemessage
+ copyvar VAR_0x8007, VAR_LAST_TALKED
+ call CableClub_EventScript_OpenGameCornerBarrier_Frlg
+ special DrawWholeMapView
+ playse SE_CLICK
+ delay 60
+ applymovement VAR_LAST_TALKED, Movement_AttendantFaceLeft
+ waitmovement 0
+ closemessage
+ applymovement LOCALID_PLAYER, Movement_PlayerEnterMinigameRoom
+ waitmovement 0
+ hideplayer
+ release
+ waitstate
+ end
+
+CableClub_EventScript_AdapterNotConnectedMinigame_Frlg::
+ msgbox Text_AdapterNotConnectedMinigame_Frlg
+ release
+ end
+
+CableClub_EventScript_NoEligiblePkmn_Frlg::
+ msgbox EventScript_ExplainPokemonJumpRequirements_Frlg, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CableClub_EventScript_AbortMinigame_Frlg
+ call_if_eq VAR_0x8005, 0, CableClub_EventScript_ExplainPokemonJumpRequirements_Frlg
+ call_if_eq VAR_0x8005, 1, CableClub_EventScript_ExplainDodrioBerryPickingRequirements_Frlg
+ goto CableClub_EventScript_AbortMinigame_Frlg
+ end
+
+CableClub_EventScript_ExplainPokemonJumpRequirements_Frlg::
+ msgbox Text_ShortJumpingPokemonAllowed_Frlg
+ return
+
+CableClub_EventScript_ExplainDodrioBerryPickingRequirements_Frlg::
+ msgbox Text_OnlyDodrioAllowed_Frlg
+ return
+
+TwoIsland_JoyfulGameCorner_EventScript_ShowPokemonJumpRecords::
+ lockall
+ special ShowPokemonJumpRecords
+ waitstate
+ releaseall
+ end
+
+TwoIsland_JoyfulGameCorner_EventScript_ShowDodrioBerryPickingRecords::
+ lockall
+ special ShowDodrioBerryPickingRecords
+ waitstate
+ releaseall
+ end
+
+CableClub_Text_WelcomeWhichCableClubService_Frlg::
+ .string "Welcome to the POKéMON CABLE\n"
+ .string "CLUB.\p"
+ .string "Which of our services do you wish\n"
+ .string "to use?$"
+
+CableClub_Text_WhichService_Frlg::
+ .string "Which of our services do you wish\n"
+ .string "to use?$"
+
+CableClub_Text_TradeMonsUsingLinkCable_Frlg::
+ .string "Trade POKéMON with another player\n"
+ .string "using a GBA Game Link cable.$"
+
+CableClub_Text_BattleUsingLinkCable_Frlg::
+ .string "You may battle another TRAINER\n"
+ .string "using a GBA Game Link cable.$"
+
+@ Unused, translated in Emerald
+CableClub_Text_CloseThisMenu_Frlg::
+ .string "おわります$"
+
+CableClub_Text_NeedTwoMonsForDoubleBattle_Frlg::
+ .string "For a DOUBLE BATTLE, you must\n"
+ .string "have at least two POKéMON.$"
+
+CableClub_Text_NeedTwoMonsToTrade_Frlg::
+ .string "For trading, you must have at\n"
+ .string "least two POKéMON with you.$"
+
+CableClub_Text_CantTradeEnigmaBerry_Frlg::
+ .string "A POKéMON holding the {STR_VAR_1}\n"
+ .string "BERRY can't be traded.$"
+
+CableClub_Text_PleaseWaitBCancel_Frlg::
+ .string "Please wait.\n"
+ .string "… … B Button: Cancel$"
+
+CableClub_Text_WhenAllPlayersReadyAConfirmBCancel_Frlg::
+ .string "When all players are ready…\n"
+ .string "A Button: Confirm\l"
+ .string "B Button: Cancel$"
+
+CableClub_Text_StartLinkWithXPlayersAConfirmBCancel_Frlg::
+ .string "Start link with {STR_VAR_1} players.\n"
+ .string "A Button: Confirm\l"
+ .string "B Button: Cancel$"
+
+CableClub_Text_AwaitingLinkupBCancel_Frlg::
+ .string "Awaiting linkup…\n"
+ .string "… … B Button: Cancel$"
+
+@ Unused, translated in Emerald
+CableClub_Text_OkayToSaveProgress_Frlg::
+ .string "はじめる まえに レポートを\n"
+ .string "かきますが よろしいですか?$"
+
+CableClub_Text_PleaseEnter_Frlg::
+ .string "Please enter.$"
+
+CableClub_Text_DirectYouToYourRoom_Frlg::
+ .string "I'll direct you to your room now.$"
+
+CableClub_Text_SomeoneIsNotReadyToLink_Frlg::
+ .string "Someone is not ready to link.\p"
+ .string "Please come back after everyone\n"
+ .string "has made preparations.$"
+
+CableClub_Text_LinkErrorPleaseReset_Frlg::
+ .string "Sorry, we have a link error…\n"
+ .string "Please reset and try again.$"
+
+CableClub_Text_PlayersMadeDifferentSelections_Frlg::
+ .string "The link partners appear to have\n"
+ .string "made different selections.$"
+
+CableClub_Text_PleaseVisitAgain_Frlg::
+ .string "Please do visit again.$"
+
+CableClub_Text_IncorrectNumberOfParticipants_Frlg::
+ .string "The number of participants is\n"
+ .string "incorrect.$"
+
+CableClub_Text_CantSingleBattleWithXPlayers_Frlg::
+ .string "The SINGLE BATTLE Mode can't be\n"
+ .string "played by {STR_VAR_1} players.$"
+
+CableClub_Text_CantDoubleBattleWithXPlayers_Frlg::
+ .string "The DOUBLE BATTLE Mode can't be\n"
+ .string "played by {STR_VAR_1} players.$"
+
+CableClub_Text_NeedFourPlayers_Frlg::
+ .string "There must be four players to play\n"
+ .string "this Battle Mode.$"
+
+CableClub_Text_PleaseConfirmNumberAndRestart_Frlg::
+ .string "Please confirm the number of\n"
+ .string "players and start again.$"
+
+Text_TerminateLinkIfYouLeaveRoom_Frlg::
+ .string "The link will be terminated if you\n"
+ .string "leave the room. Is that okay?$"
+
+Text_TerminateLinkConfirmation_Frlg::
+ .string "Terminating link…\n"
+ .string "You will be escorted out of\l"
+ .string "the room. Please wait.$"
+
+Text_TrainerTooBusyToNotice_Frlg::
+ .string "This TRAINER is too busy to\n"
+ .string "notice…$"
+
+Text_LookedAtPlayersTrainerCard_Frlg::
+ .string "Score! Got to look at {STR_VAR_1}'s\n"
+ .string "TRAINER CARD!$"
+
+Text_LookedAtPlayersTrainerCardColored_Frlg::
+ .string "Score! Got to look at {STR_VAR_1}'s\n"
+ .string "TRAINER CARD!\p"
+ .string "It's a {STR_VAR_2} card!$"
+
+Text_TakeSeatStartBattle_Frlg::
+ .string "Please take your seat and start\n"
+ .string "your battle.$"
+
+Text_TakeSeatStartTrade_Frlg::
+ .string "Please take your seat and start\n"
+ .string "your trade.$"
+
+@ Unused, leftover from RS
+RecordCorner_Text_ThanksForComing_Frlg::
+ .string "ごりよう ありがとう ございました$"
+
+CableClub_Text_TrainerCardDataOverwritten_Frlg::
+ .string "The TRAINER CARD data will\n"
+ .string "be overwritten.$"
+
+CableClub_Text_HopeToSeeYouAgain_Frlg::
+ .string "I hope to see you again!$"
+
+CableClub_Text_NotSetUpForFarAwayRegion_Frlg::
+ .string "I'm awfully sorry.\p"
+ .string "We're not set up to conduct trades\n"
+ .string "with TRAINERS far away in another\l"
+ .string "region yet…$"
+
+CableClub_Text_OtherTrainerNotReady_Frlg::
+ .string "The other TRAINER is not ready.$"
+
+CableClub_Text_YouHaveAMonThatCantBeTaken_Frlg::
+ .string "You have at least one POKéMON\n"
+ .string "that can't be taken.$"
+
+CableClub_Text_AdapterNotConnected_Frlg::
+ .string "The Wireless Adapter is not\n"
+ .string "connected properly.$"
+
+CableClub_Text_ParticipantsStepUpToCounter_Frlg::
+ .string "Participants are asked to step up\n"
+ .string "to the reception counter.$"
+
+@ Unused, translated in Emerald
+CableClub_Text_Hello_Frlg::
+ .string "こんにちは!$"
+
+@ Unused, translated in Emerald
+CableClub_Text_PleaseWait_Frlg::
+ .string "しょうしょう おまちください$"
+
+CableClub_Text_YouMayTradeHere_Frlg::
+ .string "You may trade your POKéMON here\n"
+ .string "with another TRAINER.$"
+
+CableClub_Text_YouMayBattleHere_Frlg::
+ .string "You may battle with your friends\n"
+ .string "here.$"
+
+CableClub_Text_CanMakeBerryPowder_Frlg::
+ .string "Two to five TRAINERS can make\n"
+ .string "BERRY POWDER together.$"
+
+@ Unused, Record Mix nopped
+CableClub_Text_CanMixRecords_Frlg::
+ .string "ワイヤレス クラブでの\n"
+ .string "あそびかたを せつめいします$"
+
+CableClub_Text_CancelSelectedItem_Frlg::
+ .string "Cancels the selected MENU item.$"
+
+@ Unused, translated in Emerald
+CableClub_Text_WhichBattleMode_Frlg::
+ .string "どちらの しょうぶに しますか?$"
+
+@ Unused, translated in Emerald
+CableClub_Text_ReturnsToPreviousStep_Frlg::
+ .string "ひとつ まえに もどります$"
+
+CableClub_Text_NeedBerryForBerryCrush_Frlg::
+ .string "To use the BERRY CRUSH service,\n"
+ .string "you must have at least one BERRY.$"
+
+CableClub_Text_NeedTwoMonsForUnionRoom_Frlg::
+ .string "To enter the UNION ROOM, you must\n"
+ .string "have at least two POKéMON.$"
+
+CableClub_Text_NoEnigmaBerryInUnionRoom_Frlg::
+ .string "No POKéMON holding the {STR_VAR_1}\n"
+ .string "BERRY may enter the UNION ROOM.$"
+
+CableClub_Text_UnionRoomAdapterNotConnected_Frlg::
+ .string "This is the POKéMON WIRELESS CLUB\n"
+ .string "UNION ROOM.\p"
+ .string "Unfortunately, your Wireless\n"
+ .string "Adapter is not connected properly.\p"
+ .string "Please do come again.$"
+
+Text_PlayerIsPlayingRightNowGoForIt_Frlg::
+ .string "It appears as if {STR_VAR_1} is playing\n"
+ .string "right now.\l"
+ .string "Go for it!$"
+
+Text_DescribeWhichGame_Frlg::
+ .string "I can explain game rules to you,\n"
+ .string "if you'd like.\p"
+ .string "Which game should I describe?$"
+
+Text_PokemonJumpInfo_Frlg::
+ .string "“POKéMON JUMP”\p"
+ .string "Make your POKéMON skip the\n"
+ .string "VINE WHIP rope with the A Button.\p"
+ .string "Only mini POKéMON around 28 inches\n"
+ .string "or less may participate.\p"
+ .string "POKéMON that only swim, burrow, or\n"
+ .string "fly are not good at jumping.\p"
+ .string "As a result, those POKéMON may not\n"
+ .string "participate.\p"
+ .string "Good things happen if everyone\n"
+ .string "jumps in time.$"
+
+Text_DodrioBerryPickingInfo_Frlg::
+ .string "“DODRIO BERRY-PICKING”\p"
+ .string "Command DODRIO's three heads to\n"
+ .string "catch falling BERRIES.\p"
+ .string "Press right, up, or left on the\n"
+ .string "{PLUS} Control Pad to move the heads.\p"
+ .string "To play this game, you must have\n"
+ .string "a DODRIO.$"
+
+Text_TalkToManToPlay_Frlg::
+ .string "If you want to play a game,\n"
+ .string "please tell the man beside me.$"
+
+Text_WelcomeCanYouWait_Frlg::
+ .string "Hi, welcome!\n"
+ .string "You can play games over the\l"
+ .string "Wireless Communication System.\p"
+ .string "Can you wait just a little bit?$"
+
+CableClub_Text_ComeAgain_Frlg::
+ .string "All right, come again!$"
+
+Text_AdapterNotConnectedMinigame_Frlg::
+ .string "The Wireless Adapter isn't\n"
+ .string "connected.\p"
+ .string "Come back when it's hooked up!$"
+
+Text_PlayWhichGame_Frlg::
+ .string "All right, which game did you want\n"
+ .string "to play?$"
+
+Text_EnterWhichPokemon_Frlg::
+ .string "Which POKéMON would you like to\n"
+ .string "enter?$"
+
+Text_AllGoodToGo_Frlg::
+ .string "Okay, you're all good to go.\n"
+ .string "Don't let the others beat you!$"
+
+@ Unused, translated in Emerald
+Text_LeavingDoComeAgain_Frlg::
+ .string "きょうは けえるのか?\n"
+ .string "またこいよ!$"
+
+EventScript_ExplainPokemonJumpRequirements_Frlg::
+ .string "It doesn't look like you have any\n"
+ .string "POKéMON that you can enter…\p"
+ .string "Would you like me to explain what\n"
+ .string "kinds of POKéMON can enter?$"
+
+Text_ShortJumpingPokemonAllowed_Frlg::
+ .string "“POKéMON JUMP” is open to POKéMON\n"
+ .string "around 28 inches or less.\p"
+ .string "What you can't enter are those\n"
+ .string "POKéMON that can't jump.\p"
+ .string "You know, like POKéMON that only\n"
+ .string "swim, burrow, or fly.\p"
+ .string "That's all you need to know.$"
+
+Text_OnlyDodrioAllowed_Frlg::
+ .string "“DODRIO BERRY-PICKING”…\n"
+ .string "Well, the name says it all.\p"
+ .string "You have to have a DODRIO to play\n"
+ .string "this game.$"
+
+@ Unused, translated in Emerald
+Text_RetryFromStartPlease_Frlg::
+ .string "もういちど はじめから\n"
+ .string "やりなおして みて くれ$"
+
+CableClub_Text_WelcomeWhichDirectCornerRoom_Frlg::
+ .string "Welcome to the POKéMON WIRELESS\n"
+ .string "CLUB DIRECT CORNER.\p"
+ .string "You may interact directly with\n"
+ .string "your friends here.\p"
+ .string "Which room would you like to\n"
+ .string "enter?$"
+
+CableClub_Text_TradePokemon_Frlg::
+ .string "Would you like to trade POKéMON?$"
+
+CableClub_Text_PlayWhichBattleMode_Frlg::
+ .string "Which Battle Mode would you like\n"
+ .string "to play?$"
+
+CableClub_Text_UseBerryCrush_Frlg::
+ .string "Would you like to use the\n"
+ .string "BERRY CRUSH System?$"
+
+CableClub_Text_ExplainBattleModes_Frlg::
+ .string "There are three Battle Modes.\p"
+ .string "SINGLE BATTLE is for two TRAINERS\n"
+ .string "with one or more POKéMON each.\p"
+ .string "Each TRAINER can have one POKéMON\n"
+ .string "in battle at a time.\p"
+ .string "DOUBLE BATTLE is for two TRAINERS\n"
+ .string "with two or more POKéMON each.\p"
+ .string "Each TRAINER will send out two\n"
+ .string "POKéMON in battle at a time.\p"
+ .string "MULTI BATTLE is for four TRAINERS\n"
+ .string "with one or more POKéMON each.\p"
+ .string "Each TRAINER can have one POKéMON\n"
+ .string "in battle at a time.$"
+
+CableClub_Text_ChooseGroupLeaderOfTwo_Frlg::
+ .string "Please decide which of you two\n"
+ .string "will become the LEADER.\p"
+ .string "The other player must then choose\n"
+ .string "“JOIN GROUP.”$"
+
+CableClub_Text_ChooseGroupLeaderOfFour_Frlg::
+ .string "Please decide which of you four\n"
+ .string "will become the GROUP LEADER.\p"
+ .string "The other players must then choose\n"
+ .string "“JOIN GROUP.”$"
+
+CableClub_Text_ChooseGroupLeader_Frlg::
+ .string "Please decide which of you will\n"
+ .string "become the GROUP LEADER.\p"
+ .string "The other players must then choose\n"
+ .string "“JOIN GROUP.”$"
+
+CableClub_Text_WelcomeUnionRoomEnter_Frlg::
+ .string "Welcome to the POKéMON WIRELESS\n"
+ .string "CLUB UNION ROOM.\p"
+ .string "You may interact directly with\n"
+ .string "other TRAINERS here, some of\l"
+ .string "whom you may not even know.\p"
+ .string "Would you like to enter the ROOM?$"
+
+CableClub_Text_UnionRoomInfo_Frlg::
+ .string "The TRAINERS in the UNION ROOM\n"
+ .string "will be those players around you\l"
+ .string "who have also entered the ROOM.\p"
+ .string "You may do all sorts of things\n"
+ .string "here, such as exchanging greetings.\p"
+ .string "You may enter two POKéMON up to\n"
+ .string "Lv. 30 for a one-on-one battle.\p"
+ .string "You may take part in a chat with\n"
+ .string "two to five people.\p"
+ .string "Or, you may register a POKéMON for\n"
+ .string "trade.\p"
+ .string "Would you like to enter the ROOM?$"
+
+CableClub_Text_EnjoyUnionRoom_Frlg::
+ .string "I hope you enjoy your time in\n"
+ .string "the UNION ROOM.$"
+
+CableClub_Text_FirstTimeRightThisWay_Frlg::
+ .string "Hello!\n"
+ .string "My name is TEALA.\p"
+ .string "This must be your first time\n"
+ .string "up here.\p"
+ .string "I'll show you how the Wireless\n"
+ .string "Communication System works.\p"
+ .string "First, I need to show you this\n"
+ .string "floor of our POKéMON CENTER.\p"
+ .string "Right this way, please.$"
+
+CableClub_Text_ExplainWirelessClubFirstTime_Frlg::
+ .string "On the top floor, there are two\n"
+ .string "rooms.\p"
+ .string "First, the room on the left.\n"
+ .string "It's the UNION ROOM.\p"
+ .string "You may link up with TRAINERS\n"
+ .string "around you who have also entered\l"
+ .string "the UNION ROOM.\p"
+ .string "With them, you may do things like\n"
+ .string "chat, battle, and trade.\p"
+ .string "Second, the room on the right is\n"
+ .string "the DIRECT CORNER.\p"
+ .string "You may trade or battle POKéMON\n"
+ .string "with your friends in this room.\p"
+ .string "If the Wireless Adapter isn't\n"
+ .string "connected, you may still link up\l"
+ .string "using a GBA Game Link cable.\p"
+ .string "If that is the case, you must go\n"
+ .string "to the DIRECT CORNER.\p"
+ .string "I hope you enjoy the Wireless \n"
+ .string "Communication System.$"
+
+CableClub_Text_AskAboutLinking_Frlg::
+ .string "Hello, {PLAYER}!\p"
+ .string "It's me, TEALA, the POKéMON\n"
+ .string "CENTER 2F attendant.\p"
+ .string "Is there something you needed to\n"
+ .string "ask me about linking?$"
+
+CableClub_Text_ExplainWirelessClub_Frlg::
+ .string "Let me explain how the POKéMON\n"
+ .string "WIRELESS CLUB works.\p"
+ .string "On this, the top floor, there are\n"
+ .string "two rooms.\p"
+ .string "First, the room on the left.\n"
+ .string "It's the UNION ROOM.\p"
+ .string "You may link up with TRAINERS\n"
+ .string "around you who have also entered\l"
+ .string "the UNION ROOM.\p"
+ .string "With them, you may do things like\n"
+ .string "chat, battle, and trade.\p"
+ .string "Second, the room on the right is\n"
+ .string "the DIRECT CORNER.\p"
+ .string "You may trade or battle POKéMON\n"
+ .string "with your friends in this room.\p"
+ .string "Sometimes, you may not be able to\n"
+ .string "find your friends in the UNION ROOM\l"
+ .string "or the DIRECT CORNER.\p"
+ .string "In that case, please move closer\n"
+ .string "to your friends.\p"
+ .string "If the Wireless Adapter isn't\n"
+ .string "connected, you may still link up\l"
+ .string "using a GBA Game Link cable.\p"
+ .string "If that is the case, you must go\n"
+ .string "to the DIRECT CORNER.\p"
+ .string "I hope you enjoy the Wireless \n"
+ .string "Communication System.$"
+
+CableClub_Text_HopeYouEnjoyWirelessSystem_Frlg::
+ .string "I hope you enjoy the Wireless\n"
+ .string "Communication System.$"
+
+Text_WirelessClubUndergoingAdjustments::
+ .string "I'm terribly sorry.\n"
+ .string "The POKéMON WIRELESS CLUB is\l"
+ .string "undergoing adjustments now.$"
+
+Text_AppearsToBeUndergoingAdjustments::
+ .string "It appears to be undergoing\n"
+ .string "adjustments…$"
diff --git a/data/scripts/day_care.inc b/data/scripts/day_care.inc
index f183b7363337..6d5e2046328e 100644
--- a/data/scripts/day_care.inc
+++ b/data/scripts/day_care.inc
@@ -89,8 +89,7 @@ Route117_PokemonDayCare_EventScript_GiveMonToRaise::
specialvar VAR_RESULT, CountPartyAliveNonEggMons
goto_if_eq VAR_RESULT, 2, Route117_PokemonDayCare_EventScript_OnlyTwoAliveMons
msgbox Route117_PokemonDayCare_Text_WhichMonShouldWeRaise, MSGBOX_DEFAULT
- fadescreen FADE_TO_BLACK
- special ChooseSendDaycareMon
+ chooseboxmon SELECT_PC_MON_DAYCARE
waitstate
goto_if_eq VAR_0x8004, PARTY_NOTHING_CHOSEN, Route117_PokemonDayCare_EventScript_ComeAgain
specialvar VAR_RESULT, CountPartyAliveNonEggMons_IgnoreVar0x8004Slot
diff --git a/data/scripts/day_care_frlg.inc b/data/scripts/day_care_frlg.inc
new file mode 100644
index 000000000000..ef8d8df7c012
--- /dev/null
+++ b/data/scripts/day_care_frlg.inc
@@ -0,0 +1,108 @@
+Route5_PokemonDayCare_EventScript_DaycareMan::
+ lock
+ faceplayer
+ showmoneybox 0, 0
+ specialvar VAR_RESULT, IsThereMonInRoute5Daycare
+ goto_if_eq VAR_RESULT, TRUE, Route5_PokemonDayCare_EventScript_CheckOnMon
+ msgbox Route5_PokemonDayCare_Text_WantMeToRaiseMon, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, Route5_PokemonDayCare_EventScript_TryGiveMon
+ msgbox Route5_PokemonDayCare_Text_ComeAgain
+ goto Route5_PokemonDayCare_EventScript_CloseMoneyBox
+ end
+
+Route5_PokemonDayCare_EventScript_TryGiveMon::
+ specialvar VAR_RESULT, CountPartyNonEggMons
+ goto_if_eq VAR_RESULT, 1, Route5_PokemonDayCare_EventScript_OnlyOneMonInParty
+ msgbox Route5_PokemonDayCare_Text_WhichMonShouldIRaise
+ fadescreen FADE_TO_BLACK
+ hidemoneybox
+ special ChooseSendDaycareMon
+ waitstate
+ showmoneybox 0, 0
+ goto_if_ge VAR_0x8004, PARTY_SIZE, Route5_PokemonDayCare_EventScript_ComeAgain
+ specialvar VAR_RESULT, CountPartyAliveNonEggMons_IgnoreVar0x8004Slot
+ goto_if_eq VAR_RESULT, 0, Route5_PokemonDayCare_EventScript_OnlyOneAliveMonInParty
+ specialvar VAR_0x8005, GetSelectedMonNicknameAndSpecies
+ msgbox Route5_PokemonDayCare_Text_LookAfterMonForAWhile
+ waitse
+ playmoncry VAR_0x8005, CRY_MODE_NORMAL
+ msgbox Route5_PokemonDayCare_Text_ComeSeeMeInAWhile
+ waitmoncry
+ special PutMonInRoute5Daycare
+ callnative UpdateFollowingPokemon
+ incrementgamestat GAME_STAT_USED_DAYCARE
+ goto Route5_PokemonDayCare_EventScript_CloseMoneyBox
+ end
+
+Route5_PokemonDayCare_EventScript_ComeAgain::
+ msgbox Route5_PokemonDayCare_Text_ComeAnytimeYouLike
+ goto Route5_PokemonDayCare_EventScript_CloseMoneyBox
+ end
+
+Route5_PokemonDayCare_EventScript_OnlyOneMonInParty::
+ msgbox Route5_PokemonDayCare_Text_OnlyHaveOneMonWithYou
+ goto Route5_PokemonDayCare_EventScript_CloseMoneyBox
+ end
+
+Route5_PokemonDayCare_EventScript_OnlyOneAliveMonInParty::
+ msgbox Route5_PokemonDayCare_Text_WhatWillYouBattleWith
+ goto Route5_PokemonDayCare_EventScript_CloseMoneyBox
+ end
+
+Route5_PokemonDayCare_EventScript_CheckOnMon::
+ setvar VAR_0x8004, 0
+ specialvar VAR_RESULT, GetNumLevelsGainedForRoute5DaycareMon
+ call_if_ne VAR_RESULT, 0, Route5_PokemonDayCare_EventScript_MonHasGrownByXLevels
+ call_if_eq VAR_RESULT, 0, Route5_PokemonDayCare_EventScript_NotEnoughTime
+ special GetCostToWithdrawRoute5DaycareMon
+ msgbox Route5_PokemonDayCare_Text_OweMeXForMonsReturn, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, YES, Route5_PokemonDayCare_EventScript_TryRetrieveMon
+ goto Route5_PokemonDayCare_EventScript_ComeAgain
+ end
+
+Route5_PokemonDayCare_EventScript_MonHasGrownByXLevels::
+ msgbox Route5_PokemonDayCare_Text_MonHasGrownByXLevels
+ return
+
+Route5_PokemonDayCare_EventScript_NotEnoughTime::
+ msgbox Route5_PokemonDayCare_Text_MonNeedsToSpendMoreTime
+ return
+
+Route5_PokemonDayCare_EventScript_TryRetrieveMon::
+ specialvar VAR_RESULT, CalculatePlayerPartyCount
+ goto_if_eq VAR_RESULT, PARTY_SIZE, Route5_PokemonDayCare_EventScript_NoRoomInParty
+ specialvar VAR_RESULT, IsEnoughForCostInVar0x8005
+ goto_if_eq VAR_RESULT, TRUE, Route5_PokemonDayCare_EventScript_RetrieveMon
+ msgbox Route5_PokemonDayCare_Text_DontHaveEnoughMoney
+ goto Route5_PokemonDayCare_EventScript_CloseMoneyBox
+ end
+
+Route5_PokemonDayCare_EventScript_RetrieveMon::
+ setvar VAR_0x8004, 0
+ specialvar VAR_RESULT, TakePokemonFromRoute5Daycare
+ special SubtractMoneyFromVar0x8005
+ updatemoneybox
+ copyvar VAR_0x8008, VAR_RESULT
+ getpartysize
+ subvar VAR_RESULT, 1
+ bufferpartymonnick STR_VAR_1, VAR_RESULT
+ copyvar VAR_RESULT, VAR_0x8008
+ msgbox Route5_PokemonDayCare_Text_ThankYouHeresMon
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ waitse
+ playmoncry VAR_RESULT, CRY_MODE_NORMAL
+ msgbox Route5_PokemonDayCare_Text_PlayerGotMonBack
+ call EventScript_RestorePrevTextColor
+ waitmoncry
+ goto Route5_PokemonDayCare_EventScript_CloseMoneyBox
+ end
+
+Route5_PokemonDayCare_EventScript_NoRoomInParty::
+ msgbox Route5_PokemonDayCare_Text_YouveGotNoRoomForIt
+ goto Route5_PokemonDayCare_EventScript_CloseMoneyBox
+ end
+
+Route5_PokemonDayCare_EventScript_CloseMoneyBox::
+ hidemoneybox
+ release
+ end
diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc
index 921a3247e4e4..2539eb188b88 100644
--- a/data/scripts/debug.inc
+++ b/data/scripts/debug.inc
@@ -69,6 +69,63 @@ Debug_CheatStart::
release
end
+Debug_CheatStartFrlg::
+ setflag FLAG_SYS_POKEMON_GET
+ setflag FLAG_PALLET_LADY_NOT_BLOCKING_SIGN
+ setflag FLAG_OPENED_START_MENU
+ setflag FLAG_VISITED_OAKS_LAB
+ setflag FLAG_BEAT_RIVAL_IN_OAKS_LAB
+ givemon SPECIES_BULBASAUR, 20, ITEM_NONE
+ givemon SPECIES_CHARMANDER, 20, ITEM_NONE
+ givemon SPECIES_SQUIRTLE, 20, ITEM_NONE
+ clearflag FLAG_HIDE_OAK_IN_HIS_LAB
+ setflag FLAG_HIDE_RIVAL_IN_LAB
+ setvar VAR_MAP_SCENE_PALLET_TOWN_OAK, 1 @ prevents Oak scene when trying to enter Route 1
+ setflag FLAG_SYS_POKEDEX_GET
+ special SetUnlockedPokedexFlags
+ setvar VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 6 @ state after handing in parcel and getting pokedex
+ setvar VAR_MAP_SCENE_VIRIDIAN_CITY_MART, 2
+ setvar VAR_MAP_SCENE_VIRIDIAN_CITY_OLD_MAN, 1
+ setvar VAR_MAP_SCENE_PALLET_TOWN_RIVALS_HOUSE, 1
+ setvar VAR_MAP_SCENE_ROUTE22, 1
+ setvar VAR_MAP_SCENE_POKEMON_CENTER_TEALA, 1 @ end
+ setflag FLAG_SYS_NATIONAL_DEX
+ special EnableNationalPokedex
+ setflag FLAG_SYS_B_DASH
+ setflag FLAG_BADGE01_GET
+ setflag FLAG_BADGE02_GET
+ setflag FLAG_BADGE03_GET
+ setflag FLAG_BADGE04_GET
+ setflag FLAG_BADGE05_GET
+ setflag FLAG_BADGE06_GET
+ setflag FLAG_BADGE07_GET
+ setflag FLAG_BADGE08_GET
+ setflag FLAG_GOT_BIKE_VOUCHER
+ setflag FLAG_GOT_BICYCLE
+ additem ITEM_BICYCLE
+ setflag FLAG_WORLD_MAP_PALLET_TOWN
+ setflag FLAG_WORLD_MAP_VIRIDIAN_CITY
+ setflag FLAG_WORLD_MAP_PEWTER_CITY
+ setflag FLAG_WORLD_MAP_ROUTE4_POKEMON_CENTER_1F
+ setflag FLAG_WORLD_MAP_CERULEAN_CITY
+ setflag FLAG_WORLD_MAP_VERMILION_CITY
+ setflag FLAG_WORLD_MAP_ROUTE10_POKEMON_CENTER_1F
+ setflag FLAG_WORLD_MAP_LAVENDER_TOWN
+ setflag FLAG_WORLD_MAP_CELADON_CITY
+ setflag FLAG_WORLD_MAP_FUCHSIA_CITY
+ setflag FLAG_WORLD_MAP_SAFFRON_CITY
+ setflag FLAG_WORLD_MAP_CINNABAR_ISLAND
+ setflag FLAG_WORLD_MAP_INDIGO_PLATEAU_EXTERIOR
+ setflag FLAG_WORLD_MAP_ONE_ISLAND
+ setflag FLAG_WORLD_MAP_TWO_ISLAND
+ setflag FLAG_WORLD_MAP_THREE_ISLAND
+ setflag FLAG_WORLD_MAP_FOUR_ISLAND
+ setflag FLAG_WORLD_MAP_FIVE_ISLAND
+ setflag FLAG_WORLD_MAP_SIX_ISLAND
+ setflag FLAG_WORLD_MAP_SEVEN_ISLAND
+ release
+ end
+
Debug_FlagsNotSetOverworldConfigMessage::
message Debug_FlagsNotSetOverworldConfigMessage_Text
goto Debug_MessageEnd
@@ -302,6 +359,15 @@ Debug_EventScript_Steven_Multi::
release
end
+Debug_EventScript_WallyTutorial::
+ special SavePlayerParty
+ special LoadWallyZigzagoon
+ special StartWallyTutorialBattle
+ waitstate
+ special LoadPlayerParty
+ release
+ end
+
Debug_BerryPestsDisabled::
msgbox DebugText_BerryPestsDisabled, MSGBOX_DEFAULT
release
@@ -362,6 +428,16 @@ Debug_EventScript_InflictStatus1_Single:
releaseall
end
+Debug_EventScript_KoPokemon::
+ special ChoosePartyMon
+ waitstate
+ goto_if_ge VAR_0x8004, PARTY_SIZE, Debug_EventScript_InflictStatus1_Close
+ specialvar VAR_RESULT, ScriptGetPartyMonSpecies
+ goto_if_eq VAR_RESULT, SPECIES_EGG, Debug_EventScript_InflictStatus1_Close
+ setko VAR_0x8004
+ releaseall
+ end
+
Debug_EventScript_SetHiddenNature::
special ChoosePartyMon
waitstate
@@ -422,6 +498,13 @@ Debug_EventScript_SetFriendship::
releaseall
end
+Debug_EventScript_GivePokerus::
+ special ChoosePartyMon
+ waitstate
+ callnative DebugNative_Party_SetPokerus
+ releaseall
+ end
+
Debug_EventScript_InflictStatus1_Single_Poison:
setstatus1 STATUS1_POISON, VAR_0x8004
releaseall
@@ -530,6 +613,9 @@ Debug_EventScript_InflictStatus1_Text_Freeze:
Debug_EventScript_InflictStatus1_Text_Frostbite:
.string "Frostbite$"
+Debug_EventScript_InflictStatus1_Text_KO:
+ .string "KO$"
+
Debug_EventScript_ChangeNature_Text_Hardy:
.string "Hardy$"
Debug_EventScript_ChangeNature_Text_Lonely:
diff --git a/data/scripts/fame_checker_frlg.inc b/data/scripts/fame_checker_frlg.inc
new file mode 100644
index 000000000000..c15a88101869
--- /dev/null
+++ b/data/scripts/fame_checker_frlg.inc
@@ -0,0 +1,286 @@
+ViridianCity_School_EventScript_PokemonJournal::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_OAK, 3
+ famechecker FAMECHECKER_DAISY, 3
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PokemonJournal_Text_SpecialFeatureProfOak
+ release
+ end
+
+EventScript_PokemonJournalUnused1::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_DAISY, 1
+ famechecker FAMECHECKER_OAK, 4
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PokemonJournal_Text_SpecialFeatureProfOak
+ release
+ end
+
+EventScript_PokemonJournalUnused2::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_DAISY, 4
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PokemonJournal_Text_SpecialFeatureProfOak
+ release
+ end
+
+FourIsland_PokemonCenter_1F_EventScript_PokemonJournal::
+ lockall
+ famechecker FAMECHECKER_DAISY, 5
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PokemonJournal_Text_SpecialFeatureDaisyOak
+ releaseall
+ end
+
+Route4_EventScript_Boy::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_BROCK, 3
+ msgbox Route4_Text_PeopleLikeAndRespectBrock
+ release
+ end
+
+MtMoon_1F_EventScript_BaldingMan::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_BROCK, 4
+ msgbox MtMoon_1F_Text_BrockHelpsExcavateFossils
+ release
+ end
+
+PewterCity_Museum_1F_EventScript_PokemonJournalBrock::
+ lockall
+ famechecker FAMECHECKER_BROCK, 5
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PokemonJournal_Text_SpecialFeatureBrock
+ releaseall
+ end
+
+Route20_EventScript_Camper::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_MISTY, 3
+ msgbox Route20_Text_MistyTrainsHere
+ release
+ end
+
+Route25_EventScript_Beauty::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_MISTY, 4
+ msgbox Route25_Text_MistyHighHopesAboutThisPlace
+ release
+ end
+
+CeruleanCity_PokemonCenter_1F_EventScript_PokemonJournalMisty::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_MISTY, 5
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PokemonJournal_Text_SpecialFeatureMisty
+ release
+ end
+
+VermilionCity_PokemonCenter_1F_EventScript_PokemonJournalLtSurge::
+ lockall
+ famechecker FAMECHECKER_LTSURGE, 5
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PokemonJournal_Text_SpecialFeatureLtSurge
+ releaseall
+ end
+
+CeladonCity_Condominiums_2F_EventScript_PokemonJournalErika::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_ERIKA, 5
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PokemonJournal_Text_SpecialFeatureErika
+ release
+ end
+
+FuchsiaCity_WardensHouse_EventScript_PokemonJournalKoga::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_KOGA, 4
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PokemonJournal_Text_SpecialFeatureKoga
+ release
+ end
+
+SafariZone_North_RestHouse_EventScript_BaldingMan::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_KOGA, 5
+ msgbox SafariZone_West_Text_KogaPatrolsSafariEverySoOften
+ release
+ end
+
+SaffronCity_PokemonCenter_1F_EventScript_PokemonJournalSabrina::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_SABRINA, 4
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PokemonJournal_Text_SpecialFeatureSabrina
+ release
+ end
+
+CinnabarIsland_Gym_EventScript_BlaineFujiPhoto::
+ lockall
+ famechecker FAMECHECKER_BLAINE, 4
+ famechecker FAMECHECKER_MRFUJI, 4
+ msgbox CinnabarIsland_Gym_Text_PhotoOfBlaineAndFuji
+ releaseall
+ end
+
+FiveIsland_ResortGorgeous_House_EventScript_PokemonJournal::
+ lockall
+ famechecker FAMECHECKER_BLAINE, 5
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PokemonJournal_Text_SpecialFeatureBlaine
+ releaseall
+ end
+
+FourIsland_Mart_EventScript_OldMan::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_LORELEI, 2
+ msgbox FourIsland_Mart_Text_LoreleiGrewUpOnThisIsland
+ release
+ end
+
+FiveIsland_PokemonCenter_1F_EventScript_PokemonJournal::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_LORELEI, 3
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PokemonJournal_Text_SpecialFeatureLorelei
+ release
+ end
+
+SaffronCity_PokemonTrainerFanClub_EventScript_PokemonJournalBruno::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_BRUNO, 2
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PokemonJournal_Text_SpecialFeatureBruno
+ release
+ end
+
+SevenIsland_SevaultCanyon_EventScript_BlackBelt::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_BRUNO, 5
+ msgbox SevenIsland_SevaultCanyon_Text_BrunoTrainedWithBrawly
+ release
+ end
+
+IndigoPlateau_PokemonCenter_1F_EventScript_BlackBelt::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_AGATHA, 1
+ famechecker FAMECHECKER_AGATHA, 2
+ msgbox IndigoPlateau_PokemonCenter_1F_Text_AgathaWhuppedUs
+ release
+ end
+
+SevenIsland_PokemonCenter_1F_EventScript_PokemonJournal::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_AGATHA, 3
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PokemonJournal_Text_SpecialFeatureAgatha
+ release
+ end
+
+SixIsland_Mart_EventScript_OldWoman::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_AGATHA, 5
+ msgbox SixIsland_Mart_Text_AgathaOldestEverEliteFourMember
+ release
+ end
+
+EventScript_LanceUnused::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_LANCE, 0
+ msgbox gFameCheckerFlavorText_Lance0
+ release
+ end
+
+SaffronCity_EventScript_BattleGirlUnused::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_LANCE, 1
+ msgbox SaffronCity_Text_HowCanClubNotRecognizeLance
+ release
+ end
+
+SaffronCity_EventScript_BattleGirl::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_LANCE, 2
+ msgbox SaffronCity_Text_HowCanClubNotRecognizeLance
+ release
+ end
+
+CeladonCity_DepartmentStore_2F_EventScript_Woman::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_LANCE, 3
+ msgbox CeladonCity_DepartmentStore_2F_Text_LanceComesToBuyCapes
+ release
+ end
+
+IndigoPlateau_PokemonCenter_1F_EventScript_PokemonJournal::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_LANCE, 4
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PokemonJournal_Text_SpecialFeatureLance
+ release
+ end
+
+IndigoPlateau_PokemonCenter_1F_EventScript_CooltrainerM::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_LANCE, 5
+ msgbox IndigoPlateau_PokemonCenter_1F_Text_LancesCousinGymLeaderFarAway
+ release
+ end
+
+LavenderTown_PokemonCenter_1F_EventScript_BaldingMan::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_MRFUJI, 3
+ msgbox LavenderTown_PokemonCenter_1F_Text_HearMrFujiNotFromAroundHere
+ release
+ end
+
+CinnabarIsland_PokemonCenter_1F_EventScript_PokemonJournalMrFuji::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_MRFUJI, 5
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ msgbox PokemonJournal_Text_SpecialFeatureMrFuji
+ release
+ end
+
+SilphCo_5F_EventScript_Scientist::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_GIOVANNI, 1
+ msgbox SilphCo_5F_Text_RocketBossLookingForStrongMons
+ release
+ end
+
+SilphCo_8F_EventScript_Scientist::
+ lock
+ faceplayer
+ famechecker FAMECHECKER_GIOVANNI, 2
+ msgbox SilphCo_8F_Text_ToRocketBossMonsAreTools
+ release
+ end
diff --git a/data/scripts/field_move_scripts.inc b/data/scripts/field_move_scripts.inc
index 84d45c962ac1..0aeaa23af64a 100644
--- a/data/scripts/field_move_scripts.inc
+++ b/data/scripts/field_move_scripts.inc
@@ -465,12 +465,12 @@ EventScript_EndRockClimb::
end
Text_WantToRockClimb:
- .string "The cliff is steep.\n"
- .string "Would you like to use Rock Climb?$"
+ .string "The cliff is steep.\n"
+ .string "Would you like to use Rock Climb?$"
Text_MonUsedRockClimb:
- .string "{STR_VAR_1} used Rock Climb!$"
+ .string "{STR_VAR_1} used Rock Climb!$"
Text_CantRockClimb:
- .string "The cliff is steep.\n"
- .string "A Pokémon may be able to climb it.$"
+ .string "The cliff is steep.\n"
+ .string "A Pokémon may be able to climb it.$"
diff --git a/data/scripts/flavor_text.inc b/data/scripts/flavor_text.inc
new file mode 100644
index 000000000000..07d888c716b9
--- /dev/null
+++ b/data/scripts/flavor_text.inc
@@ -0,0 +1,236 @@
+@ Flavor text for interacting with various background objects
+
+EventScript_Bookshelf::
+ msgbox Text_Bookshelf, MSGBOX_SIGN
+ end
+
+EventScript_PokeMartShelf::
+ msgbox Text_PokeMartShelf, MSGBOX_SIGN
+ end
+
+EventScript_Food::
+ msgbox Text_Food, MSGBOX_SIGN
+ end
+
+EventScript_VideoGame::
+ msgbox Text_VideoGame, MSGBOX_SIGN
+ end
+
+EventScript_Computer::
+ msgbox Text_Computer, MSGBOX_SIGN
+ end
+
+EventScript_ImpressiveMachine::
+ msgbox Text_ImpressiveMachine, MSGBOX_SIGN
+ end
+
+EventScript_Blueprints::
+ msgbox Text_Blueprints, MSGBOX_SIGN
+ end
+
+EventScript_Burglary::
+ msgbox Text_Burglary, MSGBOX_SIGN
+ end
+
+EventScript_PlayerFacingTVScreen::
+ msgbox Text_PlayerFacingTVScreen, MSGBOX_SIGN
+ end
+
+EventScript_Cabinet::
+ msgbox Text_DishesPlatesNeatlyLinedUp, MSGBOX_SIGN
+ end
+
+EventScript_Kitchen::
+ msgbox Text_Kitchen, MSGBOX_SIGN
+ end
+
+EventScript_Dresser::
+ msgbox Text_Dresser, MSGBOX_SIGN
+ end
+
+EventScript_Snacks::
+ msgbox Text_Snacks, MSGBOX_SIGN
+ end
+
+EventScript_Painting::
+ msgbox Text_Painting, MSGBOX_SIGN
+ end
+
+EventScript_PowerPlantMachine::
+ msgbox Text_PowerPlantMachine, MSGBOX_SIGN
+ end
+
+EventScript_Telephone::
+ msgbox Text_Telephone, MSGBOX_SIGN
+ end
+
+EventScript_AdvertisingPoster::
+ msgbox Text_AdvertisingPoster, MSGBOX_SIGN
+ end
+
+EventScript_TastyFood::
+ msgbox Text_TastyFood, MSGBOX_SIGN
+ end
+
+EventScript_TrashBin::
+ msgbox Text_TrashBin, MSGBOX_SIGN
+ end
+
+EventScript_Cup::
+ msgbox Text_Cup, MSGBOX_SIGN
+ end
+
+EventScript_PolishedWindow::
+ msgbox Text_PolishedWindow, MSGBOX_SIGN
+ end
+
+EventScript_BeautifulSkyWindow::
+ msgbox Text_BeautifulSkyWindow, MSGBOX_SIGN
+ end
+
+EventScript_BlinkingLights::
+ msgbox Text_BlinkingLights, MSGBOX_SIGN
+ end
+
+EventScript_NeatlyLinedUpTools::
+ msgbox Text_NeatlyLinedUpTools, MSGBOX_SIGN
+ end
+
+EventScript_PokemartSign::
+ msgbox Text_PokemartSign, MSGBOX_SIGN
+ end
+
+EventScript_PokecenterSign::
+ msgbox Text_PokecenterSign, MSGBOX_SIGN
+ end
+
+EventScript_Indigo_UltimateGoal::
+ msgbox Text_Indigo_UltimateGoal, MSGBOX_SIGN
+ end
+
+EventScript_Indigo_HighestAuthority::
+ msgbox Text_Indigo_HighestAuthority, MSGBOX_SIGN
+ end
+
+@ Flavor text for interacting with various background objects
+
+Text_Bookshelf::
+ .string "It's crammed full of POKéMON\n"
+ .string "books.$"
+
+Text_NothingButPokemonBooks::
+ .string "ほんだなに ならんでいるのは\n"
+ .string "ポケモンの ほん ばかりだ$"
+
+Text_ATownMap::
+ .string "A TOWN MAP.$"
+
+Text_PokeMartShelf::
+ .string "Wow!\n"
+ .string "Tons of POKéMON stuff!$"
+
+Text_DishesPlatesNeatlyLinedUp::
+ .string "Dishes and plates are neatly\n"
+ .string "lined up.$"
+
+Text_Kitchen::
+ .string "It smells delicious!\n"
+ .string "Somebody's been cooking here.$"
+
+Text_Dresser::
+ .string "It's a nicely made dresser.\n"
+ .string "It will hold a lot of stuff.$"
+
+Text_Snacks::
+ .string "There's a pile of snacks here.$"
+
+Text_PokemartSign::
+ .string "All your item needs fulfilled!\n"
+ .string "POKéMON MART$"
+
+Text_PokecenterSign::
+ .string "Heal Your POKéMON!\n"
+ .string "POKéMON CENTER$"
+
+Text_Indigo_UltimateGoal::
+ .string "INDIGO PLATEAU\p"
+ .string "The ultimate goal of TRAINERS!\n"
+ .string "POKéMON LEAGUE HQ$"
+
+Text_Indigo_HighestAuthority::
+ .string "INDIGO PLATEAU\p"
+ .string "The highest POKéMON authority!\n"
+ .string "POKéMON LEAGUE HQ$"
+
+Text_Food::
+ .string "It should be packed with all kinds\n"
+ .string "of delicious things to eat.$"
+
+Text_Blueprints::
+ .string "It's a blueprint of some sort.\n"
+ .string "It's filled with diagrams and text.$"
+
+Text_Painting::
+ .string "It's a pretty picture of a POKéMON.\n"
+ .string "It looks like it's feeling good.$"
+
+Text_PowerPlantMachine::
+ .string "What could this machine be?\n"
+ .string "Better not mess around with it!$"
+
+Text_Telephone::
+ .string "It's a telephone.\n"
+ .string "Better not use it.$"
+
+Text_Computer::
+ .string "It's all complicated words and\n"
+ .string "numbers that make no sense…$"
+
+Text_AdvertisingPoster::
+ .string "It's an advertising poster about\n"
+ .string "all kinds of products.$"
+
+Text_TastyFood::
+ .string "Oh, that smells tasty!\n"
+ .string "It might get the stomach growling!$"
+
+Text_TrashBin::
+ .string "Inside this…\n"
+ .string "……\p"
+ .string "There's nothing here!$"
+
+Text_Cup::
+ .string "It's a cup with a POKéMON mark\n"
+ .string "on it.$"
+
+Text_PolishedWindow::
+ .string "The window is very well polished.$"
+
+Text_BeautifulSkyWindow::
+ .string "Outside the window…\p"
+ .string "The sky looks fantastically\n"
+ .string "beautiful.$"
+
+Text_BlinkingLights::
+ .string "Lights in different colors are\n"
+ .string "flashing on and off.$"
+
+Text_NeatlyLinedUpTools::
+ .string "All sorts of tools are lined up\n"
+ .string "neatly.$"
+
+Text_ImpressiveMachine::
+ .string "It's a machine of some sort.\n"
+ .string "It sure is impressive.$"
+
+Text_VideoGame::
+ .string "It's the latest video game!\n"
+ .string "It sure looks fun!$"
+
+Text_Burglary::
+ .string "There are obvious signs of burglary\n"
+ .string "here…$"
+
+Text_PlayerFacingTVScreen::
+ .string "There's a POKéMON on TV!\n"
+ .string "It looks like it's having fun.$"
diff --git a/data/scripts/hall_of_fame_frlg.inc b/data/scripts/hall_of_fame_frlg.inc
new file mode 100644
index 000000000000..7fede6987415
--- /dev/null
+++ b/data/scripts/hall_of_fame_frlg.inc
@@ -0,0 +1,37 @@
+EventScript_SetDefeatedEliteFourFlagsVars::
+ clearflag FLAG_HIDE_POSTGAME_GOSSIPERS
+ call EventScript_ResetEliteFour
+ special Script_UpdateTrainerFanClubGameClear
+ specialvar VAR_RESULT, IsNationalPokedexEnabled
+ call_if_eq VAR_RESULT, FALSE, EventScript_SetReadyTryGiveNationalDexScene
+ call EventScript_ResetLegendaries
+ return
+
+EventScript_SetReadyTryGiveNationalDexScene::
+ setvar VAR_MAP_SCENE_PALLET_TOWN_OAK, 2
+ return
+
+EventScript_ResetLegendaries::
+ clearflag FLAG_LUGIA_FLEW_AWAY
+ clearflag FLAG_HO_OH_FLEW_AWAY
+ clearflag FLAG_DEOXYS_FLEW_AWAY
+ return
+
+EventScript_ResetEliteFourEnd::
+ call EventScript_ResetEliteFour
+ end
+
+EventScript_ResetEliteFour::
+ clearflag FLAG_DEFEATED_LORELEI
+ clearflag FLAG_DEFEATED_BRUNO
+ clearflag FLAG_DEFEATED_AGATHA
+ clearflag FLAG_DEFEATED_LANCE
+ clearflag FLAG_DEFEATED_CHAMP
+ cleartrainerflag TRAINER_CHAMPION_FIRST_SQUIRTLE
+ cleartrainerflag TRAINER_CHAMPION_FIRST_BULBASAUR
+ cleartrainerflag TRAINER_CHAMPION_FIRST_CHARMANDER
+ cleartrainerflag TRAINER_CHAMPION_REMATCH_SQUIRTLE
+ cleartrainerflag TRAINER_CHAMPION_REMATCH_BULBASAUR
+ cleartrainerflag TRAINER_CHAMPION_REMATCH_CHARMANDER
+ setvar VAR_MAP_SCENE_POKEMON_LEAGUE, 0
+ return
diff --git a/data/scripts/item_ball_scripts_frlg.inc b/data/scripts/item_ball_scripts_frlg.inc
new file mode 100644
index 000000000000..25233baa0794
--- /dev/null
+++ b/data/scripts/item_ball_scripts_frlg.inc
@@ -0,0 +1,671 @@
+Route2_EventScript_ItemEther::
+ finditem ITEM_ETHER
+ end
+
+Route2_EventScript_ItemParalyzeHeal::
+ finditem ITEM_PARALYZE_HEAL
+ end
+
+ViridianForest_EventScript_ItemPokeBall::
+ finditem ITEM_POKE_BALL
+ end
+
+ViridianForest_EventScript_ItemAntidote::
+ finditem ITEM_ANTIDOTE
+ end
+
+ViridianForest_EventScript_ItemPotion::
+ finditem ITEM_POTION
+ end
+
+MtMoon_1F_EventScript_ItemParalyzeHeal::
+ finditem ITEM_PARALYZE_HEAL
+ end
+
+MtMoon_1F_EventScript_ItemTM09::
+ finditem ITEM_TM09
+ end
+
+MtMoon_1F_EventScript_ItemPotion::
+ finditem ITEM_POTION
+ end
+
+MtMoon_1F_EventScript_ItemRareCandy::
+ finditem ITEM_RARE_CANDY
+ end
+
+MtMoon_1F_EventScript_ItemEscapeRope::
+ finditem ITEM_ESCAPE_ROPE
+ end
+
+MtMoon_1F_EventScript_ItemMoonStone::
+ finditem ITEM_MOON_STONE
+ end
+
+MtMoon_B2F_EventScript_ItemStarPiece::
+ finditem ITEM_STAR_PIECE
+ end
+
+MtMoon_B2F_EventScript_ItemTM46::
+ finditem ITEM_TM46
+ end
+
+Route4_EventScript_ItemTM05::
+ finditem ITEM_TM05
+ end
+
+Route24_EventScript_ItemTM45::
+ finditem ITEM_TM45
+ end
+
+Route25_EventScript_ItemTM43::
+ finditem ITEM_TM43
+ end
+
+SSAnne_1F_Room2_EventScript_ItemTM31::
+ finditem ITEM_TM31
+ end
+
+SSAnne_2F_Room2_EventScript_ItemStardust::
+ finditem ITEM_STARDUST
+ end
+
+SSAnne_2F_Room4_EventScript_ItemXAttack::
+ finditem ITEM_X_ATTACK
+ end
+
+SSAnne_B1F_Room2_EventScript_ItemTM44::
+ finditem ITEM_TM44
+ end
+
+SSAnne_B1F_Room3_EventScript_ItemEther::
+ finditem ITEM_ETHER
+ end
+
+SSAnne_B1F_Room5_EventScript_ItemSuperPotion::
+ finditem ITEM_SUPER_POTION
+ end
+
+SSAnne_Kitchen_EventScript_ItemGreatBall::
+ finditem ITEM_GREAT_BALL
+ end
+
+Route9_EventScript_ItemTM40::
+ finditem ITEM_TM40
+ end
+
+RocketHideout_B1F_EventScript_ItemEscapeRope::
+ finditem ITEM_ESCAPE_ROPE
+ end
+
+RocketHideout_B1F_EventScript_ItemHyperPotion::
+ finditem ITEM_HYPER_POTION
+ end
+
+RocketHideout_B2F_EventScript_ItemXSpeed::
+ finditem ITEM_X_SPEED
+ end
+
+RocketHideout_B2F_EventScript_ItemMoonStone::
+ finditem ITEM_MOON_STONE
+ end
+
+RocketHideout_B2F_EventScript_ItemTM12::
+ finditem ITEM_TM12
+ end
+
+RocketHideout_B2F_EventScript_ItemSuperPotion::
+ finditem ITEM_SUPER_POTION
+ end
+
+RocketHideout_B3F_EventScript_ItemRareCandy::
+ finditem ITEM_RARE_CANDY
+ end
+
+RocketHideout_B3F_EventScript_ItemTM21::
+ finditem ITEM_TM21
+ end
+
+RocketHideout_B4F_EventScript_ItemTM49::
+ finditem ITEM_TM49
+ end
+
+RocketHideout_B4F_EventScript_ItemMaxEther::
+ finditem ITEM_MAX_ETHER
+ end
+
+RocketHideout_B4F_EventScript_ItemCalcium::
+ finditem ITEM_CALCIUM
+ end
+
+PokemonTower_3F_EventScript_ItemEscapeRope::
+ finditem ITEM_ESCAPE_ROPE
+ end
+
+PokemonTower_4F_EventScript_ItemElixir::
+ finditem ITEM_ELIXIR
+ end
+
+PokemonTower_4F_EventScript_ItemAwakening::
+ finditem ITEM_AWAKENING
+ end
+
+PokemonTower_4F_EventScript_ItemGreatBall::
+ finditem ITEM_GREAT_BALL
+ end
+
+PokemonTower_5F_EventScript_ItemNugget::
+ finditem ITEM_NUGGET
+ end
+
+PokemonTower_6F_EventScript_ItemRareCandy::
+ finditem ITEM_RARE_CANDY
+ end
+
+PokemonTower_6F_EventScript_ItemXAccuracy::
+ finditem ITEM_X_ACCURACY
+ end
+
+Route12_EventScript_ItemTM48::
+ finditem ITEM_TM48
+ end
+
+Route12_EventScript_ItemIron::
+ finditem ITEM_IRON
+ end
+
+Route15_EventScript_ItemTM18::
+ finditem ITEM_TM18
+ end
+
+SafariZone_Center_EventScript_ItemNugget::
+ finditem ITEM_NUGGET
+ end
+
+SafariZone_East_EventScript_ItemMaxPotion::
+ finditem ITEM_MAX_POTION
+ end
+
+SafariZone_East_EventScript_ItemFullRestore::
+ finditem ITEM_FULL_RESTORE
+ end
+
+SafariZone_East_EventScript_ItemTM11::
+ finditem ITEM_TM11
+ end
+
+SafariZone_East_EventScript_ItemLeafStone::
+ finditem ITEM_LEAF_STONE
+ end
+
+SafariZone_North_EventScript_ItemProtein::
+ finditem ITEM_PROTEIN
+ end
+
+SafariZone_North_EventScript_ItemTM47::
+ finditem ITEM_TM47
+ end
+
+SafariZone_West_EventScript_ItemTM32::
+ finditem ITEM_TM32
+ end
+
+SafariZone_West_EventScript_ItemGoldTeeth::
+ finditem ITEM_GOLD_TEETH
+ end
+
+SafariZone_West_EventScript_ItemMaxPotion::
+ finditem ITEM_MAX_POTION
+ end
+
+SafariZone_West_EventScript_ItemMaxRevive::
+ finditem ITEM_MAX_REVIVE
+ end
+
+SilphCo_3F_EventScript_ItemHyperPotion::
+ finditem ITEM_HYPER_POTION
+ end
+
+SilphCo_4F_EventScript_ItemMaxRevive::
+ finditem ITEM_MAX_REVIVE
+ end
+
+SilphCo_4F_EventScript_ItemEscapeRope::
+ finditem ITEM_ESCAPE_ROPE
+ end
+
+SilphCo_4F_EventScript_ItemFullHeal::
+ finditem ITEM_FULL_HEAL
+ end
+
+SilphCo_5F_EventScript_ItemProtein::
+ finditem ITEM_PROTEIN
+ end
+
+SilphCo_5F_EventScript_ItemTM01::
+ finditem ITEM_TM01
+ end
+
+SilphCo_5F_EventScript_ItemCardKey::
+ finditem ITEM_CARD_KEY
+ end
+
+SilphCo_6F_EventScript_ItemHPUp::
+ finditem ITEM_HP_UP
+ end
+
+SilphCo_6F_EventScript_ItemXSpecial::
+ finditem ITEM_X_SPECIAL
+ end
+
+SilphCo_7F_EventScript_ItemCalcium::
+ finditem ITEM_CALCIUM
+ end
+
+SilphCo_7F_EventScript_ItemTM08::
+ finditem ITEM_TM08
+ end
+
+SilphCo_10F_EventScript_ItemCarbos::
+ finditem ITEM_CARBOS
+ end
+
+SilphCo_10F_EventScript_ItemUltraBall::
+ finditem ITEM_ULTRA_BALL
+ end
+
+SilphCo_10F_EventScript_ItemRareCandy::
+ finditem ITEM_RARE_CANDY
+ end
+
+PowerPlant_EventScript_ItemMaxPotion::
+ finditem ITEM_MAX_POTION
+ end
+
+PowerPlant_EventScript_ItemTM17::
+ finditem ITEM_TM17
+ end
+
+PowerPlant_EventScript_ItemTM25::
+ finditem ITEM_TM25
+ end
+
+PowerPlant_EventScript_ItemThunderStone::
+ finditem ITEM_THUNDER_STONE
+ end
+
+PowerPlant_EventScript_ItemElixir::
+ finditem ITEM_ELIXIR
+ end
+
+PokemonMansion_1F_EventScript_ItemCarbos::
+ finditem ITEM_CARBOS
+ end
+
+PokemonMansion_1F_EventScript_ItemEscapeRope::
+ finditem ITEM_ESCAPE_ROPE
+ end
+
+PokemonMansion_2F_EventScript_ItemCalcium::
+ finditem ITEM_CALCIUM
+ end
+
+PokemonMansion_3F_EventScript_ItemMaxPotion::
+ finditem ITEM_MAX_POTION
+ end
+
+PokemonMansion_3F_EventScript_ItemIron::
+ finditem ITEM_IRON
+ end
+
+PokemonMansion_B1F_EventScript_ItemTM14::
+ finditem ITEM_TM14
+ end
+
+PokemonMansion_B1F_EventScript_ItemFullRestore::
+ finditem ITEM_FULL_RESTORE
+ end
+
+PokemonMansion_B1F_EventScript_ItemTM22::
+ finditem ITEM_TM22
+ end
+
+PokemonMansion_B1F_EventScript_ItemSecretKey::
+ finditem ITEM_SECRET_KEY
+ end
+
+VictoryRoad_1F_EventScript_ItemRareCandy::
+ finditem ITEM_RARE_CANDY
+ end
+
+VictoryRoad_1F_EventScript_ItemTM02::
+ finditem ITEM_TM02
+ end
+
+VictoryRoad_2F_EventScript_ItemGuardSpec::
+ finditem ITEM_GUARD_SPEC
+ end
+
+VictoryRoad_2F_EventScript_ItemTM07::
+ finditem ITEM_TM07
+ end
+
+VictoryRoad_2F_EventScript_ItemFullHeal::
+ finditem ITEM_FULL_HEAL
+ end
+
+VictoryRoad_2F_EventScript_ItemTM37::
+ finditem ITEM_TM37
+ end
+
+VictoryRoad_3F_EventScript_ItemMaxRevive::
+ finditem ITEM_MAX_REVIVE
+ end
+
+VictoryRoad_3F_EventScript_ItemTM50::
+ finditem ITEM_TM50
+ end
+
+CeruleanCave_1F_EventScript_ItemMaxElixir::
+ finditem ITEM_MAX_ELIXIR
+ end
+
+CeruleanCave_1F_EventScript_ItemNugget::
+ finditem ITEM_NUGGET
+ end
+
+CeruleanCave_1F_EventScript_ItemFullRestore::
+ finditem ITEM_FULL_RESTORE
+ end
+
+CeruleanCave_2F_EventScript_ItemFullRestore::
+ finditem ITEM_FULL_RESTORE
+ end
+
+CeruleanCave_2F_EventScript_ItemPPUp::
+ finditem ITEM_PP_UP
+ end
+
+CeruleanCave_2F_EventScript_ItemUltraBall::
+ finditem ITEM_ULTRA_BALL
+ end
+
+CeruleanCave_B1F_EventScript_ItemMaxRevive::
+ finditem ITEM_MAX_REVIVE
+ end
+
+CeruleanCave_B1F_EventScript_ItemUltraBall::
+ finditem ITEM_ULTRA_BALL
+ end
+
+FuchsiaCity_WardensHouse_EventScript_ItemRareCandy::
+ finditem ITEM_RARE_CANDY
+ end
+
+TwoIsland_EventScript_ItemRevive::
+ finditem ITEM_REVIVE
+ end
+
+ThreeIsland_EventScript_ItemZinc::
+ finditem ITEM_ZINC
+ end
+
+ViridianForest_EventScript_ItemPotion2::
+ finditem ITEM_POTION
+ end
+
+MtMoon_B2F_EventScript_ItemRevive::
+ finditem ITEM_REVIVE
+ end
+
+MtMoon_B2F_EventScript_ItemAntidote::
+ finditem ITEM_ANTIDOTE
+ end
+
+Route11_EventScript_ItemXDefend::
+ finditem ITEM_X_DEFEND
+ end
+
+Route9_EventScript_ItemBurnHeal::
+ finditem ITEM_BURN_HEAL
+ end
+
+RockTunnel_1F_EventScript_ItemRepel::
+ finditem ITEM_REPEL
+ end
+
+RockTunnel_1F_EventScript_ItemPearl::
+ finditem ITEM_PEARL
+ end
+
+RockTunnel_1F_EventScript_ItemEscapeRope::
+ finditem ITEM_ESCAPE_ROPE
+ end
+
+RockTunnel_B1F_EventScript_ItemRevive::
+ finditem ITEM_REVIVE
+ end
+
+RockTunnel_B1F_EventScript_ItemMaxEther::
+ finditem ITEM_MAX_ETHER
+ end
+
+SilphCo_8F_EventScript_ItemIron::
+ finditem ITEM_IRON
+ end
+
+SilphCo_11F_EventScript_ItemZinc::
+ finditem ITEM_ZINC
+ end
+
+PokemonMansion_1F_EventScript_ItemProtein::
+ finditem ITEM_PROTEIN
+ end
+
+PokemonMansion_2F_EventScript_ItemZinc::
+ finditem ITEM_ZINC
+ end
+
+PokemonMansion_2F_EventScript_ItemHPUp::
+ finditem ITEM_HP_UP
+ end
+
+ViridianCity_EventScript_ItemPotion::
+ finditem ITEM_POTION
+ end
+
+Route11_EventScript_ItemGreatBall::
+ finditem ITEM_GREAT_BALL
+ end
+
+Route11_EventScript_ItemAwakening::
+ finditem ITEM_AWAKENING
+ end
+
+PokemonTower_5F_EventScript_ItemCleanseTag::
+ finditem ITEM_CLEANSE_TAG
+ end
+
+CeladonCity_EventScript_ItemEther::
+ finditem ITEM_ETHER
+ end
+
+RocketHideout_B3F_EventScript_ItemBlackGlasses::
+ finditem ITEM_BLACK_GLASSES
+ end
+
+SafariZone_North_EventScript_ItemQuickClaw::
+ finditem ITEM_QUICK_CLAW
+ end
+
+SeafoamIslands_1F_EventScript_ItemIceHeal::
+ finditem ITEM_ICE_HEAL
+ end
+
+SeafoamIslands_B1F_EventScript_ItemWaterStone::
+ finditem ITEM_WATER_STONE
+ end
+
+SeafoamIslands_B1F_EventScript_ItemRevive::
+ finditem ITEM_REVIVE
+ end
+
+SeafoamIslands_B2F_EventScript_ItemBigPearl::
+ finditem ITEM_BIG_PEARL
+ end
+
+SeafoamIslands_B4F_EventScript_ItemUltraBall::
+ finditem ITEM_ULTRA_BALL
+ end
+
+FourIsland_EventScript_ItemStarPiece::
+ finditem ITEM_STAR_PIECE
+ end
+
+FourIsland_EventScript_ItemStardust::
+ finditem ITEM_STARDUST
+ end
+
+OneIsland_KindleRoad_EventScript_ItemEther::
+ finditem ITEM_ETHER
+ end
+
+OneIsland_KindleRoad_EventScript_ItemMaxRepel::
+ finditem ITEM_MAX_REPEL
+ end
+
+OneIsland_KindleRoad_EventScript_ItemCarbos::
+ finditem ITEM_CARBOS
+ end
+
+FiveIsland_Meadow_EventScript_ItemMaxPotion::
+ finditem ITEM_MAX_POTION
+ end
+
+FiveIsland_Meadow_EventScript_ItemPPUp::
+ finditem ITEM_PP_UP
+ end
+
+FiveIsland_MemorialPillar_EventScript_ItemMetalCoat::
+ finditem ITEM_METAL_COAT
+ end
+
+SixIsland_OutcastIsland_EventScript_ItemPPUp::
+ finditem ITEM_PP_UP
+ end
+
+SixIsland_WaterPath_EventScript_ItemElixir::
+ finditem ITEM_ELIXIR
+ end
+
+SixIsland_WaterPath_EventScript_ItemDragonScale::
+ finditem ITEM_DRAGON_SCALE
+ end
+
+SixIsland_RuinValley_EventScript_ItemFullRestore::
+ finditem ITEM_FULL_RESTORE
+ end
+
+SixIsland_RuinValley_EventScript_ItemHPUp::
+ finditem ITEM_HP_UP
+ end
+
+SixIsland_RuinValley_EventScript_ItemSunStone::
+ finditem ITEM_SUN_STONE
+ end
+
+SevenIsland_SevaultCanyon_EventScript_ItemKingsRock::
+ finditem ITEM_KINGS_ROCK
+ end
+
+SevenIsland_SevaultCanyon_EventScript_ItemMaxElixir::
+ finditem ITEM_MAX_ELIXIR
+ end
+
+SevenIsland_SevaultCanyon_EventScript_ItemNugget::
+ finditem ITEM_NUGGET
+ end
+
+ThreeIsland_BerryForest_EventScript_ItemMaxEther::
+ finditem ITEM_MAX_ETHER
+ end
+
+ThreeIsland_BerryForest_EventScript_ItemFullHeal::
+ finditem ITEM_FULL_HEAL
+ end
+
+ThreeIsland_BerryForest_EventScript_ItemMaxElixir::
+ finditem ITEM_MAX_ELIXIR
+ end
+
+MtEmber_Exterior_EventScript_ItemUltraBall::
+ finditem ITEM_ULTRA_BALL
+ end
+
+MtEmber_Exterior_EventScript_ItemFireStone::
+ finditem ITEM_FIRE_STONE
+ end
+
+MtEmber_Exterior_EventScript_ItemDireHit::
+ finditem ITEM_DIRE_HIT
+ end
+
+FourIsland_IcefallCave_1F_EventScript_ItemUltraBall::
+ finditem ITEM_ULTRA_BALL
+ end
+
+FourIsland_IcefallCave_1F_EventScript_ItemHM07::
+ finditem ITEM_HM07
+ end
+
+FourIsland_IcefallCave_B1F_EventScript_ItemFullRestore::
+ finditem ITEM_FULL_RESTORE
+ end
+
+FourIsland_IcefallCave_B1F_EventScript_ItemNeverMeltIce::
+ finditem ITEM_NEVER_MELT_ICE
+ end
+
+FiveIsland_RocketWarehouse_EventScript_ItemBigPearl::
+ finditem ITEM_BIG_PEARL
+ end
+
+FiveIsland_RocketWarehouse_EventScript_ItemTM36::
+ finditem ITEM_TM36
+ end
+
+FiveIsland_RocketWarehouse_EventScript_ItemPearl::
+ finditem ITEM_PEARL
+ end
+
+FiveIsland_RocketWarehouse_EventScript_ItemUpGrade::
+ finditem ITEM_UP_GRADE
+ end
+
+FiveIsland_LostCave_Room10_EventScript_ItemSilkScarf::
+ finditem ITEM_SILK_SCARF
+ end
+
+FiveIsland_LostCave_Room11_EventScript_ItemLaxIncense::
+ finditem ITEM_LAX_INCENSE
+ end
+
+FiveIsland_LostCave_Room12_EventScript_ItemSeaIncense::
+ finditem ITEM_SEA_INCENSE
+ end
+
+FiveIsland_LostCave_Room13_EventScript_ItemMaxRevive::
+ finditem ITEM_MAX_REVIVE
+ end
+
+FiveIsland_LostCave_Room14_EventScript_ItemRareCandy::
+ finditem ITEM_RARE_CANDY
+ end
+
+SevenIsland_SevaultCanyon_House_EventScript_ItemLuckyPunch::
+ finditem ITEM_LUCKY_PUNCH
+ end
+
+SilphCo_4F_EventScript_ItemTM41::
+ finditem ITEM_TM41
+ end
diff --git a/data/scripts/move_relearner.inc b/data/scripts/move_relearner.inc
index 15c80733df06..8a4ae86cbf38 100644
--- a/data/scripts/move_relearner.inc
+++ b/data/scripts/move_relearner.inc
@@ -71,12 +71,13 @@ MoveRelearner_EventScript_TeachMove::
getpartysize
goto_if_eq VAR_RESULT, 0, MoveRelearner_EventScript_NoPkmn
msgbox MoveRelearner_Text_ChoosePkmn, MSGBOX_DEFAULT
- special ChooseMonForMoveRelearner
+ chooseboxmon SELECT_PC_MON_MOVE_RELEARNER
waitstate
call_if_eq VAR_0x8004, PARTY_NOTHING_CHOSEN, MoveRelearner_EventScript_AnythingElse
special IsSelectedMonEgg
- call_if_eq VAR_RESULT, YES, MoveRelearner_EventScript_CantTeachMoveToEgg
- call_if_eq VAR_0x8005, NO, MoveRelearner_EventScript_CantTeachMoveToPkmn
+ call_if_eq VAR_RESULT, TRUE, MoveRelearner_EventScript_CantTeachMoveToEgg
+ special HasMovesToRelearn
+ call_if_eq VAR_RESULT, FALSE, MoveRelearner_EventScript_CantTeachMoveToPkmn
msgbox MoveRelearner_Text_WhichXmoveShouldTeach, MSGBOX_DEFAULT
special TeachMoveRelearnerMove
waitstate
diff --git a/data/scripts/move_tutors.inc b/data/scripts/move_tutors.inc
index afb772bb1016..1748d1417b31 100644
--- a/data/scripts/move_tutors.inc
+++ b/data/scripts/move_tutors.inc
@@ -1,17 +1,8 @@
SlateportCity_PokemonFanClub_EventScript_SwaggerTutor::
lock
faceplayer
- goto_if_set FLAG_MOVE_TUTOR_TAUGHT_SWAGGER, MoveTutor_EventScript_SwaggerTaught
- msgbox MoveTutor_Text_SwaggerTeach, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_SwaggerDeclined
- call MoveTutor_EventScript_CanOnlyBeLearnedOnce
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_SwaggerDeclined
- msgbox MoveTutor_Text_SwaggerWhichMon, MSGBOX_DEFAULT
- setvar VAR_0x8005, MOVE_SWAGGER
- call MoveTutor_EventScript_OpenPartyMenu
- goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_SwaggerDeclined
- setflag FLAG_MOVE_TUTOR_TAUGHT_SWAGGER
- goto MoveTutor_EventScript_SwaggerTaught
+ move_tutor MOVE_SWAGGER, MoveTutor_Text_SwaggerTeach, MoveTutor_Text_SwaggerWhichMon, MoveTutor_EventScript_SwaggerDeclined, MoveTutor_EventScript_SwaggerTaught, FLAG_MOVE_TUTOR_TAUGHT_SWAGGER
+ release
end
MoveTutor_EventScript_SwaggerDeclined::
@@ -27,17 +18,8 @@ MoveTutor_EventScript_SwaggerTaught::
MauvilleCity_EventScript_RolloutTutor::
lock
faceplayer
- goto_if_set FLAG_MOVE_TUTOR_TAUGHT_ROLLOUT, MoveTutor_EventScript_RolloutTaught
- msgbox MoveTutor_Text_RolloutTeach, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_RolloutDeclined
- call MoveTutor_EventScript_CanOnlyBeLearnedOnce
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_RolloutDeclined
- msgbox MoveTutor_Text_RolloutWhichMon, MSGBOX_DEFAULT
- setvar VAR_0x8005, MOVE_ROLLOUT
- call MoveTutor_EventScript_OpenPartyMenu
- goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_RolloutDeclined
- setflag FLAG_MOVE_TUTOR_TAUGHT_ROLLOUT
- goto MoveTutor_EventScript_RolloutTaught
+ move_tutor MOVE_ROLLOUT, MoveTutor_Text_RolloutTeach, MoveTutor_Text_RolloutWhichMon, MoveTutor_EventScript_RolloutDeclined, MoveTutor_EventScript_RolloutTaught, FLAG_MOVE_TUTOR_TAUGHT_ROLLOUT
+ release
end
MoveTutor_EventScript_RolloutDeclined::
@@ -53,17 +35,7 @@ MoveTutor_EventScript_RolloutTaught::
VerdanturfTown_PokemonCenter_1F_EventScript_FuryCutterTutor::
lock
faceplayer
- goto_if_set FLAG_MOVE_TUTOR_TAUGHT_FURY_CUTTER, MoveTutor_EventScript_FuryCutterTaught
- msgbox MoveTutor_Text_FuryCutterTeach, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_FuryCutterDeclined
- call MoveTutor_EventScript_CanOnlyBeLearnedOnce
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_FuryCutterDeclined
- msgbox MoveTutor_Text_FuryCutterWhichMon, MSGBOX_DEFAULT
- setvar VAR_0x8005, MOVE_FURY_CUTTER
- call MoveTutor_EventScript_OpenPartyMenu
- goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_FuryCutterDeclined
- setflag FLAG_MOVE_TUTOR_TAUGHT_FURY_CUTTER
- goto MoveTutor_EventScript_FuryCutterTaught
+ move_tutor MOVE_FURY_CUTTER, MoveTutor_Text_FuryCutterTeach, MoveTutor_Text_FuryCutterWhichMon, MoveTutor_EventScript_FuryCutterDeclined, MoveTutor_EventScript_FuryCutterTaught, FLAG_MOVE_TUTOR_TAUGHT_FURY_CUTTER
end
MoveTutor_EventScript_FuryCutterDeclined::
@@ -79,17 +51,7 @@ MoveTutor_EventScript_FuryCutterTaught::
LavaridgeTown_House_EventScript_MimicTutor::
lock
faceplayer
- goto_if_set FLAG_MOVE_TUTOR_TAUGHT_MIMIC, MoveTutor_EventScript_MimicTaught
- msgbox MoveTutor_MimicTeach, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_MimicDeclined
- call MoveTutor_EventScript_CanOnlyBeLearnedOnce
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_MimicDeclined
- msgbox MoveTutor_Text_MimicWhichMon, MSGBOX_DEFAULT
- setvar VAR_0x8005, MOVE_MIMIC
- call MoveTutor_EventScript_OpenPartyMenu
- goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_MimicDeclined
- setflag FLAG_MOVE_TUTOR_TAUGHT_MIMIC
- goto MoveTutor_EventScript_MimicTaught
+ move_tutor MOVE_MIMIC, MoveTutor_MimicTeach, MoveTutor_Text_MimicWhichMon, MoveTutor_EventScript_MimicDeclined, MoveTutor_EventScript_MimicTaught, FLAG_MOVE_TUTOR_TAUGHT_MIMIC
end
MoveTutor_EventScript_MimicDeclined::
@@ -105,17 +67,7 @@ MoveTutor_EventScript_MimicTaught::
FallarborTown_Mart_EventScript_MetronomeTutor::
lock
faceplayer
- goto_if_set FLAG_MOVE_TUTOR_TAUGHT_METRONOME, MoveTutor_EventScript_MetronomeTaught
- msgbox MoveTutor_Text_MetronomeTeach, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_MetronomeDeclined
- call MoveTutor_EventScript_CanOnlyBeLearnedOnce
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_MetronomeDeclined
- msgbox MoveTutor_Text_MetronomeWhichMon, MSGBOX_DEFAULT
- setvar VAR_0x8005, MOVE_METRONOME
- call MoveTutor_EventScript_OpenPartyMenu
- goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_MetronomeDeclined
- setflag FLAG_MOVE_TUTOR_TAUGHT_METRONOME
- goto MoveTutor_EventScript_MetronomeTaught
+ move_tutor MOVE_METRONOME, MoveTutor_Text_MetronomeTeach, MoveTutor_Text_MetronomeWhichMon, MoveTutor_EventScript_MetronomeDeclined, MoveTutor_EventScript_MetronomeTaught, FLAG_MOVE_TUTOR_TAUGHT_METRONOME
end
MoveTutor_EventScript_MetronomeDeclined::
@@ -131,17 +83,7 @@ MoveTutor_EventScript_MetronomeTaught::
FortreeCity_House2_EventScript_SleepTalkTutor::
lock
faceplayer
- goto_if_set FLAG_MOVE_TUTOR_TAUGHT_SLEEP_TALK, MoveTutor_EventScript_SleepTalkTaught
- msgbox MoveTutor_Text_SleepTalkTeach, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_SleepTalkDeclined
- call MoveTutor_EventScript_CanOnlyBeLearnedOnce
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_SleepTalkDeclined
- msgbox MoveTutor_Text_SleepTalkWhichMon, MSGBOX_DEFAULT
- setvar VAR_0x8005, MOVE_SLEEP_TALK
- call MoveTutor_EventScript_OpenPartyMenu
- goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_SleepTalkDeclined
- setflag FLAG_MOVE_TUTOR_TAUGHT_SLEEP_TALK
- goto MoveTutor_EventScript_SleepTalkTaught
+ move_tutor MOVE_SLEEP_TALK, MoveTutor_Text_SleepTalkTeach, MoveTutor_Text_SleepTalkWhichMon, MoveTutor_EventScript_SleepTalkDeclined, MoveTutor_EventScript_SleepTalkTaught, FLAG_MOVE_TUTOR_TAUGHT_SLEEP_TALK
end
MoveTutor_EventScript_SleepTalkDeclined::
@@ -157,17 +99,7 @@ MoveTutor_EventScript_SleepTalkTaught::
LilycoveCity_DepartmentStoreRooftop_EventScript_SubstituteTutor::
lock
faceplayer
- goto_if_set FLAG_MOVE_TUTOR_TAUGHT_SUBSTITUTE, MoveTutor_EventScript_SubstituteTaught
- msgbox MoveTutor_Text_SubstituteTeach, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_SubstituteDeclined
- call MoveTutor_EventScript_CanOnlyBeLearnedOnce
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_SubstituteDeclined
- msgbox MoveTutor_Text_SubstituteWhichMon, MSGBOX_DEFAULT
- setvar VAR_0x8005, MOVE_SUBSTITUTE
- call MoveTutor_EventScript_OpenPartyMenu
- goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_SubstituteDeclined
- setflag FLAG_MOVE_TUTOR_TAUGHT_SUBSTITUTE
- goto MoveTutor_EventScript_SubstituteTaught
+ move_tutor MOVE_SUBSTITUTE, MoveTutor_Text_SubstituteTeach, MoveTutor_Text_SubstituteWhichMon, MoveTutor_EventScript_SubstituteDeclined, MoveTutor_EventScript_SubstituteTaught, FLAG_MOVE_TUTOR_TAUGHT_SUBSTITUTE
end
MoveTutor_EventScript_SubstituteDeclined::
@@ -183,17 +115,7 @@ MoveTutor_EventScript_SubstituteTaught::
MossdeepCity_EventScript_DynamicPunchTutor::
lock
faceplayer
- goto_if_set FLAG_MOVE_TUTOR_TAUGHT_DYNAMICPUNCH, MoveTutor_EventScript_DynamicPunchTaught
- msgbox MoveTutor_Text_DynamicPunchTeach, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_DynamicPunchDeclined
- call MoveTutor_EventScript_CanOnlyBeLearnedOnce
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_DynamicPunchDeclined
- msgbox MoveTutor_Text_DynamicPunchWhichMon, MSGBOX_DEFAULT
- setvar VAR_0x8005, MOVE_DYNAMIC_PUNCH
- call MoveTutor_EventScript_OpenPartyMenu
- goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_DynamicPunchDeclined
- setflag FLAG_MOVE_TUTOR_TAUGHT_DYNAMICPUNCH
- goto MoveTutor_EventScript_DynamicPunchTaught
+ move_tutor MOVE_DYNAMIC_PUNCH, MoveTutor_Text_DynamicPunchTeach, MoveTutor_Text_DynamicPunchWhichMon, MoveTutor_EventScript_DynamicPunchDeclined, MoveTutor_EventScript_DynamicPunchTaught, FLAG_MOVE_TUTOR_TAUGHT_DYNAMICPUNCH
end
MoveTutor_EventScript_DynamicPunchDeclined::
@@ -209,17 +131,7 @@ MoveTutor_EventScript_DynamicPunchTaught::
SootopolisCity_PokemonCenter_1F_EventScript_DoubleEdgeTutor::
lock
faceplayer
- goto_if_set FLAG_MOVE_TUTOR_TAUGHT_DOUBLE_EDGE, MoveTutor_EventScript_DoubleEdgeTaught
- msgbox MoveTutor_Text_DoubleEdgeTeach, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_DoubleEdgeDeclined
- call MoveTutor_EventScript_CanOnlyBeLearnedOnce
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_DoubleEdgeDeclined
- msgbox MoveTutor_Text_DoubleEdgeWhichMon, MSGBOX_DEFAULT
- setvar VAR_0x8005, MOVE_DOUBLE_EDGE
- call MoveTutor_EventScript_OpenPartyMenu
- goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_DoubleEdgeDeclined
- setflag FLAG_MOVE_TUTOR_TAUGHT_DOUBLE_EDGE
- goto MoveTutor_EventScript_DoubleEdgeTaught
+ move_tutor MOVE_DOUBLE_EDGE, MoveTutor_Text_DoubleEdgeTeach, MoveTutor_Text_DoubleEdgeWhichMon, MoveTutor_EventScript_DoubleEdgeDeclined, MoveTutor_EventScript_DoubleEdgeTaught, FLAG_MOVE_TUTOR_TAUGHT_DOUBLE_EDGE
end
MoveTutor_EventScript_DoubleEdgeDeclined::
@@ -235,17 +147,7 @@ MoveTutor_EventScript_DoubleEdgeTaught::
PacifidlogTown_PokemonCenter_1F_EventScript_ExplosionTutor::
lock
faceplayer
- goto_if_set FLAG_MOVE_TUTOR_TAUGHT_EXPLOSION, MoveTutor_EventScript_ExplosionTaught
- msgbox MoveTutor_Text_ExplosionTeach, MSGBOX_YESNO
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_ExplosionDeclined
- call MoveTutor_EventScript_CanOnlyBeLearnedOnce
- goto_if_eq VAR_RESULT, NO, MoveTutor_EventScript_ExplosionDeclined
- msgbox MoveTutor_Text_ExplosionWhichMon, MSGBOX_DEFAULT
- setvar VAR_0x8005, MOVE_EXPLOSION
- call MoveTutor_EventScript_OpenPartyMenu
- goto_if_eq VAR_RESULT, 0, MoveTutor_EventScript_ExplosionDeclined
- setflag FLAG_MOVE_TUTOR_TAUGHT_EXPLOSION
- goto MoveTutor_EventScript_ExplosionTaught
+ move_tutor MOVE_EXPLOSION, MoveTutor_Text_ExplosionTeach, MoveTutor_Text_ExplosionWhichMon, MoveTutor_EventScript_ExplosionDeclined, MoveTutor_EventScript_ExplosionTaught, FLAG_MOVE_TUTOR_TAUGHT_EXPLOSION
end
MoveTutor_EventScript_ExplosionDeclined::
@@ -265,6 +167,19 @@ MoveTutor_EventScript_OpenPartyMenu::
faceplayer
return
+MoveTutor_EventScript_OpenBox::
+ chooseboxmon SELECT_PC_MON_MOVE_TUTOR
+ waitstate
+ lock
+ faceplayer
+ return
+
MoveTutor_EventScript_CanOnlyBeLearnedOnce::
msgbox MoveTutor_Text_ThisMoveCanOnlyBeLearnedOnce, MSGBOX_YESNO
return
+
+MoveTutor_AfterChooseBoxMon::
+ waitstate
+ special CanTeachMoveBoxMon
+ waitstate
+ return
diff --git a/data/scripts/move_tutors_frlg.inc b/data/scripts/move_tutors_frlg.inc
new file mode 100644
index 000000000000..2ed7902d1904
--- /dev/null
+++ b/data/scripts/move_tutors_frlg.inc
@@ -0,0 +1,580 @@
+VictoryRoad_2F_EventScript_DoubleEdgeTutor::
+ lock
+ faceplayer
+.if I_REUSABLE_TMS == FALSE
+ goto_if_set FLAG_TUTOR_DOUBLE_EDGE, EventScript_DoubleEdgeTaught
+.endif
+ msgbox Text_DoubleEdgeTeach, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, EventScript_DoubleEdgeDeclined
+ call EventScript_CanOnlyBeLearnedOnce
+ goto_if_eq VAR_RESULT, NO, EventScript_DoubleEdgeDeclined
+ msgbox Text_DoubleEdgeWhichMon
+ setvar VAR_0x8005, MOVE_DOUBLE_EDGE
+ call EventScript_ChooseMoveTutorMon
+ goto_if_eq VAR_RESULT, FALSE, EventScript_DoubleEdgeDeclined
+.if I_REUSABLE_TMS == FALSE
+ setflag FLAG_TUTOR_DOUBLE_EDGE
+.endif
+ goto EventScript_DoubleEdgeTaught
+ end
+
+EventScript_DoubleEdgeDeclined::
+ msgbox Text_DoubleEdgeDeclined
+ release
+ end
+
+EventScript_DoubleEdgeTaught::
+ msgbox Text_DoubleEdgeTaught
+ release
+ end
+
+EventScript_ThunderWaveTutor::
+ lock
+ faceplayer
+.if I_REUSABLE_TMS == FALSE
+ goto_if_set FLAG_TUTOR_THUNDER_WAVE, EventScript_ThunderWaveTaught
+.endif
+ msgbox Text_ThunderWaveTeach, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, EventScript_ThunderWaveDeclined
+ call EventScript_CanOnlyBeLearnedOnce
+ goto_if_eq VAR_RESULT, NO, EventScript_ThunderWaveDeclined
+ msgbox Text_ThunderWaveWhichMon
+ setvar VAR_0x8005, MOVE_THUNDER_WAVE
+ call EventScript_ChooseMoveTutorMon
+ goto_if_eq VAR_RESULT, FALSE, EventScript_ThunderWaveDeclined
+.if I_REUSABLE_TMS == FALSE
+ setflag FLAG_TUTOR_THUNDER_WAVE
+.endif
+ goto EventScript_ThunderWaveTaught
+ end
+
+EventScript_ThunderWaveDeclined::
+ msgbox Text_ThunderWaveDeclined
+ release
+ end
+
+EventScript_ThunderWaveTaught::
+ msgbox Text_ThunderWaveTaught
+ release
+ end
+
+RockTunnel_B1F_EventScript_RockSlideTutor::
+ lock
+ faceplayer
+.if I_REUSABLE_TMS == FALSE
+ goto_if_set FLAG_TUTOR_ROCK_SLIDE, EventScript_RockSlideTaught
+.endif
+ msgbox Text_RockSlideTeach, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, EventScript_RockSlideDeclined
+ call EventScript_CanOnlyBeLearnedOnce
+ goto_if_eq VAR_RESULT, NO, EventScript_RockSlideDeclined
+ msgbox Text_RockSlideWhichMon
+ setvar VAR_0x8005, MOVE_ROCK_SLIDE
+ call EventScript_ChooseMoveTutorMon
+ goto_if_eq VAR_RESULT, FALSE, EventScript_RockSlideDeclined
+.if I_REUSABLE_TMS == FALSE
+ setflag FLAG_TUTOR_ROCK_SLIDE
+.endif
+ goto EventScript_RockSlideTaught
+ end
+
+EventScript_RockSlideDeclined::
+ msgbox Text_RockSlideDeclined
+ release
+ end
+
+EventScript_RockSlideTaught::
+ msgbox Text_RockSlideTaught
+ release
+ end
+
+MtEmber_Exterior_EventScript_ExplosionTutor::
+ lock
+ faceplayer
+.if I_REUSABLE_TMS == FALSE
+ goto_if_set FLAG_TUTOR_EXPLOSION, EventScript_ExplosionTaught
+.endif
+ msgbox Text_ExplosionTeach, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, EventScript_ExplosionDeclined
+ call EventScript_CanOnlyBeLearnedOnce
+ goto_if_eq VAR_RESULT, NO, EventScript_ExplosionDeclined
+ msgbox Text_ExplosionWhichMon
+ setvar VAR_0x8005, MOVE_EXPLOSION
+ call EventScript_ChooseMoveTutorMon
+ goto_if_eq VAR_RESULT, FALSE, EventScript_ExplosionDeclined
+.if I_REUSABLE_TMS == FALSE
+ setflag FLAG_TUTOR_EXPLOSION
+.endif
+ goto EventScript_ExplosionTaught
+ end
+
+EventScript_ExplosionDeclined::
+ msgbox Text_ExplosionDeclined
+ release
+ end
+
+EventScript_ExplosionTaught::
+ msgbox Text_ExplosionTaught
+ release
+ end
+
+Route4_EventScript_MegaPunchTutor::
+ lock
+ faceplayer
+.if I_REUSABLE_TMS == FALSE
+ goto_if_set FLAG_TUTOR_MEGA_PUNCH, EventScript_MegaPunchTaught
+.endif
+ msgbox Text_MegaPunchTeach, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, EventScript_MegaPunchDeclined
+ call EventScript_CanOnlyBeLearnedOnce
+ goto_if_eq VAR_RESULT, NO, EventScript_MegaPunchDeclined
+ msgbox Text_MegaPunchWhichMon
+ setvar VAR_0x8005, MOVE_MEGA_PUNCH
+ call EventScript_ChooseMoveTutorMon
+ goto_if_eq VAR_RESULT, FALSE, EventScript_MegaPunchDeclined
+.if I_REUSABLE_TMS == FALSE
+ setflag FLAG_TUTOR_MEGA_PUNCH
+.endif
+ goto EventScript_MegaPunchTaught
+ end
+
+EventScript_MegaPunchDeclined::
+ msgbox Text_MegaPunchDeclined
+ release
+ end
+
+EventScript_MegaPunchTaught::
+ msgbox Text_MegaPunchTaught
+ release
+ end
+
+Route4_EventScript_MegaKickTutor::
+ lock
+ faceplayer
+.if I_REUSABLE_TMS == FALSE
+ goto_if_set FLAG_TUTOR_MEGA_KICK, EventScript_MegaKickTaught
+.endif
+ msgbox Text_MegaKickTeach, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, EventScript_MegaKickDeclined
+ call EventScript_CanOnlyBeLearnedOnce
+ goto_if_eq VAR_RESULT, NO, EventScript_MegaKickDeclined
+ msgbox Text_MegaKickWhichMon
+ setvar VAR_0x8005, MOVE_MEGA_KICK
+ call EventScript_ChooseMoveTutorMon
+ goto_if_eq VAR_RESULT, FALSE, EventScript_MegaKickDeclined
+.if I_REUSABLE_TMS == FALSE
+ setflag FLAG_TUTOR_MEGA_KICK
+.endif
+ goto EventScript_MegaKickTaught
+ end
+
+EventScript_MegaKickDeclined::
+ msgbox Text_MegaKickDeclined
+ release
+ end
+
+EventScript_MegaKickTaught::
+ msgbox Text_MegaKickTaught
+ release
+ end
+
+EventScript_DreamEaterTutor::
+ lock
+ faceplayer
+.if I_REUSABLE_TMS == FALSE
+ goto_if_set FLAG_TUTOR_DREAM_EATER, EventScript_DreamEaterTaught
+.endif
+ msgbox Text_DreamEaterTeach, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, EventScript_DreamEaterDeclined
+ call EventScript_CanOnlyBeLearnedOnce
+ goto_if_eq VAR_RESULT, NO, EventScript_DreamEaterDeclined
+ msgbox Text_DreamEaterWhichMon
+ setvar VAR_0x8005, MOVE_DREAM_EATER
+ call EventScript_ChooseMoveTutorMon
+ goto_if_eq VAR_RESULT, FALSE, EventScript_DreamEaterDeclined
+.if I_REUSABLE_TMS == FALSE
+ setflag FLAG_TUTOR_DREAM_EATER
+.endif
+ goto EventScript_DreamEaterTaught
+ end
+
+EventScript_DreamEaterDeclined::
+ msgbox Text_DreamEaterDeclined
+ release
+ end
+
+EventScript_DreamEaterTaught::
+ msgbox Text_DreamEaterTaught
+ release
+ end
+
+EventScript_SoftboiledTutor::
+ lock
+ faceplayer
+.if I_REUSABLE_TMS == FALSE
+ goto_if_set FLAG_TUTOR_SOFT_BOILED, EventScript_SoftboiledTaught
+.endif
+ msgbox Text_SoftboiledTeach, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, EventScript_SoftboiledDeclined
+ call EventScript_CanOnlyBeLearnedOnce
+ goto_if_eq VAR_RESULT, NO, EventScript_SoftboiledDeclined
+ msgbox Text_SoftboiledWhichMon
+ setvar VAR_0x8005, MOVE_SOFT_BOILED
+ call EventScript_ChooseMoveTutorMon
+ goto_if_eq VAR_RESULT, FALSE, EventScript_SoftboiledDeclined
+.if I_REUSABLE_TMS == FALSE
+ setflag FLAG_TUTOR_SOFT_BOILED
+.endif
+ goto EventScript_SoftboiledTaught
+ end
+
+EventScript_SoftboiledDeclined::
+ msgbox Text_SoftboiledDeclined
+ release
+ end
+
+EventScript_SoftboiledTaught::
+ msgbox Text_SoftboiledTaught
+ release
+ end
+
+FuchsiaCity_EventScript_SubstituteTutor::
+ lock
+ faceplayer
+.if I_REUSABLE_TMS == FALSE
+ goto_if_set FLAG_TUTOR_SUBSTITUTE, EventScript_SubstituteTaught
+.endif
+ msgbox Text_SubstituteTeach, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, EventScript_SubstituteDeclined
+ call EventScript_CanOnlyBeLearnedOnce
+ goto_if_eq VAR_RESULT, NO, EventScript_SubstituteDeclined
+ msgbox Text_SubstituteWhichMon
+ setvar VAR_0x8005, MOVE_SUBSTITUTE
+ call EventScript_ChooseMoveTutorMon
+ goto_if_eq VAR_RESULT, FALSE, EventScript_SubstituteDeclined
+.if I_REUSABLE_TMS == FALSE
+ setflag FLAG_TUTOR_SUBSTITUTE
+.endif
+ goto EventScript_SubstituteTaught
+ end
+
+EventScript_SubstituteDeclined::
+ msgbox Text_SubstituteDeclined
+ release
+ end
+
+EventScript_SubstituteTaught::
+ msgbox Text_SubstituteTaught
+ release
+ end
+
+SevenIsland_EventScript_SwordsDanceTutor::
+ lock
+ faceplayer
+.if I_REUSABLE_TMS == FALSE
+ goto_if_set FLAG_TUTOR_SWORDS_DANCE, EventScript_SwordsDanceTaught
+.endif
+ msgbox Text_SwordsDanceTeach, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, EventScript_SwordsDanceDeclined
+ call EventScript_CanOnlyBeLearnedOnce
+ goto_if_eq VAR_RESULT, NO, EventScript_SwordsDanceDeclined
+ msgbox Text_SwordsDanceWhichMon
+ setvar VAR_0x8005, MOVE_SWORDS_DANCE
+ call EventScript_ChooseMoveTutorMon
+ goto_if_eq VAR_RESULT, FALSE, EventScript_SwordsDanceDeclined
+.if I_REUSABLE_TMS == FALSE
+ setflag FLAG_TUTOR_SWORDS_DANCE
+.endif
+ goto EventScript_SwordsDanceTaught
+ end
+
+EventScript_SwordsDanceDeclined::
+ msgbox Text_SwordsDanceDeclined
+ release
+ end
+
+EventScript_SwordsDanceTaught::
+ msgbox Text_SwordsDanceTaught
+ release
+ end
+
+PewterCity_Museum_1F_EventScript_SeismicTossTutor::
+ lock
+ faceplayer
+.if I_REUSABLE_TMS == FALSE
+ goto_if_set FLAG_TUTOR_SEISMIC_TOSS, EventScript_SeismicTossTaught
+.endif
+ msgbox Text_SeismicTossTeach, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, EventScript_SeismicTossDeclined
+ call EventScript_CanOnlyBeLearnedOnce
+ goto_if_eq VAR_RESULT, NO, EventScript_SeismicTossDeclined
+ msgbox Text_SeismicTossWhichMon
+ setvar VAR_0x8005, MOVE_SEISMIC_TOSS
+ call EventScript_ChooseMoveTutorMon
+ goto_if_eq VAR_RESULT, FALSE, EventScript_SeismicTossDeclined
+.if I_REUSABLE_TMS == FALSE
+ setflag FLAG_TUTOR_SEISMIC_TOSS
+.endif
+ goto EventScript_SeismicTossTaught
+ end
+
+EventScript_SeismicTossDeclined::
+ msgbox Text_SeismicTossDeclined
+ release
+ end
+
+EventScript_SeismicTossTaught::
+ msgbox Text_SeismicTossTaught
+ release
+ end
+
+EventScript_CounterTutor::
+ lock
+ faceplayer
+.if I_REUSABLE_TMS == FALSE
+ goto_if_set FLAG_TUTOR_COUNTER, EventScript_CounterTaught
+.endif
+ msgbox Text_CounterTeach, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, EventScript_CounterDeclined
+ call EventScript_CanOnlyBeLearnedOnce
+ goto_if_eq VAR_RESULT, NO, EventScript_CounterDeclined
+ msgbox Text_CounterWhichMon
+ setvar VAR_0x8005, MOVE_COUNTER
+ call EventScript_ChooseMoveTutorMon
+ goto_if_eq VAR_RESULT, FALSE, EventScript_CounterDeclined
+.if I_REUSABLE_TMS == FALSE
+ setflag FLAG_TUTOR_COUNTER
+.endif
+ goto EventScript_CounterTaught
+ end
+
+EventScript_CounterDeclined::
+ msgbox Text_CounterDeclined
+ release
+ end
+
+EventScript_CounterTaught::
+ msgbox Text_CounterTaught
+ release
+ end
+
+EventScript_MetronomeTutor::
+ lock
+ faceplayer
+.if I_REUSABLE_TMS == FALSE
+ goto_if_set FLAG_TUTOR_METRONOME, EventScript_MetronomeTaught
+.endif
+ msgbox Text_MetronomeTeach, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, EventScript_MetronomeDeclined
+ call EventScript_CanOnlyBeLearnedOnce
+ goto_if_eq VAR_RESULT, NO, EventScript_MetronomeDeclined
+ msgbox Text_MetronomeWhichMon
+ setvar VAR_0x8005, MOVE_METRONOME
+ call EventScript_ChooseMoveTutorMon
+ goto_if_eq VAR_RESULT, FALSE, EventScript_MetronomeDeclined
+.if I_REUSABLE_TMS == FALSE
+ setflag FLAG_TUTOR_METRONOME
+.endif
+ goto EventScript_MetronomeTaught
+ end
+
+EventScript_MetronomeDeclined::
+ msgbox Text_MetronomeDeclined
+ release
+ end
+
+EventScript_MetronomeTaught::
+ msgbox Text_MetronomeTaught
+ release
+ end
+
+EventScript_MimicTutor::
+.if I_REUSABLE_TMS == FALSE
+ goto_if_set FLAG_TUTOR_MIMIC, EventScript_MimicTaught
+.endif
+ msgbox Text_MimicTeach, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, EventScript_MimicDeclined
+ call EventScript_CanOnlyBeLearnedOnce
+ goto_if_eq VAR_RESULT, NO, EventScript_MimicDeclined
+ msgbox Text_MimicWhichMon
+ setvar VAR_0x8005, MOVE_MIMIC
+ call EventScript_ChooseMoveTutorMon
+ lock
+ faceplayer
+ goto_if_eq VAR_RESULT, 0, EventScript_MimicDeclined
+ removeitem ITEM_POKE_DOLL
+.if I_REUSABLE_TMS == FALSE
+ setflag FLAG_TUTOR_MIMIC
+.endif
+ goto EventScript_MimicTaught
+ end
+
+EventScript_MimicDeclined::
+ msgbox Text_MimicDeclined
+ release
+ end
+
+EventScript_MimicTaught::
+ checkplayergender
+ call_if_eq VAR_RESULT, MALE, EventScript_MimicTaughtMale
+ call_if_eq VAR_RESULT, FEMALE, EventScript_MimicTaughtFemale
+ release
+ end
+
+EventScript_MimicTaughtMale::
+ msgbox Text_MimicTaughtMale
+ return
+
+EventScript_MimicTaughtFemale::
+ msgbox Text_MimicTaughtFemale
+ return
+
+FourIsland_House1_EventScript_BodySlamTutor::
+ lock
+ faceplayer
+.if I_REUSABLE_TMS == FALSE
+ goto_if_set FLAG_TUTOR_BODY_SLAM, EventScript_BodySlamTaught
+.endif
+ msgbox Text_BodySlamTeach, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, EventScript_BodySlamDeclined
+ call EventScript_CanOnlyBeLearnedOnce
+ goto_if_eq VAR_RESULT, NO, EventScript_BodySlamDeclined
+ msgbox Text_BodySlamWhichMon
+ setvar VAR_0x8005, MOVE_BODY_SLAM
+ call EventScript_ChooseMoveTutorMon
+ goto_if_eq VAR_RESULT, FALSE, EventScript_BodySlamDeclined
+.if I_REUSABLE_TMS == FALSE
+ setflag FLAG_TUTOR_BODY_SLAM
+.endif
+ goto EventScript_BodySlamTaught
+ end
+
+EventScript_BodySlamDeclined::
+ msgbox Text_BodySlamDeclined
+ release
+ end
+
+EventScript_BodySlamTaught::
+ msgbox Text_BodySlamTaught
+ release
+ end
+
+TwoIsland_CapeBrink_House_EventScript_StarterTutor::
+ lock
+ faceplayer
+ goto_if_set FLAG_LEARNED_ALL_MOVES_AT_CAPE_BRINK, CapeBrinkTutor_EventScript_TaughtAllMoves
+ goto_if_set FLAG_TEMP_2, CapeBrinkTutor_EventScript_MoveJustTaught
+ bufferleadmonspeciesname STR_VAR_1
+ msgbox Text_UltimateMoveThatMon
+ specialvar VAR_RESULT, CapeBrinkGetMoveToTeachLeadPokemon
+ goto_if_eq VAR_RESULT, FALSE, CapeBrinkTutor_EventScript_NoLeadStarter
+ copyvar VAR_0x8009, VAR_0x8005
+ call_if_eq VAR_FACING, DIR_NORTH, CapeBrinkTutor_EventScript_JumpInPlaceDown
+ call_if_eq VAR_FACING, DIR_SOUTH, CapeBrinkTutor_EventScript_JumpInPlaceUp
+ call_if_eq VAR_FACING, DIR_EAST, CapeBrinkTutor_EventScript_JumpInPlaceLeft
+ call_if_eq VAR_FACING, DIR_WEST, CapeBrinkTutor_EventScript_JumpInPlaceRight
+ msgbox Text_AllowMeToTeachMonUltimateMove, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CapeBrinkTutor_EventScript_DeclineMove
+ call EventScript_CanOnlyBeLearnedOnce
+ goto_if_eq VAR_RESULT, NO, CapeBrinkTutor_EventScript_DeclineMove
+ msgbox Text_LetMeConferUltimateMove
+ closemessage
+ fadescreen FADE_TO_BLACK
+ goto CapeBrinkTutor_EventScript_ChooseMon
+
+CapeBrinkTutor_EventScript_MoveJustTaught::
+ msgbox Text_MakeBestUseOfMove
+ release
+ end
+
+CapeBrinkTutor_EventScript_TaughtAllMoves::
+ msgbox Text_FeelRejuvenated
+ release
+ end
+
+CapeBrinkTutor_EventScript_TaughtMove::
+ copyvar VAR_0x8005, VAR_0x8009
+ specialvar VAR_RESULT, HasLearnedAllMovesFromCapeBrinkTutor
+ goto_if_eq VAR_RESULT, TRUE, CapeBrinkTutor_EventScript_LearnedAllMoves
+ msgbox Text_TaughtMove
+ setflag FLAG_TEMP_2
+ release
+ end
+
+CapeBrinkTutor_EventScript_LearnedAllMoves::
+ msgbox Text_PassedOnEverythingIKnow
+ setflag FLAG_LEARNED_ALL_MOVES_AT_CAPE_BRINK
+ release
+ end
+
+CapeBrinkTutor_EventScript_ChooseMon::
+ call EventScript_ChooseMoveTutorMon
+ goto_if_eq VAR_RESULT, FALSE, CapeBrinkTutor_EventScript_DeclineMove
+ goto CapeBrinkTutor_EventScript_TaughtMove
+ end
+
+CapeBrinkTutor_EventScript_JumpInPlaceDown::
+ applymovement LOCALID_CAPE_BRINK_TUTOR, Movement_JumpInPlaceDown
+ waitmovement 0
+ return
+
+CapeBrinkTutor_EventScript_JumpInPlaceUp::
+ applymovement LOCALID_CAPE_BRINK_TUTOR, Movement_JumpInPlaceUp
+ waitmovement 0
+ return
+
+CapeBrinkTutor_EventScript_JumpInPlaceLeft::
+ applymovement LOCALID_CAPE_BRINK_TUTOR, Movement_JumpInPlaceLeft
+ waitmovement 0
+ return
+
+CapeBrinkTutor_EventScript_JumpInPlaceRight::
+ applymovement LOCALID_CAPE_BRINK_TUTOR, Movement_JumpInPlaceRight
+ waitmovement 0
+ return
+
+CapeBrinkTutor_EventScript_DeclineMove::
+ msgbox Text_YouRejectIt
+ release
+ end
+
+CapeBrinkTutor_EventScript_NoLeadStarter::
+ msgbox Text_JustMistaken
+ release
+ end
+
+EventScript_ChooseMoveTutorMon::
+ special ChooseMonForMoveTutor
+ waitstate
+ lock
+ faceplayer
+ return
+
+EventScript_CanOnlyBeLearnedOnce::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ special DisableMsgBoxWalkaway
+ signmsg
+ msgbox Text_MoveCanOnlyBeLearnedOnce, MSGBOX_YESNO
+ normalmsg
+ call EventScript_RestorePrevTextColor
+ return
+
+Movement_JumpInPlaceDown:
+ jump_in_place_down
+ step_end
+
+Movement_JumpInPlaceUp:
+ jump_in_place_up
+ step_end
+
+Movement_JumpInPlaceLeft:
+ jump_in_place_left
+ step_end
+
+Movement_JumpInPlaceRight:
+ jump_in_place_right
+ step_end
+
+Text_MoveCanOnlyBeLearnedOnce::
+ .string "This move can be learned only\n"
+ .string "once. Is that okay?$"
diff --git a/data/scripts/movement.inc b/data/scripts/movement.inc
index cf6ce3e9b282..786eb1723386 100644
--- a/data/scripts/movement.inc
+++ b/data/scripts/movement.inc
@@ -74,6 +74,14 @@ Common_Movement_WalkInPlaceRight:
@ End of follower-safe movements
Common_Movement_FollowerSafeEnd::
step_end
+
+Common_Movement_WalkUp5::
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ walk_up
+ step_end
Common_Movement_WalkUp6:
walk_up
@@ -108,61 +116,61 @@ Common_Movement_WalkUp2::
@ Follower NPC
Common_Movement_WalkUpSlow::
- walk_slow_up
- step_end
+ walk_slow_up
+ step_end
Common_Movement_WalkDownSlow::
- walk_slow_down
- step_end
+ walk_slow_down
+ step_end
Common_Movement_WalkRightSlow::
- walk_slow_right
- step_end
+ walk_slow_right
+ step_end
Common_Movement_WalkLeftSlow::
- walk_slow_left
- step_end
+ walk_slow_left
+ step_end
Common_Movement_WalkDown::
- walk_down
- step_end
+ walk_down
+ step_end
Common_Movement_WalkRight::
- walk_right
- step_end
+ walk_right
+ step_end
Common_Movement_WalkLeft::
- walk_left
- step_end
+ walk_left
+ step_end
Common_Movement_WalkUpFast::
- walk_fast_up
- step_end
+ walk_fast_up
+ step_end
Common_Movement_WalkDownFast::
- walk_fast_down
- step_end
+ walk_fast_down
+ step_end
Common_Movement_WalkRightFast::
- walk_fast_right
- step_end
+ walk_fast_right
+ step_end
Common_Movement_WalkLeftFast::
- walk_fast_left
- step_end
+ walk_fast_left
+ step_end
Common_Movement_WalkUpFaster::
- walk_faster_up
- step_end
+ walk_faster_up
+ step_end
Common_Movement_WalkDownFaster::
- walk_faster_down
- step_end
+ walk_faster_down
+ step_end
Common_Movement_WalkRightFaster::
- walk_faster_right
- step_end
+ walk_faster_right
+ step_end
Common_Movement_WalkLeftFaster::
- walk_faster_left
- step_end
+ walk_faster_left
+ step_end
diff --git a/data/scripts/mystery_event_club.inc b/data/scripts/mystery_event_club.inc
new file mode 100644
index 000000000000..ea9743ac95c0
--- /dev/null
+++ b/data/scripts/mystery_event_club.inc
@@ -0,0 +1,177 @@
+.equ GAVE_PROFILE, VAR_TEMP_1
+
+MysteryEventClub_EventScript_Woman::
+ lock
+ faceplayer
+ goto_if_eq GAVE_PROFILE, TRUE, EventScript_AlreadyGaveProfile
+ goto_if_set FLAG_SYS_SET_TRAINER_CARD_PROFILE, EventScript_GivenProfileBefore
+ msgbox Text_IdLoveToHearYourProfile
+ goto EventScript_AskForProfile
+ end
+
+EventScript_AlreadyGaveProfile:
+ msgbox Text_TellMoreNextTime
+ release
+ end
+
+EventScript_AskForProfile:
+ message Text_TellMeWhatsYourProfile
+ waitmessage
+ multichoice 18, 6, MULTI_YESNOINFO_2, FALSE
+ switch VAR_RESULT
+ case 0, EventScript_AcceptGiveProfile
+ case 1, EventScript_DeclineGiveProfile
+ case 2, EventScript_ProfileInfo
+ case MULTI_B_PRESSED, EventScript_DeclineGiveProfile
+ end
+
+EventScript_ProfileInfo:
+ msgbox Text_ExplainProfile
+ goto EventScript_AskForProfile
+ end
+
+EventScript_AcceptGiveProfile:
+ msgbox Text_WhatsYourProfile
+ closemessage
+ goto EventScript_GiveProfile
+ end
+
+EventScript_CancelGiveProfile:
+ msgbox Text_DecidedNotTo
+ release
+ end
+
+EventScript_GaveProfile:
+ setvar GAVE_PROFILE, TRUE
+ setvar VAR_0x8004, 0
+ special ShowEasyChatProfile
+ waitmessage
+ delay 80
+ msgbox Text_ProfileSaysSomethingAboutYou
+ release
+ end
+
+EventScript_DeclineGiveProfile:
+ msgbox Text_DontBeLikeThat
+ release
+ end
+
+EventScript_GivenProfileBefore:
+ msgbox Text_HiWeMeetAgain
+ goto EventScript_AskForNewProfile
+ end
+
+EventScript_AskForNewProfile:
+ message Text_ChangeYourProfile
+ waitmessage
+ multichoice 18, 6, MULTI_YESNOINFO_2, FALSE
+ switch VAR_RESULT
+ case 0, EventScript_AcceptGiveNewProfile
+ case 1, EventScript_DeclineGiveNewProfile
+ case 2, EventScript_ProfileInfo2
+ @case MULTI_B_PRESSED, EventScript_DeclineGiveNewProfile
+ end
+
+EventScript_ProfileInfo2:
+ msgbox Text_ExplainProfile
+ goto EventScript_AskForNewProfile
+ end
+
+EventScript_AcceptGiveNewProfile:
+ msgbox Text_WhatAreYouLikeNow
+ closemessage
+ goto EventScript_GiveProfile
+ end
+
+EventScript_DeclineGiveNewProfile:
+ msgbox Text_LikeProfileWayItIs
+ release
+ end
+
+EventScript_GaveSpecialProfile:
+ setvar GAVE_PROFILE, TRUE
+ setvar VAR_0x8004, 0
+ special ShowEasyChatProfile
+ waitmessage
+ delay 80
+ msgbox Text_HeardThatBefore
+ release
+ end
+
+EventScript_GiveProfile:
+ setvar VAR_0x8004, EASY_CHAT_TYPE_PROFILE
+ call Common_ShowEasyChatScreen
+ lock
+ faceplayer
+ goto_if_eq VAR_0x8004, 0, EventScript_GaveSpecialProfile
+ goto_if_eq VAR_RESULT, FALSE, EventScript_CancelGiveProfile
+ goto_if_eq VAR_RESULT, TRUE, EventScript_GaveProfile
+ end
+
+Text_IdLoveToHearYourProfile:
+ .string "Hi, glad to meet you!\p"
+ .string "…That's unfriendly of you.\n"
+ .string "How about saying hi back?\p"
+ .string "So, come on, tell me about\n"
+ .string "yourself.\p"
+ .string "I'd love to hear your profile!$"
+
+Text_TellMeWhatsYourProfile:
+ .string "Tell me something good about\n"
+ .string "yourself. What's your profile?$"
+
+Text_ExplainProfile:
+ .string "A profile is written using four\n"
+ .string "words or phrases.\p"
+ .string "There're plenty of words to choose\n"
+ .string "from for your profile.\p"
+ .string "The words and phrases are placed\n"
+ .string "in several convenient groups.\p"
+ .string "First, choose a group, then choose\n"
+ .string "a word or phrase.\p"
+ .string "…It's easier than it sounds.\n"
+ .string "Why don't you try it?$"
+
+Text_WhatsYourProfile:
+ .string "What's your profile?$"
+
+Text_DontBeLikeThat:
+ .string "Aww… Don't be like that.\n"
+ .string "You can tell me your profile.$"
+
+Text_DecidedNotTo:
+ .string "Oh, you've decided not to?\n"
+ .string "You're fickle, aren't you?$"
+
+Text_HiWeMeetAgain:
+ .string "Hi!\n"
+ .string "We meet again!$"
+
+Text_ChangeYourProfile:
+ .string "Would you like to change your\n"
+ .string "profile?$"
+
+Text_WhatAreYouLikeNow:
+ .string "What are you like now?\n"
+ .string "I'd really like to know.$"
+
+Text_LikeProfileWayItIs:
+ .string "Okay, you like your profile the\n"
+ .string "way it is.\p"
+ .string "I think so, too.$"
+
+Text_ProfileSaysSomethingAboutYou:
+ .string "Hmhm…\p"
+ .string "Your profile really says something\n"
+ .string "about who you are.\p"
+ .string "Now that I know you better, it \n"
+ .string "makes us better friends than ever!$"
+
+Text_HeardThatBefore:
+ .string "Oh, I've heard that before…\p"
+ .string "My cousin, who lives far away,\n"
+ .string "always used to say that, I think.$"
+
+Text_TellMoreNextTime:
+ .string "Please tell me more about\n"
+ .string "yourself next time!$"
diff --git a/data/scripts/new_game.inc b/data/scripts/new_game.inc
index 1803199e4285..bf0b8cd03d28 100644
--- a/data/scripts/new_game.inc
+++ b/data/scripts/new_game.inc
@@ -274,3 +274,56 @@ EventScript_ResetAllMapFlags::
setflag FLAG_HIDE_SKY_PILLAR_TOP_RAYQUAZA_STILL
call EventScript_ResetAllBerries
end
+
+EventScript_ResetAllMapFlagsFrlg::
+ setflag FLAG_HIDE_OAK_IN_HIS_LAB
+ setflag FLAG_HIDE_OAK_IN_PALLET_TOWN
+ setflag FLAG_HIDE_BILL_HUMAN_SEA_COTTAGE
+ setflag FLAG_HIDE_PEWTER_CITY_RUNNING_SHOES_GUY
+ setflag FLAG_HIDE_POKEHOUSE_FUJI
+ setflag FLAG_HIDE_LIFT_KEY
+ setflag FLAG_HIDE_SILPH_SCOPE
+ setflag FLAG_HIDE_CERULEAN_RIVAL
+ setflag FLAG_HIDE_SS_ANNE_RIVAL
+ setflag FLAG_HIDE_VERMILION_CITY_OAKS_AIDE
+ setflag FLAG_HIDE_SAFFRON_CIVILIANS
+ setflag FLAG_HIDE_ROUTE_22_RIVAL
+ setflag FLAG_HIDE_OAK_IN_CHAMP_ROOM
+ setflag FLAG_HIDE_CREDITS_RIVAL
+ setflag FLAG_HIDE_CREDITS_OAK
+ setflag FLAG_HIDE_CINNABAR_BILL
+ setflag FLAG_HIDE_CINNABAR_SEAGALLOP
+ setflag FLAG_HIDE_CINNABAR_POKECENTER_BILL
+ setflag FLAG_HIDE_LORELEI_IN_HER_HOUSE
+ setflag FLAG_HIDE_SAFFRON_FAN_CLUB_BLACKBELT
+ setflag FLAG_HIDE_SAFFRON_FAN_CLUB_ROCKER
+ setflag FLAG_HIDE_SAFFRON_FAN_CLUB_WOMAN
+ setflag FLAG_HIDE_SAFFRON_FAN_CLUB_BEAUTY
+ setflag FLAG_HIDE_TWO_ISLAND_GAME_CORNER_LOSTELLE
+ setflag FLAG_HIDE_TWO_ISLAND_GAME_CORNER_BIKER
+ setflag FLAG_HIDE_TWO_ISLAND_WOMAN
+ setflag FLAG_HIDE_TWO_ISLAND_BEAUTY
+ setflag FLAG_HIDE_TWO_ISLAND_SUPER_NERD
+ setflag FLAG_HIDE_LOSTELLE_IN_HER_HOME
+ setflag FLAG_HIDE_THREE_ISLAND_LONE_BIKER
+ setflag FLAG_HIDE_FOUR_ISLAND_RIVAL
+ setflag FLAG_HIDE_DOTTED_HOLE_SCIENTIST
+ setflag FLAG_HIDE_RESORT_GORGEOUS_SELPHY
+ setflag FLAG_HIDE_RESORT_GORGEOUS_INSIDE_SELPHY
+ setflag FLAG_HIDE_SELPHYS_BUTLER
+ setflag FLAG_HIDE_DEOXYS
+ setflag FLAG_HIDE_LORELEI_HOUSE_MEOWTH_DOLL
+ setflag FLAG_HIDE_LORELEI_HOUSE_CHANSEY_DOLL
+ setflag FLAG_HIDE_LORELEIS_HOUSE_NIDORAN_F_DOLL
+ setflag FLAG_HIDE_LORELEI_HOUSE_JIGGLYPUFF_DOLL
+ setflag FLAG_HIDE_LORELEIS_HOUSE_NIDORAN_M_DOLL
+ setflag FLAG_HIDE_LORELEIS_HOUSE_FEAROW_DOLL
+ setflag FLAG_HIDE_LORELEIS_HOUSE_PIDGEOT_DOLL
+ setflag FLAG_HIDE_LORELEIS_HOUSE_LAPRAS_DOLL
+ setflag FLAG_HIDE_POSTGAME_GOSSIPERS
+ setflag FLAG_HIDE_FAME_CHECKER_ERIKA_JOURNALS
+ setflag FLAG_HIDE_FAME_CHECKER_KOGA_JOURNAL
+ setflag FLAG_HIDE_FAME_CHECKER_LT_SURGE_JOURNAL
+ setflag FLAG_HIDE_SAFFRON_CITY_POKECENTER_SABRINA_JOURNALS
+ setvar VAR_MASSAGE_COOLDOWN_STEP_COUNTER, 500
+ end
diff --git a/data/scripts/obtain_item.inc b/data/scripts/obtain_item.inc
index 3eb7f4f0d4ed..8fc4105fee08 100644
--- a/data/scripts/obtain_item.inc
+++ b/data/scripts/obtain_item.inc
@@ -175,8 +175,9 @@ EventScript_NoRoomToPickUpItem::
EventScript_HiddenItemScript::
lockall
waitse
+ goto_if_eq VAR_0x8005, 0, EventScript_TryPickUpHiddenCoins
copyvar VAR_0x8006, VAR_0x8005
- additem VAR_0x8005
+ additem VAR_0x8005, VAR_0x8009
copyvar VAR_0x8007, VAR_RESULT
bufferitemnameplural STR_VAR_2, VAR_0x8005, 1
checkitemtype VAR_0x8005
@@ -200,10 +201,20 @@ EventScript_FoundHiddenTMHM::
end
EventScript_FoundHiddenItem::
- message gText_PlayerFoundOneItem
+ call_if_eq VAR_0x8009, 1, EventScript_FoundSingleItem
+ call_if_ne VAR_0x8009, 1, EventScript_FoundMultipleItems
goto EventScript_PutHiddenItemInPocket
end
+EventScript_FoundSingleItem::
+ message gText_PlayerFoundOneItem
+ return
+
+EventScript_FoundMultipleItems::
+ buffernumberstring STR_VAR_1, VAR_0x8009
+ message gText_FoundXItems
+ return
+
EventScript_PutHiddenItemInPocket::
callnative Script_ClearDowsingColor
delay 10
@@ -226,3 +237,82 @@ EventScript_NoRoomForHiddenItem::
setvar VAR_RESULT, 0
releaseall
end
+
+EventScript_RestorePrevTextColor::
+ copyvar VAR_TEXT_COLOR, VAR_PREV_TEXT_COLOR
+ return
+
+Std_PutItemAway::
+ bufferitemnameplural STR_VAR_2, VAR_0x8000, VAR_0x8001
+ checkitemtype VAR_0x8000
+ call EventScript_BufferPutAwayPocketName
+ msgbox gText_PutItemInPocket
+ return
+
+EventScript_BufferPutAwayPocketName::
+ switch VAR_RESULT
+ case POCKET_ITEMS, EventScript_BufferPutAwayPocketItems
+ case POCKET_KEY_ITEMS, EventScript_BufferPutAwayPocketKeyItems
+ case POCKET_POKE_BALLS, EventScript_BufferPutAwayPocketPokeBalls
+ case POCKET_TM_HM, EventScript_BufferPutAwayPocketTMCase
+ case POCKET_BERRIES, EventScript_BufferPutAwayPocketBerryPouch
+ end
+
+EventScript_BufferPutAwayPocketItems::
+ bufferstdstring STR_VAR_3, STDSTRING_ITEMS
+ return
+
+EventScript_BufferPutAwayPocketKeyItems::
+ bufferstdstring STR_VAR_3, STDSTRING_KEYITEMS
+ return
+
+EventScript_BufferPutAwayPocketPokeBalls::
+ bufferstdstring STR_VAR_3, STDSTRING_POKEBALLS
+ return
+
+EventScript_BufferPutAwayPocketTMCase::
+ bufferstdstring STR_VAR_3, STDSTRING_TMHMS
+ return
+
+EventScript_BufferPutAwayPocketBerryPouch::
+ bufferstdstring STR_VAR_3, STDSTRING_BERRIES
+ return
+
+EventScript_TryPickUpHiddenCoins::
+ goto_if_unset FLAG_GOT_COIN_CASE, EventScript_NoCaseForHiddenCoins
+ checkcoins VAR_RESULT
+ specialvar VAR_RESULT, CheckAddCoins
+ goto_if_eq VAR_RESULT, FALSE, EventScript_HiddenCoinsButCaseIsFull
+ addcoins VAR_0x8009
+ bufferstdstring STR_VAR_2, STDSTRING_COINS
+ call EventScript_PlayFanfareObtainedItem
+ call EventScript_FoundCoins
+ waitfanfare
+ waitmessage
+ msgbox gText_PutCoinsAwayInCoinCase
+ special SetHiddenItemFlag
+ releaseall
+ end
+
+EventScript_FoundCoins::
+ buffernumberstring STR_VAR_1, VAR_0x8009
+ message gText_FoundXCoins
+ return
+
+EventScript_HiddenCoinsButCaseIsFull::
+ buffernumberstring STR_VAR_1, VAR_0x8009
+ bufferstdstring STR_VAR_2, STDSTRING_COINS
+ msgbox gText_FoundXCoins
+ msgbox gText_CoinCaseIsFull
+ setvar VAR_RESULT, 0
+ releaseall
+ end
+
+EventScript_NoCaseForHiddenCoins::
+ buffernumberstring STR_VAR_1, VAR_0x8009
+ bufferstdstring STR_VAR_2, STDSTRING_COINS
+ msgbox gText_FoundXCoins
+ msgbox gText_NothingToPutThemIn
+ setvar VAR_RESULT, 0
+ releaseall
+ end
diff --git a/data/scripts/pc.inc b/data/scripts/pc.inc
index e4e37f5b4309..1261251c0cbe 100644
--- a/data/scripts/pc.inc
+++ b/data/scripts/pc.inc
@@ -47,7 +47,11 @@ EventScript_AccessSomeonesPC::
return
EventScript_AccessLanettesPC::
+#if IS_FRLG
+ msgbox gText_AccessedBillsPC, MSGBOX_DEFAULT
+#else
msgbox gText_AccessedLanettesPC, MSGBOX_DEFAULT
+#endif
return
EventScript_TurnOffPC::
diff --git a/data/scripts/pc_transfer.inc b/data/scripts/pc_transfer.inc
index f279740caa3c..a1321140fa43 100644
--- a/data/scripts/pc_transfer.inc
+++ b/data/scripts/pc_transfer.inc
@@ -7,7 +7,8 @@ Common_EventScript_GetGiftMonPartySlot::
Common_EventScript_NameReceivedBoxMon::
fadescreen FADE_TO_BLACK
- special ChangeBoxPokemonNickname
+ setvar VAR_0x8004, PC_MON_CHOSEN
+ special ChangePokemonNickname
waitstate
lock
faceplayer
diff --git a/data/scripts/pkmn_center_nurse_frlg.inc b/data/scripts/pkmn_center_nurse_frlg.inc
new file mode 100644
index 000000000000..18570d301633
--- /dev/null
+++ b/data/scripts/pkmn_center_nurse_frlg.inc
@@ -0,0 +1,81 @@
+EventScript_PkmnCenterNurse_Frlg::
+ message Text_WelcomeWantToHealPkmn_Frlg
+ waitmessage
+ multichoice 19, 8, MULTI_YESNO, FALSE | (TRUE << 1)
+ switch VAR_RESULT
+ case 0, EventScript_PkmnCenterNurse_HealPkmn_Frlg
+ case 1 EventScript_PkmnCenterNurse_Goodbye_Frlg
+ case MULTI_B_PRESSED, EventScript_PkmnCenterNurse_Goodbye_Frlg
+ end
+
+EventScript_PkmnCenterNurse_HealPkmn_Frlg::
+ incrementgamestat GAME_STAT_USED_POKECENTER
+ message Text_TakeYourPkmnForFewSeconds_Frlg
+ waitmessage
+ call EventScript_PkmnCenterNurse_TakeAndHealPkmn_Frlg
+ goto EventScript_PkmnCenterNurse_CheckTrainerTowerAndUnionRoom_Frlg
+ end
+
+EventScript_PkmnCenterNurse_TakeAndHealPkmn_Frlg::
+ applymovement VAR_LAST_TALKED, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ dofieldeffect FLDEFF_POKECENTER_HEAL
+ waitfieldeffect FLDEFF_POKECENTER_HEAL
+ applymovement VAR_LAST_TALKED, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ special HealPlayerParty
+ return
+
+EventScript_PkmnCenterNurse_CheckTrainerTowerAndUnionRoom_Frlg::
+ specialvar VAR_RESULT, IsPlayerNotInTrainerTowerLobby
+ goto_if_eq VAR_RESULT, FALSE, EventScript_PkmnCenterNurse_ReturnPkmn_Frlg
+ specialvar VAR_RESULT, BufferUnionRoomPlayerName
+ copyvar VAR_0x8008, VAR_RESULT
+ goto_if_eq VAR_0x8008, 0, EventScript_PkmnCenterNurse_ReturnPkmn_Frlg
+ goto_if_eq VAR_0x8008, 1, EventScript_PkmnCenterNurse_PlayerWaitingInUnionRoom_Frlg
+ end
+
+EventScript_PkmnCenterNurse_ReturnPkmn_Frlg::
+ message Text_RestoredPkmnToFullHealth_Frlg
+ waitmessage
+ applymovement VAR_LAST_TALKED, Movement_Bow
+ waitmovement 0
+ msgbox Text_WeHopeToSeeYouAgain_Frlg
+ return
+
+EventScript_PkmnCenterNurse_PlayerWaitingInUnionRoom_Frlg::
+ goto_if_set FLAG_NURSE_UNION_ROOM_REMINDER, EventScript_PkmnCenterNurse_ReturnPkmn_Frlg
+ msgbox Text_RestoredPkmnToFullHealth_Frlg
+ setflag FLAG_NURSE_UNION_ROOM_REMINDER
+ message Text_PlayerIsPlayingRightNowGoForIt_Frlg
+ waitmessage
+ applymovement VAR_LAST_TALKED, Movement_Bow
+ waitmovement 0
+ msgbox Text_WeHopeToSeeYouAgain_Frlg
+ return
+
+EventScript_PkmnCenterNurse_Goodbye_Frlg::
+ msgbox Text_WeHopeToSeeYouAgain_Frlg
+ return
+
+Movement_Bow::
+ nurse_joy_bow
+ delay_4
+ step_end
+
+Text_WelcomeWantToHealPkmn_Frlg::
+ .string "Welcome to our POKéMON CENTER!\p"
+ .string "Would you like me to heal your\n"
+ .string "POKéMON back to perfect health?$"
+
+Text_TakeYourPkmnForFewSeconds_Frlg::
+ .string "Okay, I'll take your POKéMON for a\n"
+ .string "few seconds.$"
+
+Text_WeHopeToSeeYouAgain_Frlg::
+ .string "We hope to see you again!$"
+
+Text_RestoredPkmnToFullHealth_Frlg::
+ .string "Thank you for waiting.\n"
+ .string "We've restored your POKéMON to\l"
+ .string "full health.$"
diff --git a/data/scripts/pokedex_rating.inc b/data/scripts/pokedex_rating.inc
new file mode 100644
index 000000000000..7fd777cf37c0
--- /dev/null
+++ b/data/scripts/pokedex_rating.inc
@@ -0,0 +1,72 @@
+PokedexRating_EventScript_RateInPerson::
+ call_if_set FLAG_OAK_SAW_DEX_COMPLETION, PokedexRating_EventScript_DexCompleteIntro
+ call_if_unset FLAG_OAK_SAW_DEX_COMPLETION, PokedexRating_EventScript_NormalIntro
+ call PokedexRating_EventScript_Rate
+ return
+
+PokedexRating_EventScript_DexCompleteIntro::
+ msgbox PokedexRating_Text_LoveSeeingYourPokedex
+ return
+
+PokedexRating_EventScript_NormalIntro::
+ msgbox PokedexRating_Text_HowIsPokedexComingAlong
+ return
+
+PokedexRating_EventScript_ShowRatingMsg::
+ copyvar VAR_0x8004, VAR_0x8009
+ special GetProfOaksRatingMessage
+ waitmessage
+ call_if_eq VAR_RESULT, FALSE, PokedexRating_EventScript_NormalFanfare
+ call_if_eq VAR_RESULT, TRUE, PokedexRating_EventScript_DexCompleteFanfare
+ waitfanfare
+ waitbuttonpress
+ return
+
+PokedexRating_EventScript_NormalFanfare::
+ playfanfare MUS_RG_DEX_RATING
+ return
+
+PokedexRating_EventScript_DexCompleteFanfare::
+ playfanfare MUS_EVOLVED
+ return
+
+PokedexRating_EventScript_Rate::
+ specialvar VAR_RESULT, GetFrlgPokedexCount
+ copyvar VAR_0x8008, VAR_0x8005
+ copyvar VAR_0x8009, VAR_0x8006
+ copyvar VAR_0x800A, VAR_RESULT
+ buffernumberstring STR_VAR_1, VAR_0x8008 @ Num Kanto Seen
+ buffernumberstring STR_VAR_2, VAR_0x8009 @ Num Kanto Caught
+ msgbox PokedexRating_Text_SeenXOwnedY
+ call_if_unset FLAG_OAKS_RATING_IS_VIA_PC, PokedexRating_EventScript_SetTextColor
+ call PokedexRating_EventScript_ShowRatingMsg
+ goto_if_eq VAR_0x800A, FALSE, PokedexRating_EventScript_EndRating @ National Dex not enabled
+ setvar VAR_0x8004, 1
+ specialvar VAR_RESULT, GetFrlgPokedexCount
+ copyvar VAR_0x8008, VAR_0x8005
+ copyvar VAR_0x8009, VAR_0x8006
+ buffernumberstring STR_VAR_1, VAR_0x8008 @ Num National Seen
+ buffernumberstring STR_VAR_2, VAR_0x8009 @ Num National Caught
+ msgbox PokedexRating_Text_NationalDexSeenXOwnedY
+ specialvar VAR_RESULT, HasAllMons
+ goto_if_eq VAR_RESULT, FALSE, PokedexRating_EventScript_DexIncomplete
+ goto_if_eq VAR_RESULT, TRUE, PokedexRating_EventScript_DexComplete
+ end
+
+PokedexRating_EventScript_SetTextColor::
+ textcolor NPC_TEXT_COLOR_MALE
+ return
+
+PokedexRating_EventScript_DexIncomplete::
+ msgbox PokedexRating_Text_LookForwardToFilledNationalDex
+ goto PokedexRating_EventScript_EndRating
+ end
+
+PokedexRating_EventScript_DexComplete::
+ setflag FLAG_OAK_SAW_DEX_COMPLETION
+ msgbox PokedexRating_Text_YouveCompletedDex
+ goto PokedexRating_EventScript_EndRating
+ end
+
+PokedexRating_EventScript_EndRating::
+ return
diff --git a/data/scripts/pokemon_league.inc b/data/scripts/pokemon_league.inc
new file mode 100644
index 000000000000..8bcb145ba80b
--- /dev/null
+++ b/data/scripts/pokemon_league.inc
@@ -0,0 +1,68 @@
+PokemonLeague_EventScript_OpenDoor::
+ applymovement LOCALID_PLAYER, Common_Movement_Delay32
+ waitmovement 0
+ playse SE_DOOR
+ call PokemonLeague_EventScript_SetDoorOpen
+ special DrawWholeMapView
+ setflag FLAG_TEMP_4
+ return
+
+PokemonLeague_EventScript_EnterRoom::
+ applymovement LOCALID_PLAYER, Common_Movement_WalkUp5
+ waitmovement 0
+ setflag FLAG_TEMP_2
+ playse SE_UNLOCK
+ call PokemonLeague_EventScript_CloseEntry
+ special DrawWholeMapView
+ return
+
+PokemonLeague_EventScript_SetDoorOpen::
+ setmetatile 6, 1, METATILE_PokemonLeague_Door_Top_Open, 1
+ setmetatile 6, 2, METATILE_PokemonLeague_Door_Mid_Open, 0
+ return
+
+PokemonLeague_EventScript_PreventExit::
+ lockall
+ textcolor NPC_TEXT_COLOR_MALE
+ msgbox Text_VoiceRangOutDontRunAway
+ closemessage
+ applymovement LOCALID_PLAYER, PokemonLeague_Movement_ForcePlayerIn
+ waitmovement 0
+ releaseall
+ end
+
+PokemonLeague_EventScript_OpenDoorLance::
+ applymovement LOCALID_PLAYER, Common_Movement_Delay32
+ waitmovement 0
+ playse SE_DOOR
+ setmetatile 6, 4, METATILE_PokemonLeague_Door_Top_Open, 1
+ setmetatile 6, 5, METATILE_PokemonLeague_Door_Mid_Open, 0
+ special DrawWholeMapView
+ setflag FLAG_TEMP_4
+ return
+
+PokemonLeague_EventScript_SetDoorOpenLance::
+ setmetatile 6, 4, METATILE_PokemonLeague_Door_Top_Open, 1
+ setmetatile 6, 5, METATILE_PokemonLeague_Door_Mid_Open, 0
+ return
+
+PokemonLeague_EventScript_CloseEntry::
+ setmetatile 5, 11, METATILE_PokemonLeague_Entry_TopLeft_Closed, 1
+ setmetatile 6, 11, METATILE_PokemonLeague_Entry_TopMid_Closed, 1
+ setmetatile 7, 11, METATILE_PokemonLeague_Entry_TopRight_Closed, 1
+ setmetatile 5, 12, METATILE_PokemonLeague_Entry_BottomLeft_Closed, 1
+ setmetatile 6, 12, METATILE_PokemonLeague_Entry_BottomMid_Closed, 1
+ setmetatile 7, 12, METATILE_PokemonLeague_Entry_BottomRight_Closed, 1
+ return
+
+PokemonLeague_Movement_ForcePlayerIn::
+ walk_up
+ step_end
+
+PokemonLeague_EventScript_DoLightingEffect::
+ special DoPokemonLeagueLightingEffect
+ return
+
+Text_VoiceRangOutDontRunAway::
+ .string "Someone's voice rang out,\n"
+ .string "“Don't run away!”$"
diff --git a/data/scripts/pokemon_mansion.inc b/data/scripts/pokemon_mansion.inc
new file mode 100644
index 000000000000..3c648dbfdf5d
--- /dev/null
+++ b/data/scripts/pokemon_mansion.inc
@@ -0,0 +1,206 @@
+PokemonMansion_EventScript_SecretSwitch::
+ msgbox PokemonMansion_Text_PressSecretSwitch, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, PokemonMansion_EventScript_DontPressSwitch
+ msgbox PokemonMansion_Text_WhoWouldnt
+ goto_if_set FLAG_POKEMON_MANSION_SWITCH_STATE, PokemonMansion_EventScript_ResetSwitch
+ setflag FLAG_POKEMON_MANSION_SWITCH_STATE
+ switch VAR_0x8004
+ case 0, PokemonMansion_EventScript_PressSwitch_1F
+ case 1, PokemonMansion_EventScript_PressSwitch_2F
+ case 2, PokemonMansion_EventScript_PressSwitch_3F
+ case 3, PokemonMansion_EventScript_PressSwitch_B1F
+ end
+
+PokemonMansion_EventScript_ResetSwitch::
+ clearflag FLAG_POKEMON_MANSION_SWITCH_STATE
+ switch VAR_0x8004
+ case 0, PokemonMansion_EventScript_ResetSwitch_1F
+ case 1, PokemonMansion_EventScript_ResetSwitch_2F
+ case 2, PokemonMansion_EventScript_ResetSwitch_3F
+ case 3, PokemonMansion_EventScript_ResetSwitch_B1F
+ end
+
+PokemonMansion_EventScript_DontPressSwitch::
+ msgbox PokemonMansion_Text_NotQuiteYet
+ releaseall
+ end
+
+PokemonMansion_EventScript_PressSwitch_1F::
+ setmetatile 22, 10, METATILE_PokemonMansion_Floor_ShadeFull, 0
+ setmetatile 23, 10, METATILE_PokemonMansion_Floor, 0
+ setmetatile 24, 10, METATILE_PokemonMansion_Floor, 0
+ setmetatile 22, 11, METATILE_PokemonMansion_Floor_ShadeFull, 0
+ setmetatile 23, 11, METATILE_PokemonMansion_Floor, 0
+ setmetatile 24, 11, METATILE_PokemonMansion_Floor, 0
+ setmetatile 27, 25, METATILE_PokemonMansion_Floor_ShadeFull, 0
+ setmetatile 28, 25, METATILE_PokemonMansion_Floor, 0
+ setmetatile 29, 25, METATILE_PokemonMansion_Floor, 0
+ setmetatile 27, 26, METATILE_PokemonMansion_Floor_ShadeFull, 0
+ setmetatile 28, 26, METATILE_PokemonMansion_Floor, 0
+ setmetatile 29, 26, METATILE_PokemonMansion_Floor, 0
+ setmetatile 32, 25, METATILE_PokemonMansion_Floor_ShadeFull, 0
+ setmetatile 33, 25, METATILE_PokemonMansion_Floor, 0
+ setmetatile 34, 25, METATILE_PokemonMansion_Floor, 0
+ setmetatile 32, 26, METATILE_PokemonMansion_Floor_ShadeFull, 0
+ setmetatile 33, 26, METATILE_PokemonMansion_Floor, 0
+ setmetatile 34, 26, METATILE_PokemonMansion_Floor, 0
+ setmetatile 31, 18, METATILE_PokemonMansion_Barrier_Horizontal_TopLeft, 1
+ setmetatile 32, 18, METATILE_PokemonMansion_Barrier_Horizontal_TopMid, 1
+ setmetatile 33, 18, METATILE_PokemonMansion_Barrier_Horizontal_TopRight, 1
+ setmetatile 31, 19, METATILE_PokemonMansion_Barrier_Horizontal_BottomLeft, 1
+ setmetatile 32, 19, METATILE_PokemonMansion_Barrier_Horizontal_BottomMid, 1
+ setmetatile 33, 19, METATILE_PokemonMansion_Barrier_Horizontal_BottomRight, 1
+ setmetatile 5, 4, METATILE_PokemonMansion_Statue_RedEyes, 0
+ return
+
+PokemonMansion_EventScript_ResetSwitch_1F::
+ setmetatile 22, 10, METATILE_PokemonMansion_Barrier_Horizontal_TopLeft, 1
+ setmetatile 23, 10, METATILE_PokemonMansion_Barrier_Horizontal_TopMid, 1
+ setmetatile 24, 10, METATILE_PokemonMansion_Barrier_Horizontal_TopRight, 1
+ setmetatile 22, 11, METATILE_PokemonMansion_Barrier_Horizontal_BottomLeft, 1
+ setmetatile 23, 11, METATILE_PokemonMansion_Barrier_Horizontal_BottomMid, 1
+ setmetatile 24, 11, METATILE_PokemonMansion_Barrier_Horizontal_BottomRight, 1
+ setmetatile 27, 25, METATILE_PokemonMansion_Barrier_Horizontal_TopLeft, 1
+ setmetatile 28, 25, METATILE_PokemonMansion_Barrier_Horizontal_TopMid, 1
+ setmetatile 29, 25, METATILE_PokemonMansion_Barrier_Horizontal_TopRight, 1
+ setmetatile 27, 26, METATILE_PokemonMansion_Barrier_Horizontal_BottomLeft, 1
+ setmetatile 28, 26, METATILE_PokemonMansion_Barrier_Horizontal_BottomMid, 1
+ setmetatile 29, 26, METATILE_PokemonMansion_Barrier_Horizontal_BottomRight, 1
+ setmetatile 32, 25, METATILE_PokemonMansion_Barrier_Horizontal_TopLeft, 1
+ setmetatile 33, 25, METATILE_PokemonMansion_Barrier_Horizontal_TopMid, 1
+ setmetatile 34, 25, METATILE_PokemonMansion_Barrier_Horizontal_TopRight, 1
+ setmetatile 32, 26, METATILE_PokemonMansion_Barrier_Horizontal_BottomLeft, 1
+ setmetatile 33, 26, METATILE_PokemonMansion_Barrier_Horizontal_BottomMid, 1
+ setmetatile 34, 26, METATILE_PokemonMansion_Barrier_Horizontal_BottomRight, 1
+ setmetatile 31, 18, METATILE_PokemonMansion_Floor_ShadeFull, 0
+ setmetatile 32, 18, METATILE_PokemonMansion_Floor, 0
+ setmetatile 33, 18, METATILE_PokemonMansion_Floor, 0
+ setmetatile 31, 19, METATILE_PokemonMansion_Floor_ShadeFull, 0
+ setmetatile 32, 19, METATILE_PokemonMansion_Floor, 0
+ setmetatile 33, 19, METATILE_PokemonMansion_Floor, 0
+ setmetatile 5, 4, METATILE_PokemonMansion_Statue_BlackEyes, 0
+ return
+
+PokemonMansion_EventScript_PressSwitch_2F::
+ setmetatile 24, 14, METATILE_PokemonMansion_Floor_ShadeFull, 0
+ setmetatile 25, 14, METATILE_PokemonMansion_Floor, 0
+ setmetatile 26, 14, METATILE_PokemonMansion_Floor, 0
+ setmetatile 24, 15, METATILE_PokemonMansion_Floor_ShadeFull, 0
+ setmetatile 25, 15, METATILE_PokemonMansion_Floor, 0
+ setmetatile 26, 15, METATILE_PokemonMansion_Floor, 0
+ setmetatile 10, 28, METATILE_PokemonMansion_Wall_EndPost_Mid, 1
+ setmetatile 10, 29, METATILE_PokemonMansion_Wall_EndPost_Bottom, 1
+ setmetatile 10, 30, METATILE_PokemonMansion_Floor_ShadeFull, 0
+ setmetatile 10, 31, METATILE_PokemonMansion_Floor, 0
+ setmetatile 10, 32, METATILE_PokemonMansion_Wall_EndCap, 0
+ setmetatile 12, 4, METATILE_PokemonMansion_Barrier_Vertical_TopWall, 1
+ setmetatile 12, 5, METATILE_PokemonMansion_Barrier_Vertical_TopBase, 1
+ setmetatile 12, 6, METATILE_PokemonMansion_Barrier_Vertical_MidShadow, 1
+ setmetatile 12, 7, METATILE_PokemonMansion_Barrier_Vertical_Mid, 1
+ setmetatile 12, 8, METATILE_PokemonMansion_Barrier_Vertical_Bottom, 1
+ setmetatile 2, 15, METATILE_PokemonMansion_Statue_RedEyes, 0
+ return
+
+PokemonMansion_EventScript_ResetSwitch_2F::
+ setmetatile 24, 14, METATILE_PokemonMansion_Barrier_Horizontal_TopLeft, 1
+ setmetatile 25, 14, METATILE_PokemonMansion_Barrier_Horizontal_TopMid, 1
+ setmetatile 26, 14, METATILE_PokemonMansion_Barrier_Horizontal_TopRight, 1
+ setmetatile 24, 15, METATILE_PokemonMansion_Barrier_Horizontal_BottomLeft, 1
+ setmetatile 25, 15, METATILE_PokemonMansion_Barrier_Horizontal_BottomMid, 1
+ setmetatile 26, 15, METATILE_PokemonMansion_Barrier_Horizontal_BottomRight, 1
+ setmetatile 10, 28, METATILE_PokemonMansion_Barrier_Vertical_TopWall, 1
+ setmetatile 10, 29, METATILE_PokemonMansion_Barrier_Vertical_TopBase, 1
+ setmetatile 10, 30, METATILE_PokemonMansion_Barrier_Vertical_MidShadow, 1
+ setmetatile 10, 31, METATILE_PokemonMansion_Barrier_Vertical_Mid, 1
+ setmetatile 10, 32, METATILE_PokemonMansion_Barrier_Vertical_Bottom, 1
+ setmetatile 12, 4, METATILE_PokemonMansion_Wall_EndPost_Mid, 1
+ setmetatile 12, 5, METATILE_PokemonMansion_Wall_EndPost_Bottom, 1
+ setmetatile 12, 6, METATILE_PokemonMansion_Floor_ShadeFull, 0
+ setmetatile 12, 7, METATILE_PokemonMansion_Floor, 0
+ setmetatile 12, 8, METATILE_PokemonMansion_Wall_EndCap, 0
+ setmetatile 2, 15, METATILE_PokemonMansion_Statue_BlackEyes, 0
+ return
+
+PokemonMansion_EventScript_PressSwitch_3F::
+ setmetatile 17, 11, METATILE_PokemonMansion_Floor_ShadeFull, 0
+ setmetatile 18, 11, METATILE_PokemonMansion_Floor, 0
+ setmetatile 19, 11, METATILE_PokemonMansion_Floor, 0
+ setmetatile 17, 12, METATILE_PokemonMansion_Floor_ShadeFull, 0
+ setmetatile 18, 12, METATILE_PokemonMansion_Floor, 0
+ setmetatile 19, 12, METATILE_PokemonMansion_Floor, 0
+ setmetatile 21, 4, METATILE_PokemonMansion_Barrier_Vertical_TopWall, 1
+ setmetatile 21, 5, METATILE_PokemonMansion_Barrier_Vertical_TopBase, 1
+ setmetatile 21, 6, METATILE_PokemonMansion_Barrier_Vertical_MidShadow, 1
+ setmetatile 21, 7, METATILE_PokemonMansion_Barrier_Vertical_Mid, 1
+ setmetatile 21, 8, METATILE_PokemonMansion_Barrier_Vertical_Bottom, 1
+ setmetatile 12, 4, METATILE_PokemonMansion_Statue_RedEyes, 0
+ return
+
+PokemonMansion_EventScript_ResetSwitch_3F::
+ setmetatile 17, 11, METATILE_PokemonMansion_Barrier_Horizontal_TopLeft, 1
+ setmetatile 18, 11, METATILE_PokemonMansion_Barrier_Horizontal_TopMid, 1
+ setmetatile 19, 11, METATILE_PokemonMansion_Barrier_Horizontal_TopRight, 1
+ setmetatile 17, 12, METATILE_PokemonMansion_Barrier_Horizontal_BottomLeft, 1
+ setmetatile 18, 12, METATILE_PokemonMansion_Barrier_Horizontal_BottomMid, 1
+ setmetatile 19, 12, METATILE_PokemonMansion_Barrier_Horizontal_BottomRight, 1
+ setmetatile 21, 4, METATILE_PokemonMansion_Wall_EndPost_Mid, 1
+ setmetatile 21, 5, METATILE_PokemonMansion_Wall_EndPost_Bottom, 1
+ setmetatile 21, 6, METATILE_PokemonMansion_Floor_ShadeFull, 0
+ setmetatile 21, 7, METATILE_PokemonMansion_Floor, 0
+ setmetatile 21, 8, METATILE_PokemonMansion_Wall_EndCap, 0
+ setmetatile 12, 4, METATILE_PokemonMansion_Statue_BlackEyes, 0
+ return
+
+PokemonMansion_EventScript_PressSwitch_B1F::
+ setmetatile 33, 20, METATILE_PokemonMansion_Barrier_Horizontal_TopLeft, 1
+ setmetatile 34, 20, METATILE_PokemonMansion_Barrier_Horizontal_TopMid, 1
+ setmetatile 35, 20, METATILE_PokemonMansion_Barrier_Horizontal_TopRight, 1
+ setmetatile 33, 21, METATILE_PokemonMansion_Barrier_Horizontal_BottomLeft_Basement, 1
+ setmetatile 34, 21, METATILE_PokemonMansion_Barrier_Horizontal_BottomMid_Basement, 1
+ setmetatile 35, 21, METATILE_PokemonMansion_Barrier_Horizontal_BottomRight_Basement, 1
+ setmetatile 16, 26, METATILE_PokemonMansion_Barrier_Vertical_TopWall, 1
+ setmetatile 16, 27, METATILE_PokemonMansion_Barrier_Vertical_TopBase, 1
+ setmetatile 16, 28, METATILE_PokemonMansion_Barrier_Vertical_MidShadow_Basement, 1
+ setmetatile 16, 29, METATILE_PokemonMansion_Barrier_Vertical_Mid_Basement, 1
+ setmetatile 16, 30, METATILE_PokemonMansion_Barrier_Vertical_Bottom_Basement, 1
+ setmetatile 12, 8, METATILE_PokemonMansion_Wall_EndPost_Mid, 1
+ setmetatile 12, 9, METATILE_PokemonMansion_Wall_EndPost_Bottom, 1
+ setmetatile 12, 10, METATILE_PokemonMansion_BasementFloor_ShadeFull, 0
+ setmetatile 12, 11, METATILE_PokemonMansion_BasementFloor, 0
+ setmetatile 12, 12, METATILE_PokemonMansion_Wall_EndCap_Basement, 0
+ setmetatile 20, 22, METATILE_PokemonMansion_BasementFloor_ShadeFull, 0
+ setmetatile 21, 22, METATILE_PokemonMansion_BasementFloor, 0
+ setmetatile 22, 22, METATILE_PokemonMansion_BasementFloor, 0
+ setmetatile 20, 23, METATILE_PokemonMansion_BasementFloor_ShadeFull, 0
+ setmetatile 21, 23, METATILE_PokemonMansion_BasementFloor, 0
+ setmetatile 22, 23, METATILE_PokemonMansion_BasementFloor, 0
+ setmetatile 24, 28, METATILE_PokemonMansion_Statue_RedEyes_Basement, 0
+ setmetatile 27, 4, METATILE_PokemonMansion_Statue_RedEyes_Basement, 0
+ return
+
+PokemonMansion_EventScript_ResetSwitch_B1F::
+ setmetatile 33, 20, METATILE_PokemonMansion_BasementFloor_ShadeFull, 0
+ setmetatile 34, 20, METATILE_PokemonMansion_BasementFloor, 0
+ setmetatile 35, 20, METATILE_PokemonMansion_BasementFloor, 0
+ setmetatile 33, 21, METATILE_PokemonMansion_BasementFloor_ShadeFull, 0
+ setmetatile 34, 21, METATILE_PokemonMansion_BasementFloor, 0
+ setmetatile 35, 21, METATILE_PokemonMansion_BasementFloor, 0
+ setmetatile 16, 26, METATILE_PokemonMansion_Wall_EndPost_Mid, 1
+ setmetatile 16, 27, METATILE_PokemonMansion_Wall_EndPost_Bottom, 1
+ setmetatile 16, 28, METATILE_PokemonMansion_BasementFloor_ShadeFull, 0
+ setmetatile 16, 29, METATILE_PokemonMansion_BasementFloor, 0
+ setmetatile 16, 30, METATILE_PokemonMansion_Wall_EndCap_Basement, 0
+ setmetatile 12, 8, METATILE_PokemonMansion_Barrier_Vertical_TopWall, 1
+ setmetatile 12, 9, METATILE_PokemonMansion_Barrier_Vertical_TopBase, 1
+ setmetatile 12, 10, METATILE_PokemonMansion_Barrier_Vertical_MidShadow_Basement, 1
+ setmetatile 12, 11, METATILE_PokemonMansion_Barrier_Vertical_Mid_Basement, 1
+ setmetatile 12, 12, METATILE_PokemonMansion_Barrier_Vertical_Bottom_Basement, 1
+ setmetatile 20, 22, METATILE_PokemonMansion_Barrier_Horizontal_TopLeft, 1
+ setmetatile 21, 22, METATILE_PokemonMansion_Barrier_Horizontal_TopMid, 1
+ setmetatile 22, 22, METATILE_PokemonMansion_Barrier_Horizontal_TopRight, 1
+ setmetatile 20, 23, METATILE_PokemonMansion_Barrier_Horizontal_BottomLeft_Basement, 1
+ setmetatile 21, 23, METATILE_PokemonMansion_Barrier_Horizontal_BottomMid_Basement, 1
+ setmetatile 22, 23, METATILE_PokemonMansion_Barrier_Horizontal_BottomRight_Basement, 1
+ setmetatile 24, 28, METATILE_PokemonMansion_Statue_BlackEyes_Basement, 0
+ setmetatile 27, 4, METATILE_PokemonMansion_Statue_BlackEyes_Basement, 0
+ return
diff --git a/data/scripts/roulette.inc b/data/scripts/roulette.inc
index fcb09bef2789..694fa445b629 100644
--- a/data/scripts/roulette.inc
+++ b/data/scripts/roulette.inc
@@ -22,46 +22,3 @@ Roulette_EventScript_Play::
special PlayRoulette
waitstate
end
-
-Roulette_Text_PlayMinimumWagerIsX::
- .string "The minimum wager at this table\n"
- .string "is {STR_VAR_1}. Do you want to play?$"
-
-Roulette_Text_NotEnoughCoins::
- .string "You don't have enough COINS.$"
-
-Roulette_Text_SpecialRateTable::
- .string "Special rate table right now!$"
-
-Roulette_Text_ControlsInstruction::
- .string "Place your wager with the + Control\n"
- .string "Pad, then press the A Button.$"
-
-Roulette_Text_ItsAHit::
- .string "It's a hit!$"
-
-Roulette_Text_Jackpot::
- .string "Jackpot!$"
-
-Roulette_Text_NothingDoing::
- .string "Nothing doing!$"
-
-Roulette_Text_YouveWonXCoins::
- .string "You've won {STR_VAR_1} COINS!$"
-
-Roulette_Text_NoCoinsLeft::
- .string "No COINS left…$"
-
-Roulette_Text_KeepPlaying::
- .string "Keep playing?$"
-
-Roulette_Text_BoardWillBeCleared::
- .string "The ROULETTE board will be cleared.$"
-
-@ Unused
-Roulette_Text_YouDontHaveACoinCase::
- .string "You don't have a COIN CASE.$"
-
-Roulette_Text_CoinCaseIsFull::
- .string "Your COIN CASE is full!\n"
- .string "Coins can be exchanged for prizes.$"
diff --git a/data/scripts/route23.inc b/data/scripts/route23.inc
new file mode 100644
index 000000000000..16d58856d97b
--- /dev/null
+++ b/data/scripts/route23.inc
@@ -0,0 +1,242 @@
+Route23_EventScript_MissingBoulderBadge::
+ msgbox Text_OnlySkilledTrainersAllowedThrough
+ playse SE_BOO
+ msgbox Text_CantLetYouPass
+ release
+ end
+
+Route23_EventScript_MissingBadge::
+ message Text_OnlyPassWithBadgeDontHaveYet
+ waitmessage
+ playse SE_BOO
+ waitbuttonpress
+ closemessage
+ waitse
+ release
+ end
+
+Route23_EventScript_AlreadyRecognizedBoulderBadge::
+ message Text_OhThatsBadgeGoRightAhead
+ waitmessage
+ playfanfare MUS_LEVEL_UP
+ waitfanfare
+ waitbuttonpress
+ release
+ end
+
+Route23_EventScript_AlreadyRecognizedBadge::
+ msgbox Text_OnlyPassWithBadgeOhGoAhead
+ release
+ end
+
+@ Duplicate of the below, only used for Boulder Badge
+Route22_NorthEntrance_EventScript_BadgeGuard::
+ goto_if_ge VAR_MAP_SCENE_ROUTE23, VAR_TEMP_1, Route23_EventScript_AlreadyRecognizedBoulderBadge
+ switch VAR_TEMP_1
+ case 1, Route23_EventScript_CheckBoulderBadge
+ case 2, Route23_EventScript_CheckCascadeBadge
+ case 3, Route23_EventScript_CheckThunderBadge
+ case 4, Route23_EventScript_CheckRainbowBadge
+ case 5, Route23_EventScript_CheckSoulBadge
+ case 6, Route23_EventScript_CheckMarshBadge
+ case 7, Route23_EventScript_CheckVolcanoBadge
+ case 8, Route23_EventScript_CheckEarthBadge
+ end
+
+Route23_EventScript_BadgeGuard::
+ goto_if_ge VAR_MAP_SCENE_ROUTE23, VAR_TEMP_1, Route23_EventScript_AlreadyRecognizedBadge
+ switch VAR_TEMP_1
+ case 1, Route23_EventScript_CheckBoulderBadge
+ case 2, Route23_EventScript_CheckCascadeBadge
+ case 3, Route23_EventScript_CheckThunderBadge
+ case 4, Route23_EventScript_CheckRainbowBadge
+ case 5, Route23_EventScript_CheckSoulBadge
+ case 6, Route23_EventScript_CheckMarshBadge
+ case 7, Route23_EventScript_CheckVolcanoBadge
+ case 8, Route23_EventScript_CheckEarthBadge
+ end
+
+Route23_EventScript_CheckBoulderBadge::
+ goto_if_set FLAG_BADGE01_GET, Route23_EventScript_RecognizeBoulderBadge
+ goto Route23_EventScript_MissingBoulderBadge
+ end
+
+Route23_EventScript_CheckCascadeBadge::
+ goto_if_set FLAG_BADGE02_GET, Route23_EventScript_RecognizeBadge
+ goto Route23_EventScript_MissingBadge
+ end
+
+Route23_EventScript_CheckThunderBadge::
+ goto_if_set FLAG_BADGE03_GET, Route23_EventScript_RecognizeBadge
+ goto Route23_EventScript_MissingBadge
+ end
+
+Route23_EventScript_CheckRainbowBadge::
+ goto_if_set FLAG_BADGE04_GET, Route23_EventScript_RecognizeBadge
+ goto Route23_EventScript_MissingBadge
+ end
+
+Route23_EventScript_CheckSoulBadge::
+ goto_if_set FLAG_BADGE05_GET, Route23_EventScript_RecognizeBadge
+ goto Route23_EventScript_MissingBadge
+ end
+
+Route23_EventScript_CheckMarshBadge::
+ goto_if_set FLAG_BADGE06_GET, Route23_EventScript_RecognizeBadge
+ goto Route23_EventScript_MissingBadge
+ end
+
+Route23_EventScript_CheckVolcanoBadge::
+ goto_if_set FLAG_BADGE07_GET, Route23_EventScript_RecognizeBadge
+ goto Route23_EventScript_MissingBadge
+ end
+
+Route23_EventScript_CheckEarthBadge::
+ goto_if_set FLAG_BADGE08_GET, Route23_EventScript_RecognizeBadge
+ goto Route23_EventScript_MissingBadge
+ end
+
+Route23_EventScript_RecognizeBoulderBadge::
+ message Text_OhThatsBadgeGoRightAhead
+ waitmessage
+ playfanfare MUS_LEVEL_UP
+ waitfanfare
+ waitbuttonpress
+ copyvar VAR_MAP_SCENE_ROUTE23, VAR_TEMP_1
+ release
+ end
+
+Route23_EventScript_RecognizeBadge::
+ msgbox Text_OnlyPassWithBadgeOhGoAhead
+ copyvar VAR_MAP_SCENE_ROUTE23, VAR_TEMP_1
+ release
+ end
+
+Route23_EventScript_BadgeGuardTrigger::
+ textcolor NPC_TEXT_COLOR_MALE
+ applymovement VAR_0x8009, Common_Movement_WalkInPlaceFasterLeft
+ waitmovement 0
+ switch VAR_TEMP_1
+ case 1, Route23_EventScript_CheckBoulderBadgeTrigger
+ case 2, Route23_EventScript_CheckCascadeBadgeTrigger
+ case 3, Route23_EventScript_CheckThunderBadgeTrigger
+ case 4, Route23_EventScript_CheckRainbowBadgeTrigger
+ case 5, Route23_EventScript_CheckSoulBadgeTrigger
+ case 6, Route23_EventScript_CheckMarshBadgeTrigger
+ case 7, Route23_EventScript_CheckVolcanoBadgeTrigger
+ case 8, Route23_EventScript_CheckEarthBadgeTrigger
+ end
+
+Route23_EventScript_CheckBoulderBadgeTrigger::
+ goto_if_set FLAG_BADGE01_GET, Route23_EventScript_RecognizeBoulderBadgeTrigger
+ goto Route23_EventScript_MissingBoulderBadgeTrigger
+ end
+
+Route23_EventScript_CheckCascadeBadgeTrigger::
+ goto_if_set FLAG_BADGE02_GET, Route23_EventScript_RecognizeBadgeTrigger
+ goto Route23_EventScript_MissingBadgeTrigger
+ end
+
+Route23_EventScript_CheckThunderBadgeTrigger::
+ goto_if_set FLAG_BADGE03_GET, Route23_EventScript_RecognizeBadgeTrigger
+ goto Route23_EventScript_MissingBadgeTrigger
+ end
+
+Route23_EventScript_CheckRainbowBadgeTrigger::
+ goto_if_set FLAG_BADGE04_GET, Route23_EventScript_RecognizeBadgeTrigger
+ goto Route23_EventScript_MissingBadgeTrigger
+ end
+
+Route23_EventScript_CheckSoulBadgeTrigger::
+ goto_if_set FLAG_BADGE05_GET, Route23_EventScript_RecognizeBadgeTrigger
+ goto Route23_EventScript_MissingBadgeTrigger
+ end
+
+Route23_EventScript_CheckMarshBadgeTrigger::
+ goto_if_set FLAG_BADGE06_GET, Route23_EventScript_RecognizeBadgeTrigger
+ goto Route23_EventScript_MissingBadgeTrigger
+ end
+
+Route23_EventScript_CheckVolcanoBadgeTrigger::
+ goto_if_set FLAG_BADGE07_GET, Route23_EventScript_RecognizeBadgeTrigger
+ goto Route23_EventScript_MissingBadgeTrigger
+ end
+
+Route23_EventScript_CheckEarthBadgeTrigger::
+ goto_if_set FLAG_BADGE08_GET, Route23_EventScript_RecognizeBadgeTrigger
+ goto Route23_EventScript_MissingBadgeTrigger
+ end
+
+Route23_EventScript_MissingBoulderBadgeTrigger::
+ msgbox Text_OnlySkilledTrainersAllowedThrough
+ playse SE_BOO
+ msgbox Text_CantLetYouPass
+ closemessage
+ applymovement LOCALID_PLAYER, Route23_Movement_WalkDown
+ applymovement VAR_0x8009, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ releaseall
+ end
+
+Route23_EventScript_MissingBadgeTrigger::
+ message Text_OnlyPassWithBadgeDontHaveYet
+ waitmessage
+ playse SE_BOO
+ waitbuttonpress
+ closemessage
+ waitse
+ applymovement LOCALID_PLAYER, Route23_Movement_WalkDown
+ applymovement VAR_0x8009, Common_Movement_WalkInPlaceFasterDown
+ waitmovement 0
+ releaseall
+ end
+
+Route23_EventScript_RecognizeBoulderBadgeTrigger::
+ message Text_OhThatsBadgeGoRightAhead
+ waitmessage
+ playfanfare MUS_LEVEL_UP
+ waitfanfare
+ waitbuttonpress
+ copyvar VAR_MAP_SCENE_ROUTE23, VAR_TEMP_1
+ releaseall
+ end
+
+Route23_EventScript_RecognizeBadgeTrigger::
+ msgbox Text_OnlyPassWithBadgeOhGoAhead
+ copyvar VAR_MAP_SCENE_ROUTE23, VAR_TEMP_1
+ releaseall
+ end
+
+Route23_Movement_WalkDown::
+ walk_down
+ step_end
+
+Text_OnlySkilledTrainersAllowedThrough::
+ .string "Only truly skilled TRAINERS are\n"
+ .string "allowed through.\p"
+ .string "You don't have the {STR_VAR_1}\n"
+ .string "yet!$"
+
+Text_CantLetYouPass::
+ .string "Rules are rules.\n"
+ .string "I can't let you pass.$"
+
+Text_OhThatsBadgeGoRightAhead::
+ .string "Oh! That is the {STR_VAR_1}!\n"
+ .string "Go right ahead.$"
+
+Text_OnlyPassWithBadgeDontHaveYet::
+ .string "You can pass here only if you have\n"
+ .string "the {STR_VAR_1}.\p"
+ .string "You don't have the {STR_VAR_1}\n"
+ .string "yet.\p"
+ .string "You have to have it to get to\n"
+ .string "the POKéMON LEAGUE.$"
+
+Text_OnlyPassWithBadgeOhGoAhead::
+ .string "You can pass here only if you have\n"
+ .string "the {STR_VAR_1}.\p"
+ .string "Oh! That is the {STR_VAR_1}!{PAUSE_MUSIC}{PLAY_BGM}{MUS_LEVEL_UP}{PAUSE 0x60}{RESUME_MUSIC}\p"
+ .string "Okay, then.\n"
+ .string "Please, go right ahead.$"
+
diff --git a/data/scripts/safari_zone.inc b/data/scripts/safari_zone.inc
index 77e795a0eb99..3f528019a207 100644
--- a/data/scripts/safari_zone.inc
+++ b/data/scripts/safari_zone.inc
@@ -1,13 +1,29 @@
SafariZone_EventScript_OutOfBallsMidBattle::
+#ifdef IS_FRLG
+ setvar VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 3
+#else
setvar VAR_SAFARI_ZONE_STATE, 1
+#endif
special ExitSafariMode
+#ifdef IS_FRLG
+ setwarp MAP_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 4, 1
+#else
setwarp MAP_ROUTE121_SAFARI_ZONE_ENTRANCE, 2, 5
+#endif
end
SafariZone_EventScript_Exit::
+#ifdef IS_FRLG
+ setvar VAR_MAP_SCENE_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 1
+#else
setvar VAR_SAFARI_ZONE_STATE, 1
+#endif
special ExitSafariMode
+#ifdef IS_FRLG
+ warp MAP_FUCHSIA_CITY_SAFARI_ZONE_ENTRANCE, 4, 1
+#else
warp MAP_ROUTE121_SAFARI_ZONE_ENTRANCE, 2, 5
+#endif
waitstate
end
diff --git a/data/scripts/seagallop.inc b/data/scripts/seagallop.inc
new file mode 100644
index 000000000000..0d60c0f23595
--- /dev/null
+++ b/data/scripts/seagallop.inc
@@ -0,0 +1,199 @@
+@ Separate selection menus for before the Rainbow Pass is obtained
+EventScript_ChooseDestFromOneIsland::
+ goto_if_ge VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 5, EventScript_SeviiDestinationsPage1
+ goto_if_ge VAR_MAP_SCENE_CINNABAR_ISLAND, 4, EventScript_ChooseDestFromOneIslandVermilionAllowed
+ multichoice 19, 6, MULTI_ISLAND_23, FALSE
+ switch VAR_RESULT
+ case 0, EventScript_SailToTwoIsland2
+ case 1, EventScript_SailToThreeIsland2
+ case 2, EventScript_CancelSail
+ case MULTI_B_PRESSED, EventScript_CancelSail
+ end
+
+EventScript_ChooseDestFromOneIslandVermilionAllowed::
+ multichoice 19, 5, MULTI_SEAGALLOP_V23, FALSE
+ switch VAR_RESULT
+ case 0, EventScript_SailToVermilion2
+ case 1, EventScript_SailToTwoIsland2
+ case 2, EventScript_SailToThreeIsland2
+ case 3, EventScript_CancelSail
+ case MULTI_B_PRESSED, EventScript_CancelSail
+ end
+
+EventScript_ChooseDestFromTwoIsland::
+ goto_if_ge VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 5, EventScript_SeviiDestinationsPage1
+ goto_if_ge VAR_MAP_SCENE_CINNABAR_ISLAND, 4, EventScript_ChooseDestFromTwoIslandVermilionAllowed
+ multichoice 19, 6, MULTI_ISLAND_13, FALSE
+ switch VAR_RESULT
+ case 0, EventScript_SailToOneIsland2
+ case 1, EventScript_SailToThreeIsland2
+ case 2, EventScript_CancelSail
+ case MULTI_B_PRESSED, EventScript_CancelSail
+ end
+
+EventScript_ChooseDestFromTwoIslandVermilionAllowed::
+ multichoice 19, 5, MULTI_SEAGALLOP_V13, FALSE
+ switch VAR_RESULT
+ case 0, EventScript_SailToVermilion2
+ case 1, EventScript_SailToOneIsland2
+ case 2, EventScript_SailToThreeIsland2
+ case 3, EventScript_CancelSail
+ case MULTI_B_PRESSED, EventScript_CancelSail
+ end
+
+EventScript_SailToVermilion2::
+ setvar VAR_0x8006, SEAGALLOP_VERMILION_CITY
+ goto EventScript_SailToDest
+ end
+
+EventScript_SailToOneIsland2::
+ setvar VAR_0x8006, SEAGALLOP_ONE_ISLAND
+ goto EventScript_SailToDest
+ end
+
+EventScript_SailToTwoIsland2::
+ setvar VAR_0x8006, SEAGALLOP_TWO_ISLAND
+ goto EventScript_SailToDest
+ end
+
+EventScript_SailToThreeIsland2::
+ setvar VAR_0x8006, SEAGALLOP_THREE_ISLAND
+ goto EventScript_SailToDest
+ end
+
+EventScript_ChooseDestFromIsland::
+ goto_if_ge VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 5, EventScript_SeviiDestinationsPage1
+ goto_if_ge VAR_MAP_SCENE_CINNABAR_ISLAND, 4, EventScript_ChooseDestFromIslandVermilionAllowed
+ multichoice 19, 6, MULTI_ISLAND_12, FALSE
+ switch VAR_RESULT
+ case 0, EventScript_SailToOneIsland2
+ case 1, EventScript_SailToTwoIsland2
+ case 2, EventScript_CancelSail
+ case MULTI_B_PRESSED, EventScript_CancelSail
+ end
+
+EventScript_ChooseDestFromIslandVermilionAllowed::
+ multichoice 19, 5, MULTI_SEAGALLOP_V12, FALSE
+ switch VAR_RESULT
+ case 0, EventScript_SailToVermilion2
+ case 1, EventScript_SailToOneIsland2
+ case 2, EventScript_SailToTwoIsland2
+ case 3, EventScript_CancelSail
+ case MULTI_B_PRESSED, EventScript_CancelSail
+ end
+
+EventScript_SailToDest::
+ specialvar VAR_RESULT, GetSeagallopNumber
+ buffernumberstring STR_VAR_1, VAR_RESULT
+ goto_if_eq VAR_0x8004, SEAGALLOP_VERMILION_CITY, EventScript_DepartingVermilion
+ goto_if_ne VAR_0x8004, SEAGALLOP_VERMILION_CITY, EventScript_DepartingNotVermilion
+ end
+
+EventScript_DepartingVermilion::
+ msgbox VermilionCity_Text_Seagallop7Departing
+ goto EventScript_SetSail
+ end
+
+EventScript_DepartingNotVermilion::
+ msgbox Text_AllAboardSeagallopNum
+ goto EventScript_SetSail
+ end
+
+EventScript_SetSail::
+ closemessage
+ delay 20
+ fadescreen FADE_TO_BLACK
+ special DoSeagallopFerryScene
+ waitstate
+ end
+
+EventScript_CancelSail::
+ specialvar VAR_RESULT, IsPlayerLeftOfVermilionSailor
+ goto_if_eq VAR_RESULT, TRUE, VermilionCity_EventScript_WalkUpPier
+ release
+ end
+
+VermilionCity_EventScript_WalkUpPier::
+ closemessage
+ applymovement LOCALID_VERMILION_FERRY_SAILOR, Common_Movement_FaceOriginalDirection
+ applymovement LOCALID_PLAYER, VermilionCity_Movement_WalkUp
+ waitmovement 0
+ releaseall
+ end
+
+VermilionCity_Movement_WalkUp::
+ walk_up
+ step_end
+
+EventScript_SeviiDestinationsPage1::
+ setvar VAR_0x8005, 0
+ special DrawSeagallopDestinationMenu
+ waitstate
+ specialvar VAR_0x8006, GetSelectedSeagallopDestination
+ switch VAR_0x8006
+ case SEAGALLOP_VERMILION_CITY, EventScript_SailToVermilionCity
+ case SEAGALLOP_ONE_ISLAND, EventScript_SailToOneIsland
+ case SEAGALLOP_TWO_ISLAND, EventScript_SailToTwoIsland
+ case SEAGALLOP_THREE_ISLAND, EventScript_SailToThreeIsland
+ case SEAGALLOP_FOUR_ISLAND, EventScript_SailToFourIsland
+ case SEAGALLOP_MORE, EventScript_SeviiDestinationsPage2
+ case MULTI_B_PRESSED, EventScript_CancelSail
+ end
+
+EventScript_SeviiDestinationsPage2::
+ setvar VAR_0x8005, 1
+ special DrawSeagallopDestinationMenu
+ waitstate
+ specialvar VAR_0x8006, GetSelectedSeagallopDestination
+ switch VAR_0x8006
+ case SEAGALLOP_FOUR_ISLAND, EventScript_SailToFourIsland
+ case SEAGALLOP_FIVE_ISLAND, EventScript_SailToFiveIsland
+ case SEAGALLOP_SIX_ISLAND, EventScript_SailToSixIsland
+ case SEAGALLOP_SEVEN_ISLAND, EventScript_SailToSevenIsland
+ case SEAGALLOP_MORE, EventScript_SeviiDestinationsPage1
+ case MULTI_B_PRESSED, EventScript_CancelSail
+ end
+
+EventScript_SailToVermilionCity::
+ setvar VAR_0x8006, SEAGALLOP_VERMILION_CITY
+ goto EventScript_SailToDest
+ end
+
+EventScript_SailToOneIsland::
+ setvar VAR_0x8006, SEAGALLOP_ONE_ISLAND
+ goto EventScript_SailToDest
+ end
+
+EventScript_SailToTwoIsland::
+ setvar VAR_0x8006, SEAGALLOP_TWO_ISLAND
+ goto EventScript_SailToDest
+ end
+
+EventScript_SailToThreeIsland::
+ setvar VAR_0x8006, SEAGALLOP_THREE_ISLAND
+ goto EventScript_SailToDest
+ end
+
+EventScript_SailToFourIsland::
+ setvar VAR_0x8006, SEAGALLOP_FOUR_ISLAND
+ goto EventScript_SailToDest
+ end
+
+EventScript_SailToFiveIsland::
+ setvar VAR_0x8006, SEAGALLOP_FIVE_ISLAND
+ goto EventScript_SailToDest
+ end
+
+EventScript_SailToSixIsland::
+ setvar VAR_0x8006, SEAGALLOP_SIX_ISLAND
+ goto EventScript_SailToDest
+ end
+
+EventScript_SailToSevenIsland::
+ setvar VAR_0x8006, SEAGALLOP_SEVEN_ISLAND
+ goto EventScript_SailToDest
+ end
+
+Text_AllAboardSeagallopNum::
+ .string "All right!\n"
+ .string "All aboard SEAGALLOP HI-SPEED {STR_VAR_1}!$"
diff --git a/data/scripts/set_gym_trainers.inc b/data/scripts/set_gym_trainers.inc
index 1faa9f7d5bca..d9cc41485b52 100644
--- a/data/scripts/set_gym_trainers.inc
+++ b/data/scripts/set_gym_trainers.inc
@@ -9,6 +9,18 @@ Common_EventScript_SetGymTrainers::
case 7, MossdeepCity_Gym_SetGymTrainers
case 8, SootopolisCity_Gym_SetGymTrainers
end
+
+Common_EventScript_SetGymTrainers_Frlg::
+ switch VAR_0x8008
+ case 1, EventScript_SetPewterGymTrainers
+ case 2, EventScript_SetCeruleanGymTrainers
+ case 3, EventScript_SetVermilionGymTrainers
+ case 4, EventScript_SetCeladonGymTrainers
+ case 5, EventScript_SetFuchsiaGymTrainers
+ case 6, EventScript_SetSaffronGymTrainers
+ case 7, EventScript_SetCinnabarGymTrainers
+ case 8, EventScript_SetViridianGymTrainers
+ end
RustboroCity_Gym_SetGymTrainers::
settrainerflag TRAINER_JOSH
@@ -90,3 +102,68 @@ SootopolisCity_Gym_SetGymTrainers::
settrainerflag TRAINER_ANNIKA
settrainerflag TRAINER_DAPHNE
return
+
+EventScript_SetPewterGymTrainers::
+ settrainerflag TRAINER_CAMPER_LIAM
+ return
+
+EventScript_SetCeruleanGymTrainers::
+ settrainerflag TRAINER_PICNICKER_DIANA
+ settrainerflag TRAINER_SWIMMER_MALE_LUIS
+ return
+
+EventScript_SetVermilionGymTrainers::
+ settrainerflag TRAINER_SAILOR_DWAYNE
+ settrainerflag TRAINER_ENGINEER_BAILY
+ settrainerflag TRAINER_GENTLEMAN_TUCKER
+ return
+
+EventScript_SetCeladonGymTrainers::
+ settrainerflag TRAINER_LASS_KAY
+ settrainerflag TRAINER_LASS_LISA
+ settrainerflag TRAINER_PICNICKER_TINA
+ settrainerflag TRAINER_BEAUTY_BRIDGET
+ settrainerflag TRAINER_BEAUTY_TAMIA
+ settrainerflag TRAINER_BEAUTY_LORI
+ settrainerflag TRAINER_COOLTRAINER_MARY
+ return
+
+EventScript_SetFuchsiaGymTrainers::
+ settrainerflag TRAINER_TAMER_PHIL
+ settrainerflag TRAINER_TAMER_EDGAR
+ settrainerflag TRAINER_JUGGLER_KIRK
+ settrainerflag TRAINER_JUGGLER_SHAWN
+ settrainerflag TRAINER_JUGGLER_KAYDEN
+ settrainerflag TRAINER_JUGGLER_NATE
+ return
+
+EventScript_SetSaffronGymTrainers::
+ settrainerflag TRAINER_PSYCHIC_JOHAN
+ settrainerflag TRAINER_PSYCHIC_TYRON
+ settrainerflag TRAINER_PSYCHIC_CAMERON
+ settrainerflag TRAINER_PSYCHIC_PRESTON
+ settrainerflag TRAINER_CHANNELER_AMANDA
+ settrainerflag TRAINER_CHANNELER_STACY
+ settrainerflag TRAINER_CHANNELER_TASHA
+ return
+
+EventScript_SetCinnabarGymTrainers::
+ settrainerflag TRAINER_SUPER_NERD_ERIK
+ settrainerflag TRAINER_SUPER_NERD_AVERY
+ settrainerflag TRAINER_SUPER_NERD_DEREK
+ settrainerflag TRAINER_SUPER_NERD_ZAC
+ settrainerflag TRAINER_BURGLAR_QUINN
+ settrainerflag TRAINER_BURGLAR_RAMON
+ settrainerflag TRAINER_BURGLAR_DUSTY
+ return
+
+EventScript_SetViridianGymTrainers::
+ settrainerflag TRAINER_TAMER_JASON
+ settrainerflag TRAINER_TAMER_COLE
+ settrainerflag TRAINER_BLACK_BELT_ATSUSHI
+ settrainerflag TRAINER_BLACK_BELT_KIYO
+ settrainerflag TRAINER_BLACK_BELT_TAKASHI
+ settrainerflag TRAINER_COOLTRAINER_SAMUEL
+ settrainerflag TRAINER_COOLTRAINER_YUJI
+ settrainerflag TRAINER_COOLTRAINER_WARREN
+ return
diff --git a/data/scripts/silphco_doors.inc b/data/scripts/silphco_doors.inc
new file mode 100644
index 000000000000..89ffe10e51b3
--- /dev/null
+++ b/data/scripts/silphco_doors.inc
@@ -0,0 +1,555 @@
+EventScript_NeedCardKey::
+ msgbox Text_ItNeedsCardKey
+ releaseall
+ end
+
+EventScript_DoorUnlocked::
+ msgbox Text_TheDoorIsOpen
+ releaseall
+ end
+
+EventScript_Close2FDoor1::
+ setmetatile 5, 8, METATILE_SilphCo_HorizontalBarrier_TopLeft, 1
+ setmetatile 6, 8, METATILE_SilphCo_HorizontalBarrier_TopRight, 1
+ setmetatile 5, 9, METATILE_SilphCo_HorizontalBarrier_BottomLeft, 1
+ setmetatile 6, 9, METATILE_SilphCo_HorizontalBarrier_BottomRight, 1
+ setmetatile 6, 10, METATILE_SilphCo_Floor_ShadeFull, 0
+ return
+
+EventScript_Close2FDoor2::
+ setmetatile 5, 15, METATILE_SilphCo_HorizontalBarrier_TopLeft, 1
+ setmetatile 6, 15, METATILE_SilphCo_HorizontalBarrier_TopRight, 1
+ setmetatile 5, 16, METATILE_SilphCo_HorizontalBarrier_BottomLeft, 1
+ setmetatile 6, 16, METATILE_SilphCo_HorizontalBarrier_BottomRight, 1
+ setmetatile 6, 17, METATILE_SilphCo_Floor_ShadeFull, 0
+ return
+
+EventScript_Close3FDoor1::
+ setmetatile 9, 11, METATILE_SilphCo_VerticalBarrier_TopLeft, 1
+ setmetatile 10, 11, METATILE_SilphCo_VerticalBarrier_TopRight, 1
+ setmetatile 9, 12, METATILE_SilphCo_VerticalBarrier_MidLeft, 1
+ setmetatile 10, 12, METATILE_SilphCo_VerticalBarrier_MidRight, 1
+ setmetatile 9, 13, METATILE_SilphCo_VerticalBarrier_BottomLeft, 1
+ setmetatile 10, 13, METATILE_SilphCo_VerticalBarrier_BottomRight, 1
+ return
+
+EventScript_Close3FDoor2::
+ setmetatile 20, 11, METATILE_SilphCo_VerticalBarrier_TopLeft, 1
+ setmetatile 21, 11, METATILE_SilphCo_VerticalBarrier_TopRight, 1
+ setmetatile 20, 12, METATILE_SilphCo_VerticalBarrier_MidLeft, 1
+ setmetatile 21, 12, METATILE_SilphCo_VerticalBarrier_MidRight, 1
+ setmetatile 20, 13, METATILE_SilphCo_VerticalBarrier_BottomLeft, 1
+ setmetatile 21, 13, METATILE_SilphCo_VerticalBarrier_BottomRight, 1
+ return
+
+EventScript_Close4FDoor1::
+ setmetatile 3, 16, METATILE_SilphCo_HorizontalBarrier_TopLeft, 1
+ setmetatile 4, 16, METATILE_SilphCo_HorizontalBarrier_TopRight, 1
+ setmetatile 3, 17, METATILE_SilphCo_HorizontalBarrier_BottomLeft, 1
+ setmetatile 4, 17, METATILE_SilphCo_HorizontalBarrier_BottomRight, 1
+ setmetatile 4, 18, METATILE_SilphCo_Floor_ShadeFull, 0
+ return
+
+EventScript_Close4FDoor2::
+ setmetatile 14, 11, METATILE_SilphCo_HorizontalBarrier_TopLeft, 1
+ setmetatile 15, 11, METATILE_SilphCo_HorizontalBarrier_TopRight, 1
+ setmetatile 14, 12, METATILE_SilphCo_HorizontalBarrier_BottomLeft, 1
+ setmetatile 15, 12, METATILE_SilphCo_HorizontalBarrier_BottomRight, 1
+ setmetatile 15, 13, METATILE_SilphCo_Floor_ShadeFull, 0
+ return
+
+EventScript_Close5FDoor1:: @ 81AMETATILE_SilphCo_Floor_WallRightCornerF
+ setmetatile 7, 8, METATILE_SilphCo_VerticalBarrier_TopLeft, 1
+ setmetatile 8, 8, METATILE_SilphCo_VerticalBarrier_TopRight, 1
+ setmetatile 7, 9, METATILE_SilphCo_VerticalBarrier_MidLeft, 1
+ setmetatile 8, 9, METATILE_SilphCo_VerticalBarrier_MidRight, 1
+ setmetatile 7, 10, METATILE_SilphCo_VerticalBarrier_BottomLeft, 1
+ setmetatile 8, 10, METATILE_SilphCo_VerticalBarrier_BottomRight, 1
+ return
+
+EventScript_Close5FDoor2::
+ setmetatile 7, 17, METATILE_SilphCo_VerticalBarrier_TopLeft, 1
+ setmetatile 8, 17, METATILE_SilphCo_VerticalBarrier_TopRight, 1
+ setmetatile 7, 18, METATILE_SilphCo_VerticalBarrier_MidLeft, 1
+ setmetatile 8, 18, METATILE_SilphCo_VerticalBarrier_MidRight, 1
+ setmetatile 7, 19, METATILE_SilphCo_VerticalBarrier_BottomLeft, 1
+ setmetatile 8, 19, METATILE_SilphCo_VerticalBarrier_BottomRight, 1
+ return
+
+EventScript_Close5FDoor3::
+ setmetatile 18, 12, METATILE_SilphCo_VerticalBarrier_TopLeft, 1
+ setmetatile 19, 12, METATILE_SilphCo_VerticalBarrier_TopRight, 1
+ setmetatile 18, 13, METATILE_SilphCo_VerticalBarrier_MidLeft, 1
+ setmetatile 19, 13, METATILE_SilphCo_VerticalBarrier_MidRight, 1
+ setmetatile 18, 14, METATILE_SilphCo_VerticalBarrier_BottomLeft, 1
+ setmetatile 19, 14, METATILE_SilphCo_VerticalBarrier_BottomRight, 1
+ return
+
+EventScript_Close6FDoor::
+ setmetatile 5, 14, METATILE_SilphCo_VerticalBarrier_TopLeft, 1
+ setmetatile 6, 14, METATILE_SilphCo_VerticalBarrier_TopRight, 1
+ setmetatile 5, 15, METATILE_SilphCo_VerticalBarrier_MidLeft, 1
+ setmetatile 6, 15, METATILE_SilphCo_VerticalBarrier_MidRight, 1
+ setmetatile 5, 16, METATILE_SilphCo_VerticalBarrier_BottomLeft, 1
+ setmetatile 6, 16, METATILE_SilphCo_VerticalBarrier_BottomRight, 1
+ return
+
+EventScript_Close7FDoor1::
+ setmetatile 11, 8, METATILE_SilphCo_HorizontalBarrier_TopLeft, 1
+ setmetatile 12, 8, METATILE_SilphCo_HorizontalBarrier_TopRight, 1
+ setmetatile 11, 9, METATILE_SilphCo_HorizontalBarrier_BottomLeft, 1
+ setmetatile 12, 9, METATILE_SilphCo_HorizontalBarrier_BottomRight, 1
+ setmetatile 12, 10, METATILE_SilphCo_Floor_ShadeFull, 0
+ return
+
+EventScript_Close7FDoor2::
+ setmetatile 24, 7, METATILE_SilphCo_HorizontalBarrier_TopLeft, 1
+ setmetatile 25, 7, METATILE_SilphCo_HorizontalBarrier_TopRight, 1
+ setmetatile 24, 8, METATILE_SilphCo_HorizontalBarrier_BottomLeft, 1
+ setmetatile 25, 8, METATILE_SilphCo_HorizontalBarrier_BottomRight, 1
+ setmetatile 25, 9, METATILE_SilphCo_Floor_ShadeFull, 0
+ return
+
+EventScript_Close7FDoor3::
+ setmetatile 25, 13, METATILE_SilphCo_HorizontalBarrier_TopLeft, 1
+ setmetatile 26, 13, METATILE_SilphCo_HorizontalBarrier_TopRight, 1
+ setmetatile 25, 14, METATILE_SilphCo_HorizontalBarrier_BottomLeft, 1
+ setmetatile 26, 14, METATILE_SilphCo_HorizontalBarrier_BottomRight, 1
+ setmetatile 26, 15, METATILE_SilphCo_Floor_ShadeFull, 0
+ return
+
+EventScript_Close8FDoor::
+ setmetatile 5, 9, METATILE_SilphCo_VerticalBarrier_TopLeft, 1
+ setmetatile 6, 9, METATILE_SilphCo_VerticalBarrier_TopRight, 1
+ setmetatile 5, 10, METATILE_SilphCo_VerticalBarrier_MidLeft, 1
+ setmetatile 6, 10, METATILE_SilphCo_VerticalBarrier_MidRight, 1
+ setmetatile 5, 11, METATILE_SilphCo_VerticalBarrier_BottomLeft, 1
+ setmetatile 6, 11, METATILE_SilphCo_VerticalBarrier_BottomRight, 1
+ return
+
+EventScript_Close9FDoor1::
+ setmetatile 2, 9, METATILE_SilphCo_VerticalBarrier_TopLeft, 1
+ setmetatile 3, 9, METATILE_SilphCo_VerticalBarrier_TopRight, 1
+ setmetatile 2, 10, METATILE_SilphCo_VerticalBarrier_MidLeft, 1
+ setmetatile 3, 10, METATILE_SilphCo_VerticalBarrier_MidRight, 1
+ setmetatile 2, 11, METATILE_SilphCo_VerticalBarrier_BottomLeft, 1
+ setmetatile 3, 11, METATILE_SilphCo_VerticalBarrier_BottomRight, 1
+ return
+
+EventScript_Close9FDoor2::
+ setmetatile 12, 15, METATILE_SilphCo_VerticalBarrier_TopLeft, 1
+ setmetatile 13, 15, METATILE_SilphCo_VerticalBarrier_TopRight, 1
+ setmetatile 12, 16, METATILE_SilphCo_VerticalBarrier_MidLeft, 1
+ setmetatile 13, 16, METATILE_SilphCo_VerticalBarrier_MidRight, 1
+ setmetatile 12, 17, METATILE_SilphCo_VerticalBarrier_BottomLeft, 1
+ setmetatile 13, 17, METATILE_SilphCo_VerticalBarrier_BottomRight, 1
+ return
+
+EventScript_Close9FDoor3::
+ setmetatile 21, 6, METATILE_SilphCo_HorizontalBarrier_TopLeft, 1
+ setmetatile 22, 6, METATILE_SilphCo_HorizontalBarrier_TopRight, 1
+ setmetatile 21, 7, METATILE_SilphCo_HorizontalBarrier_BottomLeft, 1
+ setmetatile 22, 7, METATILE_SilphCo_HorizontalBarrier_BottomRight, 1
+ setmetatile 22, 8, METATILE_SilphCo_Floor_ShadeFull, 0
+ return
+
+EventScript_Close9FDoor4::
+ setmetatile 21, 12, METATILE_SilphCo_HorizontalBarrier_TopLeft, 1
+ setmetatile 22, 12, METATILE_SilphCo_HorizontalBarrier_TopRight, 1
+ setmetatile 21, 13, METATILE_SilphCo_HorizontalBarrier_BottomLeft, 1
+ setmetatile 22, 13, METATILE_SilphCo_HorizontalBarrier_BottomRight, 1
+ setmetatile 22, 14, METATILE_SilphCo_Floor_ShadeFull, 0
+ return
+
+EventScript_Close10FDoor::
+ setmetatile 12, 11, METATILE_SilphCo_HorizontalBarrier_TopLeft, 1
+ setmetatile 13, 11, METATILE_SilphCo_HorizontalBarrier_TopRight, 1
+ setmetatile 12, 12, METATILE_SilphCo_HorizontalBarrier_BottomLeft, 1
+ setmetatile 13, 12, METATILE_SilphCo_HorizontalBarrier_BottomRight, 1
+ setmetatile 13, 13, METATILE_SilphCo_Floor_ShadeFull, 0
+ return
+
+EventScript_Close11FDoor::
+ setmetatile 5, 16, METATILE_SilphCo_HorizontalBarrier_TopLeft, 1
+ setmetatile 6, 16, METATILE_SilphCo_HorizontalBarrier_TopRight, 1
+ setmetatile 5, 17, METATILE_SilphCo_HorizontalBarrier_BottomLeft, 1
+ setmetatile 6, 17, METATILE_SilphCo_HorizontalBarrier_BottomRight, 1
+ setmetatile 6, 18, METATILE_SilphCo_Floor_ShadeFull, 0
+ return
+
+EventScript_Open2FDoor1::
+ setmetatile 5, 8, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 6, 8, METATILE_SilphCo_Floor, 0
+ setmetatile 5, 9, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 6, 9, METATILE_SilphCo_Floor, 0
+ setmetatile 6, 10, METATILE_SilphCo_Floor, 0
+ return
+
+EventScript_Open2FDoor2::
+ setmetatile 5, 15, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 6, 15, METATILE_SilphCo_Floor, 0
+ setmetatile 5, 16, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 6, 16, METATILE_SilphCo_Floor, 0
+ setmetatile 6, 17, METATILE_SilphCo_Floor, 0
+ return
+
+EventScript_Open3FDoor1::
+ setmetatile 9, 11, METATILE_SilphCo_Wall_LeftEdge, 1
+ setmetatile 10, 11, METATILE_SilphCo_Wall_RightEdge, 1
+ setmetatile 9, 12, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 10, 12, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 9, 13, METATILE_SilphCo_Floor_WallLeftCorner, 0
+ setmetatile 10, 13, METATILE_SilphCo_Floor_WallRightCorner, 0
+ return
+
+EventScript_Open3FDoor2::
+ setmetatile 20, 11, METATILE_SilphCo_Wall_LeftEdge, 1
+ setmetatile 21, 11, METATILE_SilphCo_Wall_RightEdge, 1
+ setmetatile 20, 12, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 21, 12, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 20, 13, METATILE_SilphCo_Floor_WallLeftCorner, 0
+ setmetatile 21, 13, METATILE_SilphCo_Floor_WallRightCorner, 0
+ return
+
+EventScript_Open4FDoor1::
+ setmetatile 3, 16, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 4, 16, METATILE_SilphCo_Floor, 0
+ setmetatile 3, 17, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 4, 17, METATILE_SilphCo_Floor, 0
+ setmetatile 4, 18, METATILE_SilphCo_Floor, 0
+ return
+
+EventScript_Open4FDoor2::
+ setmetatile 14, 11, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 15, 11, METATILE_SilphCo_Floor, 0
+ setmetatile 14, 12, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 15, 12, METATILE_SilphCo_Floor, 0
+ setmetatile 15, 13, METATILE_SilphCo_Floor, 0
+ return
+
+EventScript_Open5FDoor1::
+ setmetatile 7, 8, METATILE_SilphCo_Wall_LeftEdge, 1
+ setmetatile 8, 8, METATILE_SilphCo_Wall_RightEdge, 1
+ setmetatile 7, 9, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 8, 9, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 7, 10, METATILE_SilphCo_Floor_WallLeftCorner, 0
+ setmetatile 8, 10, METATILE_SilphCo_Floor_WallRightCorner, 0
+ return
+
+EventScript_Open5FDoor2::
+ setmetatile 7, 17, METATILE_SilphCo_Wall_LeftEdge, 1
+ setmetatile 8, 17, METATILE_SilphCo_Wall_RightEdge, 1
+ setmetatile 7, 18, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 8, 18, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 7, 19, METATILE_SilphCo_Floor_WallLeftCorner, 0
+ setmetatile 8, 19, METATILE_SilphCo_Floor_WallRightCorner, 0
+ return
+
+EventScript_Open5FDoor3::
+ setmetatile 18, 12, METATILE_SilphCo_Wall_LeftEdge, 1
+ setmetatile 19, 12, METATILE_SilphCo_Wall_RightEdge, 1
+ setmetatile 18, 13, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 19, 13, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 18, 14, METATILE_SilphCo_Floor_WallLeftCorner, 0
+ setmetatile 19, 14, METATILE_SilphCo_Floor_WallRightCorner, 0
+ return
+
+EventScript_Open6FDoor::
+ setmetatile 5, 14, METATILE_SilphCo_Wall_LeftEdge, 1
+ setmetatile 6, 14, METATILE_SilphCo_Wall_RightEdge, 1
+ setmetatile 5, 15, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 6, 15, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 5, 16, METATILE_SilphCo_Floor_WallLeftCorner, 0
+ setmetatile 6, 16, METATILE_SilphCo_Floor_WallRightCorner, 0
+ return
+
+EventScript_Open7FDoor1::
+ setmetatile 11, 8, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 12, 8, METATILE_SilphCo_Floor, 0
+ setmetatile 11, 9, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 12, 9, METATILE_SilphCo_Floor, 0
+ setmetatile 12, 10, METATILE_SilphCo_Floor, 0
+ return
+
+EventScript_Open7FDoor2::
+ setmetatile 24, 7, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 25, 7, METATILE_SilphCo_Floor, 0
+ setmetatile 24, 8, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 25, 8, METATILE_SilphCo_Floor, 0
+ setmetatile 25, 9, METATILE_SilphCo_Floor, 0
+ return
+
+EventScript_Open7FDoor3::
+ setmetatile 25, 13, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 26, 13, METATILE_SilphCo_Floor, 0
+ setmetatile 25, 14, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 26, 14, METATILE_SilphCo_Floor, 0
+ setmetatile 26, 15, METATILE_SilphCo_Floor, 0
+ return
+
+EventScript_Open8FDoor::
+ setmetatile 5, 9, METATILE_SilphCo_Wall_LeftEdge, 1
+ setmetatile 6, 9, METATILE_SilphCo_Wall_RightEdge, 1
+ setmetatile 5, 10, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 6, 10, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 5, 11, METATILE_SilphCo_Floor_WallLeftCorner, 0
+ setmetatile 6, 11, METATILE_SilphCo_Floor_WallRightCorner, 0
+ return
+
+EventScript_Open9FDoor1::
+ setmetatile 2, 9, METATILE_SilphCo_Wall_LeftEdge, 1
+ setmetatile 3, 9, METATILE_SilphCo_Wall_RightEdge, 1
+ setmetatile 2, 10, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 3, 10, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 2, 11, METATILE_SilphCo_Floor_WallLeftCorner, 0
+ setmetatile 3, 11, METATILE_SilphCo_Floor_WallRightCorner, 0
+ return
+
+EventScript_Open9FDoor2::
+ setmetatile 12, 15, METATILE_SilphCo_Wall_LeftEdge, 1
+ setmetatile 13, 15, METATILE_SilphCo_Wall_RightEdge, 1
+ setmetatile 12, 16, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 13, 16, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 12, 17, METATILE_SilphCo_Floor_WallLeftCorner, 0
+ setmetatile 13, 17, METATILE_SilphCo_Floor_WallRightCorner, 0
+ return
+
+EventScript_Open9FDoor3::
+ setmetatile 21, 6, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 22, 6, METATILE_SilphCo_Floor, 0
+ setmetatile 21, 7, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 22, 7, METATILE_SilphCo_Floor, 0
+ setmetatile 22, 8, METATILE_SilphCo_Floor, 0
+ return
+
+EventScript_Open9FDoor4::
+ setmetatile 21, 12, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 22, 12, METATILE_SilphCo_Floor, 0
+ setmetatile 21, 13, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 22, 13, METATILE_SilphCo_Floor, 0
+ setmetatile 22, 14, METATILE_SilphCo_Floor, 0
+ return
+
+EventScript_Open10FDoor::
+ setmetatile 12, 11, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 13, 11, METATILE_SilphCo_Floor, 0
+ setmetatile 12, 12, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 13, 12, METATILE_SilphCo_Floor, 0
+ setmetatile 13, 13, METATILE_SilphCo_Floor, 0
+ return
+
+EventScript_Open11FDoor::
+ setmetatile 5, 16, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 6, 16, METATILE_SilphCo_Floor, 0
+ setmetatile 5, 17, METATILE_SilphCo_Floor_ShadeFull, 0
+ setmetatile 6, 17, METATILE_SilphCo_Floor, 0
+ setmetatile 6, 18, METATILE_SilphCo_Floor, 0
+ return
+
+SilphCo_2F_EventScript_Door1::
+ lockall
+ setvar VAR_TEMP_1, 1
+ setvar VAR_0x8004, FLAG_SILPH_2F_DOOR_1
+ goto_if_set FLAG_SILPH_2F_DOOR_1, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_2F_EventScript_Door2::
+ lockall
+ setvar VAR_TEMP_1, 2
+ setvar VAR_0x8004, FLAG_SILPH_2F_DOOR_2
+ goto_if_set FLAG_SILPH_2F_DOOR_2, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_3F_EventScript_Door1::
+ lockall
+ setvar VAR_TEMP_1, 3
+ setvar VAR_0x8004, FLAG_SILPH_3F_DOOR_1
+ goto_if_set FLAG_SILPH_3F_DOOR_1, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_3F_EventScript_Door2::
+ lockall
+ setvar VAR_TEMP_1, 4
+ setvar VAR_0x8004, FLAG_SILPH_3F_DOOR_2
+ goto_if_set FLAG_SILPH_3F_DOOR_2, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_4F_EventScript_Door1::
+ lockall
+ setvar VAR_TEMP_1, 5
+ setvar VAR_0x8004, FLAG_SILPH_4F_DOOR_1
+ goto_if_set FLAG_SILPH_4F_DOOR_1, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_4F_EventScript_Door2::
+ lockall
+ setvar VAR_TEMP_1, 6
+ setvar VAR_0x8004, FLAG_SILPH_4F_DOOR_2
+ goto_if_set FLAG_SILPH_4F_DOOR_2, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_5F_EventScript_Door1::
+ lockall
+ setvar VAR_TEMP_1, 7
+ setvar VAR_0x8004, FLAG_SILPH_5F_DOOR_1
+ goto_if_set FLAG_SILPH_5F_DOOR_1, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_5F_EventScript_Door2::
+ lockall
+ setvar VAR_TEMP_1, 8
+ setvar VAR_0x8004, FLAG_SILPH_5F_DOOR_2
+ goto_if_set FLAG_SILPH_5F_DOOR_2, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_5F_EventScript_Door3::
+ lockall
+ setvar VAR_TEMP_1, 9
+ setvar VAR_0x8004, FLAG_SILPH_5F_DOOR_3
+ goto_if_set FLAG_SILPH_5F_DOOR_3, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_6F_EventScript_Door::
+ lockall
+ setvar VAR_TEMP_1, 10
+ setvar VAR_0x8004, FLAG_SILPH_6F_DOOR
+ goto_if_set FLAG_SILPH_6F_DOOR, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_7F_EventScript_Door1::
+ lockall
+ setvar VAR_TEMP_1, 11
+ setvar VAR_0x8004, FLAG_SILPH_7F_DOOR_1
+ goto_if_set FLAG_SILPH_7F_DOOR_1, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_7F_EventScript_Door2::
+ lockall
+ setvar VAR_TEMP_1, 12
+ setvar VAR_0x8004, FLAG_SILPH_7F_DOOR_2
+ goto_if_set FLAG_SILPH_7F_DOOR_2, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_7F_EventScript_Door3::
+ lockall
+ setvar VAR_TEMP_1, 13
+ setvar VAR_0x8004, FLAG_SILPH_7F_DOOR_3
+ goto_if_set FLAG_SILPH_7F_DOOR_3, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_8F_EventScript_Door::
+ lockall
+ setvar VAR_TEMP_1, 14
+ setvar VAR_0x8004, FLAG_SILPH_8F_DOOR
+ goto_if_set FLAG_SILPH_8F_DOOR, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_9F_EventScript_Door1::
+ lockall
+ setvar VAR_TEMP_1, 15
+ setvar VAR_0x8004, FLAG_SILPH_9F_DOOR_1
+ goto_if_set FLAG_SILPH_9F_DOOR_1, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_9F_EventScript_Door2::
+ lockall
+ setvar VAR_TEMP_1, 16
+ setvar VAR_0x8004, FLAG_SILPH_9F_DOOR_2
+ goto_if_set FLAG_SILPH_9F_DOOR_2, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_9F_EventScript_Door3::
+ lockall
+ setvar VAR_TEMP_1, 17
+ setvar VAR_0x8004, FLAG_SILPH_9F_DOOR_3
+ goto_if_set FLAG_SILPH_9F_DOOR_3, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_9F_EventScript_Door4::
+ lockall
+ setvar VAR_TEMP_1, 18
+ setvar VAR_0x8004, FLAG_SILPH_9F_DOOR_4
+ goto_if_set FLAG_SILPH_9F_DOOR_4, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_10F_EventScript_Door::
+ lockall
+ setvar VAR_TEMP_1, 19
+ setvar VAR_0x8004, FLAG_SILPH_10F_DOOR
+ goto_if_set FLAG_SILPH_10F_DOOR, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+SilphCo_11F_EventScript_Door::
+ lockall
+ setvar VAR_TEMP_1, 20
+ setvar VAR_0x8004, FLAG_SILPH_11F_DOOR
+ goto_if_set FLAG_SILPH_11F_DOOR, EventScript_DoorUnlocked
+ goto EventScript_TryUnlockDoor
+ end
+
+EventScript_TryUnlockDoor::
+ goto_if_set FLAG_HIDE_SILPH_CO_5F_CARD_KEY, EventScript_OpenDoor
+ goto EventScript_NeedCardKey
+ end
+
+EventScript_OpenDoor::
+ playfanfare MUS_LEVEL_UP
+ msgbox Text_CardKeyOpenedDoor
+ waitfanfare
+ call_if_eq VAR_TEMP_1, 1, EventScript_Open2FDoor1
+ call_if_eq VAR_TEMP_1, 2, EventScript_Open2FDoor2
+ call_if_eq VAR_TEMP_1, 3, EventScript_Open3FDoor1
+ call_if_eq VAR_TEMP_1, 4, EventScript_Open3FDoor2
+ call_if_eq VAR_TEMP_1, 5, EventScript_Open4FDoor1
+ call_if_eq VAR_TEMP_1, 6, EventScript_Open4FDoor2
+ call_if_eq VAR_TEMP_1, 7, EventScript_Open5FDoor1
+ call_if_eq VAR_TEMP_1, 8, EventScript_Open5FDoor2
+ call_if_eq VAR_TEMP_1, 9, EventScript_Open5FDoor3
+ call_if_eq VAR_TEMP_1, 10, EventScript_Open6FDoor
+ call_if_eq VAR_TEMP_1, 11, EventScript_Open7FDoor1
+ call_if_eq VAR_TEMP_1, 12, EventScript_Open7FDoor2
+ call_if_eq VAR_TEMP_1, 13, EventScript_Open7FDoor3
+ call_if_eq VAR_TEMP_1, 14, EventScript_Open8FDoor
+ call_if_eq VAR_TEMP_1, 15, EventScript_Open9FDoor1
+ call_if_eq VAR_TEMP_1, 16, EventScript_Open9FDoor2
+ call_if_eq VAR_TEMP_1, 17, EventScript_Open9FDoor3
+ call_if_eq VAR_TEMP_1, 18, EventScript_Open9FDoor4
+ call_if_eq VAR_TEMP_1, 19, EventScript_Open10FDoor
+ call_if_eq VAR_TEMP_1, 20, EventScript_Open11FDoor
+ waitse
+ playse SE_UNLOCK
+ special DrawWholeMapView
+ waitse
+ special SetHiddenItemFlag
+ releaseall
+ end
+
+Text_CardKeyOpenedDoor::
+ .string "Bingo!\n"
+ .string "The CARD KEY opened the door!$"
+
+Text_ItNeedsCardKey::
+ .string "No!\n"
+ .string "It needs a CARD KEY!$"
+
+Text_TheDoorIsOpen::
+ .string "The door is open…$"
diff --git a/data/scripts/static_pokemon.inc b/data/scripts/static_pokemon.inc
new file mode 100644
index 000000000000..e77727c9f1c8
--- /dev/null
+++ b/data/scripts/static_pokemon.inc
@@ -0,0 +1,23 @@
+EventScript_RemoveStaticMon::
+ fadescreenswapbuffers FADE_TO_BLACK
+ removeobject VAR_LAST_TALKED
+ fadescreenswapbuffers FADE_FROM_BLACK
+ release
+ end
+
+EventScript_MonFlewAway::
+ fadescreenswapbuffers FADE_TO_BLACK
+ removeobject VAR_LAST_TALKED
+ fadescreenswapbuffers FADE_FROM_BLACK
+ bufferspeciesname STR_VAR_1, VAR_0x8004
+ msgbox Text_MonFlewAway
+ release
+ end
+
+EventScript_AwakenSnorlax::
+ message Text_PlayedPokeFlute
+ waitmessage
+ playfanfare MUS_RG_POKE_FLUTE
+ waitfanfare
+ msgbox Text_SnorlaxWokeUp
+ return
diff --git a/data/scripts/std_msgbox.inc b/data/scripts/std_msgbox.inc
index 8d5e4167cb31..3255edd6a47b 100644
--- a/data/scripts/std_msgbox.inc
+++ b/data/scripts/std_msgbox.inc
@@ -29,6 +29,30 @@ Std_MsgboxYesNo:
yesnobox 20, 8
return
+Std_ReceivedItem::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ call_if_eq VAR_0x8002, MUS_LEVEL_UP, EventScript_ReceivedItemFanfare1
+ call_if_eq VAR_0x8002, MUS_RG_OBTAIN_KEY_ITEM, EventScript_ReceivedItemFanfare2
+ message 0x0
+ waitmessage
+ waitfanfare
+ call_if_eq VAR_0x8002, MUS_LEVEL_UP, EventScript_ReceivedItemWaitFanfare
+ putitemaway VAR_0x8000, VAR_0x8001
+ call EventScript_RestorePrevTextColor
+ return
+
+EventScript_ReceivedItemFanfare1::
+ playfanfare MUS_LEVEL_UP
+ return
+
+EventScript_ReceivedItemFanfare2::
+ playfanfare MUS_RG_OBTAIN_KEY_ITEM
+ return
+
+EventScript_ReceivedItemWaitFanfare::
+ delay 50
+ return
+
Std_MsgboxGetPoints:
message NULL
playfanfare MUS_OBTAIN_B_POINTS
diff --git a/data/scripts/surf.inc b/data/scripts/surf.inc
index 630b3f9e6eca..9be019535cf9 100644
--- a/data/scripts/surf.inc
+++ b/data/scripts/surf.inc
@@ -12,3 +12,13 @@ EventScript_ReleaseUseSurf::
releaseall
EventScript_EndUseSurf::
end
+
+EventScript_CurrentTooFast::
+ lockall
+ checkfieldmove FIELD_MOVE_SURF
+ goto_if_eq VAR_RESULT, FALSE, EventScript_CurrentTooFastEndMsg
+ playse SE_SELECT
+ msgbox Text_CurrentTooFast
+EventScript_CurrentTooFastEndMsg::
+ releaseall
+ end
diff --git a/data/scripts/trainer_card_frlg.inc b/data/scripts/trainer_card_frlg.inc
new file mode 100644
index 000000000000..6b45d0747655
--- /dev/null
+++ b/data/scripts/trainer_card_frlg.inc
@@ -0,0 +1,346 @@
+CeladonCity_GameCorner_EventScript_PhotoPrinter::
+ lockall
+ showmoneybox 0, 0
+ msgbox CeladonCity_GameCorner_Text_TryPokemonPrinter, MSGBOX_YESNO
+ goto_if_eq VAR_RESULT, NO, CeladonCity_GameCorner_EventScript_DeclinePhoto
+ checkmoney 50
+ goto_if_eq VAR_RESULT, FALSE, CeladonCity_GameCorner_EventScript_NotEnoughMoneyForPhoto
+ playse SE_SHOP
+ removemoney 50
+ updatemoneybox
+ waitse
+ message CeladonCity_GameCorner_Text_ChoosePrintType
+ waitmessage
+ multichoice 21, 0, MULTI_TRAINER_CARD_ICON_TINT, TRUE
+ switch VAR_RESULT
+ case 0, CeladonCity_GameCorner_EventScript_PrintTypeNormal
+ case 1, CeladonCity_GameCorner_EventScript_PrintTypeBlack
+ case 2, CeladonCity_GameCorner_EventScript_PrintTypePink
+ case 3, CeladonCity_GameCorner_EventScript_PrintTypeSepia
+ end
+
+CeladonCity_GameCorner_EventScript_PrintTypeNormal::
+ setvar VAR_0x8004, MON_ICON_TINT_NORMAL
+ goto CeladonCity_GameCorner_EventScript_PrintPhoto
+ end
+
+CeladonCity_GameCorner_EventScript_PrintTypeBlack::
+ setvar VAR_0x8004, MON_ICON_TINT_BLACK
+ goto CeladonCity_GameCorner_EventScript_PrintPhoto
+ end
+
+CeladonCity_GameCorner_EventScript_PrintTypePink::
+ setvar VAR_0x8004, MON_ICON_TINT_PINK
+ goto CeladonCity_GameCorner_EventScript_PrintPhoto
+ end
+
+CeladonCity_GameCorner_EventScript_PrintTypeSepia::
+ setvar VAR_0x8004, MON_ICON_TINT_SEPIA
+ goto CeladonCity_GameCorner_EventScript_PrintPhoto
+ end
+
+CeladonCity_GameCorner_EventScript_PrintPhoto::
+ message CeladonCity_GameCorner_Text_BigSmileForPhoto
+ waitmessage
+ playse MUS_RG_PHOTO
+ dofieldeffect FLDEFF_PHOTO_FLASH
+ delay 60
+ special UpdateTrainerCardPhotoIcons
+ msgbox CeladonCity_GameCorner_Text_PrintIsReadyCheckTrainerCard
+ hidemoneybox
+ releaseall
+ end
+
+CeladonCity_GameCorner_EventScript_DeclinePhoto::
+ hidemoneybox
+ releaseall
+ end
+
+CeladonCity_GameCorner_EventScript_NotEnoughMoneyForPhoto::
+ msgbox CeladonCity_GameCorner_Text_DontHaveEnoughMoney
+ hidemoneybox
+ releaseall
+ end
+
+FourIsland_House2_EventScript_StickerMan::
+ lock
+ specialvar VAR_0x8008, StickerManGetBragFlags
+ goto_if_unset FLAG_MET_STICKER_MAN, FourIsland_House2_EventScript_MeetStickerMan
+ goto_if_set FLAG_MET_STICKER_MAN, FourIsland_House2_EventScript_StickerManAskForBrag
+ end
+
+FourIsland_House2_EventScript_MeetStickerMan::
+ setflag FLAG_MET_STICKER_MAN
+ msgbox FourIsland_House2_Text_WishICouldShowOffStickers
+ applymovement LOCALID_STICKER_MAN, Common_Movement_FacePlayer
+ waitmovement 0
+ playse SE_PIN
+ applymovement LOCALID_STICKER_MAN, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_STICKER_MAN, Common_Movement_Delay48
+ waitmovement 0
+ goto_if_eq VAR_0x8008, 0, FourIsland_House2_EventScript_StickerManNothingToBrag
+ message FourIsland_House2_Text_GiveYouStickerIfYouBrag
+ waitmessage
+ goto FourIsland_House2_EventScript_ChooseBrag
+ end
+
+FourIsland_House2_EventScript_StickerManAskForBrag::
+ applymovement LOCALID_STICKER_MAN, Common_Movement_FacePlayer
+ waitmovement 0
+ goto_if_eq VAR_0x8008, 0, FourIsland_House2_EventScript_NothingToBragAbout
+ message FourIsland_House2_Text_BragAboutWhatToday
+ waitmessage
+ goto FourIsland_House2_EventScript_ChooseBrag
+ end
+
+FourIsland_House2_EventScript_NothingToBragAbout::
+ msgbox FourIsland_House2_Text_BragAboutSomethingForMe
+ release
+ end
+
+FourIsland_House2_EventScript_ChooseBrag::
+ switch VAR_0x8008
+ case 1, FourIsland_House2_EventScript_ChooseBragHoF
+ case 2, FourIsland_House2_EventScript_ChooseBragEggs
+ case 4, FourIsland_House2_EventScript_ChooseBragLinkWins
+ case 3, FourIsland_House2_EventScript_ChooseBragHoFEggs
+ case 5, FourIsland_House2_EventScript_ChooseBragHoFLinkWins
+ case 6, FourIsland_House2_EventScript_ChooseBragEggsLinkWins
+ case 7, FourIsland_House2_EventScript_ChooseBragHofEggsLinkWins
+ end
+
+FourIsland_House2_EventScript_ChooseBragHoF::
+ multichoice 15, 8, MULTI_HOF_QUIT, FALSE
+ switch VAR_RESULT
+ case 0, FourIsland_House2_EventScript_BragHoF
+ case 1, FourIsland_House2_EventScript_QuitBrag
+ case MULTI_B_PRESSED, FourIsland_House2_EventScript_QuitBrag
+ end
+
+FourIsland_House2_EventScript_ChooseBragEggs::
+ multichoice 16, 8, MULTI_EGGS_QUIT, FALSE
+ switch VAR_RESULT
+ case 0, FourIsland_House2_EventScript_BragEggs
+ case 1, FourIsland_House2_EventScript_QuitBrag
+ case MULTI_B_PRESSED, FourIsland_House2_EventScript_QuitBrag
+ end
+
+FourIsland_House2_EventScript_ChooseBragLinkWins::
+ multichoice 15, 8, MULTI_VICTORIES_QUIT, FALSE
+ switch VAR_RESULT
+ case 0, FourIsland_House2_EventScript_BragLinkWins
+ case 1, FourIsland_House2_EventScript_QuitBrag
+ case MULTI_B_PRESSED, FourIsland_House2_EventScript_QuitBrag
+ end
+
+FourIsland_House2_EventScript_ChooseBragHoFEggs::
+ multichoice 15, 6, MULTI_HOF_EGGS_QUIT, FALSE
+ switch VAR_RESULT
+ case 0, FourIsland_House2_EventScript_BragHoF
+ case 1, FourIsland_House2_EventScript_BragEggs
+ case 2, FourIsland_House2_EventScript_QuitBrag
+ case MULTI_B_PRESSED, FourIsland_House2_EventScript_QuitBrag
+ end
+
+FourIsland_House2_EventScript_ChooseBragHoFLinkWins::
+ multichoice 15, 6, MULTI_HOF_VICTORIES_QUIT, FALSE
+ switch VAR_RESULT
+ case 0, FourIsland_House2_EventScript_BragHoF
+ case 1, FourIsland_House2_EventScript_BragLinkWins
+ case 2, FourIsland_House2_EventScript_QuitBrag
+ case MULTI_B_PRESSED, FourIsland_House2_EventScript_QuitBrag
+ end
+
+FourIsland_House2_EventScript_ChooseBragEggsLinkWins::
+ multichoice 15, 6, MULTI_EGGS_VICTORIES_QUIT, FALSE
+ switch VAR_RESULT
+ case 0, FourIsland_House2_EventScript_BragEggs
+ case 1, FourIsland_House2_EventScript_BragLinkWins
+ case 2, FourIsland_House2_EventScript_QuitBrag
+ case MULTI_B_PRESSED, FourIsland_House2_EventScript_QuitBrag
+ end
+
+FourIsland_House2_EventScript_ChooseBragHofEggsLinkWins::
+ multichoice 15, 5, MULTI_HOF_EGGS_VICTORIES_QUIT, FALSE
+ switch VAR_RESULT
+ case 0, FourIsland_House2_EventScript_BragHoF
+ case 1, FourIsland_House2_EventScript_BragEggs
+ case 2, FourIsland_House2_EventScript_BragLinkWins
+ case 3, FourIsland_House2_EventScript_QuitBrag
+ case MULTI_B_PRESSED, FourIsland_House2_EventScript_QuitBrag
+ end
+
+FourIsland_House2_EventScript_StickerManNothingToBrag::
+ msgbox FourIsland_House2_Text_GiveYouStickerIfYouBrag
+ release
+ end
+
+FourIsland_House2_EventScript_BragHoF::
+ goto_if_le VAR_0x8004, 39, FourIsland_House2_EventScript_BragHoFLowest
+ goto_if_le VAR_0x8004, 99, FourIsland_House2_EventScript_BragHoFLow
+ goto_if_le VAR_0x8004, 199, FourIsland_House2_EventScript_BragHoFHigh
+ goto_if_ge VAR_0x8004, 200, FourIsland_House2_EventScript_BragHoFHighest
+ end
+
+FourIsland_House2_EventScript_BragHoFLowest::
+ goto_if_eq VAR_HOF_BRAG_STATE, 1, FourIsland_House2_EventScript_AlreadyBraggedHoF
+ setvar VAR_HOF_BRAG_STATE, 1
+ msgbox FourIsland_House2_Text_WowHoFLowest
+ goto FourIsland_House2_EventScript_BraggedHoF
+ end
+
+FourIsland_House2_EventScript_BragHoFLow::
+ goto_if_eq VAR_HOF_BRAG_STATE, 2, FourIsland_House2_EventScript_AlreadyBraggedHoF
+ setvar VAR_HOF_BRAG_STATE, 2
+ msgbox FourIsland_House2_Text_WowHoFLow
+ goto FourIsland_House2_EventScript_BraggedHoF
+ end
+
+FourIsland_House2_EventScript_BragHoFHigh::
+ goto_if_eq VAR_HOF_BRAG_STATE, 3, FourIsland_House2_EventScript_AlreadyBraggedHoF
+ setvar VAR_HOF_BRAG_STATE, 3
+ msgbox FourIsland_House2_Text_WowHoFHigh
+ goto FourIsland_House2_EventScript_BraggedHoF
+ end
+
+FourIsland_House2_EventScript_BragHoFHighest::
+ goto_if_eq VAR_HOF_BRAG_STATE, 4, FourIsland_House2_EventScript_AlreadyBraggedHoFMax
+ setvar VAR_HOF_BRAG_STATE, 4
+ msgbox FourIsland_House2_Text_WowHoFHighest
+ goto FourIsland_House2_EventScript_BraggedHoF
+ end
+
+FourIsland_House2_EventScript_AlreadyBraggedHoF::
+ msgbox FourIsland_House2_Text_ComeBackWithBetterStoryHoF
+ release
+ end
+
+FourIsland_House2_EventScript_AlreadyBraggedHoFMax::
+ msgbox FourIsland_House2_Text_LivingLegendHoF
+ release
+ end
+
+FourIsland_House2_EventScript_BraggedHoF::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_LEVEL_UP
+ message FourIsland_House2_Text_HoFStickerApplied
+ waitmessage
+ waitfanfare
+ delay 90
+ release
+ end
+
+FourIsland_House2_EventScript_BragEggs::
+ goto_if_le VAR_0x8005, 99, FourIsland_House2_EventScript_BragEggsLowest
+ goto_if_le VAR_0x8005, 199, FourIsland_House2_EventScript_BragEggsLow
+ goto_if_le VAR_0x8005, 299, FourIsland_House2_EventScript_BragEggsHigh
+ goto_if_ge VAR_0x8005, 300, FourIsland_House2_EventScript_BragEggsHighest
+ end
+
+FourIsland_House2_EventScript_BragEggsLowest::
+ goto_if_eq VAR_EGG_BRAG_STATE, 1, FourIsland_House2_EventScript_AlreadyBraggedEggs
+ setvar VAR_EGG_BRAG_STATE, 1
+ msgbox FourIsland_House2_Text_WowEggsLowest
+ goto FourIsland_House2_EventScript_BraggedEggs
+ end
+
+FourIsland_House2_EventScript_BragEggsLow::
+ goto_if_eq VAR_EGG_BRAG_STATE, 2, FourIsland_House2_EventScript_AlreadyBraggedEggs
+ setvar VAR_EGG_BRAG_STATE, 2
+ msgbox FourIsland_House2_Text_WowEggsLow
+ goto FourIsland_House2_EventScript_BraggedEggs
+ end
+
+FourIsland_House2_EventScript_BragEggsHigh::
+ goto_if_eq VAR_EGG_BRAG_STATE, 3, FourIsland_House2_EventScript_AlreadyBraggedEggs
+ setvar VAR_EGG_BRAG_STATE, 3
+ msgbox FourIsland_House2_Text_WowEggsHigh
+ goto FourIsland_House2_EventScript_BraggedEggs
+ end
+
+FourIsland_House2_EventScript_BragEggsHighest::
+ goto_if_eq VAR_EGG_BRAG_STATE, 4, FourIsland_House2_EventScript_AlreadyBraggedEggsMax
+ setvar VAR_EGG_BRAG_STATE, 4
+ msgbox FourIsland_House2_Text_WowEggsHighest
+ goto FourIsland_House2_EventScript_BraggedEggs
+ end
+
+FourIsland_House2_EventScript_AlreadyBraggedEggs::
+ msgbox FourIsland_House2_Text_ComeBackWithBetterStoryEggs
+ release
+ end
+
+FourIsland_House2_EventScript_AlreadyBraggedEggsMax::
+ msgbox FourIsland_House2_Text_LivingLegendEggs
+ release
+ end
+
+FourIsland_House2_EventScript_BraggedEggs::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_LEVEL_UP
+ message FourIsland_House2_Text_EggStickerApplied
+ waitmessage
+ waitfanfare
+ delay 90
+ release
+ end
+
+FourIsland_House2_EventScript_BragLinkWins::
+ goto_if_le VAR_0x8006, 19, FourIsland_House2_EventScript_BragLinkWinsLowest
+ goto_if_le VAR_0x8006, 49, FourIsland_House2_EventScript_BragLinkWinsLow
+ goto_if_le VAR_0x8006, 99, FourIsland_House2_EventScript_BragLinkWinsHigh
+ goto_if_ge VAR_0x8006, 100, FourIsland_House2_EventScript_BragLinkWinsHighest
+ end
+
+FourIsland_House2_EventScript_BragLinkWinsLowest::
+ goto_if_eq VAR_LINK_WIN_BRAG_STATE, 1, FourIsland_House2_EventScript_AlreadyBraggedLinkWins
+ setvar VAR_LINK_WIN_BRAG_STATE, 1
+ msgbox FourIsland_House2_Text_WowLinkWinsLowest
+ goto FourIsland_House2_EventScript_BraggedLinkWins
+ end
+
+FourIsland_House2_EventScript_BragLinkWinsLow::
+ goto_if_eq VAR_LINK_WIN_BRAG_STATE, 2, FourIsland_House2_EventScript_AlreadyBraggedLinkWins
+ setvar VAR_LINK_WIN_BRAG_STATE, 2
+ msgbox FourIsland_House2_Text_WowLinkWinsLow
+ goto FourIsland_House2_EventScript_BraggedLinkWins
+ end
+
+FourIsland_House2_EventScript_BragLinkWinsHigh::
+ goto_if_eq VAR_LINK_WIN_BRAG_STATE, 3, FourIsland_House2_EventScript_AlreadyBraggedLinkWins
+ setvar VAR_LINK_WIN_BRAG_STATE, 3
+ msgbox FourIsland_House2_Text_WowLinkWinsHigh
+ goto FourIsland_House2_EventScript_BraggedLinkWins
+ end
+
+FourIsland_House2_EventScript_BragLinkWinsHighest::
+ goto_if_eq VAR_LINK_WIN_BRAG_STATE, 4, FourIsland_House2_EventScript_AlreadyBraggedLinkWinsMax
+ setvar VAR_LINK_WIN_BRAG_STATE, 4
+ msgbox FourIsland_House2_Text_WowLinkWinsHighest
+ goto FourIsland_House2_EventScript_BraggedLinkWins
+ end
+
+FourIsland_House2_EventScript_AlreadyBraggedLinkWins::
+ msgbox FourIsland_House2_Text_ComeBackWithBetterStoryLinkWins
+ release
+ end
+
+FourIsland_House2_EventScript_AlreadyBraggedLinkWinsMax::
+ msgbox FourIsland_House2_Text_LivingLegendLinkWins
+ release
+ end
+
+FourIsland_House2_EventScript_BraggedLinkWins::
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_LEVEL_UP
+ message FourIsland_House2_Text_VictoryStickerApplied
+ waitmessage
+ waitfanfare
+ delay 90
+ release
+ end
+
+FourIsland_House2_EventScript_QuitBrag::
+ release
+ end
diff --git a/data/scripts/trainer_hill.inc b/data/scripts/trainer_hill.inc
index ece0b01ee22d..7ea5c6d774b6 100644
--- a/data/scripts/trainer_hill.inc
+++ b/data/scripts/trainer_hill.inc
@@ -60,7 +60,7 @@ TrainerHill_1F_Movement_SetInvisible::
@ TRAINER_PHILLIP is an actual Trainer on the SS Tidal, but is used as a placeholder here
TrainerHill_EventScript_TrainerBattle::
- trainerbattle TRAINER_BATTLE_HILL, LOCALID_NONE, TRAINER_PHILLIP, BattleFacility_TrainerBattle_PlaceholderText, BattleFacility_TrainerBattle_PlaceholderText, NULL, LOCALID_NONE, TRAINER_NONE, NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE
+ facilitytrainerbattle FACILITY_BATTLE_TRAINER_HILL
trainerhill_postbattletext
waitmessage
waitbuttonpress
diff --git a/data/scripts/trainer_tower.inc b/data/scripts/trainer_tower.inc
new file mode 100644
index 000000000000..ec6e73a07933
--- /dev/null
+++ b/data/scripts/trainer_tower.inc
@@ -0,0 +1,392 @@
+.equ HIDE_TRAINER_DOUBLES1, FLAG_TEMP_2
+.equ HIDE_TRAINER_SINGLES, FLAG_TEMP_3
+.equ HIDE_TRAINER_KNOCKOUT, FLAG_TEMP_4
+.equ HIDE_TRAINER_DOUBLES2, FLAG_TEMP_5
+.equ HIDE_OWNER, FLAG_TEMP_6
+
+.equ DISABLE_SINGLES_TRIGGER, VAR_TEMP_E
+.equ DISABLE_DOUBLES_TRIGGER, VAR_TEMP_F
+
+
+@@ Map scripts
+
+TrainerTower_OnResume::
+ setvar VAR_TEMP_2, 0
+ ttower_resumetimer
+ end
+
+TrainerTower_OnTransition::
+ ttower_initfloor
+ switch VAR_RESULT
+ case CHALLENGE_TYPE_SINGLE, TrainerTower_EventScript_SetObjectsSingles
+ case CHALLENGE_TYPE_DOUBLE, TrainerTower_EventScript_SetObjectsDoubles
+ case CHALLENGE_TYPE_KNOCKOUT, TrainerTower_EventScript_SetObjectsKnockout
+ setflag HIDE_TRAINER_DOUBLES1
+ setflag HIDE_TRAINER_SINGLES
+ setflag HIDE_TRAINER_KNOCKOUT
+ setflag HIDE_TRAINER_DOUBLES2
+ setvar DISABLE_SINGLES_TRIGGER, TRUE
+ setvar DISABLE_DOUBLES_TRIGGER, TRUE
+ end
+
+TrainerTower_EventScript_SetObjectsSingles::
+ setflag HIDE_TRAINER_DOUBLES1
+ setflag HIDE_TRAINER_KNOCKOUT
+ setflag HIDE_TRAINER_DOUBLES2
+ setvar DISABLE_DOUBLES_TRIGGER, TRUE
+ setobjectxyperm LOCALID_TOWER_TRAINER_SINGLES, 15, 13
+ setobjectmovementtype LOCALID_TOWER_TRAINER_SINGLES, MOVEMENT_TYPE_FACE_LEFT
+ goto TrainerTower_EventScript_HideOwner
+
+TrainerTower_EventScript_SetObjectsDoubles::
+ setflag HIDE_TRAINER_SINGLES
+ setflag HIDE_TRAINER_KNOCKOUT
+ setvar DISABLE_SINGLES_TRIGGER, TRUE
+ ttower_isfloorcleared
+ goto_if_eq VAR_RESULT, TRUE, TrainerTower_EventScript_SetObjectsDoublesAlreadyBeaten
+ setobjectxyperm LOCALID_TOWER_TRAINER_DOUBLES1, 10, 12
+ setobjectmovementtype LOCALID_TOWER_TRAINER_DOUBLES1, MOVEMENT_TYPE_FACE_LEFT
+ setobjectxyperm LOCALID_TOWER_TRAINER_DOUBLES2, 10, 13
+ setobjectmovementtype LOCALID_TOWER_TRAINER_DOUBLES2, MOVEMENT_TYPE_FACE_LEFT
+ goto TrainerTower_EventScript_HideOwner
+
+TrainerTower_EventScript_SetObjectsDoublesAlreadyBeaten::
+ setobjectxyperm LOCALID_TOWER_TRAINER_DOUBLES1, 10, 12
+ setobjectmovementtype LOCALID_TOWER_TRAINER_DOUBLES1, MOVEMENT_TYPE_FACE_DOWN
+ setobjectxyperm LOCALID_TOWER_TRAINER_DOUBLES2, 11, 12
+ setobjectmovementtype LOCALID_TOWER_TRAINER_DOUBLES2, MOVEMENT_TYPE_FACE_DOWN
+ goto TrainerTower_EventScript_HideOwner
+
+@ Knockout challenge re-uses trainer objects
+TrainerTower_EventScript_SetObjectsKnockout::
+ setflag HIDE_TRAINER_DOUBLES2
+ setvar DISABLE_DOUBLES_TRIGGER, TRUE
+ setobjectxyperm LOCALID_TOWER_TRAINER_DOUBLES1, 10, 10
+ setobjectmovementtype LOCALID_TOWER_TRAINER_DOUBLES1, MOVEMENT_TYPE_FACE_DOWN
+ setobjectxyperm LOCALID_TOWER_TRAINER_SINGLES, 14, 13
+ setobjectmovementtype LOCALID_TOWER_TRAINER_SINGLES, MOVEMENT_TYPE_FACE_LEFT
+ setobjectxyperm LOCALID_TOWER_TRAINER_KNOCKOUT, 10, 16
+ setobjectmovementtype LOCALID_TOWER_TRAINER_KNOCKOUT, MOVEMENT_TYPE_FACE_UP
+TrainerTower_EventScript_HideOwner:
+ setflag HIDE_OWNER
+ end
+
+TrainerTower_OnFrame::
+ map_script_2 VAR_TEMP_2, 0, TrainerTower_EventScript_EnterFloor
+ .2byte 0
+
+TrainerTower_EventScript_EnterFloor::
+ setvar VAR_TEMP_2, 1
+ ttower_isfloorcleared
+ goto_if_eq VAR_RESULT, FALSE, TrainerTower_EventScript_EndEnterFloor
+ setvar DISABLE_SINGLES_TRIGGER, TRUE
+ setvar DISABLE_DOUBLES_TRIGGER, TRUE
+TrainerTower_EventScript_EndEnterFloor:
+ ttower_shouldexit
+ goto_if_eq VAR_RESULT, TRUE, TrainerTower_EventScript_WarpToLobby
+ end
+
+@ Never reached
+TrainerTower_EventScript_WarpToLobby::
+ warp MAP_TRAINER_TOWER_LOBBY, 9, 7
+ waitstate
+
+
+@@ Battle scripts
+
+TrainerTower_EventScript_TriggerBattle::
+ ttower_getchallengetype
+ switch VAR_RESULT
+ case CHALLENGE_TYPE_SINGLE, TrainerTower_EventScript_DoSingleBattle
+ case CHALLENGE_TYPE_DOUBLE, TrainerTower_EventScript_DoDoubleBattle
+ case CHALLENGE_TYPE_KNOCKOUT, TrainerTower_EventScript_DoKnockoutBattle
+
+TrainerTower_EventScript_DoSingleBattle:
+ ttower_encountermusic
+ applymovement LOCALID_TOWER_TRAINER_SINGLES, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_TOWER_TRAINER_SINGLES, Common_Movement_Delay48
+ waitmovement 0
+ setvar DISABLE_SINGLES_TRIGGER, TRUE
+ applymovement LOCALID_TOWER_TRAINER_SINGLES, TrainerTower_Movement_SingleTrainerApproach
+ waitmovement 0
+ ttower_getspeech TRAINER_TOWER_TEXT_INTRO, 0
+ msgbox gStringVar4
+ closemessage
+ goto TrainerTower_EventScript_DoBattle
+
+TrainerTower_EventScript_DoDoubleBattle::
+ ttower_getspeech TRAINER_TOWER_TEXT_INTRO, VAR_TEMP_3
+ msgbox gStringVar4
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_SPEECH
+ setvar VAR_0x8005, TRAINER_TOWER_TEXT_INTRO
+ addvar VAR_TEMP_3, 1
+ goto_if_eq VAR_TEMP_3, 1, TrainerTower_EventScript_DoSecondTrainerIntro
+ setvar VAR_TEMP_3, 0
+TrainerTower_EventScript_DoSecondTrainerIntro:
+ copyvar VAR_0x8006, VAR_TEMP_3
+ special CallTrainerTowerFunc
+ msgbox gStringVar4
+ closemessage
+ goto TrainerTower_EventScript_DoBattle
+
+TrainerTower_EventScript_DoKnockoutBattle::
+ switch VAR_TEMP_1
+ case 0, TrainerTower_EventScript_DoKnockoutBattle1
+ case 1, TrainerTower_EventScript_DoKnockoutBattle2
+ case 2, TrainerTower_EventScript_DoKnockoutBattle3
+
+TrainerTower_EventScript_DoKnockoutBattle1:
+ ttower_encountermusic
+ applymovement LOCALID_TOWER_TRAINER_KNOCKOUT, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_TOWER_TRAINER_KNOCKOUT, Common_Movement_Delay48
+ waitmovement 0
+ applymovement LOCALID_TOWER_TRAINER_KNOCKOUT, TrainerTower_Movement_BottomKnockoutTrainerApproach
+ waitmovement 0
+ goto TrainerTower_EventScript_DoKnockoutBattleIntro
+
+TrainerTower_EventScript_DoKnockoutBattle2::
+ ttower_encountermusic
+ applymovement LOCALID_TOWER_TRAINER_DOUBLES1, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_TOWER_TRAINER_DOUBLES1, Common_Movement_Delay48
+ waitmovement 0
+ applymovement LOCALID_TOWER_TRAINER_DOUBLES1, TrainerTower_Movement_TopKnockoutTrainerApproach
+ waitmovement 0
+ goto TrainerTower_EventScript_DoKnockoutBattleIntro
+
+TrainerTower_EventScript_DoKnockoutBattle3::
+ ttower_encountermusic
+ applymovement LOCALID_TOWER_TRAINER_SINGLES, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_TOWER_TRAINER_SINGLES, Common_Movement_Delay48
+ waitmovement 0
+ applymovement LOCALID_TOWER_TRAINER_SINGLES, TrainerTower_Movement_RightKnockoutTrainerApproach
+ waitmovement 0
+TrainerTower_EventScript_DoKnockoutBattleIntro:
+ ttower_getspeech TRAINER_TOWER_TEXT_INTRO, VAR_TEMP_1
+ msgbox gStringVar4
+ closemessage
+TrainerTower_EventScript_DoBattle:
+ ttower_dobattle
+ waitstate
+ switch VAR_RESULT
+ case B_OUTCOME_WON, TrainerTower_EventScript_WonBattle
+ case B_OUTCOME_LOST, TrainerTower_EventScript_WarpToLobbyLost
+ case B_OUTCOME_DREW, TrainerTower_EventScript_WarpToLobbyLost
+TrainerTower_EventScript_WonBattle:
+ ttower_getchallengetype
+ switch VAR_RESULT
+ case CHALLENGE_TYPE_SINGLE, TrainerTower_EventScript_SetFloorCleared
+ case CHALLENGE_TYPE_DOUBLE, TrainerTower_EventScript_MoveDoublesTrainers
+ case CHALLENGE_TYPE_KNOCKOUT, TrainerTower_EventScript_CheckNextKnockoutBattle
+
+TrainerTower_EventScript_CheckNextKnockoutBattle:
+ switch VAR_TEMP_1
+ case 0, TrainerTower_EventScript_DoSecondKnockoutBattle
+ case 1, TrainerTower_EventScript_DoThirdKnockoutBattle
+ case 2, TrainerTower_EventScript_MoveLastKnockoutTrainer
+
+TrainerTower_EventScript_DoSecondKnockoutBattle:
+ addvar VAR_TEMP_1, 1
+ goto TrainerTower_EventScript_DoKnockoutBattle
+
+TrainerTower_EventScript_DoThirdKnockoutBattle::
+ addvar VAR_TEMP_1, 1
+ goto TrainerTower_EventScript_DoKnockoutBattle
+
+TrainerTower_EventScript_MoveDoublesTrainers::
+ applymovement LOCALID_TOWER_TRAINER_DOUBLES2, TrainerTower_Movement_DoublesTrainer2OutOfWay
+ waitmovement 0
+ applymovement LOCALID_TOWER_TRAINER_DOUBLES1, TrainerTower_Movement_DoublesTrainer1FaceDown
+ goto TrainerTower_EventScript_SetFloorCleared
+
+TrainerTower_EventScript_MoveLastKnockoutTrainer::
+ applymovement LOCALID_TOWER_TRAINER_SINGLES, TrainerTower_Movement_LastKnockoutTrainerOutOfWay
+TrainerTower_EventScript_SetFloorCleared:
+ ttower_clearedfloor
+ end
+
+TrainerTower_EventScript_WarpToLobbyLost::
+ special HealPlayerParty
+ ttower_setlost
+ warp MAP_TRAINER_TOWER_LOBBY, 9, 7
+ waitstate
+
+
+@@ Speaking to trainers after battle
+
+TrainerTower_EventScript_SpeakToDoublesTrainer1::
+ ttower_getchallengetype
+ switch VAR_RESULT
+ case CHALLENGE_TYPE_SINGLE, TrainerTower_EventScript_DoublesTrainer1PostBattle
+ case CHALLENGE_TYPE_DOUBLE, TrainerTower_EventScript_DoublesTrainer1PostBattle
+ case CHALLENGE_TYPE_KNOCKOUT, TrainerTower_EventScript_KnockoutTrainer2PostBattle
+TrainerTower_EventScript_DoublesTrainer1PostBattle:
+ setvar VAR_0x8006, 0
+ goto TrainerTower_EventScript_DoPostBattleText
+
+TrainerTower_EventScript_KnockoutTrainer2PostBattle::
+ setvar VAR_0x8006, 1
+ goto TrainerTower_EventScript_DoPostBattleText
+
+TrainerTower_EventScript_SpeakToSinglesTrainer::
+ ttower_getchallengetype
+ switch VAR_RESULT
+ case CHALLENGE_TYPE_SINGLE, TrainerTower_EventScript_SinglesTrainerPostBattle
+ case CHALLENGE_TYPE_DOUBLE, TrainerTower_EventScript_SinglesTrainerPostBattle
+ case CHALLENGE_TYPE_KNOCKOUT, TrainerTower_EventScript_KnockoutTrainer3PostBattle
+TrainerTower_EventScript_SinglesTrainerPostBattle:
+ setvar VAR_0x8006, 0
+ goto TrainerTower_EventScript_DoPostBattleText
+
+TrainerTower_EventScript_KnockoutTrainer3PostBattle::
+ setvar VAR_0x8006, 2
+ goto TrainerTower_EventScript_DoPostBattleText
+
+TrainerTower_EventScript_SpeakToKnockoutTrainer::
+ setvar VAR_0x8006, 0
+ goto TrainerTower_EventScript_DoPostBattleText
+
+TrainerTower_EventScript_SpeakToDoublesTrainer2::
+ setvar VAR_0x8006, 1
+TrainerTower_EventScript_DoPostBattleText:
+ ttower_getspeech TRAINER_TOWER_TEXT_AFTER
+ lock
+ faceplayer
+ msgbox gStringVar4
+ release
+ return
+
+
+@@ Speaking to owner
+
+TrainerTower_EventScript_SpeakToOwner::
+ lock
+ faceplayer
+ ttower_getownerstate
+ switch VAR_RESULT
+ case 0, TrainerTower_Roof_EventScript_Arrived
+ case 1, TrainerTower_Roof_EventScript_GivePrize
+ case 2, TrainerTower_Roof_EventScript_OwnerEnd
+
+TrainerTower_Roof_EventScript_Arrived:
+ msgbox TrainerTower_Roof_Text_ImOwnerBattledPerfectly
+TrainerTower_Roof_EventScript_GivePrize:
+ ttower_giveprize
+ switch VAR_RESULT
+ case 0, TrainerTower_Roof_EventScript_ReceivePrize
+ case 1, TrainerTower_Roof_EventScript_NoRoomForPrize
+ case 2, TrainerTower_Roof_EventScript_CheckFinalTime
+
+TrainerTower_Roof_EventScript_ReceivePrize:
+ msgbox TrainerTower_Roof_Text_ThisIsForYou
+ textcolor NPC_TEXT_COLOR_NEUTRAL
+ playfanfare MUS_LEVEL_UP
+ message gText_ObtainedTheItem
+ waitfanfare
+ waitmessage
+ bufferstdstring STR_VAR_3, STDSTRING_ITEMS
+ msgbox gText_PutItemInPocket
+ call EventScript_RestorePrevTextColor
+ goto TrainerTower_Roof_EventScript_CheckFinalTime
+
+TrainerTower_Roof_EventScript_NoRoomForPrize::
+ msgbox TrainerTower_Roof_Text_ThisIsForYou
+ msgbox gText_TheBagIsFull
+ goto TrainerTower_Roof_EventScript_CheckFinalTime
+
+TrainerTower_Roof_EventScript_CheckFinalTime::
+ ttower_checkfinaltime
+ switch VAR_RESULT
+ case 0, TrainerTower_Roof_EventScript_NewRecord
+ case 1, TrainerTower_Roof_EventScript_NoNewRecord
+ case 2, TrainerTower_Roof_EventScript_OwnerEnd
+
+TrainerTower_Roof_EventScript_NewRecord:
+ msgbox TrainerTower_Roof_Text_DoneItInRecordTime
+ goto TrainerTower_Roof_EventScript_OwnerEnd
+
+TrainerTower_Roof_EventScript_NoNewRecord::
+ msgbox TrainerTower_Roof_Text_TookSweetTimeGettingHere
+TrainerTower_Roof_EventScript_OwnerEnd:
+ msgbox TrainerTower_Roof_Text_IdLikeToSeeBetterTime
+ release
+ return
+
+TrainerTower_EventScript_ShowTime::
+ lockall
+ ttower_gettime
+ msgbox TrainerTower_Text_XMinYZSec
+ releaseall
+ end
+
+
+@@ Battle triggers
+
+TrainerTower_EventScript_SingleBattleTrigger::
+ goto TrainerTower_EventScript_TriggerBattle
+
+TrainerTower_EventScript_DoubleBattleTriggerTop::
+ setvar VAR_TEMP_3, 0
+ ttower_checkdoubles
+ goto_if_ne VAR_RESULT, PLAYER_HAS_TWO_USABLE_MONS, TrainerTower_EventScript_IneligibleForDoubleBattle
+ ttower_encountermusic
+ applymovement LOCALID_TOWER_TRAINER_DOUBLES1, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_TOWER_TRAINER_DOUBLES1, Common_Movement_Delay48
+ goto TrainerTower_EventScript_TriggerDoubleBattle
+
+TrainerTower_EventScript_DoubleBattleTriggerBottom::
+ setvar VAR_TEMP_3, 1
+ ttower_checkdoubles
+ goto_if_ne VAR_RESULT, PLAYER_HAS_TWO_USABLE_MONS, TrainerTower_EventScript_IneligibleForDoubleBattle
+ ttower_encountermusic
+ applymovement LOCALID_TOWER_TRAINER_DOUBLES2, Common_Movement_ExclamationMark
+ waitmovement 0
+ applymovement LOCALID_TOWER_TRAINER_DOUBLES2, Common_Movement_Delay48
+TrainerTower_EventScript_TriggerDoubleBattle:
+ waitmovement 0
+ setvar DISABLE_DOUBLES_TRIGGER, TRUE
+ goto TrainerTower_EventScript_TriggerBattle
+
+TrainerTower_EventScript_IneligibleForDoubleBattle::
+ lockall
+ playse SE_DING_DONG
+ msgbox TrainerTower_Lobby_Text_NeedTwoMonsForDouble
+ closemessage
+ applymovement LOCALID_PLAYER, TrainerTower_Movement_PushPlayerBack
+ waitmovement 0
+ releaseall
+ end
+
+TrainerTower_Movement_SingleTrainerApproach:
+ walk_left
+TrainerTower_Movement_RightKnockoutTrainerApproach::
+ walk_left
+ walk_left
+TrainerTower_Movement_PushPlayerBack:
+ walk_left
+ step_end
+
+TrainerTower_Movement_BottomKnockoutTrainerApproach::
+ walk_up
+ walk_up
+ step_end
+
+TrainerTower_Movement_TopKnockoutTrainerApproach::
+ walk_down
+ walk_down
+ step_end
+
+TrainerTower_Movement_DoublesTrainer2OutOfWay::
+ walk_right
+TrainerTower_Movement_LastKnockoutTrainerOutOfWay:
+ walk_up
+ face_down
+ step_end
+
+TrainerTower_Movement_DoublesTrainer1FaceDown::
+ face_down
+ step_end
diff --git a/data/scripts/trainers_frlg.inc b/data/scripts/trainers_frlg.inc
new file mode 100644
index 000000000000..5ec6ef8f4849
--- /dev/null
+++ b/data/scripts/trainers_frlg.inc
@@ -0,0 +1,2807 @@
+Route3_EventScript_Ben::
+ trainerbattle_single TRAINER_YOUNGSTER_BEN, Route3_Text_BenIntro, Route3_Text_BenDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route3_EventScript_BenRematch
+ msgbox Route3_Text_BenPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route3_EventScript_BenRematch::
+ trainerbattle_rematch TRAINER_YOUNGSTER_BEN, Route3_Text_BenRematchIntro, Route3_Text_BenDefeat
+ msgbox Route3_Text_BenPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route3_EventScript_Calvin::
+ trainerbattle_single TRAINER_YOUNGSTER_CALVIN, Route3_Text_CalvinIntro, Route3_Text_CalvinDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route3_EventScript_CalvinRematch
+ msgbox Route3_Text_CalvinPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route3_EventScript_CalvinRematch::
+ trainerbattle_rematch TRAINER_YOUNGSTER_CALVIN, Route3_Text_CalvinRematchIntro, Route3_Text_CalvinDefeat
+ msgbox Route3_Text_CalvinPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route3_EventScript_Colton::
+ trainerbattle_single TRAINER_BUG_CATCHER_COLTON, Route3_Text_ColtonIntro, Route3_Text_ColtonDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route3_EventScript_ColtonRematch
+ msgbox Route3_Text_ColtonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route3_EventScript_ColtonRematch::
+ trainerbattle_rematch TRAINER_BUG_CATCHER_COLTON, Route3_Text_ColtonRematchIntro, Route3_Text_ColtonDefeat
+ msgbox Route3_Text_ColtonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route3_EventScript_Greg::
+ trainerbattle_single TRAINER_BUG_CATCHER_GREG, Route3_Text_GregIntro, Route3_Text_GregDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route3_EventScript_GregRematch
+ msgbox Route3_Text_GregPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route3_EventScript_GregRematch::
+ trainerbattle_rematch TRAINER_BUG_CATCHER_GREG, Route3_Text_GregRematchIntro, Route3_Text_GregDefeat
+ msgbox Route3_Text_GregPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route3_EventScript_James::
+ trainerbattle_single TRAINER_BUG_CATCHER_JAMES, Route3_Text_JamesIntro, Route3_Text_JamesDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route3_EventScript_JamesRematch
+ msgbox Route3_Text_JamesPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route3_EventScript_JamesRematch::
+ trainerbattle_rematch TRAINER_BUG_CATCHER_JAMES, Route3_Text_JamesRematchIntro, Route3_Text_JamesDefeat
+ msgbox Route3_Text_JamesPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route3_EventScript_Janice::
+ trainerbattle_single TRAINER_LASS_JANICE, Route3_Text_JaniceIntro, Route3_Text_JaniceDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route3_EventScript_JaniceRematch
+ msgbox Route3_Text_JanicePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route3_EventScript_JaniceRematch::
+ trainerbattle_rematch TRAINER_LASS_JANICE, Route3_Text_JaniceRematchIntro, Route3_Text_JaniceDefeat
+ msgbox Route3_Text_JanicePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route3_EventScript_Sally::
+ trainerbattle_single TRAINER_LASS_SALLY, Route3_Text_SallyIntro, Route3_Text_SallyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route3_EventScript_SallyRematch
+ msgbox Route3_Text_SallyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route3_EventScript_SallyRematch::
+ trainerbattle_rematch TRAINER_LASS_SALLY, Route3_Text_SallyRematchIntro, Route3_Text_SallyDefeat
+ msgbox Route3_Text_SallyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route3_EventScript_Robin::
+ trainerbattle_single TRAINER_LASS_ROBIN, Route3_Text_RobinIntro, Route3_Text_RobinDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route3_EventScript_RobinRematch
+ msgbox Route3_Text_RobinPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route3_EventScript_RobinRematch::
+ trainerbattle_rematch TRAINER_LASS_ROBIN, Route3_Text_RobinRematchIntro, Route3_Text_RobinDefeat
+ msgbox Route3_Text_RobinPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route4_EventScript_Crissy::
+ trainerbattle_single TRAINER_LASS_CRISSY, Route4_Text_CrissyIntro, Route4_Text_CrissyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route4_EventScript_CrissyRematch
+ msgbox Route4_Text_CrissyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route4_EventScript_CrissyRematch::
+ trainerbattle_rematch TRAINER_LASS_CRISSY, Route4_Text_CrissyRematchIntro, Route4_Text_CrissyDefeat
+ msgbox Route4_Text_CrissyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route24_EventScript_Timmy::
+ trainerbattle_single TRAINER_YOUNGSTER_TIMMY, Route24_Text_TimmyIntro, Route24_Text_TimmyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route24_EventScript_TimmyRematch
+ msgbox Route24_Text_TimmyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route24_EventScript_TimmyRematch::
+ trainerbattle_rematch TRAINER_YOUNGSTER_TIMMY, Route24_Text_TimmyRematchIntro, Route24_Text_TimmyDefeat
+ msgbox Route24_Text_TimmyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route24_EventScript_Cale::
+ trainerbattle_single TRAINER_BUG_CATCHER_CALE, Route24_Text_CaleIntro, Route24_Text_CaleDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route24_EventScript_CaleRematch
+ msgbox Route24_Text_CalePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route24_EventScript_CaleRematch::
+ trainerbattle_rematch TRAINER_BUG_CATCHER_CALE, Route24_Text_CaleRematchIntro, Route24_Text_CaleDefeat
+ msgbox Route24_Text_CalePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route24_EventScript_Reli::
+ trainerbattle_single TRAINER_LASS_RELI, Route24_Text_ReliIntro, Route24_Text_ReliDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route24_EventScript_ReliRematch
+ msgbox Route24_Text_ReliPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route24_EventScript_ReliRematch::
+ trainerbattle_rematch TRAINER_LASS_RELI, Route24_Text_ReliRematchIntro, Route24_Text_ReliDefeat
+ msgbox Route24_Text_ReliPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route24_EventScript_Ali::
+ trainerbattle_single TRAINER_LASS_ALI, Route24_Text_AliIntro, Route24_Text_AliDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route24_EventScript_AliRematch
+ msgbox Route24_Text_AliPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route24_EventScript_AliRematch::
+ trainerbattle_rematch TRAINER_LASS_ALI, Route24_Text_AliRematchIntro, Route24_Text_AliDefeat
+ msgbox Route24_Text_AliPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route24_EventScript_Shane::
+ trainerbattle_single TRAINER_CAMPER_SHANE, Route24_Text_ShaneIntro, Route24_Text_ShaneDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route24_EventScript_ShaneRematch
+ msgbox Route24_Text_ShanePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route24_EventScript_ShaneRematch::
+ trainerbattle_rematch TRAINER_CAMPER_SHANE, Route24_Text_ShaneRematchIntro, Route24_Text_ShaneDefeat
+ msgbox Route24_Text_ShanePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route24_EventScript_Ethan::
+ trainerbattle_single TRAINER_CAMPER_ETHAN, Route24_Text_EthanIntro, Route24_Text_EthanDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route24_EventScript_EthanRematch
+ msgbox Route24_Text_EthanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route24_EventScript_EthanRematch::
+ trainerbattle_rematch TRAINER_CAMPER_ETHAN, Route24_Text_EthanRematchIntro, Route24_Text_EthanDefeat
+ msgbox Route24_Text_EthanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_Joey::
+ trainerbattle_single TRAINER_YOUNGSTER_JOEY, Route25_Text_JoeyIntro, Route25_Text_JoeyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route25_EventScript_JoeyRematch
+ msgbox Route25_Text_JoeyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_JoeyRematch::
+ trainerbattle_rematch TRAINER_YOUNGSTER_JOEY, Route25_Text_JoeyRematchIntro, Route25_Text_JoeyDefeat
+ msgbox Route25_Text_JoeyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_Dan::
+ trainerbattle_single TRAINER_YOUNGSTER_DAN, Route25_Text_DanIntro, Route25_Text_DanDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route25_EventScript_DanRematch
+ msgbox Route25_Text_DanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_DanRematch::
+ trainerbattle_rematch TRAINER_YOUNGSTER_DAN, Route25_Text_DanRematchIntro, Route25_Text_DanDefeat
+ msgbox Route25_Text_DanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_Chad::
+ trainerbattle_single TRAINER_YOUNGSTER_CHAD, Route25_Text_ChadIntro, Route25_Text_ChadDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route25_EventScript_ChadRematch
+ msgbox Route25_Text_ChadPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_ChadRematch::
+ trainerbattle_rematch TRAINER_YOUNGSTER_CHAD, Route25_Text_ChadRematchIntro, Route25_Text_ChadDefeat
+ msgbox Route25_Text_ChadPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_Kelsey::
+ trainerbattle_single TRAINER_PICNICKER_KELSEY, Route25_Text_KelseyIntro, Route25_Text_KelseyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route25_EventScript_KelseyRematch
+ msgbox Route25_Text_KelseyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_KelseyRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_KELSEY, Route25_Text_KelseyRematchIntro, Route25_Text_KelseyDefeat
+ msgbox Route25_Text_KelseyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_Haley::
+ trainerbattle_single TRAINER_LASS_HALEY, Route25_Text_HaleyIntro, Route25_Text_HaleyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route25_EventScript_HaleyRematch
+ msgbox Route25_Text_HaleyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_HaleyRematch::
+ trainerbattle_rematch TRAINER_LASS_HALEY, Route25_Text_HaleyRematchIntro, Route25_Text_HaleyDefeat
+ msgbox Route25_Text_HaleyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_Franklin::
+ trainerbattle_single TRAINER_HIKER_FRANKLIN, Route25_Text_FranklinIntro, Route25_Text_FranklinDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route25_EventScript_FranklinRematch
+ msgbox Route25_Text_FranklinPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_FranklinRematch::
+ trainerbattle_rematch TRAINER_HIKER_FRANKLIN, Route25_Text_FranklinRematchIntro, Route25_Text_FranklinDefeat
+ msgbox Route25_Text_FranklinPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_Nob::
+ trainerbattle_single TRAINER_HIKER_NOB, Route25_Text_NobIntro, Route25_Text_NobDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route25_EventScript_NobRematch
+ msgbox Route25_Text_NobPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_NobRematch::
+ trainerbattle_rematch TRAINER_HIKER_NOB, Route25_Text_NobRematchIntro, Route25_Text_NobDefeat
+ msgbox Route25_Text_NobPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_Wayne::
+ trainerbattle_single TRAINER_HIKER_WAYNE, Route25_Text_WayneIntro, Route25_Text_WayneDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route25_EventScript_WayneRematch
+ msgbox Route25_Text_WaynePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_WayneRematch::
+ trainerbattle_rematch TRAINER_HIKER_WAYNE, Route25_Text_WayneRematchIntro, Route25_Text_WayneDefeat
+ msgbox Route25_Text_WaynePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_Flint::
+ trainerbattle_single TRAINER_CAMPER_FLINT, Route25_Text_FlintIntro, Route25_Text_FlintDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route25_EventScript_FlintRematch
+ msgbox Route25_Text_FlintPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route25_EventScript_FlintRematch::
+ trainerbattle_rematch TRAINER_CAMPER_FLINT, Route25_Text_FlintRematchIntro, Route25_Text_FlintDefeat
+ msgbox Route25_Text_FlintPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route6_EventScript_Keigo::
+ trainerbattle_single TRAINER_BUG_CATCHER_KEIGO, Route6_Text_KeigoIntro, Route6_Text_KeigoDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route6_EventScript_KeigoRematch
+ msgbox Route6_Text_KeigoPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route6_EventScript_KeigoRematch::
+ trainerbattle_rematch TRAINER_BUG_CATCHER_KEIGO, Route6_Text_KeigoRematchIntro, Route6_Text_KeigoDefeat
+ msgbox Route6_Text_KeigoPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route6_EventScript_Elijah::
+ trainerbattle_single TRAINER_BUG_CATCHER_ELIJAH, Route6_Text_ElijahIntro, Route6_Text_ElijahDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route6_EventScript_ElijahRematch
+ msgbox Route6_Text_ElijahPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route6_EventScript_ElijahRematch::
+ trainerbattle_rematch TRAINER_BUG_CATCHER_ELIJAH, Route6_Text_ElijahRematchIntro, Route6_Text_ElijahDefeat
+ msgbox Route6_Text_ElijahPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route6_EventScript_Ricky::
+ trainerbattle_single TRAINER_CAMPER_RICKY, Route6_Text_RickyIntro, Route6_Text_RickyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route6_EventScript_RickyRematch
+ msgbox Route6_Text_RickyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route6_EventScript_RickyRematch::
+ trainerbattle_rematch TRAINER_CAMPER_RICKY, Route6_Text_RickyRematchIntro, Route6_Text_RickyDefeat
+ msgbox Route6_Text_RickyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route6_EventScript_Jeff::
+ trainerbattle_single TRAINER_CAMPER_JEFF, Route6_Text_JeffIntro, Route6_Text_JeffDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route6_EventScript_JeffRematch
+ msgbox Route6_Text_JeffPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route6_EventScript_JeffRematch::
+ trainerbattle_rematch TRAINER_CAMPER_JEFF, Route6_Text_JeffRematchIntro, Route6_Text_JeffDefeat
+ msgbox Route6_Text_JeffPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route6_EventScript_Nancy::
+ trainerbattle_single TRAINER_PICNICKER_NANCY, Route6_Text_NancyIntro, Route6_Text_NancyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route6_EventScript_NancyRematch
+ msgbox Route6_Text_NancyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route6_EventScript_NancyRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_NANCY, Route6_Text_NancyRematchIntro, Route6_Text_NancyDefeat
+ msgbox Route6_Text_NancyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route6_EventScript_Isabelle::
+ trainerbattle_single TRAINER_PICNICKER_ISABELLE, Route6_Text_IsabelleIntro, Route6_Text_IsabelleDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route6_EventScript_IsabelleRematch
+ msgbox Route6_Text_IsabellePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route6_EventScript_IsabelleRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_ISABELLE, Route6_Text_IsabelleRematchIntro, Route6_Text_IsabelleDefeat
+ msgbox Route6_Text_IsabellePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_Eddie::
+ trainerbattle_single TRAINER_YOUNGSTER_EDDIE, Route11_Text_EddieIntro, Route11_Text_EddieDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route11_EventScript_EddieRematch
+ msgbox Route11_Text_EddiePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_EddieRematch::
+ trainerbattle_rematch TRAINER_YOUNGSTER_EDDIE, Route11_Text_EddieRematchIntro, Route11_Text_EddieDefeat
+ msgbox Route11_Text_EddiePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_Dillon::
+ trainerbattle_single TRAINER_YOUNGSTER_DILLON, Route11_Text_DillonIntro, Route11_Text_DillonDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route11_EventScript_DillonRematch
+ msgbox Route11_Text_DillonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_DillonRematch::
+ trainerbattle_rematch TRAINER_YOUNGSTER_DILLON, Route11_Text_DillonRematchIntro, Route11_Text_DillonDefeat
+ msgbox Route11_Text_DillonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_Yasu::
+ trainerbattle_single TRAINER_YOUNGSTER_YASU, Route11_Text_YasuIntro, Route11_Text_YasuDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route11_EventScript_YasuRematch
+ msgbox Route11_Text_YasuPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_YasuRematch::
+ trainerbattle_rematch TRAINER_YOUNGSTER_YASU, Route11_Text_YasuRematchIntro, Route11_Text_YasuDefeat
+ msgbox Route11_Text_YasuPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_Dave::
+ trainerbattle_single TRAINER_YOUNGSTER_DAVE, Route11_Text_DaveIntro, Route11_Text_DaveDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route11_EventScript_DaveRematch
+ msgbox Route11_Text_DavePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_DaveRematch::
+ trainerbattle_rematch TRAINER_YOUNGSTER_DAVE, Route11_Text_DaveRematchIntro, Route11_Text_DaveDefeat
+ msgbox Route11_Text_DavePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_Braxton::
+ trainerbattle_single TRAINER_ENGINEER_BRAXTON, Route11_Text_BraxtonIntro, Route11_Text_BraxtonDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route11_EventScript_BraxtonRematch
+ msgbox Route11_Text_BraxtonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_BraxtonRematch::
+ trainerbattle_rematch TRAINER_ENGINEER_BRAXTON, Route11_Text_BraxtonRematchIntro, Route11_Text_BraxtonDefeat
+ msgbox Route11_Text_BraxtonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_Bernie::
+ trainerbattle_single TRAINER_ENGINEER_BERNIE, Route11_Text_BernieIntro, Route11_Text_BernieDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route11_EventScript_BernieRematch
+ msgbox Route11_Text_BerniePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_BernieRematch::
+ trainerbattle_rematch TRAINER_ENGINEER_BERNIE, Route11_Text_BernieRematchIntro, Route11_Text_BernieDefeat
+ msgbox Route11_Text_BerniePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_Hugo::
+ trainerbattle_single TRAINER_GAMER_HUGO, Route11_Text_HugoIntro, Route11_Text_HugoDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route11_EventScript_HugoRematch
+ msgbox Route11_Text_HugoPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_HugoRematch::
+ trainerbattle_rematch TRAINER_GAMER_HUGO, Route11_Text_HugoRematchIntro, Route11_Text_HugoDefeat
+ msgbox Route11_Text_HugoPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_Jasper::
+ trainerbattle_single TRAINER_GAMER_JASPER, Route11_Text_JasperIntro, Route11_Text_JasperDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route11_EventScript_JasperRematch
+ msgbox Route11_Text_JasperPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_JasperRematch::
+ trainerbattle_rematch TRAINER_GAMER_JASPER, Route11_Text_JasperRematchIntro, Route11_Text_JasperDefeat
+ msgbox Route11_Text_JasperPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_Dirk::
+ trainerbattle_single TRAINER_GAMER_DIRK, Route11_Text_DirkIntro, Route11_Text_DirkDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route11_EventScript_DirkRematch
+ msgbox Route11_Text_DirkPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_DirkRematch::
+ trainerbattle_rematch TRAINER_GAMER_DIRK, Route11_Text_DirkRematchIntro, Route11_Text_DirkDefeat
+ msgbox Route11_Text_DirkPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_Darian::
+ trainerbattle_single TRAINER_GAMER_DARIAN, Route11_Text_DarianIntro, Route11_Text_DarianDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route11_EventScript_DarianRematch
+ msgbox Route11_Text_DarianPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route11_EventScript_DarianRematch::
+ trainerbattle_rematch TRAINER_GAMER_DARIAN, Route11_Text_DarianRematchIntro, Route11_Text_DarianDefeat
+ msgbox Route11_Text_DarianPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_Brent::
+ trainerbattle_single TRAINER_BUG_CATCHER_BRENT, Route9_Text_BrentIntro, Route9_Text_BrentDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route9_EventScript_BrentRematch
+ msgbox Route9_Text_BrentPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_BrentRematch::
+ trainerbattle_rematch TRAINER_BUG_CATCHER_BRENT, Route9_Text_BrentRematchIntro, Route9_Text_BrentDefeat
+ msgbox Route9_Text_BrentPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_Conner::
+ trainerbattle_single TRAINER_BUG_CATCHER_CONNER, Route9_Text_ConnerIntro, Route9_Text_ConnerDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route9_EventScript_ConnerRematch
+ msgbox Route9_Text_ConnerPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_ConnerRematch::
+ trainerbattle_rematch TRAINER_BUG_CATCHER_CONNER, Route9_Text_ConnerRematchIntro, Route9_Text_ConnerDefeat
+ msgbox Route9_Text_ConnerPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_Chris::
+ trainerbattle_single TRAINER_CAMPER_CHRIS, Route9_Text_ChrisIntro, Route9_Text_ChrisDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route9_EventScript_ChrisRematch
+ msgbox Route9_Text_ChrisPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_ChrisRematch::
+ trainerbattle_rematch TRAINER_CAMPER_CHRIS, Route9_Text_ChrisRematchIntro, Route9_Text_ChrisDefeat
+ msgbox Route9_Text_ChrisPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_Drew::
+ trainerbattle_single TRAINER_CAMPER_DREW, Route9_Text_DrewIntro, Route9_Text_DrewDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route9_EventScript_DrewRematch
+ msgbox Route9_Text_DrewPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_DrewRematch::
+ trainerbattle_rematch TRAINER_CAMPER_DREW, Route9_Text_DrewRematchIntro, Route9_Text_DrewDefeat
+ msgbox Route9_Text_DrewPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_Alicia::
+ trainerbattle_single TRAINER_PICNICKER_ALICIA, Route9_Text_AliciaIntro, Route9_Text_AliciaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route9_EventScript_AliciaRematch
+ msgbox Route9_Text_AliciaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_AliciaRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_ALICIA, Route9_Text_AliciaRematchIntro, Route9_Text_AliciaDefeat
+ msgbox Route9_Text_AliciaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_Caitlin::
+ trainerbattle_single TRAINER_PICNICKER_CAITLIN, Route9_Text_CaitlinIntro, Route9_Text_CaitlinDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route9_EventScript_CaitlinRematch
+ msgbox Route9_Text_CaitlinPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_CaitlinRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_CAITLIN, Route9_Text_CaitlinRematchIntro, Route9_Text_CaitlinDefeat
+ msgbox Route9_Text_CaitlinPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_Alan::
+ trainerbattle_single TRAINER_HIKER_ALAN, Route9_Text_AlanIntro, Route9_Text_AlanDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route9_EventScript_AlanRematch
+ msgbox Route9_Text_AlanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_AlanRematch::
+ trainerbattle_rematch TRAINER_HIKER_ALAN, Route9_Text_AlanRematchIntro, Route9_Text_AlanDefeat
+ msgbox Route9_Text_AlanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_Brice::
+ trainerbattle_single TRAINER_HIKER_BRICE, Route9_Text_BriceIntro, Route9_Text_BriceDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route9_EventScript_BriceRematch
+ msgbox Route9_Text_BricePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_BriceRematch::
+ trainerbattle_rematch TRAINER_HIKER_BRICE, Route9_Text_BriceRematchIntro, Route9_Text_BriceDefeat
+ msgbox Route9_Text_BricePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_Jeremy::
+ trainerbattle_single TRAINER_HIKER_JEREMY, Route9_Text_JeremyIntro, Route9_Text_JeremyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route9_EventScript_JeremyRematch
+ msgbox Route9_Text_JeremyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route9_EventScript_JeremyRematch::
+ trainerbattle_rematch TRAINER_HIKER_JEREMY, Route9_Text_JeremyRematchIntro, Route9_Text_JeremyDefeat
+ msgbox Route9_Text_JeremyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route10_EventScript_Heidi::
+ trainerbattle_single TRAINER_PICNICKER_HEIDI, Route10_Text_HeidiIntro, Route10_Text_HeidiDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route10_EventScript_HeidiRematch
+ msgbox Route10_Text_HeidiPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route10_EventScript_HeidiRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_HEIDI, Route10_Text_HeidiRematchIntro, Route10_Text_HeidiDefeat
+ msgbox Route10_Text_HeidiPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route10_EventScript_Carol::
+ trainerbattle_single TRAINER_PICNICKER_CAROL, Route10_Text_CarolIntro, Route10_Text_CarolDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route10_EventScript_CarolRematch
+ msgbox Route10_Text_CarolPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route10_EventScript_CarolRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_CAROL, Route10_Text_CarolRematchIntro, Route10_Text_CarolDefeat
+ msgbox Route10_Text_CarolPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route10_EventScript_Mark::
+ trainerbattle_single TRAINER_POKEMANIAC_MARK, Route10_Text_MarkIntro, Route10_Text_MarkDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route10_EventScript_MarkRematch
+ msgbox Route10_Text_MarkPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route10_EventScript_MarkRematch::
+ trainerbattle_rematch TRAINER_POKEMANIAC_MARK, Route10_Text_MarkRematchIntro, Route10_Text_MarkDefeat
+ msgbox Route10_Text_MarkPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route10_EventScript_Herman::
+ trainerbattle_single TRAINER_POKEMANIAC_HERMAN, Route10_Text_HermanIntro, Route10_Text_HermanDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route10_EventScript_HermanRematch
+ msgbox Route10_Text_HermanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route10_EventScript_HermanRematch::
+ trainerbattle_rematch TRAINER_POKEMANIAC_HERMAN, Route10_Text_HermanRematchIntro, Route10_Text_HermanDefeat
+ msgbox Route10_Text_HermanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route10_EventScript_Clark::
+ trainerbattle_single TRAINER_HIKER_CLARK, Route10_Text_ClarkIntro, Route10_Text_ClarkDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route10_EventScript_ClarkRematch
+ msgbox Route10_Text_ClarkPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route10_EventScript_ClarkRematch::
+ trainerbattle_rematch TRAINER_HIKER_CLARK, Route10_Text_ClarkRematchIntro, Route10_Text_ClarkDefeat
+ msgbox Route10_Text_ClarkPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route10_EventScript_Trent::
+ trainerbattle_single TRAINER_HIKER_TRENT, Route10_Text_TrentIntro, Route10_Text_TrentDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route10_EventScript_TrentRematch
+ msgbox Route10_Text_TrentPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route10_EventScript_TrentRematch::
+ trainerbattle_rematch TRAINER_HIKER_TRENT, Route10_Text_TrentRematchIntro, Route10_Text_TrentDefeat
+ msgbox Route10_Text_TrentPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_Paige::
+ trainerbattle_single TRAINER_LASS_PAIGE, Route8_Text_PaigeIntro, Route8_Text_PaigeDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route8_EventScript_PaigeRematch
+ msgbox Route8_Text_PaigePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_PaigeRematch::
+ trainerbattle_rematch TRAINER_LASS_PAIGE, Route8_Text_PaigeRematchIntro, Route8_Text_PaigeDefeat
+ msgbox Route8_Text_PaigePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_Andrea::
+ trainerbattle_single TRAINER_LASS_ANDREA, Route8_Text_AndreaIntro, Route8_Text_AndreaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route8_EventScript_AndreaRematch
+ msgbox Route8_Text_AndreaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_AndreaRematch::
+ trainerbattle_rematch TRAINER_LASS_ANDREA, Route8_Text_AndreaRematchIntro, Route8_Text_AndreaDefeat
+ msgbox Route8_Text_AndreaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_Megan::
+ trainerbattle_single TRAINER_LASS_MEGAN, Route8_Text_MeganIntro, Route8_Text_MeganDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route8_EventScript_MeganRematch
+ msgbox Route8_Text_MeganPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_MeganRematch::
+ trainerbattle_rematch TRAINER_LASS_MEGAN, Route8_Text_MeganRematchIntro, Route8_Text_MeganDefeat
+ msgbox Route8_Text_MeganPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_Julia::
+ trainerbattle_single TRAINER_LASS_JULIA, Route8_Text_JuliaIntro, Route8_Text_JuliaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route8_EventScript_JuliaRematch
+ msgbox Route8_Text_JuliaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_JuliaRematch::
+ trainerbattle_rematch TRAINER_LASS_JULIA, Route8_Text_JuliaRematchIntro, Route8_Text_JuliaDefeat
+ msgbox Route8_Text_JuliaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_Aidan::
+ trainerbattle_single TRAINER_SUPER_NERD_AIDAN, Route8_Text_AidanIntro, Route8_Text_AidanDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route8_EventScript_AidanRematch
+ msgbox Route8_Text_AidanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_AidanRematch::
+ trainerbattle_rematch TRAINER_SUPER_NERD_AIDAN, Route8_Text_AidanRematchIntro, Route8_Text_AidanDefeat
+ msgbox Route8_Text_AidanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_Glenn::
+ trainerbattle_single TRAINER_SUPER_NERD_GLENN, Route8_Text_GlennIntro, Route8_Text_GlennDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route8_EventScript_GlennRematch
+ msgbox Route8_Text_GlennPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_GlennRematch::
+ trainerbattle_rematch TRAINER_SUPER_NERD_GLENN, Route8_Text_GlennRematchIntro, Route8_Text_GlennDefeat
+ msgbox Route8_Text_GlennPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_Leslie::
+ trainerbattle_single TRAINER_SUPER_NERD_LESLIE, Route8_Text_LeslieIntro, Route8_Text_LeslieDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route8_EventScript_LeslieRematch
+ msgbox Route8_Text_LesliePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_LeslieRematch::
+ trainerbattle_rematch TRAINER_SUPER_NERD_LESLIE, Route8_Text_LeslieRematchIntro, Route8_Text_LeslieDefeat
+ msgbox Route8_Text_LesliePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_Stan::
+ trainerbattle_single TRAINER_GAMER_STAN, Route8_Text_StanIntro, Route8_Text_StanDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route8_EventScript_StanRematch
+ msgbox Route8_Text_StanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_StanRematch::
+ trainerbattle_rematch TRAINER_GAMER_STAN, Route8_Text_StanRematchIntro, Route8_Text_StanDefeat
+ msgbox Route8_Text_StanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_Rich::
+ trainerbattle_single TRAINER_GAMER_RICH, Route8_Text_RichIntro, Route8_Text_RichDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route8_EventScript_RichRematch
+ msgbox Route8_Text_RichPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_RichRematch::
+ trainerbattle_rematch TRAINER_GAMER_RICH, Route8_Text_RichRematchIntro, Route8_Text_RichDefeat
+ msgbox Route8_Text_RichPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_Eli::
+ trainerbattle_double TRAINER_TWINS_ELI_ANNE, Route8_Text_EliIntro, Route8_Text_EliDefeat, Route8_Text_EliNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route8_EventScript_EliRematch
+ msgbox Route8_Text_EliPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_EliRematch::
+ trainerbattle_rematch_double TRAINER_TWINS_ELI_ANNE, Route8_Text_EliRematchIntro, Route8_Text_EliDefeat, Route8_Text_EliNotEnoughMons
+ msgbox Route8_Text_EliPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_Anne::
+ trainerbattle_double TRAINER_TWINS_ELI_ANNE, Route8_Text_AnneIntro, Route8_Text_AnneDefeat, Route8_Text_AnneNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route8_EventScript_AnneRematch
+ msgbox Route8_Text_AnnePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_AnneRematch::
+ trainerbattle_rematch_double TRAINER_TWINS_ELI_ANNE, Route8_Text_AnneRematchIntro, Route8_Text_AnneDefeat, Route8_Text_AnneNotEnoughMons
+ msgbox Route8_Text_AnnePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_Ricardo::
+ trainerbattle_single TRAINER_BIKER_RICARDO, Route8_Text_RicardoIntro, Route8_Text_RicardoDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route8_EventScript_RicardoRematch
+ msgbox Route8_Text_RicardoPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_RicardoRematch::
+ trainerbattle_rematch TRAINER_BIKER_RICARDO, Route8_Text_RicardoRematchIntro, Route8_Text_RicardoDefeat
+ msgbox Route8_Text_RicardoPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_Jaren::
+ trainerbattle_single TRAINER_BIKER_JAREN, Route8_Text_JarenIntro, Route8_Text_JarenDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route8_EventScript_JarenRematch
+ msgbox Route8_Text_JarenPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route8_EventScript_JarenRematch::
+ trainerbattle_rematch TRAINER_BIKER_JAREN, Route8_Text_JarenRematchIntro, Route8_Text_JarenDefeat
+ msgbox Route8_Text_JarenPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_Ned::
+ trainerbattle_single TRAINER_FISHERMAN_NED, Route12_Text_NedIntro, Route12_Text_NedDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route12_EventScript_NedRematch
+ msgbox Route12_Text_NedPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_NedRematch::
+ trainerbattle_rematch TRAINER_FISHERMAN_NED, Route12_Text_NedRematchIntro, Route12_Text_NedDefeat
+ msgbox Route12_Text_NedPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_Chip::
+ trainerbattle_single TRAINER_FISHERMAN_CHIP, Route12_Text_ChipIntro, Route12_Text_ChipDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route12_EventScript_ChipRematch
+ msgbox Route12_Text_ChipPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_ChipRematch::
+ trainerbattle_rematch TRAINER_FISHERMAN_CHIP, Route12_Text_ChipRematchIntro, Route12_Text_ChipDefeat
+ msgbox Route12_Text_ChipPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_Hank::
+ trainerbattle_single TRAINER_FISHERMAN_HANK, Route12_Text_HankIntro, Route12_Text_HankDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route12_EventScript_HankRematch
+ msgbox Route12_Text_HankPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_HankRematch::
+ trainerbattle_rematch TRAINER_FISHERMAN_HANK, Route12_Text_HankRematchIntro, Route12_Text_HankDefeat
+ msgbox Route12_Text_HankPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_Elliot::
+ trainerbattle_single TRAINER_FISHERMAN_ELLIOT, Route12_Text_ElliotIntro, Route12_Text_ElliotDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route12_EventScript_ElliotRematch
+ msgbox Route12_Text_ElliotPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_ElliotRematch::
+ trainerbattle_rematch TRAINER_FISHERMAN_ELLIOT, Route12_Text_ElliotRematchIntro, Route12_Text_ElliotDefeat
+ msgbox Route12_Text_ElliotPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_Andrew::
+ trainerbattle_single TRAINER_FISHERMAN_ANDREW, Route12_Text_AndrewIntro, Route12_Text_AndrewDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route12_EventScript_AndrewRematch
+ msgbox Route12_Text_AndrewPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_AndrewRematch::
+ trainerbattle_rematch TRAINER_FISHERMAN_ANDREW, Route12_Text_AndrewRematchIntro, Route12_Text_AndrewDefeat
+ msgbox Route12_Text_AndrewPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_Luca::
+ trainerbattle_single TRAINER_ROCKER_LUCA, Route12_Text_LucaIntro, Route12_Text_LucaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route12_EventScript_LucaRematch
+ msgbox Route12_Text_LucaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_LucaRematch::
+ trainerbattle_rematch TRAINER_ROCKER_LUCA, Route12_Text_LucaRematchIntro, Route12_Text_LucaDefeat
+ msgbox Route12_Text_LucaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_Justin::
+ trainerbattle_single TRAINER_CAMPER_JUSTIN, Route12_Text_JustinIntro, Route12_Text_JustinDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route12_EventScript_JustinRematch
+ msgbox Route12_Text_JustinPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_JustinRematch::
+ trainerbattle_rematch TRAINER_CAMPER_JUSTIN, Route12_Text_JustinRematchIntro, Route12_Text_JustinDefeat
+ msgbox Route12_Text_JustinPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_Jes::
+ trainerbattle_double TRAINER_YOUNG_COUPLE_GIA_JES, Route12_Text_JesIntro, Route12_Text_JesDefeat, Route12_Text_JesNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route12_EventScript_JesRematch
+ msgbox Route12_Text_JesPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_JesRematch::
+ trainerbattle_rematch_double TRAINER_YOUNG_COUPLE_GIA_JES, Route12_Text_JesRematchIntro, Route12_Text_JesDefeat, Route12_Text_JesNotEnoughMons
+ msgbox Route12_Text_JesPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_Gia::
+ trainerbattle_double TRAINER_YOUNG_COUPLE_GIA_JES, Route12_Text_GiaIntro, Route12_Text_GiaDefeat, Route12_Text_GiaNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route12_EventScript_GiaRematch
+ msgbox Route12_Text_GiaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route12_EventScript_GiaRematch::
+ trainerbattle_rematch_double TRAINER_YOUNG_COUPLE_GIA_JES, Route12_Text_GiaRematchIntro, Route12_Text_GiaDefeat, Route12_Text_GiaNotEnoughMons
+ msgbox Route12_Text_GiaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_Jared::
+ trainerbattle_single TRAINER_BIKER_JARED, Route13_Text_JaredIntro, Route13_Text_JaredDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route13_EventScript_JaredRematch
+ msgbox Route13_Text_JaredPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_JaredRematch::
+ trainerbattle_rematch TRAINER_BIKER_JARED, Route13_Text_JaredRematchIntro, Route13_Text_JaredDefeat
+ msgbox Route13_Text_JaredPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_Lola::
+ trainerbattle_single TRAINER_BEAUTY_LOLA, Route13_Text_LolaIntro, Route13_Text_LolaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route13_EventScript_LolaRematch
+ msgbox Route13_Text_LolaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_LolaRematch::
+ trainerbattle_rematch TRAINER_BEAUTY_LOLA, Route13_Text_LolaRematchIntro, Route13_Text_LolaDefeat
+ msgbox Route13_Text_LolaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_Sheila::
+ trainerbattle_single TRAINER_BEAUTY_SHEILA, Route13_Text_SheilaIntro, Route13_Text_SheilaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route13_EventScript_SheilaRematch
+ msgbox Route13_Text_SheilaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_SheilaRematch::
+ trainerbattle_rematch TRAINER_BEAUTY_SHEILA, Route13_Text_SheilaRematchIntro, Route13_Text_SheilaDefeat
+ msgbox Route13_Text_SheilaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_Sebastian::
+ trainerbattle_single TRAINER_BIRD_KEEPER_SEBASTIAN, Route13_Text_SebastianIntro, Route13_Text_SebastianDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route13_EventScript_SebastianRematch
+ msgbox Route13_Text_SebastianPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_SebastianRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_SEBASTIAN, Route13_Text_SebastianRematchIntro, Route13_Text_SebastianDefeat
+ msgbox Route13_Text_SebastianPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_Perry::
+ trainerbattle_single TRAINER_BIRD_KEEPER_PERRY, Route13_Text_PerryIntro, Route13_Text_PerryDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route13_EventScript_PerryRematch
+ msgbox Route13_Text_PerryPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_PerryRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_PERRY, Route13_Text_PerryRematchIntro, Route13_Text_PerryDefeat
+ msgbox Route13_Text_PerryPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_Robert::
+ trainerbattle_single TRAINER_BIRD_KEEPER_ROBERT, Route13_Text_RobertIntro, Route13_Text_RobertDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route13_EventScript_RobertRematch
+ msgbox Route13_Text_RobertPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_RobertRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_ROBERT, Route13_Text_RobertRematchIntro, Route13_Text_RobertDefeat
+ msgbox Route13_Text_RobertPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_Alma::
+ trainerbattle_single TRAINER_PICNICKER_ALMA, Route13_Text_AlmaIntro, Route13_Text_AlmaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route13_EventScript_AlmaRematch
+ msgbox Route13_Text_AlmaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_AlmaRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_ALMA, Route13_Text_AlmaRematchIntro, Route13_Text_AlmaDefeat
+ msgbox Route13_Text_AlmaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_Susie::
+ trainerbattle_single TRAINER_PICNICKER_SUSIE, Route13_Text_SusieIntro, Route13_Text_SusieDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route13_EventScript_SusieRematch
+ msgbox Route13_Text_SusiePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_SusieRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_SUSIE, Route13_Text_SusieRematchIntro, Route13_Text_SusieDefeat
+ msgbox Route13_Text_SusiePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_Valerie::
+ trainerbattle_single TRAINER_PICNICKER_VALERIE, Route13_Text_ValerieIntro, Route13_Text_ValerieDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route13_EventScript_ValerieRematch
+ msgbox Route13_Text_ValeriePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_ValerieRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_VALERIE, Route13_Text_ValerieRematchIntro, Route13_Text_ValerieDefeat
+ msgbox Route13_Text_ValeriePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_Gwen::
+ trainerbattle_single TRAINER_PICNICKER_GWEN, Route13_Text_GwenIntro, Route13_Text_GwenDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route13_EventScript_GwenRematch
+ msgbox Route13_Text_GwenPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route13_EventScript_GwenRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_GWEN, Route13_Text_GwenRematchIntro, Route13_Text_GwenDefeat
+ msgbox Route13_Text_GwenPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_Malik::
+ trainerbattle_single TRAINER_BIKER_MALIK, Route14_Text_MalikIntro, Route14_Text_MalikDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route14_EventScript_MalikRematch
+ msgbox Route14_Text_MalikPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_MalikRematch::
+ trainerbattle_rematch TRAINER_BIKER_MALIK, Route14_Text_MalikRematchIntro, Route14_Text_MalikDefeat
+ msgbox Route14_Text_MalikPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_Lukas::
+ trainerbattle_single TRAINER_BIKER_LUKAS, Route14_Text_LukasIntro, Route14_Text_LukasDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route14_EventScript_LukasRematch
+ msgbox Route14_Text_LukasPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_LukasRematch::
+ trainerbattle_rematch TRAINER_BIKER_LUKAS, Route14_Text_LukasRematchIntro, Route14_Text_LukasDefeat
+ msgbox Route14_Text_LukasPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_Isaac::
+ trainerbattle_single TRAINER_BIKER_ISAAC, Route14_Text_IsaacIntro, Route14_Text_IsaacDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route14_EventScript_IsaacRematch
+ msgbox Route14_Text_IsaacPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_IsaacRematch::
+ trainerbattle_rematch TRAINER_BIKER_ISAAC, Route14_Text_IsaacRematchIntro, Route14_Text_IsaacDefeat
+ msgbox Route14_Text_IsaacPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_Gerald::
+ trainerbattle_single TRAINER_BIKER_GERALD, Route14_Text_GeraldIntro, Route14_Text_GeraldDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route14_EventScript_GeraldRematch
+ msgbox Route14_Text_GeraldPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_GeraldRematch::
+ trainerbattle_rematch TRAINER_BIKER_GERALD, Route14_Text_GeraldRematchIntro, Route14_Text_GeraldDefeat
+ msgbox Route14_Text_GeraldPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_Donald::
+ trainerbattle_single TRAINER_BIRD_KEEPER_DONALD, Route14_Text_DonaldIntro, Route14_Text_DonaldDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route14_EventScript_DonaldRematch
+ msgbox Route14_Text_DonaldPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_DonaldRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_DONALD, Route14_Text_DonaldRematchIntro, Route14_Text_DonaldDefeat
+ msgbox Route14_Text_DonaldPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_Benny::
+ trainerbattle_single TRAINER_BIRD_KEEPER_BENNY, Route14_Text_BennyIntro, Route14_Text_BennyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route14_EventScript_BennyRematch
+ msgbox Route14_Text_BennyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_BennyRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_BENNY, Route14_Text_BennyRematchIntro, Route14_Text_BennyDefeat
+ msgbox Route14_Text_BennyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_Carter::
+ trainerbattle_single TRAINER_BIRD_KEEPER_CARTER, Route14_Text_CarterIntro, Route14_Text_CarterDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route14_EventScript_CarterRematch
+ msgbox Route14_Text_CarterPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_CarterRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_CARTER, Route14_Text_CarterRematchIntro, Route14_Text_CarterDefeat
+ msgbox Route14_Text_CarterPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_Mitch::
+ trainerbattle_single TRAINER_BIRD_KEEPER_MITCH, Route14_Text_MitchIntro, Route14_Text_MitchDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route14_EventScript_MitchRematch
+ msgbox Route14_Text_MitchPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_MitchRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_MITCH, Route14_Text_MitchRematchIntro, Route14_Text_MitchDefeat
+ msgbox Route14_Text_MitchPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_Beck::
+ trainerbattle_single TRAINER_BIRD_KEEPER_BECK, Route14_Text_BeckIntro, Route14_Text_BeckDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route14_EventScript_BeckRematch
+ msgbox Route14_Text_BeckPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_BeckRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_BECK, Route14_Text_BeckRematchIntro, Route14_Text_BeckDefeat
+ msgbox Route14_Text_BeckPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_Marlon::
+ trainerbattle_single TRAINER_BIRD_KEEPER_MARLON, Route14_Text_MarlonIntro, Route14_Text_MarlonDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route14_EventScript_MarlonRematch
+ msgbox Route14_Text_MarlonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_MarlonRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_MARLON, Route14_Text_MarlonRematchIntro, Route14_Text_MarlonDefeat
+ msgbox Route14_Text_MarlonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_Kiri::
+ trainerbattle_double TRAINER_TWINS_KIRI_JAN, Route14_Text_KiriIntro, Route14_Text_KiriDefeat, Route14_Text_KiriNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route14_EventScript_KiriRematch
+ msgbox Route14_Text_KiriPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_KiriRematch::
+ trainerbattle_rematch_double TRAINER_TWINS_KIRI_JAN, Route14_Text_KiriRematchIntro, Route14_Text_KiriDefeat, Route14_Text_KiriNotEnoughMons
+ msgbox Route14_Text_KiriPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_Jan::
+ trainerbattle_double TRAINER_TWINS_KIRI_JAN, Route14_Text_JanIntro, Route14_Text_JanDefeat, Route14_Text_JanNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route14_EventScript_JanRematch
+ msgbox Route14_Text_JanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route14_EventScript_JanRematch::
+ trainerbattle_rematch_double TRAINER_TWINS_KIRI_JAN, Route14_Text_JanRematchIntro, Route14_Text_JanDefeat, Route14_Text_JanNotEnoughMons
+ msgbox Route14_Text_JanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_Ernest::
+ trainerbattle_single TRAINER_BIKER_ERNEST, Route15_Text_ErnestIntro, Route15_Text_ErnestDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route15_EventScript_ErnestRematch
+ msgbox Route15_Text_ErnestPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_ErnestRematch::
+ trainerbattle_rematch TRAINER_BIKER_ERNEST, Route15_Text_ErnestRematchIntro, Route15_Text_ErnestDefeat
+ msgbox Route15_Text_ErnestPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_Alex::
+ trainerbattle_single TRAINER_BIKER_ALEX, Route15_Text_AlexIntro, Route15_Text_AlexDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route15_EventScript_AlexRematch
+ msgbox Route15_Text_AlexPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_AlexRematch::
+ trainerbattle_rematch TRAINER_BIKER_ALEX, Route15_Text_AlexRematchIntro, Route15_Text_AlexDefeat
+ msgbox Route15_Text_AlexPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_Grace::
+ trainerbattle_single TRAINER_BEAUTY_GRACE, Route15_Text_GraceIntro, Route15_Text_GraceDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route15_EventScript_GraceRematch
+ msgbox Route15_Text_GracePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_GraceRematch::
+ trainerbattle_rematch TRAINER_BEAUTY_GRACE, Route15_Text_GraceRematchIntro, Route15_Text_GraceDefeat
+ msgbox Route15_Text_GracePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_Olivia::
+ trainerbattle_single TRAINER_BEAUTY_OLIVIA, Route15_Text_OliviaIntro, Route15_Text_OliviaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route15_EventScript_OliviaRematch
+ msgbox Route15_Text_OliviaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_OliviaRematch::
+ trainerbattle_rematch TRAINER_BEAUTY_OLIVIA, Route15_Text_OliviaRematchIntro, Route15_Text_OliviaDefeat
+ msgbox Route15_Text_OliviaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_Edwin::
+ trainerbattle_single TRAINER_BIRD_KEEPER_EDWIN, Route15_Text_EdwinIntro, Route15_Text_EdwinDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route15_EventScript_EdwinRematch
+ msgbox Route15_Text_EdwinPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_EdwinRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_EDWIN, Route15_Text_EdwinRematchIntro, Route15_Text_EdwinDefeat
+ msgbox Route15_Text_EdwinPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_Chester::
+ trainerbattle_single TRAINER_BIRD_KEEPER_CHESTER, Route15_Text_ChesterIntro, Route15_Text_ChesterDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route15_EventScript_ChesterRematch
+ msgbox Route15_Text_ChesterPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_ChesterRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_CHESTER, Route15_Text_ChesterRematchIntro, Route15_Text_ChesterDefeat
+ msgbox Route15_Text_ChesterPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_Yazmin::
+ trainerbattle_single TRAINER_PICNICKER_YAZMIN, Route15_Text_YazminIntro, Route15_Text_YazminDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route15_EventScript_YazminRematch
+ msgbox Route15_Text_YazminPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_YazminRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_YAZMIN, Route15_Text_YazminRematchIntro, Route15_Text_YazminDefeat
+ msgbox Route15_Text_YazminPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_Kindra::
+ trainerbattle_single TRAINER_PICNICKER_KINDRA, Route15_Text_KindraIntro, Route15_Text_KindraDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route15_EventScript_KindraRematch
+ msgbox Route15_Text_KindraPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_KindraRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_KINDRA, Route15_Text_KindraRematchIntro, Route15_Text_KindraDefeat
+ msgbox Route15_Text_KindraPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_Becky::
+ trainerbattle_single TRAINER_PICNICKER_BECKY, Route15_Text_BeckyIntro, Route15_Text_BeckyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route15_EventScript_BeckyRematch
+ msgbox Route15_Text_BeckyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_BeckyRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_BECKY, Route15_Text_BeckyRematchIntro, Route15_Text_BeckyDefeat
+ msgbox Route15_Text_BeckyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_Celia::
+ trainerbattle_single TRAINER_PICNICKER_CELIA, Route15_Text_CeliaIntro, Route15_Text_CeliaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route15_EventScript_CeliaRematch
+ msgbox Route15_Text_CeliaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_CeliaRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_CELIA, Route15_Text_CeliaRematchIntro, Route15_Text_CeliaDefeat
+ msgbox Route15_Text_CeliaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_Mya::
+ trainerbattle_double TRAINER_CRUSH_KIN_RON_MYA, Route15_Text_MyaIntro, Route15_Text_MyaDefeat, Route15_Text_MyaNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route15_EventScript_MyaRematch
+ msgbox Route15_Text_MyaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_MyaRematch::
+ trainerbattle_rematch_double TRAINER_CRUSH_KIN_RON_MYA, Route15_Text_MyaRematchIntro, Route15_Text_MyaDefeat, Route15_Text_MyaNotEnoughMons
+ msgbox Route15_Text_MyaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_Ron::
+ trainerbattle_double TRAINER_CRUSH_KIN_RON_MYA, Route15_Text_RonIntro, Route15_Text_RonDefeat, Route15_Text_RonNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route15_EventScript_RonRematch
+ msgbox Route15_Text_RonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route15_EventScript_RonRematch::
+ trainerbattle_rematch_double TRAINER_CRUSH_KIN_RON_MYA, Route15_Text_RonRematchIntro, Route15_Text_RonDefeat, Route15_Text_RonNotEnoughMons
+ msgbox Route15_Text_RonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route16_EventScript_Lao::
+ trainerbattle_single TRAINER_BIKER_LAO, Route16_Text_LaoIntro, Route16_Text_LaoDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route16_EventScript_LaoRematch
+ msgbox Route16_Text_LaoPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route16_EventScript_LaoRematch::
+ trainerbattle_rematch TRAINER_BIKER_LAO, Route16_Text_LaoRematchIntro, Route16_Text_LaoDefeat
+ msgbox Route16_Text_LaoPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route16_EventScript_Hideo::
+ trainerbattle_single TRAINER_BIKER_HIDEO, Route16_Text_HideoIntro, Route16_Text_HideoDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route16_EventScript_HideoRematch
+ msgbox Route16_Text_HideoPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route16_EventScript_HideoRematch::
+ trainerbattle_rematch TRAINER_BIKER_HIDEO, Route16_Text_HideoRematchIntro, Route16_Text_HideoDefeat
+ msgbox Route16_Text_HideoPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route16_EventScript_Ruben::
+ trainerbattle_single TRAINER_BIKER_RUBEN, Route16_Text_RubenIntro, Route16_Text_RubenDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route16_EventScript_RubenRematch
+ msgbox Route16_Text_RubenPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route16_EventScript_RubenRematch::
+ trainerbattle_rematch TRAINER_BIKER_RUBEN, Route16_Text_RubenRematchIntro, Route16_Text_RubenDefeat
+ msgbox Route16_Text_RubenPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route16_EventScript_Koji::
+ trainerbattle_single TRAINER_CUE_BALL_KOJI, Route16_Text_KojiIntro, Route16_Text_KojiDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route16_EventScript_KojiRematch
+ msgbox Route16_Text_KojiPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route16_EventScript_KojiRematch::
+ trainerbattle_rematch TRAINER_CUE_BALL_KOJI, Route16_Text_KojiRematchIntro, Route16_Text_KojiDefeat
+ msgbox Route16_Text_KojiPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route16_EventScript_Luke::
+ trainerbattle_single TRAINER_CUE_BALL_LUKE, Route16_Text_LukeIntro, Route16_Text_LukeDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route16_EventScript_LukeRematch
+ msgbox Route16_Text_LukePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route16_EventScript_LukeRematch::
+ trainerbattle_rematch TRAINER_CUE_BALL_LUKE, Route16_Text_LukeRematchIntro, Route16_Text_LukeDefeat
+ msgbox Route16_Text_LukePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route16_EventScript_Camron::
+ trainerbattle_single TRAINER_CUE_BALL_CAMRON, Route16_Text_CamronIntro, Route16_Text_CamronDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route16_EventScript_CamronRematch
+ msgbox Route16_Text_CamronPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route16_EventScript_CamronRematch::
+ trainerbattle_rematch TRAINER_CUE_BALL_CAMRON, Route16_Text_CamronRematchIntro, Route16_Text_CamronDefeat
+ msgbox Route16_Text_CamronPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route16_EventScript_Jed::
+ trainerbattle_double TRAINER_YOUNG_COUPLE_LEA_JED, Route16_Text_JedIntro, Route16_Text_JedDefeat, Route16_Text_JedNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route16_EventScript_JedRematch
+ msgbox Route16_Text_JedPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route16_EventScript_JedRematch::
+ trainerbattle_rematch_double TRAINER_YOUNG_COUPLE_LEA_JED, Route16_Text_JedRematchIntro, Route16_Text_JedDefeat, Route16_Text_JedNotEnoughMons
+ msgbox Route16_Text_JedPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route16_EventScript_Lea::
+ trainerbattle_double TRAINER_YOUNG_COUPLE_LEA_JED, Route16_Text_LeaIntro, Route16_Text_LeaDefeat, Route16_Text_LeaNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route16_EventScript_LeaRematch
+ msgbox Route16_Text_LeaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route16_EventScript_LeaRematch::
+ trainerbattle_rematch_double TRAINER_YOUNG_COUPLE_LEA_JED, Route16_Text_LeaRematchIntro, Route16_Text_LeaDefeat, Route16_Text_LeaNotEnoughMons
+ msgbox Route16_Text_LeaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_Billy::
+ trainerbattle_single TRAINER_BIKER_BILLY, Route17_Text_BillyIntro, Route17_Text_BillyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route17_EventScript_BillyRematch
+ msgbox Route17_Text_BillyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_BillyRematch::
+ trainerbattle_rematch TRAINER_BIKER_BILLY, Route17_Text_BillyRematchIntro, Route17_Text_BillyDefeat
+ msgbox Route17_Text_BillyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_Nikolas::
+ trainerbattle_single TRAINER_BIKER_NIKOLAS, Route17_Text_NikolasIntro, Route17_Text_NikolasDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route17_EventScript_NikolasRematch
+ msgbox Route17_Text_NikolasPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_NikolasRematch::
+ trainerbattle_rematch TRAINER_BIKER_NIKOLAS, Route17_Text_NikolasRematchIntro, Route17_Text_NikolasDefeat
+ msgbox Route17_Text_NikolasPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_Jaxon::
+ trainerbattle_single TRAINER_BIKER_JAXON, Route17_Text_JaxonIntro, Route17_Text_JaxonDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route17_EventScript_JaxonRematch
+ msgbox Route17_Text_JaxonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_JaxonRematch::
+ trainerbattle_rematch TRAINER_BIKER_JAXON, Route17_Text_JaxonRematchIntro, Route17_Text_JaxonDefeat
+ msgbox Route17_Text_JaxonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_William::
+ trainerbattle_single TRAINER_BIKER_WILLIAM, Route17_Text_WilliamIntro, Route17_Text_WilliamDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route17_EventScript_WilliamRematch
+ msgbox Route17_Text_WilliamPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_WilliamRematch::
+ trainerbattle_rematch TRAINER_BIKER_WILLIAM, Route17_Text_WilliamRematchIntro, Route17_Text_WilliamDefeat
+ msgbox Route17_Text_WilliamPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_Raul::
+ trainerbattle_single TRAINER_CUE_BALL_RAUL, Route17_Text_RaulIntro, Route17_Text_RaulDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route17_EventScript_RaulRematch
+ msgbox Route17_Text_RaulPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_RaulRematch::
+ trainerbattle_rematch TRAINER_CUE_BALL_RAUL, Route17_Text_RaulRematchIntro, Route17_Text_RaulDefeat
+ msgbox Route17_Text_RaulPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_Isaiah::
+ trainerbattle_single TRAINER_CUE_BALL_ISAIAH, Route17_Text_IsaiahIntro, Route17_Text_IsaiahDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route17_EventScript_IsaiahRematch
+ msgbox Route17_Text_IsaiahPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_IsaiahRematch::
+ trainerbattle_rematch TRAINER_CUE_BALL_ISAIAH, Route17_Text_IsaiahRematchIntro, Route17_Text_IsaiahDefeat
+ msgbox Route17_Text_IsaiahPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_Zeek::
+ trainerbattle_single TRAINER_CUE_BALL_ZEEK, Route17_Text_ZeekIntro, Route17_Text_ZeekDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route17_EventScript_ZeekRematch
+ msgbox Route17_Text_ZeekPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_ZeekRematch::
+ trainerbattle_rematch TRAINER_CUE_BALL_ZEEK, Route17_Text_ZeekRematchIntro, Route17_Text_ZeekDefeat
+ msgbox Route17_Text_ZeekPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_Jamal::
+ trainerbattle_single TRAINER_CUE_BALL_JAMAL, Route17_Text_JamalIntro, Route17_Text_JamalDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route17_EventScript_JamalRematch
+ msgbox Route17_Text_JamalPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_JamalRematch::
+ trainerbattle_rematch TRAINER_CUE_BALL_JAMAL, Route17_Text_JamalRematchIntro, Route17_Text_JamalDefeat
+ msgbox Route17_Text_JamalPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_Corey::
+ trainerbattle_single TRAINER_CUE_BALL_COREY, Route17_Text_CoreyIntro, Route17_Text_CoreyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route17_EventScript_CoreyRematch
+ msgbox Route17_Text_CoreyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_CoreyRematch::
+ trainerbattle_rematch TRAINER_CUE_BALL_COREY, Route17_Text_CoreyRematchIntro, Route17_Text_CoreyDefeat
+ msgbox Route17_Text_CoreyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_Virgil::
+ trainerbattle_single TRAINER_BIKER_VIRGIL, Route17_Text_VirgilIntro, Route17_Text_VirgilDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route17_EventScript_VirgilRematch
+ msgbox Route17_Text_VirgilPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route17_EventScript_VirgilRematch::
+ trainerbattle_rematch TRAINER_BIKER_VIRGIL, Route17_Text_VirgilRematchIntro, Route17_Text_VirgilDefeat
+ msgbox Route17_Text_VirgilPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route18_EventScript_Wilton::
+ trainerbattle_single TRAINER_BIRD_KEEPER_WILTON, Route18_Text_WiltonIntro, Route18_Text_WiltonDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route18_EventScript_WiltonRematch
+ msgbox Route18_Text_WiltonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route18_EventScript_WiltonRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_WILTON, Route18_Text_WiltonRematchIntro, Route18_Text_WiltonDefeat
+ msgbox Route18_Text_WiltonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route18_EventScript_Ramiro::
+ trainerbattle_single TRAINER_BIRD_KEEPER_RAMIRO, Route18_Text_RamiroIntro, Route18_Text_RamiroDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route18_EventScript_RamiroRematch
+ msgbox Route18_Text_RamiroPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route18_EventScript_RamiroRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_RAMIRO, Route18_Text_RamiroRematchIntro, Route18_Text_RamiroDefeat
+ msgbox Route18_Text_RamiroPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route18_EventScript_Jacob::
+ trainerbattle_single TRAINER_BIRD_KEEPER_JACOB, Route18_Text_JacobIntro, Route18_Text_JacobDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route18_EventScript_JacobRematch
+ msgbox Route18_Text_JacobPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route18_EventScript_JacobRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_JACOB, Route18_Text_JacobRematchIntro, Route18_Text_JacobDefeat
+ msgbox Route18_Text_JacobPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_Richard::
+ trainerbattle_single TRAINER_SWIMMER_MALE_RICHARD, Route19_Text_RichardIntro, Route19_Text_RichardDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route19_EventScript_RichardRematch
+ msgbox Route19_Text_RichardPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_RichardRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_RICHARD, Route19_Text_RichardRematchIntro, Route19_Text_RichardDefeat
+ msgbox Route19_Text_RichardPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_Reece::
+ trainerbattle_single TRAINER_SWIMMER_MALE_REECE, Route19_Text_ReeceIntro, Route19_Text_ReeceDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route19_EventScript_ReeceRematch
+ msgbox Route19_Text_ReecePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_ReeceRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_REECE, Route19_Text_ReeceRematchIntro, Route19_Text_ReeceDefeat
+ msgbox Route19_Text_ReecePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_Matthew::
+ trainerbattle_single TRAINER_SWIMMER_MALE_MATTHEW, Route19_Text_MatthewIntro, Route19_Text_MatthewDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route19_EventScript_MatthewRematch
+ msgbox Route19_Text_MatthewPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_MatthewRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_MATTHEW, Route19_Text_MatthewRematchIntro, Route19_Text_MatthewDefeat
+ msgbox Route19_Text_MatthewPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_Douglas::
+ trainerbattle_single TRAINER_SWIMMER_MALE_DOUGLAS, Route19_Text_DouglasIntro, Route19_Text_DouglasDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route19_EventScript_DouglasRematch
+ msgbox Route19_Text_DouglasPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_DouglasRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_DOUGLAS, Route19_Text_DouglasRematchIntro, Route19_Text_DouglasDefeat
+ msgbox Route19_Text_DouglasPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_David::
+ trainerbattle_single TRAINER_SWIMMER_MALE_DAVID, Route19_Text_DavidIntro, Route19_Text_DavidDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route19_EventScript_DavidRematch
+ msgbox Route19_Text_DavidPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_DavidRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_DAVID, Route19_Text_DavidRematchIntro, Route19_Text_DavidDefeat
+ msgbox Route19_Text_DavidPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_Tony::
+ trainerbattle_single TRAINER_SWIMMER_MALE_TONY, Route19_Text_TonyIntro, Route19_Text_TonyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route19_EventScript_TonyRematch
+ msgbox Route19_Text_TonyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_TonyRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_TONY, Route19_Text_TonyRematchIntro, Route19_Text_TonyDefeat
+ msgbox Route19_Text_TonyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_Axle::
+ trainerbattle_single TRAINER_SWIMMER_MALE_AXLE, Route19_Text_AxleIntro, Route19_Text_AxleDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route19_EventScript_AxleRematch
+ msgbox Route19_Text_AxlePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_AxleRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_AXLE, Route19_Text_AxleRematchIntro, Route19_Text_AxleDefeat
+ msgbox Route19_Text_AxlePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_Anya::
+ trainerbattle_single TRAINER_SWIMMER_FEMALE_ANYA, Route19_Text_AnyaIntro, Route19_Text_AnyaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route19_EventScript_AnyaRematch
+ msgbox Route19_Text_AnyaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_AnyaRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_FEMALE_ANYA, Route19_Text_AnyaRematchIntro, Route19_Text_AnyaDefeat
+ msgbox Route19_Text_AnyaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_Alice::
+ trainerbattle_single TRAINER_SWIMMER_FEMALE_ALICE, Route19_Text_AliceIntro, Route19_Text_AliceDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route19_EventScript_AliceRematch
+ msgbox Route19_Text_AlicePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_AliceRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_FEMALE_ALICE, Route19_Text_AliceRematchIntro, Route19_Text_AliceDefeat
+ msgbox Route19_Text_AlicePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_Connie::
+ trainerbattle_single TRAINER_SWIMMER_FEMALE_CONNIE, Route19_Text_ConnieIntro, Route19_Text_ConnieDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route19_EventScript_ConnieRematch
+ msgbox Route19_Text_ConniePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_ConnieRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_FEMALE_CONNIE, Route19_Text_ConnieRematchIntro, Route19_Text_ConnieDefeat
+ msgbox Route19_Text_ConniePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_Lia::
+ trainerbattle_double TRAINER_SIS_AND_BRO_LIA_LUC, Route19_Text_LiaIntro, Route19_Text_LiaDefeat, Route19_Text_LiaNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route19_EventScript_LiaRematch
+ msgbox Route19_Text_LiaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_LiaRematch::
+ trainerbattle_rematch_double TRAINER_SIS_AND_BRO_LIA_LUC, Route19_Text_LiaRematchIntro, Route19_Text_LiaDefeat, Route19_Text_LiaNotEnoughMons
+ msgbox Route19_Text_LiaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_Luc::
+ trainerbattle_double TRAINER_SIS_AND_BRO_LIA_LUC, Route19_Text_LucIntro, Route19_Text_LucDefeat, Route19_Text_LucNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route19_EventScript_LucRematch
+ msgbox Route19_Text_LucPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route19_EventScript_LucRematch::
+ trainerbattle_rematch_double TRAINER_SIS_AND_BRO_LIA_LUC, Route19_Text_LucRematchIntro, Route19_Text_LucDefeat, Route19_Text_LucNotEnoughMons
+ msgbox Route19_Text_LucPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_Barry::
+ trainerbattle_single TRAINER_SWIMMER_MALE_BARRY, Route20_Text_BarryIntro, Route20_Text_BarryDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route20_EventScript_BarryRematch
+ msgbox Route20_Text_BarryPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_BarryRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_BARRY, Route20_Text_BarryRematchIntro, Route20_Text_BarryDefeat
+ msgbox Route20_Text_BarryPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_Dean::
+ trainerbattle_single TRAINER_SWIMMER_MALE_DEAN, Route20_Text_DeanIntro, Route20_Text_DeanDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route20_EventScript_DeanRematch
+ msgbox Route20_Text_DeanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_DeanRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_DEAN, Route20_Text_DeanRematchIntro, Route20_Text_DeanDefeat
+ msgbox Route20_Text_DeanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_Darrin::
+ trainerbattle_single TRAINER_SWIMMER_MALE_DARRIN, Route20_Text_DarrinIntro, Route20_Text_DarrinDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route20_EventScript_DarrinRematch
+ msgbox Route20_Text_DarrinPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_DarrinRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_DARRIN, Route20_Text_DarrinRematchIntro, Route20_Text_DarrinDefeat
+ msgbox Route20_Text_DarrinPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_Tiffany::
+ trainerbattle_single TRAINER_SWIMMER_FEMALE_TIFFANY, Route20_Text_TiffanyIntro, Route20_Text_TiffanyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route20_EventScript_TiffanyRematch
+ msgbox Route20_Text_TiffanyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_TiffanyRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_FEMALE_TIFFANY, Route20_Text_TiffanyRematchIntro, Route20_Text_TiffanyDefeat
+ msgbox Route20_Text_TiffanyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_Nora::
+ trainerbattle_single TRAINER_SWIMMER_FEMALE_NORA, Route20_Text_NoraIntro, Route20_Text_NoraDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route20_EventScript_NoraRematch
+ msgbox Route20_Text_NoraPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_NoraRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_FEMALE_NORA, Route20_Text_NoraRematchIntro, Route20_Text_NoraDefeat
+ msgbox Route20_Text_NoraPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_Melissa::
+ trainerbattle_single TRAINER_SWIMMER_FEMALE_MELISSA, Route20_Text_MelissaIntro, Route20_Text_MelissaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route20_EventScript_MelissaRematch
+ msgbox Route20_Text_MelissaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_MelissaRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_FEMALE_MELISSA, Route20_Text_MelissaRematchIntro, Route20_Text_MelissaDefeat
+ msgbox Route20_Text_MelissaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_Shirley::
+ trainerbattle_single TRAINER_SWIMMER_FEMALE_SHIRLEY, Route20_Text_ShirleyIntro, Route20_Text_ShirleyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route20_EventScript_ShirleyRematch
+ msgbox Route20_Text_ShirleyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_ShirleyRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_FEMALE_SHIRLEY, Route20_Text_ShirleyRematchIntro, Route20_Text_ShirleyDefeat
+ msgbox Route20_Text_ShirleyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_Roger::
+ trainerbattle_single TRAINER_BIRD_KEEPER_ROGER, Route20_Text_RogerIntro, Route20_Text_RogerDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route20_EventScript_RogerRematch
+ msgbox Route20_Text_RogerPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_RogerRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_ROGER, Route20_Text_RogerRematchIntro, Route20_Text_RogerDefeat
+ msgbox Route20_Text_RogerPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_Missy::
+ trainerbattle_single TRAINER_PICNICKER_MISSY, Route20_Text_MissyIntro, Route20_Text_MissyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route20_EventScript_MissyRematch
+ msgbox Route20_Text_MissyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_MissyRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_MISSY, Route20_Text_MissyRematchIntro, Route20_Text_MissyDefeat
+ msgbox Route20_Text_MissyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_Irene::
+ trainerbattle_single TRAINER_PICNICKER_IRENE, Route20_Text_IreneIntro, Route20_Text_IreneDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route20_EventScript_IreneRematch
+ msgbox Route20_Text_IrenePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route20_EventScript_IreneRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_IRENE, Route20_Text_IreneRematchIntro, Route20_Text_IreneDefeat
+ msgbox Route20_Text_IrenePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_North_EventScript_Ronald::
+ trainerbattle_single TRAINER_FISHERMAN_RONALD, Route21_North_Text_RonaldIntro, Route21_North_Text_RonaldDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route21_North_EventScript_RonaldRematch
+ msgbox Route21_North_Text_RonaldPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_North_EventScript_RonaldRematch::
+ trainerbattle_rematch TRAINER_FISHERMAN_RONALD, Route21_North_Text_RonaldRematchIntro, Route21_North_Text_RonaldDefeat
+ msgbox Route21_North_Text_RonaldPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_South_EventScript_Claude::
+ trainerbattle_single TRAINER_FISHERMAN_CLAUDE, Route21_South_Text_ClaudeIntro, Route21_South_Text_ClaudeDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route21_South_EventScript_ClaudeRematch
+ msgbox Route21_South_Text_ClaudePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_South_EventScript_ClaudeRematch::
+ trainerbattle_rematch TRAINER_FISHERMAN_CLAUDE, Route21_South_Text_ClaudeRematchIntro, Route21_South_Text_ClaudeDefeat
+ msgbox Route21_South_Text_ClaudePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_North_EventScript_Wade::
+ trainerbattle_single TRAINER_FISHERMAN_WADE, Route21_North_Text_WadeIntro, Route21_North_Text_WadeDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route21_North_EventScript_WadeRematch
+ msgbox Route21_North_Text_WadePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_North_EventScript_WadeRematch::
+ trainerbattle_rematch TRAINER_FISHERMAN_WADE, Route21_North_Text_WadeRematchIntro, Route21_North_Text_WadeDefeat
+ msgbox Route21_North_Text_WadePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_South_EventScript_Nolan::
+ trainerbattle_single TRAINER_FISHERMAN_NOLAN, Route21_South_Text_NolanIntro, Route21_South_Text_NolanDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route21_South_EventScript_NolanRematch
+ msgbox Route21_South_Text_NolanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_South_EventScript_NolanRematch::
+ trainerbattle_rematch TRAINER_FISHERMAN_NOLAN, Route21_South_Text_NolanRematchIntro, Route21_South_Text_NolanDefeat
+ msgbox Route21_South_Text_NolanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_North_EventScript_Spencer::
+ trainerbattle_single TRAINER_SWIMMER_MALE_SPENCER, Route21_North_Text_SpencerIntro, Route21_North_Text_SpencerDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route21_North_EventScript_SpencerRematch
+ msgbox Route21_North_Text_SpencerPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_North_EventScript_SpencerRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_SPENCER, Route21_North_Text_SpencerRematchIntro, Route21_North_Text_SpencerDefeat
+ msgbox Route21_North_Text_SpencerPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_South_EventScript_Jack::
+ trainerbattle_single TRAINER_SWIMMER_MALE_JACK, Route21_South_Text_JackIntro, Route21_South_Text_JackDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route21_South_EventScript_JackRematch
+ msgbox Route21_South_Text_JackPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_South_EventScript_JackRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_JACK, Route21_South_Text_JackRematchIntro, Route21_South_Text_JackDefeat
+ msgbox Route21_South_Text_JackPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_South_EventScript_Jerome::
+ trainerbattle_single TRAINER_SWIMMER_MALE_JEROME, Route21_South_Text_JeromeIntro, Route21_South_Text_JeromeDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route21_South_EventScript_JeromeRematch
+ msgbox Route21_South_Text_JeromePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_South_EventScript_JeromeRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_JEROME, Route21_South_Text_JeromeRematchIntro, Route21_South_Text_JeromeDefeat
+ msgbox Route21_South_Text_JeromePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_South_EventScript_Roland::
+ trainerbattle_single TRAINER_SWIMMER_MALE_ROLAND, Route21_South_Text_RolandIntro, Route21_South_Text_RolandDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route21_South_EventScript_RolandRematch
+ msgbox Route21_South_Text_RolandPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_South_EventScript_RolandRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_ROLAND, Route21_South_Text_RolandRematchIntro, Route21_South_Text_RolandDefeat
+ msgbox Route21_South_Text_RolandPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_North_EventScript_Lil::
+ trainerbattle_double TRAINER_SIS_AND_BRO_LIL_IAN, Route21_North_Text_LilIntro, Route21_North_Text_LilDefeat, Route21_North_Text_LilNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route21_North_EventScript_LilRematch
+ msgbox Route21_North_Text_LilPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_North_EventScript_LilRematch::
+ trainerbattle_rematch_double TRAINER_SIS_AND_BRO_LIL_IAN, Route21_North_Text_LilRematchIntro, Route21_North_Text_LilDefeat, Route21_North_Text_LilNotEnoughMons
+ msgbox Route21_North_Text_LilPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_North_EventScript_Ian::
+ trainerbattle_double TRAINER_SIS_AND_BRO_LIL_IAN, Route21_North_Text_IanIntro, Route21_North_Text_IanDefeat, Route21_North_Text_IanNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, Route21_North_EventScript_IanRematch
+ msgbox Route21_North_Text_IanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+Route21_North_EventScript_IanRematch::
+ trainerbattle_rematch_double TRAINER_SIS_AND_BRO_LIL_IAN, Route21_North_Text_IanRematchIntro, Route21_North_Text_IanDefeat, Route21_North_Text_IanNotEnoughMons
+ msgbox Route21_North_Text_IanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_Maria::
+ trainerbattle_single TRAINER_SWIMMER_FEMALE_MARIA, OneIsland_KindleRoad_Text_MariaIntro, OneIsland_KindleRoad_Text_MariaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, OneIsland_KindleRoad_EventScript_MariaRematch
+ msgbox OneIsland_KindleRoad_Text_MariaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_MariaRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_FEMALE_MARIA, OneIsland_KindleRoad_Text_MariaRematchIntro, OneIsland_KindleRoad_Text_MariaDefeat
+ msgbox OneIsland_KindleRoad_Text_MariaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_Abigail::
+ trainerbattle_single TRAINER_SWIMMER_FEMALE_ABIGAIL, OneIsland_KindleRoad_Text_AbigailIntro, OneIsland_KindleRoad_Text_AbigailDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, OneIsland_KindleRoad_EventScript_AbigailRematch
+ msgbox OneIsland_KindleRoad_Text_AbigailPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_AbigailRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_FEMALE_ABIGAIL, OneIsland_KindleRoad_Text_AbigailRematchIntro, OneIsland_KindleRoad_Text_AbigailDefeat
+ msgbox OneIsland_KindleRoad_Text_AbigailPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_Finn::
+ trainerbattle_single TRAINER_SWIMMER_MALE_FINN, OneIsland_KindleRoad_Text_FinnIntro, OneIsland_KindleRoad_Text_FinnDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, OneIsland_KindleRoad_EventScript_FinnRematch
+ msgbox OneIsland_KindleRoad_Text_FinnPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_FinnRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_FINN, OneIsland_KindleRoad_Text_FinnRematchIntro, OneIsland_KindleRoad_Text_FinnDefeat
+ msgbox OneIsland_KindleRoad_Text_FinnPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_Garrett::
+ trainerbattle_single TRAINER_SWIMMER_MALE_GARRETT, OneIsland_KindleRoad_Text_GarrettIntro, OneIsland_KindleRoad_Text_GarrettDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, OneIsland_KindleRoad_EventScript_GarrettRematch
+ msgbox OneIsland_KindleRoad_Text_GarrettPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_GarrettRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_GARRETT, OneIsland_KindleRoad_Text_GarrettRematchIntro, OneIsland_KindleRoad_Text_GarrettDefeat
+ msgbox OneIsland_KindleRoad_Text_GarrettPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_Tommy::
+ trainerbattle_single TRAINER_FISHERMAN_TOMMY, OneIsland_KindleRoad_Text_TommyIntro, OneIsland_KindleRoad_Text_TommyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, OneIsland_KindleRoad_EventScript_TommyRematch
+ msgbox OneIsland_KindleRoad_Text_TommyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_TommyRematch::
+ trainerbattle_rematch TRAINER_FISHERMAN_TOMMY, OneIsland_KindleRoad_Text_TommyRematchIntro, OneIsland_KindleRoad_Text_TommyDefeat
+ msgbox OneIsland_KindleRoad_Text_TommyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_Sharon::
+ trainerbattle_single TRAINER_CRUSH_GIRL_SHARON, OneIsland_KindleRoad_Text_SharonIntro, OneIsland_KindleRoad_Text_SharonDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, OneIsland_KindleRoad_EventScript_SharonRematch
+ msgbox OneIsland_KindleRoad_Text_SharonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_SharonRematch::
+ trainerbattle_rematch TRAINER_CRUSH_GIRL_SHARON, OneIsland_KindleRoad_Text_SharonRematchIntro, OneIsland_KindleRoad_Text_SharonDefeat
+ msgbox OneIsland_KindleRoad_Text_SharonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_Tanya::
+ trainerbattle_single TRAINER_CRUSH_GIRL_TANYA, OneIsland_KindleRoad_Text_TanyaIntro, OneIsland_KindleRoad_Text_TanyaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, OneIsland_KindleRoad_EventScript_TanyaRematch
+ msgbox OneIsland_KindleRoad_Text_TanyaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_TanyaRematch::
+ trainerbattle_rematch TRAINER_CRUSH_GIRL_TANYA, OneIsland_KindleRoad_Text_TanyaRematchIntro, OneIsland_KindleRoad_Text_TanyaDefeat
+ msgbox OneIsland_KindleRoad_Text_TanyaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_Shea::
+ trainerbattle_single TRAINER_BLACK_BELT_SHEA, OneIsland_KindleRoad_Text_SheaIntro, OneIsland_KindleRoad_Text_SheaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, OneIsland_KindleRoad_EventScript_SheaRematch
+ msgbox OneIsland_KindleRoad_Text_SheaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_SheaRematch::
+ trainerbattle_rematch TRAINER_BLACK_BELT_SHEA, OneIsland_KindleRoad_Text_SheaRematchIntro, OneIsland_KindleRoad_Text_SheaDefeat
+ msgbox OneIsland_KindleRoad_Text_SheaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_Hugh::
+ trainerbattle_single TRAINER_BLACK_BELT_HUGH, OneIsland_KindleRoad_Text_HughIntro, OneIsland_KindleRoad_Text_HughDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, OneIsland_KindleRoad_EventScript_HughRematch
+ msgbox OneIsland_KindleRoad_Text_HughPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_HughRematch::
+ trainerbattle_rematch TRAINER_BLACK_BELT_HUGH, OneIsland_KindleRoad_Text_HughRematchIntro, OneIsland_KindleRoad_Text_HughDefeat
+ msgbox OneIsland_KindleRoad_Text_HughPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_Bryce::
+ trainerbattle_single TRAINER_CAMPER_BRYCE, OneIsland_KindleRoad_Text_BryceIntro, OneIsland_KindleRoad_Text_BryceDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, OneIsland_KindleRoad_EventScript_BryceRematch
+ msgbox OneIsland_KindleRoad_Text_BrycePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_BryceRematch::
+ trainerbattle_rematch TRAINER_CAMPER_BRYCE, OneIsland_KindleRoad_Text_BryceRematchIntro, OneIsland_KindleRoad_Text_BryceDefeat
+ msgbox OneIsland_KindleRoad_Text_BrycePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_Claire::
+ trainerbattle_single TRAINER_PICNICKER_CLAIRE, OneIsland_KindleRoad_Text_ClaireIntro, OneIsland_KindleRoad_Text_ClaireDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, OneIsland_KindleRoad_EventScript_ClaireRematch
+ msgbox OneIsland_KindleRoad_Text_ClairePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_ClaireRematch::
+ trainerbattle_rematch TRAINER_PICNICKER_CLAIRE, OneIsland_KindleRoad_Text_ClaireRematchIntro, OneIsland_KindleRoad_Text_ClaireDefeat
+ msgbox OneIsland_KindleRoad_Text_ClairePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_Kia::
+ trainerbattle_double TRAINER_CRUSH_KIN_MIK_KIA, OneIsland_KindleRoad_Text_KiaIntro, OneIsland_KindleRoad_Text_KiaDefeat, OneIsland_KindleRoad_Text_KiaNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, OneIsland_KindleRoad_EventScript_KiaRematch
+ msgbox OneIsland_KindleRoad_Text_KiaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_KiaRematch::
+ trainerbattle_rematch_double TRAINER_CRUSH_KIN_MIK_KIA, OneIsland_KindleRoad_Text_KiaRematchIntro, OneIsland_KindleRoad_Text_KiaDefeat, OneIsland_KindleRoad_Text_KiaNotEnoughMons
+ msgbox OneIsland_KindleRoad_Text_KiaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_Mik::
+ trainerbattle_double TRAINER_CRUSH_KIN_MIK_KIA, OneIsland_KindleRoad_Text_MikIntro, OneIsland_KindleRoad_Text_MikDefeat, OneIsland_KindleRoad_Text_MikNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, OneIsland_KindleRoad_EventScript_MikRematch
+ msgbox OneIsland_KindleRoad_Text_MikPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_KindleRoad_EventScript_MikRematch::
+ trainerbattle_rematch_double TRAINER_CRUSH_KIN_MIK_KIA, OneIsland_KindleRoad_Text_MikRematchIntro, OneIsland_KindleRoad_Text_MikDefeat, OneIsland_KindleRoad_Text_MikNotEnoughMons
+ msgbox OneIsland_KindleRoad_Text_MikPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_TreasureBeach_EventScript_Amara::
+ trainerbattle_single TRAINER_SWIMMER_FEMALE_AMARA, OneIsland_TreasureBeach_Text_AmaraIntro, OneIsland_TreasureBeach_Text_AmaraDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, OneIsland_TreasureBeach_EventScript_AmaraRematch
+ msgbox OneIsland_TreasureBeach_Text_AmaraPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+OneIsland_TreasureBeach_EventScript_AmaraRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_FEMALE_AMARA, OneIsland_TreasureBeach_Text_AmaraRematchIntro, OneIsland_TreasureBeach_Text_AmaraDefeat
+ msgbox OneIsland_TreasureBeach_Text_AmaraPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ThreeIsland_BondBridge_EventScript_Nikki::
+ trainerbattle_single TRAINER_AROMA_LADY_NIKKI, ThreeIsland_BondBridge_Text_NikkiIntro, ThreeIsland_BondBridge_Text_NikkiDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, ThreeIsland_BondBridge_EventScript_NikkiRematch
+ msgbox ThreeIsland_BondBridge_Text_NikkiPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ThreeIsland_BondBridge_EventScript_NikkiRematch::
+ trainerbattle_rematch TRAINER_AROMA_LADY_NIKKI, ThreeIsland_BondBridge_Text_NikkiRematchIntro, ThreeIsland_BondBridge_Text_NikkiDefeat
+ msgbox ThreeIsland_BondBridge_Text_NikkiPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ThreeIsland_BondBridge_EventScript_Violet::
+ trainerbattle_single TRAINER_AROMA_LADY_VIOLET, ThreeIsland_BondBridge_Text_VioletIntro, ThreeIsland_BondBridge_Text_VioletDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, ThreeIsland_BondBridge_EventScript_VioletRematch
+ msgbox ThreeIsland_BondBridge_Text_VioletPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ThreeIsland_BondBridge_EventScript_VioletRematch::
+ trainerbattle_rematch TRAINER_AROMA_LADY_VIOLET, ThreeIsland_BondBridge_Text_VioletRematchIntro, ThreeIsland_BondBridge_Text_VioletDefeat
+ msgbox ThreeIsland_BondBridge_Text_VioletPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ThreeIsland_BondBridge_EventScript_Amira::
+ trainerbattle_single TRAINER_TUBER_AMIRA, ThreeIsland_BondBridge_Text_AmiraIntro, ThreeIsland_BondBridge_Text_AmiraDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, ThreeIsland_BondBridge_EventScript_AmiraRematch
+ msgbox ThreeIsland_BondBridge_Text_AmiraPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ThreeIsland_BondBridge_EventScript_AmiraRematch::
+ trainerbattle_rematch TRAINER_TUBER_AMIRA, ThreeIsland_BondBridge_Text_AmiraRematchIntro, ThreeIsland_BondBridge_Text_AmiraDefeat
+ msgbox ThreeIsland_BondBridge_Text_AmiraPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ThreeIsland_BondBridge_EventScript_Alexis::
+ trainerbattle_single TRAINER_TUBER_ALEXIS, ThreeIsland_BondBridge_Text_AlexisIntro, ThreeIsland_BondBridge_Text_AlexisDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, ThreeIsland_BondBridge_EventScript_AlexisRematch
+ msgbox ThreeIsland_BondBridge_Text_AlexisPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ThreeIsland_BondBridge_EventScript_AlexisRematch::
+ trainerbattle_rematch TRAINER_TUBER_ALEXIS, ThreeIsland_BondBridge_Text_AlexisRematchIntro, ThreeIsland_BondBridge_Text_AlexisDefeat
+ msgbox ThreeIsland_BondBridge_Text_AlexisPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ThreeIsland_BondBridge_EventScript_Tisha::
+ trainerbattle_single TRAINER_SWIMMER_FEMALE_TISHA, ThreeIsland_BondBridge_Text_TishaIntro, ThreeIsland_BondBridge_Text_TishaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, ThreeIsland_BondBridge_EventScript_TishaRematch
+ msgbox ThreeIsland_BondBridge_Text_TishaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ThreeIsland_BondBridge_EventScript_TishaRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_FEMALE_TISHA, ThreeIsland_BondBridge_Text_TishaRematchIntro, ThreeIsland_BondBridge_Text_TishaDefeat
+ msgbox ThreeIsland_BondBridge_Text_TishaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ThreeIsland_BondBridge_EventScript_Joy::
+ trainerbattle_double TRAINER_TWINS_JOY_MEG, ThreeIsland_BondBridge_Text_JoyIntro, ThreeIsland_BondBridge_Text_JoyDefeat, ThreeIsland_BondBridge_Text_JoyNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, ThreeIsland_BondBridge_EventScript_JoyRematch
+ msgbox ThreeIsland_BondBridge_Text_JoyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ThreeIsland_BondBridge_EventScript_JoyRematch::
+ trainerbattle_rematch_double TRAINER_TWINS_JOY_MEG, ThreeIsland_BondBridge_Text_JoyRematchIntro, ThreeIsland_BondBridge_Text_JoyDefeat, ThreeIsland_BondBridge_Text_JoyNotEnoughMons
+ msgbox ThreeIsland_BondBridge_Text_JoyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ThreeIsland_BondBridge_EventScript_Meg::
+ trainerbattle_double TRAINER_TWINS_JOY_MEG, ThreeIsland_BondBridge_Text_MegIntro, ThreeIsland_BondBridge_Text_MegDefeat, ThreeIsland_BondBridge_Text_MegNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, ThreeIsland_BondBridge_EventScript_MegRematch
+ msgbox ThreeIsland_BondBridge_Text_MegPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+ThreeIsland_BondBridge_EventScript_MegRematch::
+ trainerbattle_rematch_double TRAINER_TWINS_JOY_MEG, ThreeIsland_BondBridge_Text_MegRematchIntro, ThreeIsland_BondBridge_Text_MegDefeat, ThreeIsland_BondBridge_Text_MegNotEnoughMons
+ msgbox ThreeIsland_BondBridge_Text_MegPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_ResortGorgeous_EventScript_Daisy::
+ trainerbattle_single TRAINER_PAINTER_DAISY, FiveIsland_ResortGorgeous_Text_DaisyIntro, FiveIsland_ResortGorgeous_Text_DaisyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, FiveIsland_ResortGorgeous_EventScript_DaisyRematch
+ msgbox FiveIsland_ResortGorgeous_Text_DaisyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_ResortGorgeous_EventScript_DaisyRematch::
+ trainerbattle_rematch TRAINER_PAINTER_DAISY, FiveIsland_ResortGorgeous_Text_DaisyRematchIntro, FiveIsland_ResortGorgeous_Text_DaisyDefeat
+ msgbox FiveIsland_ResortGorgeous_Text_DaisyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_ResortGorgeous_EventScript_Celina::
+ trainerbattle_single TRAINER_PAINTER_CELINA, FiveIsland_ResortGorgeous_Text_CelinaIntro, FiveIsland_ResortGorgeous_Text_CelinaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, FiveIsland_ResortGorgeous_EventScript_CelinaRematch
+ msgbox FiveIsland_ResortGorgeous_Text_CelinaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_ResortGorgeous_EventScript_CelinaRematch::
+ trainerbattle_rematch TRAINER_PAINTER_CELINA, FiveIsland_ResortGorgeous_Text_CelinaRematchIntro, FiveIsland_ResortGorgeous_Text_CelinaDefeat
+ msgbox FiveIsland_ResortGorgeous_Text_CelinaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_ResortGorgeous_EventScript_Rayna::
+ trainerbattle_single TRAINER_PAINTER_RAYNA, FiveIsland_ResortGorgeous_Text_RaynaIntro, FiveIsland_ResortGorgeous_Text_RaynaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, FiveIsland_ResortGorgeous_EventScript_RaynaRematch
+ msgbox FiveIsland_ResortGorgeous_Text_RaynaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_ResortGorgeous_EventScript_RaynaRematch::
+ trainerbattle_rematch TRAINER_PAINTER_RAYNA, FiveIsland_ResortGorgeous_Text_RaynaRematchIntro, FiveIsland_ResortGorgeous_Text_RaynaDefeat
+ msgbox FiveIsland_ResortGorgeous_Text_RaynaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_ResortGorgeous_EventScript_Jacki::
+ trainerbattle_single TRAINER_LADY_JACKI, FiveIsland_ResortGorgeous_Text_JackiIntro, FiveIsland_ResortGorgeous_Text_JackiDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, FiveIsland_ResortGorgeous_EventScript_JackiRematch
+ msgbox FiveIsland_ResortGorgeous_Text_JackiPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_ResortGorgeous_EventScript_JackiRematch::
+ trainerbattle_rematch TRAINER_LADY_JACKI, FiveIsland_ResortGorgeous_Text_JackiRematchIntro, FiveIsland_ResortGorgeous_Text_JackiDefeat
+ msgbox FiveIsland_ResortGorgeous_Text_JackiPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_ResortGorgeous_EventScript_Gillian::
+ trainerbattle_single TRAINER_LADY_GILLIAN, FiveIsland_ResortGorgeous_Text_GillianIntro, FiveIsland_ResortGorgeous_Text_GillianDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, FiveIsland_ResortGorgeous_EventScript_GillianRematch
+ msgbox FiveIsland_ResortGorgeous_Text_GillianPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_ResortGorgeous_EventScript_GillianRematch::
+ trainerbattle_rematch TRAINER_LADY_GILLIAN, FiveIsland_ResortGorgeous_Text_GillianRematchIntro, FiveIsland_ResortGorgeous_Text_GillianDefeat
+ msgbox FiveIsland_ResortGorgeous_Text_GillianPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_ResortGorgeous_EventScript_Destin::
+ trainerbattle_single TRAINER_YOUNGSTER_DESTIN, FiveIsland_ResortGorgeous_Text_DestinIntro, FiveIsland_ResortGorgeous_Text_DestinDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, FiveIsland_ResortGorgeous_EventScript_DestinRematch
+ msgbox FiveIsland_ResortGorgeous_Text_DestinPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_ResortGorgeous_EventScript_DestinRematch::
+ trainerbattle_rematch TRAINER_YOUNGSTER_DESTIN, FiveIsland_ResortGorgeous_Text_DestinRematchIntro, FiveIsland_ResortGorgeous_Text_DestinDefeat
+ msgbox FiveIsland_ResortGorgeous_Text_DestinPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_ResortGorgeous_EventScript_Toby::
+ trainerbattle_single TRAINER_SWIMMER_MALE_TOBY, FiveIsland_ResortGorgeous_Text_TobyIntro, FiveIsland_ResortGorgeous_Text_TobyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, FiveIsland_ResortGorgeous_EventScript_TobyRematch
+ msgbox FiveIsland_ResortGorgeous_Text_TobyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_ResortGorgeous_EventScript_TobyRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_TOBY, FiveIsland_ResortGorgeous_Text_TobyRematchIntro, FiveIsland_ResortGorgeous_Text_TobyDefeat
+ msgbox FiveIsland_ResortGorgeous_Text_TobyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_WaterLabyrinth_EventScript_Alize::
+ trainerbattle_single TRAINER_PKMN_BREEDER_ALIZE, FiveIsland_WaterLabyrinth_Text_AlizeIntro, FiveIsland_WaterLabyrinth_Text_AlizeDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, FiveIsland_WaterLabyrinth_EventScript_AlizeRematch
+ msgbox FiveIsland_WaterLabyrinth_Text_AlizePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_WaterLabyrinth_EventScript_AlizeRematch::
+ trainerbattle_rematch TRAINER_PKMN_BREEDER_ALIZE, FiveIsland_WaterLabyrinth_Text_AlizeRematchIntro, FiveIsland_WaterLabyrinth_Text_AlizeDefeat
+ msgbox FiveIsland_WaterLabyrinth_Text_AlizePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_MemorialPillar_EventScript_Milo::
+ trainerbattle_single TRAINER_BIRD_KEEPER_MILO, FiveIsland_MemorialPillar_Text_MiloIntro, FiveIsland_MemorialPillar_Text_MiloDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, FiveIsland_MemorialPillar_EventScript_MiloRematch
+ msgbox FiveIsland_MemorialPillar_Text_MiloPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_MemorialPillar_EventScript_MiloRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_MILO, FiveIsland_MemorialPillar_Text_MiloRematchIntro, FiveIsland_MemorialPillar_Text_MiloDefeat
+ msgbox FiveIsland_MemorialPillar_Text_MiloPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_MemorialPillar_EventScript_Chaz::
+ trainerbattle_single TRAINER_BIRD_KEEPER_CHAZ, FiveIsland_MemorialPillar_Text_ChazIntro, FiveIsland_MemorialPillar_Text_ChazDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, FiveIsland_MemorialPillar_EventScript_ChazRematch
+ msgbox FiveIsland_MemorialPillar_Text_ChazPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_MemorialPillar_EventScript_ChazRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_CHAZ, FiveIsland_MemorialPillar_Text_ChazRematchIntro, FiveIsland_MemorialPillar_Text_ChazDefeat
+ msgbox FiveIsland_MemorialPillar_Text_ChazPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_MemorialPillar_EventScript_Harold::
+ trainerbattle_single TRAINER_BIRD_KEEPER_HAROLD, FiveIsland_MemorialPillar_Text_HaroldIntro, FiveIsland_MemorialPillar_Text_HaroldDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, FiveIsland_MemorialPillar_EventScript_HaroldRematch
+ msgbox FiveIsland_MemorialPillar_Text_HaroldPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+FiveIsland_MemorialPillar_EventScript_HaroldRematch::
+ trainerbattle_rematch TRAINER_BIRD_KEEPER_HAROLD, FiveIsland_MemorialPillar_Text_HaroldRematchIntro, FiveIsland_MemorialPillar_Text_HaroldDefeat
+ msgbox FiveIsland_MemorialPillar_Text_HaroldPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_OutcastIsland_EventScript_Tylor::
+ trainerbattle_single TRAINER_FISHERMAN_TYLOR, SixIsland_OutcastIsland_Text_TylorIntro, SixIsland_OutcastIsland_Text_TylorDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_OutcastIsland_EventScript_TylorRematch
+ msgbox SixIsland_OutcastIsland_Text_TylorPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_OutcastIsland_EventScript_TylorRematch::
+ trainerbattle_rematch TRAINER_FISHERMAN_TYLOR, SixIsland_OutcastIsland_Text_TylorRematchIntro, SixIsland_OutcastIsland_Text_TylorDefeat
+ msgbox SixIsland_OutcastIsland_Text_TylorPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_OutcastIsland_EventScript_Mymo::
+ trainerbattle_single TRAINER_SWIMMER_MALE_MYMO, SixIsland_OutcastIsland_Text_MymoIntro, SixIsland_OutcastIsland_Text_MymoDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_OutcastIsland_EventScript_MymoRematch
+ msgbox SixIsland_OutcastIsland_Text_MymoPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_OutcastIsland_EventScript_MymoRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_MYMO, SixIsland_OutcastIsland_Text_MymoRematchIntro, SixIsland_OutcastIsland_Text_MymoDefeat
+ msgbox SixIsland_OutcastIsland_Text_MymoPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_OutcastIsland_EventScript_Nicole::
+ trainerbattle_single TRAINER_SWIMMER_FEMALE_NICOLE, SixIsland_OutcastIsland_Text_NicoleIntro, SixIsland_OutcastIsland_Text_NicoleDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_OutcastIsland_EventScript_NicoleRematch
+ msgbox SixIsland_OutcastIsland_Text_NicolePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_OutcastIsland_EventScript_NicoleRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_FEMALE_NICOLE, SixIsland_OutcastIsland_Text_NicoleRematchIntro, SixIsland_OutcastIsland_Text_NicoleDefeat
+ msgbox SixIsland_OutcastIsland_Text_NicolePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_OutcastIsland_EventScript_Ava::
+ trainerbattle_double TRAINER_SIS_AND_BRO_AVA_GEB, SixIsland_OutcastIsland_Text_AvaIntro, SixIsland_OutcastIsland_Text_AvaDefeat, SixIsland_OutcastIsland_Text_AvaNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_OutcastIsland_EventScript_AvaRematch
+ msgbox SixIsland_OutcastIsland_Text_AvaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_OutcastIsland_EventScript_AvaRematch::
+ trainerbattle_rematch_double TRAINER_SIS_AND_BRO_AVA_GEB, SixIsland_OutcastIsland_Text_AvaRematchIntro, SixIsland_OutcastIsland_Text_AvaDefeat, SixIsland_OutcastIsland_Text_AvaNotEnoughMons
+ msgbox SixIsland_OutcastIsland_Text_AvaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_OutcastIsland_EventScript_Geb::
+ trainerbattle_double TRAINER_SIS_AND_BRO_AVA_GEB, SixIsland_OutcastIsland_Text_GebIntro, SixIsland_OutcastIsland_Text_GebDefeat, SixIsland_OutcastIsland_Text_GebNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_OutcastIsland_EventScript_GebRematch
+ msgbox SixIsland_OutcastIsland_Text_GebPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_OutcastIsland_EventScript_GebRematch::
+ trainerbattle_rematch_double TRAINER_SIS_AND_BRO_AVA_GEB, SixIsland_OutcastIsland_Text_GebRematchIntro, SixIsland_OutcastIsland_Text_GebDefeat, SixIsland_OutcastIsland_Text_GebNotEnoughMons
+ msgbox SixIsland_OutcastIsland_Text_GebPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_GreenPath_EventScript_Jaclyn::
+ trainerbattle_single TRAINER_PSYCHIC_JACLYN, SixIsland_GreenPath_Text_JaclynIntro, SixIsland_GreenPath_Text_JaclynDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_GreenPath_EventScript_JaclynRematch
+ msgbox SixIsland_GreenPath_Text_JaclynPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_GreenPath_EventScript_JaclynRematch::
+ trainerbattle_rematch TRAINER_PSYCHIC_JACLYN, SixIsland_GreenPath_Text_JaclynRematchIntro, SixIsland_GreenPath_Text_JaclynDefeat
+ msgbox SixIsland_GreenPath_Text_JaclynPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_WaterPath_EventScript_Rose::
+ trainerbattle_single TRAINER_AROMA_LADY_ROSE, SixIsland_WaterPath_Text_RoseIntro, SixIsland_WaterPath_Text_RoseDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_WaterPath_EventScript_RoseRematch
+ msgbox SixIsland_WaterPath_Text_RosePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_WaterPath_EventScript_RoseRematch::
+ trainerbattle_rematch TRAINER_AROMA_LADY_ROSE, SixIsland_WaterPath_Text_RoseRematchIntro, SixIsland_WaterPath_Text_RoseDefeat
+ msgbox SixIsland_WaterPath_Text_RosePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_WaterPath_EventScript_Edward::
+ trainerbattle_single TRAINER_JUGGLER_EDWARD, SixIsland_WaterPath_Text_EdwardIntro, SixIsland_WaterPath_Text_EdwardDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_WaterPath_EventScript_EdwardRematch
+ msgbox SixIsland_WaterPath_Text_EdwardPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_WaterPath_EventScript_EdwardRematch::
+ trainerbattle_rematch TRAINER_JUGGLER_EDWARD, SixIsland_WaterPath_Text_EdwardRematchIntro, SixIsland_WaterPath_Text_EdwardDefeat
+ msgbox SixIsland_WaterPath_Text_EdwardPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_WaterPath_EventScript_Samir::
+ trainerbattle_single TRAINER_SWIMMER_MALE_SAMIR, SixIsland_WaterPath_Text_SamirIntro, SixIsland_WaterPath_Text_SamirDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_WaterPath_EventScript_SamirRematch
+ msgbox SixIsland_WaterPath_Text_SamirPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_WaterPath_EventScript_SamirRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_MALE_SAMIR, SixIsland_WaterPath_Text_SamirRematchIntro, SixIsland_WaterPath_Text_SamirDefeat
+ msgbox SixIsland_WaterPath_Text_SamirPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_WaterPath_EventScript_Denise::
+ trainerbattle_single TRAINER_SWIMMER_FEMALE_DENISE, SixIsland_WaterPath_Text_DeniseIntro, SixIsland_WaterPath_Text_DeniseDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_WaterPath_EventScript_DeniseRematch
+ msgbox SixIsland_WaterPath_Text_DenisePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_WaterPath_EventScript_DeniseRematch::
+ trainerbattle_rematch TRAINER_SWIMMER_FEMALE_DENISE, SixIsland_WaterPath_Text_DeniseRematchIntro, SixIsland_WaterPath_Text_DeniseDefeat
+ msgbox SixIsland_WaterPath_Text_DenisePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_WaterPath_EventScript_Miu::
+ trainerbattle_double TRAINER_TWINS_MIU_MIA, SixIsland_WaterPath_Text_MiuIntro, SixIsland_WaterPath_Text_MiuDefeat, SixIsland_WaterPath_Text_MiuNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_WaterPath_EventScript_MiuRematch
+ msgbox SixIsland_WaterPath_Text_MiuPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_WaterPath_EventScript_MiuRematch::
+ trainerbattle_rematch_double TRAINER_TWINS_MIU_MIA, SixIsland_WaterPath_Text_MiuRematchIntro, SixIsland_WaterPath_Text_MiuDefeat, SixIsland_WaterPath_Text_MiuNotEnoughMons
+ msgbox SixIsland_WaterPath_Text_MiuPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_WaterPath_EventScript_Mia::
+ trainerbattle_double TRAINER_TWINS_MIU_MIA, SixIsland_WaterPath_Text_MiaIntro, SixIsland_WaterPath_Text_MiaDefeat, SixIsland_WaterPath_Text_MiaNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_WaterPath_EventScript_MiaRematch
+ msgbox SixIsland_WaterPath_Text_MiaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_WaterPath_EventScript_MiaRematch::
+ trainerbattle_rematch_double TRAINER_TWINS_MIU_MIA, SixIsland_WaterPath_Text_MiaRematchIntro, SixIsland_WaterPath_Text_MiaDefeat, SixIsland_WaterPath_Text_MiaNotEnoughMons
+ msgbox SixIsland_WaterPath_Text_MiaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_WaterPath_EventScript_Earl::
+ trainerbattle_single TRAINER_HIKER_EARL, SixIsland_WaterPath_Text_EarlIntro, SixIsland_WaterPath_Text_EarlDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_WaterPath_EventScript_EarlRematch
+ msgbox SixIsland_WaterPath_Text_EarlPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_WaterPath_EventScript_EarlRematch::
+ trainerbattle_rematch TRAINER_HIKER_EARL, SixIsland_WaterPath_Text_EarlRematchIntro, SixIsland_WaterPath_Text_EarlDefeat
+ msgbox SixIsland_WaterPath_Text_EarlPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_RuinValley_EventScript_Stanly::
+ trainerbattle_single TRAINER_RUIN_MANIAC_STANLY, SixIsland_RuinValley_Text_StanlyIntro, SixIsland_RuinValley_Text_StanlyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_RuinValley_EventScript_StanlyRematch
+ msgbox SixIsland_RuinValley_Text_StanlyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_RuinValley_EventScript_StanlyRematch::
+ trainerbattle_rematch TRAINER_RUIN_MANIAC_STANLY, SixIsland_RuinValley_Text_StanlyRematchIntro, SixIsland_RuinValley_Text_StanlyDefeat
+ msgbox SixIsland_RuinValley_Text_StanlyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_RuinValley_EventScript_Foster::
+ trainerbattle_single TRAINER_RUIN_MANIAC_FOSTER, SixIsland_RuinValley_Text_FosterIntro, SixIsland_RuinValley_Text_FosterDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_RuinValley_EventScript_FosterRematch
+ msgbox SixIsland_RuinValley_Text_FosterPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_RuinValley_EventScript_FosterRematch::
+ trainerbattle_rematch TRAINER_RUIN_MANIAC_FOSTER, SixIsland_RuinValley_Text_FosterRematchIntro, SixIsland_RuinValley_Text_FosterDefeat
+ msgbox SixIsland_RuinValley_Text_FosterPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_RuinValley_EventScript_Larry::
+ trainerbattle_single TRAINER_RUIN_MANIAC_LARRY, SixIsland_RuinValley_Text_LarryIntro, SixIsland_RuinValley_Text_LarryDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_RuinValley_EventScript_LarryRematch
+ msgbox SixIsland_RuinValley_Text_LarryPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_RuinValley_EventScript_LarryRematch::
+ trainerbattle_rematch TRAINER_RUIN_MANIAC_LARRY, SixIsland_RuinValley_Text_LarryRematchIntro, SixIsland_RuinValley_Text_LarryDefeat
+ msgbox SixIsland_RuinValley_Text_LarryPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_RuinValley_EventScript_Daryl::
+ trainerbattle_single TRAINER_HIKER_DARYL, SixIsland_RuinValley_Text_DarylIntro, SixIsland_RuinValley_Text_DarylDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_RuinValley_EventScript_DarylRematch
+ msgbox SixIsland_RuinValley_Text_DarylPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_RuinValley_EventScript_DarylRematch::
+ trainerbattle_rematch TRAINER_HIKER_DARYL, SixIsland_RuinValley_Text_DarylRematchIntro, SixIsland_RuinValley_Text_DarylDefeat
+ msgbox SixIsland_RuinValley_Text_DarylPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_RuinValley_EventScript_Hector::
+ trainerbattle_single TRAINER_POKEMANIAC_HECTOR, SixIsland_RuinValley_Text_HectorIntro, SixIsland_RuinValley_Text_HectorDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SixIsland_RuinValley_EventScript_HectorRematch
+ msgbox SixIsland_RuinValley_Text_HectorPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SixIsland_RuinValley_EventScript_HectorRematch::
+ trainerbattle_rematch TRAINER_POKEMANIAC_HECTOR, SixIsland_RuinValley_Text_HectorRematchIntro, SixIsland_RuinValley_Text_HectorDefeat
+ msgbox SixIsland_RuinValley_Text_HectorPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_TrainerTower_EventScript_Dario::
+ trainerbattle_single TRAINER_PSYCHIC_DARIO, SevenIsland_TrainerTower_Text_DarioIntro, SevenIsland_TrainerTower_Text_DarioDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_TrainerTower_EventScript_DarioRematch
+ msgbox SevenIsland_TrainerTower_Text_DarioPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_TrainerTower_EventScript_DarioRematch::
+ trainerbattle_rematch TRAINER_PSYCHIC_DARIO, SevenIsland_TrainerTower_Text_DarioRematchIntro, SevenIsland_TrainerTower_Text_DarioDefeat
+ msgbox SevenIsland_TrainerTower_Text_DarioPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_TrainerTower_EventScript_Rodette::
+ trainerbattle_single TRAINER_PSYCHIC_RODETTE, SevenIsland_TrainerTower_Text_RodetteIntro, SevenIsland_TrainerTower_Text_RodetteDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_TrainerTower_EventScript_RodetteRematch
+ msgbox SevenIsland_TrainerTower_Text_RodettePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_TrainerTower_EventScript_RodetteRematch::
+ trainerbattle_rematch TRAINER_PSYCHIC_RODETTE, SevenIsland_TrainerTower_Text_RodetteRematchIntro, SevenIsland_TrainerTower_Text_RodetteDefeat
+ msgbox SevenIsland_TrainerTower_Text_RodettePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_Entrance_EventScript_Miah::
+ trainerbattle_single TRAINER_AROMA_LADY_MIAH, SevenIsland_SevaultCanyon_Entrance_Text_MiahIntro, SevenIsland_SevaultCanyon_Entrance_Text_MiahDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_SevaultCanyon_Entrance_EventScript_MiahRematch
+ msgbox SevenIsland_SevaultCanyon_Entrance_Text_MiahPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_Entrance_EventScript_MiahRematch::
+ trainerbattle_rematch TRAINER_AROMA_LADY_MIAH, SevenIsland_SevaultCanyon_Entrance_Text_MiahRematchIntro, SevenIsland_SevaultCanyon_Entrance_Text_MiahDefeat
+ msgbox SevenIsland_SevaultCanyon_Entrance_Text_MiahPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_Entrance_EventScript_Eve::
+ trainerbattle_double TRAINER_YOUNG_COUPLE_EVE_JON, SevenIsland_SevaultCanyon_Entrance_Text_EveIntro, SevenIsland_SevaultCanyon_Entrance_Text_EveDefeat, SevenIsland_SevaultCanyon_Entrance_Text_EveNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_SevaultCanyon_Entrance_EventScript_EveRematch
+ msgbox SevenIsland_SevaultCanyon_Entrance_Text_EvePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_Entrance_EventScript_EveRematch::
+ trainerbattle_rematch_double TRAINER_YOUNG_COUPLE_EVE_JON, SevenIsland_SevaultCanyon_Entrance_Text_EveRematchIntro, SevenIsland_SevaultCanyon_Entrance_Text_EveDefeat, SevenIsland_SevaultCanyon_Entrance_Text_EveNotEnoughMons
+ msgbox SevenIsland_SevaultCanyon_Entrance_Text_EvePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_Entrance_EventScript_Jon::
+ trainerbattle_double TRAINER_YOUNG_COUPLE_EVE_JON, SevenIsland_SevaultCanyon_Entrance_Text_JonIntro, SevenIsland_SevaultCanyon_Entrance_Text_JonDefeat, SevenIsland_SevaultCanyon_Entrance_Text_JonNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_SevaultCanyon_Entrance_EventScript_JonRematch
+ msgbox SevenIsland_SevaultCanyon_Entrance_Text_JonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_Entrance_EventScript_JonRematch::
+ trainerbattle_rematch_double TRAINER_YOUNG_COUPLE_EVE_JON, SevenIsland_SevaultCanyon_Entrance_Text_JonRematchIntro, SevenIsland_SevaultCanyon_Entrance_Text_JonDefeat, SevenIsland_SevaultCanyon_Entrance_Text_JonNotEnoughMons
+ msgbox SevenIsland_SevaultCanyon_Entrance_Text_JonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_Entrance_EventScript_Mason::
+ trainerbattle_single TRAINER_JUGGLER_MASON, SevenIsland_SevaultCanyon_Entrance_Text_MasonIntro, SevenIsland_SevaultCanyon_Entrance_Text_MasonDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_SevaultCanyon_Entrance_EventScript_MasonRematch
+ msgbox SevenIsland_SevaultCanyon_Entrance_Text_MasonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_Entrance_EventScript_MasonRematch::
+ trainerbattle_rematch TRAINER_JUGGLER_MASON, SevenIsland_SevaultCanyon_Entrance_Text_MasonRematchIntro, SevenIsland_SevaultCanyon_Entrance_Text_MasonDefeat
+ msgbox SevenIsland_SevaultCanyon_Entrance_Text_MasonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_Entrance_EventScript_Nicolas::
+ trainerbattle_single TRAINER_PKMN_RANGER_NICOLAS, SevenIsland_SevaultCanyon_Entrance_Text_NicolasIntro, SevenIsland_SevaultCanyon_Entrance_Text_NicolasDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_SevaultCanyon_Entrance_EventScript_NicolasRematch
+ msgbox SevenIsland_SevaultCanyon_Entrance_Text_NicolasPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_Entrance_EventScript_NicolasRematch::
+ trainerbattle_rematch TRAINER_PKMN_RANGER_NICOLAS, SevenIsland_SevaultCanyon_Entrance_Text_NicolasRematchIntro, SevenIsland_SevaultCanyon_Entrance_Text_NicolasDefeat
+ msgbox SevenIsland_SevaultCanyon_Entrance_Text_NicolasPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_Entrance_EventScript_Madeline::
+ trainerbattle_single TRAINER_PKMN_RANGER_MADELINE, SevenIsland_SevaultCanyon_Entrance_Text_MadelineIntro, SevenIsland_SevaultCanyon_Entrance_Text_MadelineDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_SevaultCanyon_Entrance_EventScript_MadelineRematch
+ msgbox SevenIsland_SevaultCanyon_Entrance_Text_MadelinePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_Entrance_EventScript_MadelineRematch::
+ trainerbattle_rematch TRAINER_PKMN_RANGER_MADELINE, SevenIsland_SevaultCanyon_Entrance_Text_MadelineRematchIntro, SevenIsland_SevaultCanyon_Entrance_Text_MadelineDefeat
+ msgbox SevenIsland_SevaultCanyon_Entrance_Text_MadelinePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_EventScript_Cyndy::
+ trainerbattle_single TRAINER_CRUSH_GIRL_CYNDY, SevenIsland_SevaultCanyon_Text_CyndyIntro, SevenIsland_SevaultCanyon_Text_CyndyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_SevaultCanyon_EventScript_CyndyRematch
+ msgbox SevenIsland_SevaultCanyon_Text_CyndyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_EventScript_CyndyRematch::
+ trainerbattle_rematch TRAINER_CRUSH_GIRL_CYNDY, SevenIsland_SevaultCanyon_Text_CyndyRematchIntro, SevenIsland_SevaultCanyon_Text_CyndyDefeat
+ msgbox SevenIsland_SevaultCanyon_Text_CyndyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_EventScript_Evan::
+ trainerbattle_single TRAINER_TAMER_EVAN, SevenIsland_SevaultCanyon_Text_EvanIntro, SevenIsland_SevaultCanyon_Text_EvanDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_SevaultCanyon_EventScript_EvanRematch
+ msgbox SevenIsland_SevaultCanyon_Text_EvanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_EventScript_EvanRematch::
+ trainerbattle_rematch TRAINER_TAMER_EVAN, SevenIsland_SevaultCanyon_Text_EvanRematchIntro, SevenIsland_SevaultCanyon_Text_EvanDefeat
+ msgbox SevenIsland_SevaultCanyon_Text_EvanPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_EventScript_Jackson::
+ trainerbattle_single TRAINER_PKMN_RANGER_JACKSON, SevenIsland_SevaultCanyon_Text_JacksonIntro, SevenIsland_SevaultCanyon_Text_JacksonDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_SevaultCanyon_EventScript_JacksonRematch
+ msgbox SevenIsland_SevaultCanyon_Text_JacksonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_EventScript_JacksonRematch::
+ trainerbattle_rematch TRAINER_PKMN_RANGER_JACKSON, SevenIsland_SevaultCanyon_Text_JacksonRematchIntro, SevenIsland_SevaultCanyon_Text_JacksonDefeat
+ msgbox SevenIsland_SevaultCanyon_Text_JacksonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_EventScript_Katelyn::
+ trainerbattle_single TRAINER_PKMN_RANGER_KATELYN, SevenIsland_SevaultCanyon_Text_KatelynIntro, SevenIsland_SevaultCanyon_Text_KatelynDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_SevaultCanyon_EventScript_KatelynRematch
+ msgbox SevenIsland_SevaultCanyon_Text_KatelynPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_EventScript_KatelynRematch::
+ trainerbattle_rematch TRAINER_PKMN_RANGER_KATELYN, SevenIsland_SevaultCanyon_Text_KatelynRematchIntro, SevenIsland_SevaultCanyon_Text_KatelynDefeat
+ msgbox SevenIsland_SevaultCanyon_Text_KatelynPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_EventScript_Leroy::
+ trainerbattle_single TRAINER_COOLTRAINER_LEROY, SevenIsland_SevaultCanyon_Text_LeroyIntro, SevenIsland_SevaultCanyon_Text_LeroyDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_SevaultCanyon_EventScript_LeroyRematch
+ msgbox SevenIsland_SevaultCanyon_Text_LeroyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_EventScript_LeroyRematch::
+ trainerbattle_rematch TRAINER_COOLTRAINER_LEROY, SevenIsland_SevaultCanyon_Text_LeroyRematchIntro, SevenIsland_SevaultCanyon_Text_LeroyDefeat
+ msgbox SevenIsland_SevaultCanyon_Text_LeroyPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_EventScript_Michelle::
+ trainerbattle_single TRAINER_COOLTRAINER_MICHELLE, SevenIsland_SevaultCanyon_Text_MichelleIntro, SevenIsland_SevaultCanyon_Text_MichelleDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_SevaultCanyon_EventScript_MichelleRematch
+ msgbox SevenIsland_SevaultCanyon_Text_MichellePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_EventScript_MichelleRematch::
+ trainerbattle_rematch TRAINER_COOLTRAINER_MICHELLE, SevenIsland_SevaultCanyon_Text_MichelleRematchIntro, SevenIsland_SevaultCanyon_Text_MichelleDefeat
+ msgbox SevenIsland_SevaultCanyon_Text_MichellePostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_EventScript_Lex::
+ trainerbattle_double TRAINER_COOL_COUPLE_LEX_NYA, SevenIsland_SevaultCanyon_Text_LexIntro, SevenIsland_SevaultCanyon_Text_LexDefeat, SevenIsland_SevaultCanyon_Text_LexNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_SevaultCanyon_EventScript_LexRematch
+ msgbox SevenIsland_SevaultCanyon_Text_LexPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_EventScript_LexRematch::
+ trainerbattle_rematch_double TRAINER_COOL_COUPLE_LEX_NYA, SevenIsland_SevaultCanyon_Text_LexRematchIntro, SevenIsland_SevaultCanyon_Text_LexDefeat, SevenIsland_SevaultCanyon_Text_LexNotEnoughMons
+ msgbox SevenIsland_SevaultCanyon_Text_LexPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_EventScript_Nya::
+ trainerbattle_double TRAINER_COOL_COUPLE_LEX_NYA, SevenIsland_SevaultCanyon_Text_NyaIntro, SevenIsland_SevaultCanyon_Text_NyaDefeat, SevenIsland_SevaultCanyon_Text_NyaNotEnoughMons
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_SevaultCanyon_EventScript_NyaRematch
+ msgbox SevenIsland_SevaultCanyon_Text_NyaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_SevaultCanyon_EventScript_NyaRematch::
+ trainerbattle_rematch_double TRAINER_COOL_COUPLE_LEX_NYA, SevenIsland_SevaultCanyon_Text_NyaRematchIntro, SevenIsland_SevaultCanyon_Text_NyaDefeat, SevenIsland_SevaultCanyon_Text_NyaNotEnoughMons
+ msgbox SevenIsland_SevaultCanyon_Text_NyaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_TanobyRuins_EventScript_Brandon::
+ trainerbattle_single TRAINER_RUIN_MANIAC_BRANDON, SevenIsland_TanobyRuins_Text_BrandonIntro, SevenIsland_TanobyRuins_Text_BrandonDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_TanobyRuins_EventScript_BrandonRematch
+ msgbox SevenIsland_TanobyRuins_Text_BrandonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_TanobyRuins_EventScript_BrandonRematch::
+ trainerbattle_rematch TRAINER_RUIN_MANIAC_BRANDON, SevenIsland_TanobyRuins_Text_BrandonRematchIntro, SevenIsland_TanobyRuins_Text_BrandonDefeat
+ msgbox SevenIsland_TanobyRuins_Text_BrandonPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_TanobyRuins_EventScript_Benjamin::
+ trainerbattle_single TRAINER_RUIN_MANIAC_BENJAMIN, SevenIsland_TanobyRuins_Text_BenjaminIntro, SevenIsland_TanobyRuins_Text_BenjaminDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_TanobyRuins_EventScript_BenjaminRematch
+ msgbox SevenIsland_TanobyRuins_Text_BenjaminPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_TanobyRuins_EventScript_BenjaminRematch::
+ trainerbattle_rematch TRAINER_RUIN_MANIAC_BENJAMIN, SevenIsland_TanobyRuins_Text_BenjaminRematchIntro, SevenIsland_TanobyRuins_Text_BenjaminDefeat
+ msgbox SevenIsland_TanobyRuins_Text_BenjaminPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_TanobyRuins_EventScript_Edna::
+ trainerbattle_single TRAINER_PAINTER_EDNA, SevenIsland_TanobyRuins_Text_EdnaIntro, SevenIsland_TanobyRuins_Text_EdnaDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_TanobyRuins_EventScript_EdnaRematch
+ msgbox SevenIsland_TanobyRuins_Text_EdnaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_TanobyRuins_EventScript_EdnaRematch::
+ trainerbattle_rematch TRAINER_PAINTER_EDNA, SevenIsland_TanobyRuins_Text_EdnaRematchIntro, SevenIsland_TanobyRuins_Text_EdnaDefeat
+ msgbox SevenIsland_TanobyRuins_Text_EdnaPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_TanobyRuins_EventScript_Clifford::
+ trainerbattle_single TRAINER_GENTLEMAN_CLIFFORD, SevenIsland_TanobyRuins_Text_CliffordIntro, SevenIsland_TanobyRuins_Text_CliffordDefeat
+ specialvar VAR_RESULT, ShouldTryRematchBattle
+ goto_if_eq VAR_RESULT, TRUE, SevenIsland_TanobyRuins_EventScript_CliffordRematch
+ msgbox SevenIsland_TanobyRuins_Text_CliffordPostBattle, MSGBOX_AUTOCLOSE
+ end
+
+SevenIsland_TanobyRuins_EventScript_CliffordRematch::
+ trainerbattle_rematch TRAINER_GENTLEMAN_CLIFFORD, SevenIsland_TanobyRuins_Text_CliffordRematchIntro, SevenIsland_TanobyRuins_Text_CliffordDefeat
+ msgbox SevenIsland_TanobyRuins_Text_CliffordPostBattle, MSGBOX_AUTOCLOSE
+ end
diff --git a/data/specials.inc b/data/specials.inc
index f80933c0112c..ec1e6ecfe7d3 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -16,6 +16,14 @@
.align 2
gSpecials::
def_special HealPlayerParty
+ def_special StartBlackJack
+ def_special StartGacha
+ def_special StartBlockStacker
+ def_special StartDerby
+ def_special GetNewDerby
+ def_special StartSnake
+ def_special StartFlappyBird
+ def_special Special_ViewVoltorbFlip
def_special SetCableClubWarp
def_special DoCableClubWarp
def_special ReturnFromLinkRoom
@@ -346,6 +354,7 @@ gSpecials::
def_special GetContestMultiplayerId
def_special ScriptGetPartyMonSpecies
def_special IsSelectedMonEgg
+ def_special HasMovesToRelearn
def_special TryInitBattleTowerAwardManObjectEvent
def_special MoveOutOfSecretBaseFromOutside
def_special LoadPlayerBag
@@ -500,7 +509,6 @@ gSpecials::
def_special StartMirageTowerDisintegration
def_special StartMirageTowerShake
def_special StartMirageTowerFossilFallAndSink
- def_special ChangeBoxPokemonNickname
def_special GetPCBoxToSendMon
def_special ShouldShowBoxWasFullMessage
def_special SetMatchCallRegisteredFlag
@@ -565,5 +573,76 @@ gSpecials::
def_special GetCodeFeedback
def_special SetHiddenNature
def_special SetAbility
+ def_special CanTeachMoveBoxMon
def_special ObjectEventInteractionGetApricornTreeData
def_special ObjectEventInteractionPickApricornTree
+ def_special GetFrlgPokedexCount
+ def_special HasAllMons
+ def_special GetProfOaksRatingMessage
+ def_special UpdatePickStateFromSpecialVar8005
+ def_special SetFlavorTextFlagFromSpecialVars
+ def_special DisableMsgBoxWalkaway
+ def_special SetWalkingIntoSignVars
+ def_special StartOldManTutorialBattle
+ def_special DaisyMassageServices
+ def_special GetLeadMonFriendship
+ def_special OpenMuseumFossilPic
+ def_special CloseMuseumFossilPic
+ def_special CapeBrinkGetMoveToTeachLeadPokemon
+ def_special HasLearnedAllMovesFromCapeBrinkTutor
+ def_special SetSeenMon
+ def_special AnimateTeleporterHousing
+ def_special AnimateTeleporterCable
+ def_special IsThereMonInRoute5Daycare
+ def_special PutMonInRoute5Daycare
+ def_special GetNumLevelsGainedForRoute5DaycareMon
+ def_special TakePokemonFromRoute5Daycare
+ def_special GetCostToWithdrawRoute5DaycareMon
+ def_special DrawSeagallopDestinationMenu
+ def_special GetSelectedSeagallopDestination
+ def_special GetSeagallopNumber
+ def_special DoSeagallopFerryScene
+ def_special IsPlayerLeftOfVermilionSailor
+ def_special SetVermilionTrashCans
+ def_special DoSSAnneDepartureCutscene
+ def_special StartMarowakBattle
+ def_special DoesPlayerPartyContainSpecies
+ def_special GetMagikarpSizeRecordInfo
+ def_special CompareMagikarpSize
+ def_special GetHeracrossSizeRecordInfo
+ def_special CompareHeracrossSize
+ def_special GetRandomSlotMachineId
+ def_special HasAllKantoMons
+ def_special AnimateElevator
+ def_special InitElevatorFloorSelectMenuPos
+ def_special CloseElevatorCurrentFloorWindow
+ def_special DrawElevatorCurrentFloorWindow
+ def_special GetElevatorFloor
+ def_special ForcePlayerOntoBike
+ def_special Script_IsFanClubMemberFanOfPlayer
+ def_special Script_GetNumFansOfPlayerInTrainerFanClub
+ def_special Script_BufferFanClubTrainerName
+ def_special Script_TryLoseFansFromPlayTimeAfterLinkBattle
+ def_special Script_TryLoseFansFromPlayTime
+ def_special Script_SetPlayerGotFirstFans
+ def_special Script_UpdateTrainerFanClubGameClear
+ def_special Script_TryGainNewFanFromCounterFrlg
+ def_special IsNationalPokedexEnabled
+ def_special SetPostgameFlags
+ def_special IsPlayerNotInTrainerTowerLobby
+ def_special BrailleCursorToggle
+ def_special EnterHallOfFame
+ def_special CB2_StartCreditsSequence
+ def_special DoPokemonLeagueLightingEffect
+ def_special GetStarterPokemon
+ def_special SetIcefallCaveCrackedIceMetatiles
+ def_special UpdateLoreleiDollCollection
+ def_special SampleResortGorgeousMonAndReward
+ def_special PlayerPartyContainsSpeciesWithPlayerID
+ def_special ShakeScreen
+ def_special CallTrainerTowerFunc
+ def_special ForcePlayerToStartSurfing
+ def_special SeafoamIslandsB4F_CurrentDumpsPlayerOnLand
+ def_special UpdateTrainerCardPhotoIcons
+ def_special StickerManGetBragFlags
+ def_special CheckAddCoins
diff --git a/data/text/battle_dome.inc b/data/text/battle_dome.inc
deleted file mode 100644
index 8a26ff5ffc4f..000000000000
--- a/data/text/battle_dome.inc
+++ /dev/null
@@ -1,341 +0,0 @@
-BattleDome_Text_Potential1::
- .string "The best candidate to be a champ!$"
-
-BattleDome_Text_Potential2::
- .string "A sure-finalist team.$"
-
-BattleDome_Text_Potential3::
- .string "A likely top-three finisher.$"
-
-BattleDome_Text_Potential4::
- .string "A candidate to finish first.$"
-
-BattleDome_Text_Potential5::
- .string "A team with top-class potential.$"
-
-BattleDome_Text_Potential6::
- .string "The dark horse team this tournament.$"
-
-BattleDome_Text_Potential7::
- .string "A better-than-average team.$"
-
-BattleDome_Text_Potential8::
- .string "This tournament's average team.$"
-
-BattleDome_Text_Potential9::
- .string "A team with average potential.$"
-
-BattleDome_Text_Potential10::
- .string "A weaker-than-average team.$"
-
-BattleDome_Text_Potential11::
- .string "A team looking for its first win.$"
-
-BattleDome_Text_Potential12::
- .string "One win will make this team proud.$"
-
-BattleDome_Text_Potential13::
- .string "Overall, a weak team.$"
-
-BattleDome_Text_Potential14::
- .string "A team with very low potential.$"
-
-BattleDome_Text_Potential15::
- .string "A team unlikely to win the tournament.$"
-
-BattleDome_Text_Potential16::
- .string "The team most unlikely to win.$"
-
-BattleDome_Text_PotentialDomeAceTucker::
- .string "The perfect, invincible superstar!$"
-
-BattleDome_Text_StyleRiskDisaster::
- .string "Willing to risk total disaster at times.$"
-
-BattleDome_Text_StyleEndureLongBattles::
- .string "Skilled at enduring long battles.$"
-
-BattleDome_Text_StyleVariesTactics::
- .string "Varies tactics to suit the opponent.$"
-
-BattleDome_Text_StyleToughWinningPattern::
- .string "Has a tough winning pattern.$"
-
-BattleDome_Text_StyleUsesVeryRareMove::
- .string "Occasionally uses a very rare move.$"
-
-BattleDome_Text_StyleUsesStartlingMoves::
- .string "Uses startling and disruptive moves.$"
-
-BattleDome_Text_StyleConstantlyWatchesHP::
- .string "Constantly watches HP in battle.$"
-
-BattleDome_Text_StyleStoresAndLoosesPower::
- .string "Good at storing then loosing power.$"
-
-BattleDome_Text_StyleEnfeeblesFoes::
- .string "Skilled at enfeebling foes.$"
-
-BattleDome_Text_StylePrefersLuckTactics::
- .string "Prefers tactics that rely on luck.$"
-
-BattleDome_Text_StyleRegalAtmosphere::
- .string "Attacks with a regal atmosphere.$"
-
-BattleDome_Text_StylePowerfulLowPPMoves::
- .string "Attacks with powerful, low-PP moves.$"
-
-BattleDome_Text_StyleEnfeebleThenAttack::
- .string "Skilled at enfeebling, then attacking.$"
-
-BattleDome_Text_StyleBattlesWhileEnduring::
- .string "Battles while enduring all attacks.$"
-
-BattleDome_Text_StyleUpsetsFoesEmotionally::
- .string "Skilled at upsetting foes emotionally.$"
-
-BattleDome_Text_StyleStrongAndStraightforward::
- .string "Uses strong and straightforward moves.$"
-
-BattleDome_Text_StyleAggressivelyStrongMoves::
- .string "Aggressively uses strong moves.$"
-
-BattleDome_Text_StyleCleverlyDodgesAttacks::
- .string "Battles while cleverly dodging attacks.$"
-
-BattleDome_Text_StyleUsesUpsettingMoves::
- .string "Skilled at using upsetting attacks.$"
-
-BattleDome_Text_StyleUsesPopularMoves::
- .string "Uses many popular moves.$"
-
-BattleDome_Text_StyleHasPowerfulComboMoves::
- .string "Has moves for powerful combinations.$"
-
-BattleDome_Text_StyleUsesHighProbabilityMoves::
- .string "Uses high-probability attacks.$"
-
-BattleDome_Text_StyleAggressivelySpectacularMoves::
- .string "Aggressively uses spectacular moves.$"
-
-BattleDome_Text_StyleEmphasizesOffenseOverDefense::
- .string "Emphasizes offense over defense.$"
-
-BattleDome_Text_StyleEmphasizesDefenseOverOffense::
- .string "Emphasizes defense over offense.$"
-
-BattleDome_Text_StyleAttacksQuicklyStrongMoves::
- .string "Attacks quickly with strong moves.$"
-
-BattleDome_Text_StyleUsesAddedEffectMoves::
- .string "Often uses moves with added effects.$"
-
-BattleDome_Text_StyleUsesBalancedMixOfMoves::
- .string "Uses a well-balanced mix of moves.$"
-
-BattleDome_Text_StyleSampleMessage1::
- .string "This is sample message 1.$"
-
-BattleDome_Text_StyleSampleMessage2::
- .string "This is sample message 2.$"
-
-BattleDome_Text_StyleSampleMessage3::
- .string "This is sample message 3.$"
-
-BattleDome_Text_StyleSampleMessage4::
- .string "This is sample message 4.$"
-
-BattleDome_Text_EmphasizesHPAndAtk::
- .string "Emphasizes HP and ATTACK.$"
-
-BattleDome_Text_EmphasizesHPAndDef::
- .string "Emphasizes HP and DEFENSE.$"
-
-BattleDome_Text_EmphasizesHPAndSpeed::
- .string "Emphasizes HP and SPEED.$"
-
-BattleDome_Text_EmphasizesHPAndSpAtk::
- .string "Emphasizes HP and SP. ATTACK.$"
-
-BattleDome_Text_EmphasizesHPAndSpDef::
- .string "Emphasizes HP and SP. DEFENSE.$"
-
-BattleDome_Text_EmphasizesAtkAndDef::
- .string "Emphasizes ATTACK and DEFENSE.$"
-
-BattleDome_Text_EmphasizesAtkAndSpeed::
- .string "Emphasizes ATTACK and SPEED.$"
-
-BattleDome_Text_EmphasizesAtkAndSpAtk::
- .string "Emphasizes ATTACK and SP. ATTACK.$"
-
-BattleDome_Text_EmphasizesAtkAndSpDef::
- .string "Emphasizes ATTACK and SP. DEFENSE.$"
-
-BattleDome_Text_EmphasizesDefAndSpeed::
- .string "Emphasizes DEFENSE and SPEED.$"
-
-BattleDome_Text_EmphasizesDefAndSpAtk::
- .string "Emphasizes DEFENSE and SP. ATTACK.$"
-
-BattleDome_Text_EmphasizesDefAndSpDef::
- .string "Emphasizes DEFENSE and SP. DEFENSE.$"
-
-BattleDome_Text_EmphasizesSpeedAndSpAtk::
- .string "Emphasizes SPEED and SP. ATTACK.$"
-
-BattleDome_Text_EmphasizesSpeedAndSpDef::
- .string "Emphasizes SPEED and SP. DEFENSE.$"
-
-BattleDome_Text_EmphasizesSpAtkAndSpDef::
- .string "Emphasizes SP. ATTACK and SP. DEFENSE.$"
-
-BattleDome_Text_EmphasizesHP::
- .string "Emphasizes HP.$"
-
-BattleDome_Text_EmphasizesAtk::
- .string "Emphasizes ATTACK.$"
-
-BattleDome_Text_EmphasizesDef::
- .string "Emphasizes DEFENSE.$"
-
-BattleDome_Text_EmphasizesSpeed::
- .string "Emphasizes SPEED.$"
-
-BattleDome_Text_EmphasizesSpAtk::
- .string "Emphasizes SP. ATTACK.$"
-
-BattleDome_Text_EmphasizesSpDef::
- .string "Emphasizes SP. DEFENSE.$"
-
-BattleDome_Text_NeglectsHPAndAtk::
- .string "Neglects HP and ATTACK.$"
-
-BattleDome_Text_NeglectsHPAndDef::
- .string "Neglects HP and DEFENSE.$"
-
-BattleDome_Text_NeglectsHPAndSpeed::
- .string "Neglects HP and SPEED.$"
-
-BattleDome_Text_NeglectsHPAndSpAtk::
- .string "Neglects HP and SP. ATTACK.$"
-
-BattleDome_Text_NeglectsHPAndSpDef::
- .string "Neglects HP and SP. DEFENSE.$"
-
-BattleDome_Text_NeglectsAtkAndDef::
- .string "Neglects ATTACK and DEFENSE.$"
-
-BattleDome_Text_NeglectsAtkAndSpeed::
- .string "Neglects ATTACK and SPEED.$"
-
-BattleDome_Text_NeglectsAtkAndSpAtk::
- .string "Neglects ATTACK and SP. ATTACK.$"
-
-BattleDome_Text_NeglectsAtkAndSpDef::
- .string "Neglects ATTACK and SP. DEFENSE.$"
-
-BattleDome_Text_NeglectsDefAndSpeed::
- .string "Neglects DEFENSE and SPEED.$"
-
-BattleDome_Text_NeglectsDefAndSpAtk::
- .string "Neglects DEFENSE and SP. ATTACK.$"
-
-BattleDome_Text_NeglectsDefAndSpDef::
- .string "Neglects DEFENSE and SP. DEFENSE.$"
-
-BattleDome_Text_NeglectsSpeedAndSpAtk::
- .string "Neglects SPEED and SP. ATTACK.$"
-
-BattleDome_Text_NeglectsSpeedAndSpDef::
- .string "Neglects SPEED and SP. DEFENSE.$"
-
-BattleDome_Text_NeglectsSpAtkAndSpDef::
- .string "Neglects SP. ATTACK and SP. DEFENSE.$"
-
-BattleDome_Text_NeglectsHP::
- .string "Neglects HP.$"
-
-BattleDome_Text_NeglectsAtk::
- .string "Neglects ATTACK.$"
-
-BattleDome_Text_NeglectsDef::
- .string "Neglects DEFENSE.$"
-
-BattleDome_Text_NeglectsSpeed::
- .string "Neglects SPEED.$"
-
-BattleDome_Text_NeglectsSpAtk::
- .string "Neglects SP. ATTACK.$"
-
-BattleDome_Text_NeglectsSpDef::
- .string "Neglects SP. DEFENSE.$"
-
-BattleDome_Text_RaisesMonsWellBalanced::
- .string "Raises POKéMON in a well-balanced way.$"
-
-BattleDome_Text_LetTheBattleBegin::
- .string "Let the battle begin!$"
-
-BattleDome_Text_TrainerWonUsingMove::
- .string "{STR_VAR_1} won using {STR_VAR_2}!$"
-
-BattleDome_Text_TrainerBecameChamp::
- .string "{STR_VAR_1} became the champ!$"
-
-BattleDome_Text_TrainerWonByDefault::
- .string "{STR_VAR_1} won by default!$"
-
-BattleDome_Text_TrainerWonOutrightByDefault::
- .string "{STR_VAR_1} won outright by default!$"
-
-BattleDome_Text_TrainerWonNoMoves::
- .string "{STR_VAR_1} won without using a move!$"
-
-BattleDome_Text_TrainerWonOutrightNoMoves::
- .string "{STR_VAR_1} won outright with no moves!$"
-
-BattleDome_Text_Round1Match1::
- .string "Round 1, Match 1$"
-
-BattleDome_Text_Round1Match2::
- .string "Round 1, Match 2$"
-
-BattleDome_Text_Round1Match3::
- .string "Round 1, Match 3$"
-
-BattleDome_Text_Round1Match4::
- .string "Round 1, Match 4$"
-
-BattleDome_Text_Round1Match5::
- .string "Round 1, Match 5$"
-
-BattleDome_Text_Round1Match6::
- .string "Round 1, Match 6$"
-
-BattleDome_Text_Round1Match7::
- .string "Round 1, Match 7$"
-
-BattleDome_Text_Round1Match8::
- .string "Round 1, Match 8$"
-
-BattleDome_Text_Round2Match1::
- .string "Round 2, Match 1$"
-
-BattleDome_Text_Round2Match2::
- .string "Round 2, Match 2$"
-
-BattleDome_Text_Round2Match3::
- .string "Round 2, Match 3$"
-
-BattleDome_Text_Round2Match4::
- .string "Round 2, Match 4$"
-
-BattleDome_Text_SemifinalMatch1::
- .string "Semifinal Match 1$"
-
-BattleDome_Text_SemifinalMatch2::
- .string "Semifinal Match 2$"
-
-BattleDome_Text_FinalMatch::
- .string "Final Match$"
diff --git a/data/text/braille.inc b/data/text/braille.inc
index 4518c5769dd3..2266f2480f1e 100644
--- a/data/text/braille.inc
+++ b/data/text/braille.inc
@@ -115,3 +115,161 @@ AncientTomb_Braille_ShineInTheMiddle:
.braille "INHERIT OUR\n"
.braille "WILL, SHINE\n"
.braille "IN THE MIDDLE.$"
+
+@ FRLG
+Braille_Text_Up::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "UP$"
+
+Braille_Text_Down::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "DOWN$"
+
+Braille_Text_Right::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "RIGHT$"
+
+Braille_Text_Left::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "LEFT$"
+
+Braille_Text_Cut::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "CUT$"
+
+Braille_Text_ABC::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "ABC$"
+
+Braille_Text_GHI::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "GHI$"
+
+Braille_Text_MNO::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "MNO$"
+
+Braille_Text_TUV::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "TUV$"
+
+Braille_Text_DEF::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "DEF$"
+
+Braille_Text_JKL::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "JKL$"
+
+Braille_Text_PQRS::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "PQRS$"
+
+Braille_Text_WXYZ::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "WXYZ$"
+
+Braille_Text_Period::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille ".$"
+
+Braille_Text_Comma::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille ",$"
+
+Braille_Text_Everything::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "EVERYTHING$"
+
+Braille_Text_HasMeaning1::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "HAS MEANING$"
+
+Braille_Text_Existence::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "EXISTENCE$"
+
+Braille_Text_HasMeaning2::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "HAS MEANING$"
+
+Braille_Text_BeingAlive::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "BEING ALIVE$"
+
+Braille_Text_HasMeaning3::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "HAS MEANING$"
+
+Braille_Text_HaveDreams::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "HAVE DREAMS$"
+
+Braille_Text_UsePower::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "USE POWER.$"
+
+Braille_Text_LetTheTwo::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "LET THE TWO$"
+
+Braille_Text_Glittering::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "GLITTERING$"
+
+Braille_Text_Stones::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "STONES$"
+
+Braille_Text_OneInRed::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "ONE IN RED$"
+
+Braille_Text_OneInBlue::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "ONE IN BLUE$"
+
+Braille_Text_ConnectThe::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "CONNECT THE$"
+
+Braille_Text_Past::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "PAST.$"
+
+Braille_Text_TwoFriends::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "TWO FRIENDS$"
+
+Braille_Text_Sharing::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "SHARING$"
+
+Braille_Text_PowerOpen::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "POWER OPEN$"
+
+Braille_Text_AWindowTo::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "A WINDOW TO$"
+
+Braille_Text_ANewWorld::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "A NEW WORLD$"
+
+Braille_Text_ThatGlows::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "THAT GLOWS.$"
+
+Braille_Text_TheNext::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "THE NEXT$"
+
+Braille_Text_WorldWaits::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "WORLD WAITS$"
+
+Braille_Text_ForYou::
+ brailleformat 3, 0, 25, 19, 6, 3
+ .braille "FOR YOU.$"
+
diff --git a/data/text/day_care_frlg.inc b/data/text/day_care_frlg.inc
new file mode 100644
index 000000000000..3de4f4fe3d47
--- /dev/null
+++ b/data/text/day_care_frlg.inc
@@ -0,0 +1,130 @@
+@ Same as Hoenn's day-care text, used by the Four Island Day-Care. Unused text translated in Emerald
+
+DayCare_Text_ImDaycareManSpeakToMyWife::
+ .string "I'm the DAY-CARE MAN.\p"
+ .string "I help take care of the precious\n"
+ .string "POKéMON of TRAINERS.\p"
+ .string "If you'd like me to raise your\n"
+ .string "POKéMON, have a word with my wife.$"
+
+DayCare_Text_DoYouWantEgg::
+ .string "Ah, it's you!\p"
+ .string "We were raising your POKéMON, and\n"
+ .string "my goodness, were we surprised!\p"
+ .string "Your POKéMON had an EGG!\p"
+ .string "We don't know how it got there,\n"
+ .string "but your POKéMON had it.\p"
+ .string "You do want it, yes?$"
+
+DayCare_Text_YourMonIsDoingFine::
+ .string "Ah, it's you! Good to see you.\n"
+ .string "Your {STR_VAR_1}'s doing fine.$"
+
+DayCare_Text_IllKeepIt::
+ .string "Well then, I'll keep it.\n"
+ .string "Thanks!$"
+
+DayCare_Text_YouHaveNoRoomForIt::
+ .string "You have no room for it…\n"
+ .string "Come back when you've made room.$"
+
+DayCare_Text_ReceivedEgg::
+ .string "{PLAYER} received the EGG from\n"
+ .string "the DAY-CARE MAN.$"
+
+DayCare_Text_TakeGoodCareOfIt::
+ .string "Take good care of it.$"
+
+DayCare_Text_SeeWifeIfYouWantToPickUpMon::
+ .string "ポケモンを ひきとりたい ときは\n"
+ .string "ばさんに いって おくれ$"
+
+DayCare_Text_YourMonsAreDoingFine::
+ .string "Ah, it's you! Your {STR_VAR_1} and\n"
+ .string "{STR_VAR_2} are doing fine.$"
+
+DayCare_Text_IWillKeepDoYouWantIt::
+ .string "I really will keep it.\n"
+ .string "You do want this, yes?$"
+
+DayCare_Text_WouldYouLikeUsToRaiseMon::
+ .string "I'm the DAY-CARE LADY.\p"
+ .string "We can raise POKéMON for you.\p"
+ .string "Would you like us to raise one?$"
+
+DayCare_Text_WhichMonShouldWeRaise::
+ .string "Which POKéMON should we raise for\n"
+ .string "you?$"
+
+DayCare_Text_WellRaiseYourMon::
+ .string "Fine, we'll raise your {STR_VAR_1}\n"
+ .string "for a while.\p"
+ .string "Come back for it later.$"
+
+DayCare_Text_WeCanRaiseOneMore::
+ .string "We can raise two of your POKéMON.\p"
+ .string "Would you like us to raise one\n"
+ .string "more POKéMON for you?$"
+
+DayCare_Text_HusbandWasLookingForYou::
+ .string "My husband was looking for you.$"
+
+DayCare_Text_FineThenComeAgain::
+ .string "Oh, fine, then.\n"
+ .string "Come again.$"
+
+DayCare_Text_NotEnoughMoney::
+ .string "You don't have enough money…$"
+
+DayCare_Text_TakeOtherOneBackToo::
+ .string "Will you take back the other one,\n"
+ .string "too?$"
+
+DayCare_Text_ComeAgain::
+ .string "Fine.\n"
+ .string "Come again.$"
+
+DayCare_Text_GoodToSeeYou::
+ .string "Ah, it's you!\n"
+ .string "Good to see you.\p"
+ .string "Your POKéMON can only be doing\n"
+ .string "good!$"
+
+DayCare_Text_YourMonHasGrownXLevels::
+ .string "By level, your {STR_VAR_1} has\n"
+ .string "grown by {STR_VAR_2}.$"
+
+DayCare_Text_YourPartyIsFull::
+ .string "Your POKéMON party is full.\n"
+ .string "Make room, then come see me.$"
+
+DayCare_Text_TakeBackWhichMon::
+ .string "どっちの ポケモンを ひきとるかい?$"
+
+DayCare_Text_ItWillCostX::
+ .string "If you want your {STR_VAR_1} back,\n"
+ .string "it will cost ¥{STR_VAR_2}.$"
+
+DayCare_Text_HeresYourMon::
+ .string "Perfect!\n"
+ .string "Here's your POKéMON.$"
+
+DayCare_Text_TookBackMon::
+ .string "{PLAYER} took back {STR_VAR_1} from\n"
+ .string "the DAY-CARE LADY.$"
+
+DayCare_Text_YouHaveJustOneMon::
+ .string "Oh? But you have just one\n"
+ .string "POKéMON.\p"
+ .string "Come back another time.$"
+
+DayCare_Text_TakeYourMonBack::
+ .string "Will you take your POKéMON back?$"
+
+DayCare_Text_WhatWillYouBattleWith::
+ .string "If you leave me that POKéMON,\n"
+ .string "what will you battle with?\p"
+ .string "Come back another time.$"
+
+DayCare_Text_Huh::
+ .string "Huh?$"
diff --git a/data/text/fame_checker_frlg.inc b/data/text/fame_checker_frlg.inc
new file mode 100644
index 000000000000..b4d52b2082bc
--- /dev/null
+++ b/data/text/fame_checker_frlg.inc
@@ -0,0 +1,1487 @@
+gFameCheckerFlavorText_ProfOak0:: @ 0x81AD106
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}OAK POKéMON RESEARCH LAB$"
+
+gFameCheckerFlavorText_ProfOak1:: @ 0x81AD145
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}To make a complete guide on all\n"
+ .string "the POKéMON in the world…\p"
+ .string "That was my dream!$"
+
+gFameCheckerFlavorText_ProfOak2:: @ 0x81AD1BB
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}PROF. OAK may not look like much,\n"
+ .string "but he's the authority on POKéMON.\p"
+ .string "Many POKéMON TRAINERS hold him in\n"
+ .string "high regard.$"
+
+gFameCheckerFlavorText_ProfOak3:: @ 0x81AD258
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Family and friends?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}PROF. OAK reportedly lives with his\n"
+ .string "grandchildren, DAISY and {RIVAL}.$"
+
+gFameCheckerFlavorText_ProfOak4:: @ 0x81AD2B9
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Family and friends?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}I hear OAK's taken a lot of\n"
+ .string "interest in you, child.\p"
+ .string "That old duff was once tough and\n"
+ .string "handsome.\p"
+ .string "But that was decades ago.\n"
+ .string "He's a shadow of his former self.$"
+
+gFameCheckerFlavorText_ProfOak5:: @ 0x81AD377
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}PROF. OAK is going to have his own\n"
+ .string "radio show soon.\p"
+ .string "The program will be called PROF.\n"
+ .string "OAK'S POKéMON SEMINAR.$"
+
+gFameCheckerFlavorText_Daisy0:: @ 0x81AD40C
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}If you show DAISY your POKéMON,\n"
+ .string "she can tell how much it likes you.\p"
+ .string "Occasionally, she will even groom\n"
+ .string "a POKéMON for you.$"
+
+gFameCheckerFlavorText_Daisy1:: @ 0x81AD4AE
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}But the person who is most liked by\n"
+ .string "POKéMON is DAISY, I think.$"
+
+gFameCheckerFlavorText_Daisy2:: @ 0x81AD516
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}She was gently grooming POKéMON…\n"
+ .string "She was a little angel.\p"
+ .string "That little girl's name…\n"
+ .string "I think it was DAISY.$"
+
+gFameCheckerFlavorText_Daisy3:: @ 0x81AD5A7
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Family and friends?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}PROF. OAK reportedly lives with his\n"
+ .string "grandchildren, DAISY and {RIVAL}.$"
+
+gFameCheckerFlavorText_Daisy4:: @ 0x81AD608
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}A girl from PALLET TOWN, DAISY,\n"
+ .string "she enjoys TEA every day.\p"
+ .string "She visits the CELADON DEPT. STORE\n"
+ .string "to buy some TEA.$"
+
+gFameCheckerFlavorText_Daisy5:: @ 0x81AD69F
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}There's a rumor…\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}The Spring POKéMON CONTEST's\n"
+ .string "Grand Champion is DAISY OAK of\l"
+ .string "PALLET TOWN!$"
+
+gFameCheckerFlavorText_Brock0:: @ 0x81AD705
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}PEWTER CITY POKéMON GYM\n"
+ .string "LEADER: BROCK\l"
+ .string "The Rock-Solid POKéMON TRAINER!$"
+
+gFameCheckerFlavorText_Brock1:: @ 0x81AD771
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Favorite kind of POKéMON?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}My rock-hard willpower is evident\n"
+ .string "in even my POKéMON.\p"
+ .string "My POKéMON are all rock hard and\n"
+ .string "have true-grit determination.\p"
+ .string "That's right - my POKéMON are all\n"
+ .string "the ROCK type!$"
+
+gFameCheckerFlavorText_Brock2:: @ 0x81AD840
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}There aren't many serious POKéMON\n"
+ .string "TRAINERS here.\p"
+ .string "They're all like BUG CATCHERS,\n"
+ .string "you know, just hobbyists.\p"
+ .string "But PEWTER GYM's BROCK isn't like\n"
+ .string "that, not one bit.$"
+
+gFameCheckerFlavorText_Brock3:: @ 0x81AD908
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}BROCK is cool. He's not just tough.\n"
+ .string "People like and respect him.\p"
+ .string "I want to become a GYM LEADER\n"
+ .string "like him.$"
+
+gFameCheckerFlavorText_Brock4:: @ 0x81AD99A
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Hi, I'm excavating for fossils here\n"
+ .string "under MT. MOON.\p"
+ .string "Sometimes, BROCK of PEWTER GYM\n"
+ .string "lends me a hand.$"
+
+gFameCheckerFlavorText_Brock5:: @ 0x81ADA27
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}BROCK rarely laughs, but is said to\n"
+ .string "be unable to stop if he starts.$"
+
+gFameCheckerFlavorText_Misty0:: @ 0x81ADA91
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}CERULEAN CITY POKéMON GYM\n"
+ .string "LEADER: MISTY\l"
+ .string "The Tomboyish Mermaid!$"
+
+gFameCheckerFlavorText_Misty1:: @ 0x81ADAF6
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Favorite kind of POKéMON?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}My policy is an all-out offensive\n"
+ .string "with WATER-type POKéMON!$"
+
+gFameCheckerFlavorText_Misty2:: @ 0x81ADB5A
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}MISTY is a TRAINER who's going to\n"
+ .string "keep improving.\p"
+ .string "She won't lose to someone like you!$"
+
+gFameCheckerFlavorText_Misty3:: @ 0x81ADBD9
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}There's a rumor…\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Strong TRAINERS and WATER POKéMON\n"
+ .string "are common sights in these parts.\p"
+ .string "They say that MISTY of the\n"
+ .string "CERULEAN GYM trains here.$"
+
+gFameCheckerFlavorText_Misty4:: @ 0x81ADC72
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}There's a rumor…\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}This cape is a famous date spot.\p"
+ .string "MISTY, the GYM LEADER, has high\n"
+ .string "hopes about this place.$"
+
+gFameCheckerFlavorText_Misty5:: @ 0x81ADCEB
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}There's a rumor…\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}MISTY is said to worship LORELEI\n"
+ .string "of the ELITE FOUR.$"
+
+gFameCheckerFlavorText_LtSurge0:: @ 0x81ADD3C
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}VERMILION CITY POKéMON GYM\n"
+ .string "LEADER: LT. SURGE\l"
+ .string "The Lightning American!$"
+
+gFameCheckerFlavorText_LtSurge1:: @ 0x81ADDA7
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Favorite kind of POKéMON?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}I tell you, kid, electric POKéMON\n"
+ .string "saved me during the war!$"
+
+gFameCheckerFlavorText_LtSurge2:: @ 0x81ADE0B
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}When I was in the Army, LT. SURGE\n"
+ .string "was my strict CO.\p"
+ .string "He was a hard taskmaster.$"
+
+gFameCheckerFlavorText_LtSurge3:: @ 0x81ADE82
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}LT. SURGE was always famous for\n"
+ .string "his cautious nature in the Army.$"
+
+gFameCheckerFlavorText_LtSurge4:: @ 0x81ADEEC
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}LT. SURGE installed the traps in\n"
+ .string "the GYM himself.\p"
+ .string "He set up double locks everywhere.$"
+
+gFameCheckerFlavorText_LtSurge5:: @ 0x81ADF6A
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}There's a rumor…\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}LT. SURGE is rumored to have been\n"
+ .string "a pilot while home in America.\p"
+ .string "He used the electricity generated\n"
+ .string "by POKéMON to power his plane.$"
+
+gFameCheckerFlavorText_Erika0:: @ 0x81AE009
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}CELADON CITY POKéMON GYM\n"
+ .string "LEADER: ERIKA\l"
+ .string "The Nature-Loving Princess!$"
+
+gFameCheckerFlavorText_Erika1:: @ 0x81AE072
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Favorite kind of POKéMON?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}I am a student of the art of\n"
+ .string "flower arranging.\p"
+ .string "My POKéMON are solely of the\n"
+ .string "GRASS type.$"
+
+gFameCheckerFlavorText_Erika2:: @ 0x81AE0F3
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Our LEADER ERIKA might be quiet,\n"
+ .string "but she's famous around here.$"
+
+gFameCheckerFlavorText_Erika3:: @ 0x81AE15B
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}We only use GRASS-type POKéMON at\n"
+ .string "our GYM.\p"
+ .string "Why? We also use them for making\n"
+ .string "flower arrangements!$"
+
+gFameCheckerFlavorText_Erika4:: @ 0x81AE1E5
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Favorite kind of POKéMON?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}I would never collect POKéMON if\n"
+ .string "they were unattractive.$"
+
+gFameCheckerFlavorText_Erika5:: @ 0x81AE247
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}There's a rumor…\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Rumor has it that if you peek into\n"
+ .string "CELADON GYM, you can often\l"
+ .string "see ERIKA snoozing.$"
+
+gFameCheckerFlavorText_Koga0:: @ 0x81AE2B6
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}FUCHSIA CITY POKéMON GYM\n"
+ .string "LEADER: KOGA\l"
+ .string "The Poisonous Ninja Master$"
+
+gFameCheckerFlavorText_Koga1:: @ 0x81AE31D
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Favorite kind of POKéMON?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Despair to the creeping horror of\n"
+ .string "POISON-type POKéMON!$"
+
+gFameCheckerFlavorText_Koga2:: @ 0x81AE37D
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Even though I've lost, I will keep\n"
+ .string "training according to the teachings\l"
+ .string "of KOGA, my ninja master.$"
+
+gFameCheckerFlavorText_Koga3:: @ 0x81AE407
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Family and friends?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}My father is the GYM LEADER of\n"
+ .string "this town.\p"
+ .string "I'm training to use POISON POKéMON\n"
+ .string "as well as my father.$"
+
+gFameCheckerFlavorText_Koga4:: @ 0x81AE48D
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}There's a rumor…\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}KOGA is said to have a thorough\n"
+ .string "knowledge of medicine.\p"
+ .string "He even concocts medicine to nurse\n"
+ .string "his POKéMON to health.$"
+
+gFameCheckerFlavorText_Koga5:: @ 0x81AE51B
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}The SAFARI ZONE's huge, wouldn't\n"
+ .string "you say?\p"
+ .string "FUCHSIA's GYM LEADER, KOGA, \n"
+ .string "patrols the grounds every so often.\p"
+ .string "Thanks to him, we can play here\n"
+ .string "knowing that we're safe.$"
+
+gFameCheckerFlavorText_Sabrina0:: @ 0x81AE5E8
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}SAFFRON CITY POKéMON GYM\n"
+ .string "LEADER: SABRINA\l"
+ .string "The Master of PSYCHIC POKéMON!$"
+
+gFameCheckerFlavorText_Sabrina1:: @ 0x81AE656
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Favorite kind of POKéMON?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}You know about a girl GYM LEADER\n"
+ .string "in SAFFRON CITY?\p"
+ .string "She uses PSYCHIC-type POKéMON,\n"
+ .string "right?$"
+
+gFameCheckerFlavorText_Sabrina2:: @ 0x81AE6D7
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}I have had psychic powers since\n"
+ .string "I was a child.\p"
+ .string "It started when a spoon I\n"
+ .string "carelessly tossed, bent.$"
+
+gFameCheckerFlavorText_Sabrina3:: @ 0x81AE762
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}I dislike battling, but if you wish,\n"
+ .string "I will show you my powers!$"
+
+gFameCheckerFlavorText_Sabrina4:: @ 0x81AE7CB
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}There's a rumor…\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}People say that SABRINA can\n"
+ .string "communicate with her POKéMON\l"
+ .string "during battle without speaking.$"
+
+gFameCheckerFlavorText_Sabrina5:: @ 0x81AE841
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}SABRINA just wiped out the KARATE\n"
+ .string "MASTER next door.$"
+
+gFameCheckerFlavorText_Blaine0:: @ 0x81AE89E
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}CINNABAR ISLAND POKéMON GYM\n"
+ .string "LEADER: BLAINE\l"
+ .string "The Hotheaded Quiz Master!$"
+
+gFameCheckerFlavorText_Blaine1:: @ 0x81AE90A
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Favorite kind of POKéMON?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}My fiery POKéMON are all rough\n"
+ .string "and ready with intense heat!\p"
+ .string "They incinerate all challengers!$"
+
+gFameCheckerFlavorText_Blaine2:: @ 0x81AE990
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Favorite kind of POKéMON?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Our LEADER, BLAINE, became lost\n"
+ .string "in the mountains but good.\p"
+ .string "Night fell when a fiery bird\n"
+ .string "POKéMON appeared.\p"
+ .string "Its light allowed BLAINE to find\n"
+ .string "his way down safely.$"
+
+gFameCheckerFlavorText_Blaine3:: @ 0x81AEA59
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}CINNABAR GYM's BLAINE is quite the\n"
+ .string "odd fellow.\p"
+ .string "He's lived on the island since way\n"
+ .string "before the LAB was built.$"
+
+gFameCheckerFlavorText_Blaine4:: @ 0x81AEAEE
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Family and friends?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}It's a photo of BLAINE and\n"
+ .string "MR. FUJI.\p"
+ .string "They're standing shoulder to\n"
+ .string "shoulder with big grins.$"
+
+gFameCheckerFlavorText_Blaine5:: @ 0x81AEB69
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}There's a rumor…\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}BLAINE is said to remove his dark\n"
+ .string "shades only when he is thinking up\l"
+ .string "new quiz questions.$"
+
+gFameCheckerFlavorText_Lorelei0:: @ 0x81AEBDF
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}I am LORELEI of the ELITE FOUR.$"
+
+gFameCheckerFlavorText_Lorelei1:: @ 0x81AEC28
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Favorite kind of POKéMON?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}No one can best me when it comes\n"
+ .string "to icy POKéMON.$"
+
+gFameCheckerFlavorText_Lorelei2:: @ 0x81AEC82
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Where was this person born?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}We've had a great and powerful\n"
+ .string "TRAINER grow up on this island.\p"
+ .string "I bet even you'd know her.\n"
+ .string "It's LORELEI of the ELITE FOUR!$"
+
+gFameCheckerFlavorText_Lorelei3:: @ 0x81AED27
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Known for her logical, calculated,\n"
+ .string "and cool battling style, LORELEI\l"
+ .string "has a surprising secret!$"
+
+gFameCheckerFlavorText_Lorelei4:: @ 0x81AEDAA
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Did you know that LORELEI has lots\n"
+ .string "and lots of stuffed dolls?\p"
+ .string "Every time she comes back to\n"
+ .string "FOUR ISLAND, her collection grows!$"
+
+gFameCheckerFlavorText_Lorelei5:: @ 0x81AEE51
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Favorite kind of POKéMON?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}The LAPRAS she has, I imagine it\n"
+ .string "to be the one she met as a child.\p"
+ .string "I believe it was in ICEFALL CAVE\n"
+ .string "that she caught it.\p"
+ .string "Perhaps that POKéMON has been with\n"
+ .string "her ever since.$"
+
+gFameCheckerFlavorText_Bruno0:: @ 0x81AEF25
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}I am BRUNO of the ELITE FOUR!$"
+
+gFameCheckerFlavorText_Bruno1:: @ 0x81AEF6C
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Favorite kind of POKéMON?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}I've lived and trained with my\n"
+ .string "fighting POKéMON!$"
+
+gFameCheckerFlavorText_Bruno2:: @ 0x81AEFC6
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}BRUNO apparently joined the ELITE\n"
+ .string "FOUR out of his burning ambition to\l"
+ .string "battle the best TRAINERS.$"
+
+gFameCheckerFlavorText_Bruno3:: @ 0x81AF04C
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}BRUNO, who's a senior ahead of me,\n"
+ .string "visits the SPA on occasion.\p"
+ .string "He comes to rehab injuries, both\n"
+ .string "his own and his POKéMON's.$"
+
+gFameCheckerFlavorText_Bruno4:: @ 0x81AF0F0
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}There's a rumor…\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}He's one of the ELITE FOUR.\n"
+ .string "His name is BRUNO.\p"
+ .string "He went away disappointed when he\n"
+ .string "found out that they were all sold\l"
+ .string "out of Rage Candybars.$"
+
+gFameCheckerFlavorText_Bruno5:: @ 0x81AF19A
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Family and friends?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Even BRUNO…\n"
+ .string "He trained with a fellow by the\l"
+ .string "name of BRAWLY before.$"
+
+gFameCheckerFlavorText_Agatha0:: @ 0x81AF200
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}I am AGATHA of the ELITE FOUR.$"
+
+gFameCheckerFlavorText_Agatha1:: @ 0x81AF248
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Favorite kind of POKéMON?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}AGATHA's GHOST-type POKéMON are\n"
+ .string "horrifically terrifying in toughness.$"
+
+gFameCheckerFlavorText_Agatha2:: @ 0x81AF2B7
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}That old lady's also got a really\n"
+ .string "short fuse, too.\p"
+ .string "It doesn't take anything to get\n"
+ .string "that scary lady hollering.$"
+
+gFameCheckerFlavorText_Agatha3:: @ 0x81AF34E
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}There's a rumor…\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}In her youth, AGATHA and PROF.\n"
+ .string "OAK were rivals who vied for\l"
+ .string "supremacy as TRAINERS.$"
+
+gFameCheckerFlavorText_Agatha4:: @ 0x81AF3BE
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Family and friends?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}I hear OAK's taken a lot of\n"
+ .string "interest in you, child.\p"
+ .string "That old duff was once tough and\n"
+ .string "handsome.\p"
+ .string "But that was decades ago.\n"
+ .string "He's a shadow of his former self.$"
+
+gFameCheckerFlavorText_Agatha5:: @ 0x81AF47C
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Take AGATHA, for example.\p"
+ .string "She set a record for being the\n"
+ .string "oldest-ever ELITE FOUR member.$"
+
+gFameCheckerFlavorText_Lance0:: @ 0x81AF4FD
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}I lead the ELITE FOUR.\p"
+ .string "You can call me LANCE the dragon\n"
+ .string "TRAINER.$"
+
+gFameCheckerFlavorText_Lance1:: @ 0x81AF567
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Favorite kind of POKéMON?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}You know that dragons are\n"
+ .string "mythical POKéMON.\p"
+ .string "They're hard to catch and raise,\n"
+ .string "but their powers are superior.\p"
+ .string "They're virtually indestructible.\n"
+ .string "There's no being clever with them.$"
+
+gFameCheckerFlavorText_Lance2:: @ 0x81AF641
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}He stands for justice!\n"
+ .string "He's cool, and yet passionate!\l"
+ .string "He's the greatest, LANCE!$"
+
+gFameCheckerFlavorText_Lance3:: @ 0x81AF6BA
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}There's a rumor…\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}We have a customer, LANCE, who\n"
+ .string "occasionally comes.\p"
+ .string "He always buys capes.\p"
+ .string "I wonder… Does he have many\n"
+ .string "identical capes at home?$"
+
+gFameCheckerFlavorText_Lance4:: @ 0x81AF758
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Family and friends?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}LANCE's grandfather is thought to\n"
+ .string "be the elder of a famous clan of\l"
+ .string "dragon masters.$"
+
+gFameCheckerFlavorText_Lance5:: @ 0x81AF7CB
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Family and friends?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}From what I've heard, LANCE has\n"
+ .string "a cousin who's a GYM LEADER\l"
+ .string "somewhere far away.$"
+
+gFameCheckerFlavorText_Bill0:: @ 0x81AF83E
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}After all, BILL's world-famous as a\n"
+ .string "POKéMANIAC.\p"
+ .string "He invented the POKéMON Storage\n"
+ .string "System on PC, too.$"
+
+gFameCheckerFlavorText_Bill1:: @ 0x81AF8CA
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Favorite kind of POKéMON?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}BILL has lots of POKéMON!\n"
+ .string "He collects rare ones, too!$"
+
+gFameCheckerFlavorText_Bill2:: @ 0x81AF929
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}He's my grandson!\p"
+ .string "He always liked collecting things,\n"
+ .string "even as a child!$"
+
+gFameCheckerFlavorText_Bill3:: @ 0x81AF998
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Favorite kind of POKéMON?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}BILL is a POKéMANIAC, so he loves\n"
+ .string "every kind.\p"
+ .string "Apparently, the first one he caught\n"
+ .string "was an ABRA.$"
+
+gFameCheckerFlavorText_Bill4:: @ 0x81AFA20
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Family and friends?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}BILL's hometown is GOLDENROD CITY,\n"
+ .string "where his folks still live.\p"
+ .string "I've heard that it's quite the\n"
+ .string "festive, bustling city.$"
+
+gFameCheckerFlavorText_Bill5:: @ 0x81AFAB9
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}There's a rumor…\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Apparently, BILL simply can't\n"
+ .string "stomach milk at all.$"
+
+gFameCheckerFlavorText_MrFuji0:: @ 0x81AFB0C
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}He's really kind.\p"
+ .string "He looks after abandoned and\n"
+ .string "orphaned POKéMON.$"
+
+gFameCheckerFlavorText_MrFuji1:: @ 0x81AFB76
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}This old guy marched right up to\n"
+ .string "our HIDEOUT.\p"
+ .string "Then, he starts ranting about how\n"
+ .string "TEAM ROCKET's abusing POKéMON.\p"
+ .string "So, we're just talking it over as\n"
+ .string "adults.$"
+
+gFameCheckerFlavorText_MrFuji2:: @ 0x81AFC38
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}POKéMON FAN MAGAZINE\n"
+ .string "Monthly Grand Prize Drawing!\p"
+ .string "The application form is…\p"
+ .string "Gone! It's been clipped out.\n"
+ .string "Someone must have applied already.$"
+
+gFameCheckerFlavorText_MrFuji3:: @ 0x81AFCE9
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}There's a rumor…\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}I hear that MR. FUJI's not from\n"
+ .string "these parts originally, either.$"
+
+gFameCheckerFlavorText_MrFuji4:: @ 0x81AFD49
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Family and friends?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}It's a photo of BLAINE and\n"
+ .string "MR. FUJI.\p"
+ .string "They're standing shoulder to\n"
+ .string "shoulder with big grins.$"
+
+gFameCheckerFlavorText_MrFuji5:: @ 0x81AFDC4
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Editor: The shy MR. FUJI turned\n"
+ .string "down our interview requests.\p"
+ .string "He is a kindly man who is adored\n"
+ .string "and respected in LAVENDER TOWN.$"
+
+gFameCheckerFlavorText_Giovanni0:: @ 0x81AFE68
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}TEAM ROCKET captures POKéMON from\n"
+ .string "around the world.\p"
+ .string "They're important tools for keeping\n"
+ .string "our criminal enterprise going.\p"
+ .string "I am the leader, GIOVANNI!$"
+
+gFameCheckerFlavorText_Giovanni1:: @ 0x81AFF23
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Favorite kind of POKéMON?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Those thugs that took over our\n"
+ .string "building…\p"
+ .string "Their BOSS said he was looking for\n"
+ .string "strong POKéMON.$"
+
+gFameCheckerFlavorText_Giovanni2:: @ 0x81AFFA8
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What is this person like?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}TEAM ROCKET's BOSS is terribly\n"
+ .string "cruel!\p"
+ .string "To him, POKéMON are just tools to\n"
+ .string "be used.$"
+
+gFameCheckerFlavorText_Giovanni3:: @ 0x81B0022
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Welcome to my hideout!\p"
+ .string "It shall be so until I can restore\n"
+ .string "TEAM ROCKET to its former glory.$"
+
+gFameCheckerFlavorText_Giovanni4:: @ 0x81B00A6
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}What does this person do?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Blow me away! GIOVANNI was the\n"
+ .string "GYM LEADER of VIRIDIAN?$"
+
+gFameCheckerFlavorText_Giovanni5:: @ 0x81B0106
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}Family and friends?\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}You… You're not GIOVANNI's kid,\n"
+ .string "are you?\p"
+ .string "No, that can't be right.\n"
+ .string "GIOVANNI's kid has red hair.$"
+
+
+gFameCheckerPersonName_ProfOak:: @ 0x81B0188
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}PROF. OAK$"
+
+gFameCheckerPersonQuote_ProfOak:: @ 0x81B0198
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}From: PROF. OAK\n"
+ .string "To: {PLAYER}\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Why do POKéMON compete and battle\n"
+ .string "so hard for you?\p"
+ .string "They do so because they can see\n"
+ .string "the love and trust you have\l"
+ .string "towards POKéMON.\p"
+ .string "Never forget that.$"
+
+gFameCheckerPersonName_Daisy:: @ 0x81B0251
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}DAISY$"
+
+gFameCheckerPersonQuote_Daisy:: @ 0x81B025D
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}From: DAISY\n"
+ .string "To: {PLAYER}\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}While I was comfortably enjoying\n"
+ .string "my tea breaks, you've grown very\l"
+ .string "skilled and powerful.\p"
+ .string "I hope you'll remain a good rival\n"
+ .string "to my little brother.$"
+
+gFameCheckerPersonName_Brock:: @ 0x81B030F
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}BROCK$"
+
+gFameCheckerPersonQuote_Brock:: @ 0x81B031B
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}From: BROCK\n"
+ .string "To: {PLAYER}\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}In this big world of ours, there\n"
+ .string "must be many tough TRAINERS.\p"
+ .string "Let's both keep training and\n"
+ .string "making ourselves stronger!$"
+
+gFameCheckerPersonName_Misty:: @ 0x81B03B3
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}MISTY$"
+
+gFameCheckerPersonQuote_Misty:: @ 0x81B03BF
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}From: MISTY\n"
+ .string "To: {PLAYER}\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}I'm going to keep training here at\n"
+ .string "this GYM.\p"
+ .string "When I get better, I'd love to hit\n"
+ .string "the road and travel.$"
+
+gFameCheckerPersonName_LtSurge:: @ 0x81B0446
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}LT. SURGE$"
+
+gFameCheckerPersonQuote_LtSurge:: @ 0x81B0456
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}From: LT. SURGE\n"
+ .string "To: {PLAYER}\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Hey, kid!\n"
+ .string "You electrified me in our battle!\p"
+ .string "I didn't know that there were\n"
+ .string "gutsy TRAINERS like you.\p"
+ .string "It made me change my mind about\n"
+ .string "you!$"
+
+gFameCheckerPersonName_Erika:: @ 0x81B0504
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}ERIKA$"
+
+gFameCheckerPersonQuote_Erika:: @ 0x81B0510
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}From: ERIKA\n"
+ .string "To: {PLAYER}\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}I am so glad that there are strong\n"
+ .string "TRAINERS like you.\p"
+ .string "That awareness alone inspires and\n"
+ .string "motivates me to try harder.\p"
+ .string "Please visit me again.\n"
+ .string "Zzz…$"
+
+gFameCheckerPersonName_Koga:: @ 0x81B05C2
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}KOGA$"
+
+gFameCheckerPersonQuote_Koga:: @ 0x81B05CD
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}From: KOGA\n"
+ .string "To: {PLAYER}\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}You and I, we must both set our\n"
+ .string "sights higher and work towards\l"
+ .string "meeting our challenges.\p"
+ .string "Now, I must go train my daughter.$"
+
+gFameCheckerPersonName_Sabrina:: @ 0x81B0667
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}SABRINA$"
+
+gFameCheckerPersonQuote_Sabrina:: @ 0x81B0675
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}From: SABRINA\n"
+ .string "To: {PLAYER}\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}The love you have towards your\n"
+ .string "POKéMON…\p"
+ .string "It was a power that was never\n"
+ .string "bested by my psychic power.$"
+
+gFameCheckerPersonName_Blaine:: @ 0x81B06FB
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}BLAINE$"
+
+gFameCheckerPersonQuote_Blaine:: @ 0x81B0708
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}From: BLAINE\n"
+ .string "To: {PLAYER}\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}My fire POKéMON!\n"
+ .string "They'll become even more powerful!\p"
+ .string "And now, a quiz. How many kinds of\n"
+ .string "FIRE-type POKéMON are there?$"
+
+gFameCheckerPersonName_Lorelei:: @ 0x81B079F
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}LORELEI$"
+
+gFameCheckerPersonQuote_Lorelei:: @ 0x81B07AD
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}From: LORELEI\n"
+ .string "To: {PLAYER}\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}I needed to thank you for your\n"
+ .string "help.\p"
+ .string "But that has nothing to do with our\n"
+ .string "battles.\p"
+ .string "You'd better watch out next time!$"
+
+gFameCheckerPersonName_Bruno:: @ 0x81B0845
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}BRUNO$"
+
+gFameCheckerPersonQuote_Bruno:: @ 0x81B0851
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}From: BRUNO\n"
+ .string "To: {PLAYER}\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}The super power of your POKéMON\n"
+ .string "and you I've experienced myself.\p"
+ .string "Next time, maybe I should show you\n"
+ .string "how to train yourself.$"
+
+gFameCheckerPersonName_Agatha:: @ 0x81B08EE
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}AGATHA$"
+
+gFameCheckerPersonQuote_Agatha:: @ 0x81B08FB
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}From: AGATHA\n"
+ .string "To: {PLAYER}\p"
+ .string "{FONT_FEMALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}When you grow older, don't you\n"
+ .string "dare go soft like that coot OAK!\p"
+ .string "Be like me and keep battling on!$"
+
+gFameCheckerPersonName_Lance:: @ 0x81B097F
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}LANCE$"
+
+gFameCheckerPersonQuote_Lance:: @ 0x81B098B
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}From: LANCE\n"
+ .string "To: {PLAYER}\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}I'm considering going back to my\n"
+ .string "hometown.\p"
+ .string "I want to retrain my DRAGON-type\n"
+ .string "POKéMON and strengthen them.\p"
+ .string "I'd like to invite you to my\n"
+ .string "hometown one day.$"
+
+gFameCheckerPersonName_Bill:: @ 0x81B0A45
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}BILL$"
+
+gFameCheckerPersonQuote_Bill:: @ 0x81B0A50
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}From: BILL\n"
+ .string "To: {PLAYER}\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Hey, there! CELIO had nothing but\n"
+ .string "praise for you.\p"
+ .string "Hearing that makes me happy.\p"
+ .string "When you catch some rare POKéMON,\n"
+ .string "come show me, okay? Promise!$"
+
+gFameCheckerPersonName_MrFuji:: @ 0x81B0AFF
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}MR. FUJI$"
+
+gFameCheckerPersonQuote_MrFuji:: @ 0x81B0B0E
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}From: MR. FUJI\n"
+ .string "To: {PLAYER}\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}Instead of hoping for the happiness\n"
+ .string "of just your POKéMON…\p"
+ .string "…Can I get you to wish for the\n"
+ .string "happiness of all POKéMON?$"
+
+gFameCheckerPersonName_Giovanni:: @ 0x81B0BA6
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}GIOVANNI$"
+
+gFameCheckerPersonQuote_Giovanni:: @ 0x81B0BB5
+ .string "{COLOR BLUE}{SHADOW LIGHT_BLUE}From: GIOVANNI\n"
+ .string "To: {PLAYER}\p"
+ .string "{FONT_MALE}{COLOR DARK_GRAY}{SHADOW LIGHT_GRAY}There is nothing that I wish to say\n"
+ .string "to you.\p"
+ .string "I will concentrate solely on\n"
+ .string "bettering myself, and none other.$"
+
+gFameCheckerFlavorTextOriginLocation_ProfOak0:: @ 0x81B0C45
+ .string "PALLET TOWN$"
+
+gFameCheckerFlavorTextOriginLocation_ProfOak1::
+ .string "RESEARCH LAB$"
+
+gFameCheckerFlavorTextOriginLocation_ProfOak2::
+ .string "RESEARCH LAB$"
+
+gFameCheckerFlavorTextOriginLocation_ProfOak3::
+ .string "VIRIDIAN CITY$"
+
+gFameCheckerFlavorTextOriginLocation_ProfOak4::
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_ProfOak5::
+ .string "RESEARCH LAB$"
+
+gFameCheckerFlavorTextOriginLocation_Daisy0::
+ .string "RESEARCH LAB$"
+
+gFameCheckerFlavorTextOriginLocation_Daisy1::
+ .string "VERMILION CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Daisy2::
+ .string "WATER LABYRINTH$"
+
+gFameCheckerFlavorTextOriginLocation_Daisy3::
+ .string "VIRIDIAN CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Daisy4::
+ .string "CELADON MANSION$"
+
+gFameCheckerFlavorTextOriginLocation_Daisy5::
+ .string "FOUR ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Brock0::
+ .string "PEWTER CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Brock1::
+ .string "PEWTER GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Brock2::
+ .string "PEWTER CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Brock3::
+ .string "ROUTE 4$"
+
+gFameCheckerFlavorTextOriginLocation_Brock4::
+ .string "MT. MOON$"
+
+gFameCheckerFlavorTextOriginLocation_Brock5::
+ .string "PEWTER MUSEUM$"
+
+gFameCheckerFlavorTextOriginLocation_Misty0::
+ .string "CERULEAN CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Misty1::
+ .string "CERULEAN GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Misty2::
+ .string "CERULEAN GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Misty3::
+ .string "SEAFOAM ISLANDS$"
+
+gFameCheckerFlavorTextOriginLocation_Misty4::
+ .string "CERULEAN CAPE$"
+
+gFameCheckerFlavorTextOriginLocation_Misty5::
+ .string "CERULEAN CITY$"
+
+gFameCheckerFlavorTextOriginLocation_LtSurge0::
+ .string "VERMILION CITY$"
+
+gFameCheckerFlavorTextOriginLocation_LtSurge1::
+ .string "VERMILION GYM$"
+
+gFameCheckerFlavorTextOriginLocation_LtSurge2::
+ .string "VERMILION GYM$"
+
+gFameCheckerFlavorTextOriginLocation_LtSurge3::
+ .string "VERMILION GYM$"
+
+gFameCheckerFlavorTextOriginLocation_LtSurge4::
+ .string "VERMILION GYM$"
+
+gFameCheckerFlavorTextOriginLocation_LtSurge5::
+ .string "VERMILION CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Erika0::
+ .string "CELADON CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Erika1::
+ .string "CELADON GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Erika2::
+ .string "CELADON GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Erika3::
+ .string "CELADON GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Erika4::
+ .string "CELADON GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Erika5::
+ .string "CELADON MANSION$"
+
+gFameCheckerFlavorTextOriginLocation_Koga0::
+ .string "FUCHSIA CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Koga1::
+ .string "FUCHSIA GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Koga2::
+ .string "FUCHSIA GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Koga3::
+ .string "FUCHSIA CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Koga4::
+ .string "FUCHSIA CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Koga5::
+ .string "SAFARI ZONE$"
+
+gFameCheckerFlavorTextOriginLocation_Sabrina0::
+ .string "SAFFRON CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Sabrina1::
+ .string "THREE ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Sabrina2::
+ .string "SAFFRON GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Sabrina3::
+ .string "SAFFRON GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Sabrina4::
+ .string "SAFFRON CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Sabrina5::
+ .string "SAFFRON GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Blaine0::
+ .string "CINNABAR ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Blaine1::
+ .string "CINNABAR GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Blaine2::
+ .string "CINNABAR GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Blaine3::
+ .string "CINNABAR ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Blaine4::
+ .string "CINNABAR GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Blaine5::
+ .string "RESORT GORGEOUS$"
+
+gFameCheckerFlavorTextOriginLocation_Lorelei0::
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_Lorelei1::
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_Lorelei2::
+ .string "FOUR ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Lorelei3::
+ .string "FIVE ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Lorelei4::
+ .string "FOUR ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Lorelei5::
+ .string "FOUR ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Bruno0::
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_Bruno1::
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_Bruno2::
+ .string "SAFFRON CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Bruno3::
+ .string "EMBER SPA$"
+
+gFameCheckerFlavorTextOriginLocation_Bruno4::
+ .string "TWO ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Bruno5::
+ .string "SEVAULT CANYON$"
+
+gFameCheckerFlavorTextOriginLocation_Agatha0::
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_Agatha1::
+ .string "INDIGO PLATEAU$"
+
+gFameCheckerFlavorTextOriginLocation_Agatha2::
+ .string "INDIGO PLATEAU$"
+
+gFameCheckerFlavorTextOriginLocation_Agatha3::
+ .string "SEVEN ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Agatha4::
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_Agatha5::
+ .string "SIX ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Lance0::
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_Lance1::
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_Lance2::
+ .string "SAFFRON CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Lance3::
+ .string "CELADON DEPT.$"
+
+gFameCheckerFlavorTextOriginLocation_Lance4::
+ .string "INDIGO PLATEAU$"
+
+gFameCheckerFlavorTextOriginLocation_Lance5::
+ .string "INDIGO PLATEAU$"
+
+gFameCheckerFlavorTextOriginLocation_Bill0::
+ .string "CERULEAN CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Bill1::
+ .string "CERULEAN CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Bill2::
+ .string "FUCHSIA CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Bill3::
+ .string "ONE ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Bill4::
+ .string "ONE ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Bill5::
+ .string "ONE ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_MrFuji0::
+ .string "LAVENDER TOWN$"
+
+gFameCheckerFlavorTextOriginLocation_MrFuji1::
+ .string "POKéMON TOWER$"
+
+gFameCheckerFlavorTextOriginLocation_MrFuji2::
+ .string "LAVENDER TOWN$"
+
+gFameCheckerFlavorTextOriginLocation_MrFuji3::
+ .string "LAVENDER TOWN$"
+
+gFameCheckerFlavorTextOriginLocation_MrFuji4::
+ .string "CINNABAR GYM$"
+
+gFameCheckerFlavorTextOriginLocation_MrFuji5::
+ .string "CINNABAR ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Giovanni0::
+ .string "ROCKET HIDEOUT$"
+
+gFameCheckerFlavorTextOriginLocation_Giovanni1::
+ .string "SILPH CO.$"
+
+gFameCheckerFlavorTextOriginLocation_Giovanni2::
+ .string "SILPH CO.$"
+
+gFameCheckerFlavorTextOriginLocation_Giovanni3::
+ .string "VIRIDIAN GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Giovanni4::
+ .string "VIRIDIAN GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Giovanni5::
+ .string "ROCKET WAREHOUSE$"
+
+gFameCheckerFlavorTextOriginObjectName_ProfOak0::
+ .string "SIGN$"
+
+gFameCheckerFlavorTextOriginObjectName_ProfOak1::
+ .string "PROF. OAK$"
+
+gFameCheckerFlavorTextOriginObjectName_ProfOak2::
+ .string "AIDE$"
+
+gFameCheckerFlavorTextOriginObjectName_ProfOak3::
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_ProfOak4::
+ .string "AGATHA$"
+
+gFameCheckerFlavorTextOriginObjectName_ProfOak5::
+ .string "AIDE$"
+
+gFameCheckerFlavorTextOriginObjectName_Daisy0::
+ .string "AIDE$"
+
+gFameCheckerFlavorTextOriginObjectName_Daisy1::
+ .string "WOMAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Daisy2::
+ .string "MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Daisy3::
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Daisy4::
+ .string "OLD LADY$"
+
+gFameCheckerFlavorTextOriginObjectName_Daisy5::
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Brock0::
+ .string "SIGN$"
+
+gFameCheckerFlavorTextOriginObjectName_Brock1::
+ .string "BROCK$"
+
+gFameCheckerFlavorTextOriginObjectName_Brock2::
+ .string "YOUNG MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Brock3::
+ .string "BOY$"
+
+gFameCheckerFlavorTextOriginObjectName_Brock4::
+ .string "MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Brock5::
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Misty0::
+ .string "SIGN$"
+
+gFameCheckerFlavorTextOriginObjectName_Misty1::
+ .string "MISTY$"
+
+gFameCheckerFlavorTextOriginObjectName_Misty2::
+ .string "LUIS$"
+
+gFameCheckerFlavorTextOriginObjectName_Misty3::
+ .string "YOUNG MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Misty4::
+ .string "DAME$"
+
+gFameCheckerFlavorTextOriginObjectName_Misty5::
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_LtSurge0::
+ .string "SIGN$"
+
+gFameCheckerFlavorTextOriginObjectName_LtSurge1::
+ .string "LT. SURGE$"
+
+gFameCheckerFlavorTextOriginObjectName_LtSurge2::
+ .string "TUCKER$"
+
+gFameCheckerFlavorTextOriginObjectName_LtSurge3::
+ .string "TUCKER$"
+
+gFameCheckerFlavorTextOriginObjectName_LtSurge4::
+ .string "DWAYNE$"
+
+gFameCheckerFlavorTextOriginObjectName_LtSurge5::
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Erika0::
+ .string "SIGN$"
+
+gFameCheckerFlavorTextOriginObjectName_Erika1::
+ .string "ERIKA$"
+
+gFameCheckerFlavorTextOriginObjectName_Erika2::
+ .string "LOLA$"
+
+gFameCheckerFlavorTextOriginObjectName_Erika3::
+ .string "TAMIA$"
+
+gFameCheckerFlavorTextOriginObjectName_Erika4::
+ .string "ERIKA$"
+
+gFameCheckerFlavorTextOriginObjectName_Erika5::
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Koga0::
+ .string "SIGN$"
+
+gFameCheckerFlavorTextOriginObjectName_Koga1::
+ .string "KOGA$"
+
+gFameCheckerFlavorTextOriginObjectName_Koga2::
+ .string "KIRK$"
+
+gFameCheckerFlavorTextOriginObjectName_Koga3::
+ .string "CHARINE$"
+
+gFameCheckerFlavorTextOriginObjectName_Koga4::
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Koga5::
+ .string "MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Sabrina0::
+ .string "SIGN$"
+
+gFameCheckerFlavorTextOriginObjectName_Sabrina1::
+ .string "YOUNG MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Sabrina2::
+ .string "SABRINA$"
+
+gFameCheckerFlavorTextOriginObjectName_Sabrina3::
+ .string "SABRINA$"
+
+gFameCheckerFlavorTextOriginObjectName_Sabrina4::
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Sabrina5::
+ .string "TYRON$"
+
+gFameCheckerFlavorTextOriginObjectName_Blaine0::
+ .string "SIGN$"
+
+gFameCheckerFlavorTextOriginObjectName_Blaine1::
+ .string "BLAINE$"
+
+gFameCheckerFlavorTextOriginObjectName_Blaine2::
+ .string "DEREK$"
+
+gFameCheckerFlavorTextOriginObjectName_Blaine3::
+ .string "WOMAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Blaine4::
+ .string "PHOTO$"
+
+gFameCheckerFlavorTextOriginObjectName_Blaine5::
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Lorelei0::
+ .string "LORELEI$"
+
+gFameCheckerFlavorTextOriginObjectName_Lorelei1::
+ .string "LORELEI$"
+
+gFameCheckerFlavorTextOriginObjectName_Lorelei2::
+ .string "OLD MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Lorelei3::
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Lorelei4::
+ .string "LITTLE GIRL$"
+
+gFameCheckerFlavorTextOriginObjectName_Lorelei5::
+ .string "OLD LADY$"
+
+gFameCheckerFlavorTextOriginObjectName_Bruno0::
+ .string "BRUNO$"
+
+gFameCheckerFlavorTextOriginObjectName_Bruno1::
+ .string "BRUNO$"
+
+gFameCheckerFlavorTextOriginObjectName_Bruno2::
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Bruno3::
+ .string "CRUSHER$"
+
+gFameCheckerFlavorTextOriginObjectName_Bruno4::
+ .string "WOMAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Bruno5::
+ .string "CRUSHER$"
+
+gFameCheckerFlavorTextOriginObjectName_Agatha0::
+ .string "AGATHA$"
+
+gFameCheckerFlavorTextOriginObjectName_Agatha1::
+ .string "CRUSHER$"
+
+gFameCheckerFlavorTextOriginObjectName_Agatha2::
+ .string "CRUSHER$"
+
+gFameCheckerFlavorTextOriginObjectName_Agatha3::
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Agatha4::
+ .string "AGATHA$"
+
+gFameCheckerFlavorTextOriginObjectName_Agatha5::
+ .string "OLD LADY$"
+
+gFameCheckerFlavorTextOriginObjectName_Lance0::
+ .string "LANCE$"
+
+gFameCheckerFlavorTextOriginObjectName_Lance1::
+ .string "LANCE$"
+
+gFameCheckerFlavorTextOriginObjectName_Lance2::
+ .string "WOMAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Lance3::
+ .string "LITTLE GIRL$"
+
+gFameCheckerFlavorTextOriginObjectName_Lance4::
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Lance5::
+ .string "YOUNG MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Bill0::
+ .string "{RIVAL}$"
+
+gFameCheckerFlavorTextOriginObjectName_Bill1::
+ .string "LITTLE BOY$"
+
+gFameCheckerFlavorTextOriginObjectName_Bill2::
+ .string "OLD MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Bill3::
+ .string "CELIO$"
+
+gFameCheckerFlavorTextOriginObjectName_Bill4::
+ .string "CELIO$"
+
+gFameCheckerFlavorTextOriginObjectName_Bill5::
+ .string "CELIO$"
+
+gFameCheckerFlavorTextOriginObjectName_MrFuji0::
+ .string "LITTLE GIRL$"
+
+gFameCheckerFlavorTextOriginObjectName_MrFuji1::
+ .string "TEAM ROCKET$"
+
+gFameCheckerFlavorTextOriginObjectName_MrFuji2::
+ .string "MAGAZINE$"
+
+gFameCheckerFlavorTextOriginObjectName_MrFuji3::
+ .string "MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_MrFuji4::
+ .string "PHOTO$"
+
+gFameCheckerFlavorTextOriginObjectName_MrFuji5::
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Giovanni0::
+ .string "GIOVANNI$"
+
+gFameCheckerFlavorTextOriginObjectName_Giovanni1::
+ .string "SCIENTIST$"
+
+gFameCheckerFlavorTextOriginObjectName_Giovanni2::
+ .string "SCIENTIST$"
+
+gFameCheckerFlavorTextOriginObjectName_Giovanni3::
+ .string "GIOVANNI$"
+
+gFameCheckerFlavorTextOriginObjectName_Giovanni4::
+ .string "MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Giovanni5::
+ .string "GIDEON$"
+
+PokemonJournal_Text_SpecialFeatureBrock::
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature: PEWTER GYM\n"
+ .string "LEADER BROCK!\p"
+ .string "BROCK rarely laughs, but is said to\n"
+ .string "be unable to stop if he starts.$"
+
+PokemonJournal_Text_SpecialFeatureMisty::
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature: CERULEAN GYM\n"
+ .string "LEADER MISTY!\p"
+ .string "MISTY is said to worship LORELEI\n"
+ .string "of the ELITE FOUR.$"
+
+PokemonJournal_Text_SpecialFeatureLtSurge::
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature: VERMILION GYM\n"
+ .string "LEADER LT. SURGE!\p"
+ .string "LT. SURGE is rumored to have been\n"
+ .string "a pilot while home in America.\p"
+ .string "He used the electricity generated\n"
+ .string "by POKéMON to power his plane.$"
+
+PokemonJournal_Text_SpecialFeatureErika::
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature: CELADON GYM\n"
+ .string "LEADER ERIKA!\p"
+ .string "Rumor has it that if you peek into\n"
+ .string "CELADON GYM, you can often\l"
+ .string "see ERIKA snoozing.$"
+
+PokemonJournal_Text_SpecialFeatureKoga::
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature: FUCHSIA GYM\n"
+ .string "LEADER KOGA!\p"
+ .string "KOGA is said to have a thorough\n"
+ .string "knowledge of medicine.\p"
+ .string "He even concocts medicine to nurse\n"
+ .string "his POKéMON to health.$"
+
+PokemonJournal_Text_SpecialFeatureSabrina::
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature: SAFFRON GYM\n"
+ .string "LEADER SABRINA!\p"
+ .string "People say that SABRINA can\n"
+ .string "communicate with her POKéMON\l"
+ .string "during battle without speaking.$"
+
+PokemonJournal_Text_SpecialFeatureBlaine::
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature: CINNABAR GYM\n"
+ .string "LEADER BLAINE!\p"
+ .string "BLAINE is said to remove his dark\n"
+ .string "shades only when he is thinking up\l"
+ .string "new quiz questions.$"
+
+PokemonJournal_Text_SpecialFeatureLorelei::
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature:\n"
+ .string "ELITE FOUR's LORELEI!\p"
+ .string "Known for her logical, calculated,\n"
+ .string "and cool battling style, LORELEI\l"
+ .string "has a surprising secret!$"
+
+PokemonJournal_Text_SpecialFeatureBruno::
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature:\n"
+ .string "ELITE FOUR's BRUNO!\p"
+ .string "BRUNO apparently joined the ELITE\n"
+ .string "FOUR out of his burning ambition to\l"
+ .string "battle the best TRAINERS.$"
+
+PokemonJournal_Text_SpecialFeatureAgatha::
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature:\n"
+ .string "ELITE FOUR's AGATHA!\p"
+ .string "In her youth, AGATHA and PROF.\n"
+ .string "OAK were rivals who vied for\l"
+ .string "supremacy as TRAINERS.$"
+
+PokemonJournal_Text_SpecialFeatureLance::
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature:\n"
+ .string "ELITE FOUR's LANCE!\p"
+ .string "LANCE's grandfather is thought to\n"
+ .string "be the elder of a famous clan of\l"
+ .string "dragon masters.$"
+
+PokemonJournal_Text_SpecialFeatureProfOak::
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature: PROF. OAK,\n"
+ .string "the POKéMON Researcher!\p"
+ .string "PROF. OAK reportedly lives with his\n"
+ .string "grandchildren DAISY and {RIVAL}.$"
+
+PokemonJournal_Text_SpecialFeatureDaisyOak::
+ .string "This is a POKéMON JOURNAL from\n"
+ .string "years ago…\p"
+ .string "POKéMON JOURNAL\n"
+ .string "CONTEST Special!\p"
+ .string "The Spring POKéMON CONTEST's\n"
+ .string "Grand Champion is DAISY OAK of\l"
+ .string "PALLET TOWN!$"
+
+PokemonJournal_Text_SpecialFeatureMrFuji::
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature:\n"
+ .string "MR. FUJI of POKéMON HOUSE!\p"
+ .string "Editor: The shy MR. FUJI turned\n"
+ .string "down our interview requests.\p"
+ .string "He is a kindly man who is adored\n"
+ .string "and respected in LAVENDER TOWN.$"
diff --git a/data/text/ingame_trade_frlg.inc b/data/text/ingame_trade_frlg.inc
new file mode 100644
index 000000000000..0b800bad8cc1
--- /dev/null
+++ b/data/text/ingame_trade_frlg.inc
@@ -0,0 +1,60 @@
+Trade_Text_LookingForMonWannaTradeForMon::
+ .string "I'm looking for the POKéMON\n"
+ .string "{STR_VAR_1}!\p"
+ .string "Wanna trade one for my\n"
+ .string "{STR_VAR_2}?$"
+
+Trade_Text_AwwOhWell::
+ .string "Awww!\n"
+ .string "Oh, well…$"
+
+Trade_Text_WhatThatsNoMon::
+ .string "What?\n"
+ .string "That's no {STR_VAR_1}!$"
+
+Trade_Text_HeyThanks::
+ .string "Hey, thanks!$"
+
+Trade_Text_IsntMyOldMonGreat::
+ .string "Isn't my old {STR_VAR_2} great?$"
+
+Trade_Text_DoYouHaveMonWouldYouTradeForMon::
+ .string "Hello, there! Do you happen to\n"
+ .string "have a {STR_VAR_1}?\p"
+ .string "Would you agree to a trade for\n"
+ .string "my {STR_VAR_2}?$"
+
+Trade_Text_WellIfYouDontWantTo::
+ .string "Well, if you don't want to…$"
+
+Trade_Text_ThisIsntMon::
+ .string "Hmmm?\n"
+ .string "This isn't a {STR_VAR_1}.\p"
+ .string "Think of me if you get one.$"
+
+Trade_Text_Thanks::
+ .string "Thanks!$"
+
+Trade_Text_HasTradedMonGrownStronger::
+ .string "The {STR_VAR_2} that I traded you,\n"
+ .string "has it grown stronger?$"
+
+Trade_Text_DoYouHaveMonWantToTradeForMon::
+ .string "Hi!\n"
+ .string "Do you have a {STR_VAR_1}?\p"
+ .string "Want to trade it for my\n"
+ .string "{STR_VAR_2}?$"
+
+Trade_Text_ThatsTooBad::
+ .string "That's too bad.$"
+
+Trade_Text_ThisIsNoMon::
+ .string "…This is no {STR_VAR_1}.\p"
+ .string "If you get one, trade it with me.$"
+
+Trade_Text_ThanksYoureAPal::
+ .string "Thanks, you're a pal!$"
+
+Trade_Text_HowIsMyOldMon::
+ .string "How is my old {STR_VAR_2}?\n"
+ .string "My {STR_VAR_1} is doing great!$"
diff --git a/data/text/move_relearner.inc b/data/text/move_relearner.inc
index b9400fd62b5f..e448fcd9fa49 100644
--- a/data/text/move_relearner.inc
+++ b/data/text/move_relearner.inc
@@ -47,6 +47,9 @@ MoveRelearner_Text_TMMoveLWR::
MoveRelearner_Text_TutorMoveLWR::
.string "tutor move$"
+MoveRelearner_Text_MoveLWR::
+ .string "move$"
+
MoveRelearner_Text_WhichXmoveShouldTeach:
.string "Which {STR_VAR_3} should I teach?$"
diff --git a/data/text/new_game_intro_frlg.inc b/data/text/new_game_intro_frlg.inc
new file mode 100644
index 000000000000..99b4ea3113c5
--- /dev/null
+++ b/data/text/new_game_intro_frlg.inc
@@ -0,0 +1,243 @@
+gOtherText_NewName::
+ .string "NEW NAME$"
+
+gNameChoice_Green::
+ .string "GREEN$"
+
+gNameChoice_Red::
+ .string "RED$"
+
+gNameChoice_Leaf::
+ .string "LEAF$"
+
+gNameChoice_Fire::
+ .string "FIRE$"
+
+gNameChoice_Gary::
+ .string "GARY$"
+
+gNameChoice_Kaz::
+ .string "KAZ$"
+
+gNameChoice_Toru::
+ .string "TORU$"
+
+gNameChoice_Ash::
+ .string "ASH$"
+
+gNameChoice_Kene::
+ .string "KENE$"
+
+gNameChoice_Geki::
+ .string "GEKI$"
+
+gNameChoice_Jak::
+ .string "JAK$"
+
+gNameChoice_Janne::
+ .string "JANNE$"
+
+gNameChoice_Jonn::
+ .string "JONN$"
+
+gNameChoice_Kamon::
+ .string "KAMON$"
+
+gNameChoice_Karl::
+ .string "KARL$"
+
+gNameChoice_Taylor::
+ .string "TAYLOR$"
+
+gNameChoice_Oscar::
+ .string "OSCAR$"
+
+gNameChoice_Hiro::
+ .string "HIRO$"
+
+gNameChoice_Max::
+ .string "MAX$"
+
+gNameChoice_Jon::
+ .string "JON$"
+
+gNameChoice_Ralph::
+ .string "RALPH$"
+
+gNameChoice_Kay::
+ .string "KAY$"
+
+gNameChoice_Tosh::
+ .string "TOSH$"
+
+gNameChoice_Roak::
+ .string "ROAK$"
+
+gNameChoice_Omi::
+ .string "OMI$"
+
+gNameChoice_Jodi::
+ .string "JODI$"
+
+gNameChoice_Amanda::
+ .string "AMANDA$"
+
+gNameChoice_Hillary::
+ .string "HILLARY$"
+
+gNameChoice_Makey::
+ .string "MAKEY$"
+
+gNameChoice_Michi::
+ .string "MICHI$"
+
+gNameChoice_Paula::
+ .string "PAULA$"
+
+gNameChoice_June::
+ .string "JUNE$"
+
+gNameChoice_Cassie::
+ .string "CASSIE$"
+
+gNameChoice_Rey::
+ .string "REY$"
+
+gNameChoice_Seda::
+ .string "SEDA$"
+
+gNameChoice_Kiko::
+ .string "KIKO$"
+
+gNameChoice_Mina::
+ .string "MINA$"
+
+gNameChoice_Norie::
+ .string "NORIE$"
+
+gNameChoice_Sai::
+ .string "SAI$"
+
+gNameChoice_Momo::
+ .string "MOMO$"
+
+gNameChoice_Suzi::
+ .string "SUZI$"
+
+gControlsGuide_Text_Intro::
+ .string "The various buttons will be explained in\n"
+ .string "the order of their importance.$"
+
+gControlsGuide_Text_DPad::
+ .string "Moves the main character.\n"
+ .string "Also used to choose various data\n"
+ .string "headings.$"
+
+gControlsGuide_Text_AButton::
+ .string "Used to confirm a choice, check\n"
+ .string "things, chat, and scroll text.$"
+
+gControlsGuide_Text_BButton::
+ .string "Used to exit, cancel a choice,\n"
+ .string "and cancel a mode.$"
+
+gControlsGuide_Text_StartButton::
+ .string "Press this button to open the\n"
+ .string "MENU.$"
+
+gControlsGuide_Text_SelectButton::
+ .string "Used to shift items and to use\n"
+ .string "a registered item.$"
+
+gControlsGuide_Text_LRButtons::
+ .string "If you need help playing the\n"
+ .string "game, or on how to do things,\n"
+ .string "press the L or R Button.$"
+
+gOakSpeech_Text_AskPlayerGender::
+ .string "Now tell me. Are you a boy?\n"
+ .string "Or are you a girl?$"
+
+gPikachuIntro_Text_Page1::
+ .string "In the world which you are about to\n"
+ .string "enter, you will embark on a grand\n"
+ .string "adventure with you as the hero.\n"
+ .string "\n"
+ .string "Speak to people and check things\n"
+ .string "wherever you go, be it towns, roads,\n"
+ .string "or caves. Gather information and\n"
+ .string "hints from every source.$"
+
+gPikachuIntro_Text_Page2::
+ .string "New paths will open to you by helping\n"
+ .string "people in need, overcoming challenges,\n"
+ .string "and solving mysteries.\n"
+ .string "\n"
+ .string "At times, you will be challenged by\n"
+ .string "others and attacked by wild creatures.\n"
+ .string "Be brave and keep pushing on.$"
+
+gPikachuIntro_Text_Page3::
+ .string "Through your adventure, we hope\n"
+ .string "that you will interact with all sorts\n"
+ .string "of people and achieve personal growth.\n"
+ .string "That is our biggest objective.\n"
+ .string "\n"
+ .string "Press the A Button, and let your\n"
+ .string "adventure begin!$"
+
+gOakSpeech_Text_WelcomeToTheWorld::
+ .string "Hello, there!\n"
+ .string "Glad to meet you!\p"
+ .string "Welcome to the world of POKéMON!\p"
+ .string "My name is OAK.\p"
+ .string "People affectionately refer to me\n"
+ .string "as the POKéMON PROFESSOR.\p$"
+
+gOakSpeech_Text_ThisWorld::
+ .string "This world…$"
+
+gOakSpeech_Text_IsInhabitedFarAndWide::
+ .string "…is inhabited far and wide by\n"
+ .string "creatures called POKéMON.\p$"
+
+gOakSpeech_Text_IStudyPokemon::
+ .string "For some people, POKéMON are pets.\n"
+ .string "Others use them for battling.\p"
+ .string "As for myself…\p"
+ .string "I study POKéMON as a profession.\p$"
+
+gOakSpeech_Text_TellMeALittleAboutYourself::
+ .string "But first, tell me a little about\n"
+ .string "yourself.\p$"
+
+gOakSpeech_Text_YourNameWhatIsIt::
+ .string "Let's begin with your name.\n"
+ .string "What is it?\p$"
+
+gOakSpeech_Text_SoYourNameIsPlayer::
+ .string "Right…\n"
+ .string "So your name is {PLAYER}.$"
+
+gOakSpeech_Text_WhatWasHisName::
+ .string "This is my grandson.\p"
+ .string "He's been your rival since you both\n"
+ .string "were babies.\p"
+ .string "…Erm, what was his name now?$"
+
+gOakSpeech_Text_YourRivalsNameWhatWasIt::
+ .string "Your rival's name, what was it now?$"
+
+gOakSpeech_Text_ConfirmRivalName::
+ .string "…Er, was it {RIVAL}?$"
+
+gOakSpeech_Text_RememberRivalsName::
+ .string "That's right! I remember now!\n"
+ .string "His name is {RIVAL}!\p$"
+
+gOakSpeech_Text_LetsGo::
+ .string "{PLAYER}!\p"
+ .string "Your very own POKéMON legend is\n"
+ .string "about to unfold!\p"
+ .string "A world of dreams and adventures\n"
+ .string "with POKéMON awaits! Let's go!$"
diff --git a/data/text/obtain_item.inc b/data/text/obtain_item.inc
index ff13bc0ba3f3..1f41a04af8fc 100644
--- a/data/text/obtain_item.inc
+++ b/data/text/obtain_item.inc
@@ -35,3 +35,23 @@ gText_ObtainedTheItems::
gText_PlayerFoundItems::
.string "{PLAYER} found {STR_VAR_1} {STR_VAR_2}!$"
+
+gText_PutCoinsAwayInCoinCase::
+ .string "{PLAYER} put the COINS away in\n"
+ .string "the COIN CASE.$"
+
+gText_FoundXCoins::
+ .string "{PLAYER} found\n"
+ .string "{STR_VAR_1} {STR_VAR_2}!$"
+
+gText_FoundXItems::
+ .string "{PLAYER} found\n"
+ .string "{STR_VAR_1} {STR_VAR_2}(s)!$"
+
+gText_CoinCaseIsFull::
+ .string "Too bad!\n"
+ .string "The COIN CASE is full…$"
+
+gText_NothingToPutThemIn::
+ .string "Too bad!\n"
+ .string "There's nothing to put them in…$"
diff --git a/data/text/pc.inc b/data/text/pc.inc
index 1c7bf5a32c63..ae96317010a4 100644
--- a/data/text/pc.inc
+++ b/data/text/pc.inc
@@ -15,3 +15,6 @@ gText_AccessedPlayersPC::
gText_AccessedLanettesPC::
.string "Accessed LANETTE's PC.$"
+
+gText_AccessedBillsPC::
+ .string "Accessed BILL's PC.$"
diff --git a/data/text/pc_transfer.inc b/data/text/pc_transfer.inc
index b6995d1111c4..541ca2aa4680 100644
--- a/data/text/pc_transfer.inc
+++ b/data/text/pc_transfer.inc
@@ -6,7 +6,11 @@ gText_PkmnTransferredSomeonesPC::
gText_PkmnTransferredLanettesPC::
.string "{STR_VAR_2} was transferred to\n"
+#if IS_FRLG
+ .string "BILL'S PC.\p"
+#else
.string "LANETTE'S PC.\p"
+#endif
.string "It was placed in \n"
.string "BOX “{STR_VAR_1}.”$"
@@ -18,7 +22,11 @@ gText_PkmnTransferredSomeonesPCBoxFull::
gText_PkmnTransferredLanettesPCBoxFull::
.string "BOX “{STR_VAR_3}” on\n"
+#if IS_FRLG
+ .string "BILL'S PC was full.\p"
+#else
.string "LANETTE'S PC was full.\p"
+#endif
.string "{STR_VAR_2} was transferred to\n"
.string "BOX “{STR_VAR_1}.”$"
@@ -28,6 +36,10 @@ gText_PkmnSentToPCAfterCatch::
.string "It was placed in \n"
.string "BOX “{STR_VAR_1}”.$"
+gText_PlayerObtainedTheMon::
+ .string "{PLAYER} obtained\n"
+ .string "the {STR_VAR_1}!$"
+
gText_NoMoreRoomForPokemon::
.string "There's no more room for POKéMON!\p"
.string "The POKéMON BOXES are full and\n"
diff --git a/data/text/pokedex_rating.inc b/data/text/pokedex_rating.inc
index 175aaccc6b0c..5cdb88a387a7 100644
--- a/data/text/pokedex_rating.inc
+++ b/data/text/pokedex_rating.inc
@@ -113,3 +113,126 @@ gBirchDexRatingText_OnANationwideBasis::
.string "On a nationwide basis…\p"
.string "You've seen {STR_VAR_1} POKéMON,\n"
.string "and you've caught {STR_VAR_2} POKéMON…$"
+
+@ FRLG
+
+PokedexRating_Text_HowIsPokedexComingAlong::
+ .string "OAK: Good to see you!\n"
+ .string "How is your POKéDEX coming along?\p"
+ .string "Here, let me take a look.$"
+
+PokedexRating_Text_SeenXOwnedY::
+ .string "The amount of progress you've made\n"
+ .string "on your POKéDEX is:\p"
+ .string "{STR_VAR_1} POKéMON seen and\n"
+ .string "{STR_VAR_2} POKéMON owned.\p"
+ .string "{FONT_NORMAL}PROF. OAK's rating:$"
+
+PokedexRating_Text_LessThan10::
+ .string "You still have lots to do.\p"
+ .string "Go into every patch of grass you\n"
+ .string "see and look for POKéMON!$"
+
+PokedexRating_Text_LessThan20::
+ .string "It looks as if you're getting on\n"
+ .string "the right track!\p"
+ .string "I've given one of my AIDES a FLASH\n"
+ .string "HM. Make sure you go get it!$"
+
+PokedexRating_Text_LessThan30::
+ .string "Your POKéDEX could use a bit more\n"
+ .string "volume still!\p"
+ .string "Try to catch other species of\n"
+ .string "POKéMON!$"
+
+PokedexRating_Text_LessThan40::
+ .string "Good, it's apparent that you're\n"
+ .string "trying hard!\p"
+ .string "I've given one of my AIDES an\n"
+ .string "ITEMFINDER. Be sure to collect it!$"
+
+PokedexRating_Text_LessThan50::
+ .string "Your POKéDEX is coming along quite\n"
+ .string "well!\p"
+ .string "I've given one of my AIDES an\n"
+ .string "AMULET COIN. Be sure to get it!$"
+
+PokedexRating_Text_LessThan60::
+ .string "Ah, you've finally topped 50\n"
+ .string "species!\p"
+ .string "I've given one of my AIDES an EXP.\n"
+ .string "SHARE. Be sure to go get it!$"
+
+PokedexRating_Text_LessThan70::
+ .string "Hoho! This is turning into quite the\n"
+ .string "respectable POKéDEX!$"
+
+PokedexRating_Text_LessThan80::
+ .string "Very good!\p"
+ .string "I think you'll collect even more\n"
+ .string "POKéMON by going fishing!$"
+
+PokedexRating_Text_LessThan90::
+ .string "Wonderful! Let me guess… You\n"
+ .string "like to collect things, don't you?$"
+
+PokedexRating_Text_LessThan100::
+ .string "I'm impressed!\n"
+ .string "It must have been difficult to do!$"
+
+PokedexRating_Text_LessThan110::
+ .string "You've finally hit 100 species!\n"
+ .string "I can't believe how good you are!$"
+
+PokedexRating_Text_LessThan120::
+ .string "You even have the evolved forms\n"
+ .string "of POKéMON! Super!$"
+
+PokedexRating_Text_LessThan130::
+ .string "Excellent! Trade with friends to\n"
+ .string "get some more!$"
+
+PokedexRating_Text_LessThan140::
+ .string "Outstanding!\n"
+ .string "You've become a real pro at this!$"
+
+PokedexRating_Text_LessThan150::
+ .string "I have nothing left to say!\n"
+ .string "You're the POKéMON PROFESSOR now!$"
+
+PokedexRating_Text_Complete::
+ .string "Your POKéDEX is entirely complete!\n"
+ .string "Congratulations!!$"
+
+PokedexRating_Text_NationalDexSeenXOwnedY::
+ .string "And your NATIONAL POKéDEX is:\p"
+ .string "{STR_VAR_1} POKéMON seen and\n"
+ .string "{STR_VAR_2} POKéMON owned.$"
+
+PokedexRating_Text_LookForwardToFilledNationalDex::
+ .string "I'll be looking forward to seeing\n"
+ .string "you fill the NATIONAL POKéDEX!$"
+
+PokedexRating_Text_YouveCompletedDex::
+ .string "Finally…\p"
+ .string "You've finally completed the\n"
+ .string "POKéDEX!\p"
+ .string "It's magnificent!\n"
+ .string "Truly, this is a fantastic feat!$"
+
+PokedexRating_Text_Wroooaaarrr::
+ .string "Wroooooooaaaaaarrrr!$"
+
+PokedexRating_Text_ThankYouMadeDreamReality::
+ .string "Thank you, {PLAYER}!\n"
+ .string "Sincerely, thank you!\l"
+ .string "You've made my dream a reality!$"
+
+PokedexRating_Text_LoveSeeingYourPokedex::
+ .string "OAK: Ah, welcome!\p"
+ .string "Tell me, how is your POKéDEX\n"
+ .string "coming along?\p"
+ .string "Wahaha!\p"
+ .string "Actually, I know how it is, but I\n"
+ .string "love seeing it anyway!\p"
+ .string "Let's see…$"
diff --git a/data/text/surf.inc b/data/text/surf.inc
index 13854f7aa7d3..80a4dc6605aa 100644
--- a/data/text/surf.inc
+++ b/data/text/surf.inc
@@ -4,3 +4,7 @@ gText_WantToUseSurf::
gText_PlayerUsedSurf::
.string "{STR_VAR_1} used SURF!$"
+
+Text_CurrentTooFast::
+ .string "The current is much too fast!\n"
+ .string "SURF can't be used here…$"
diff --git a/data/text/trainer_card_frlg.inc b/data/text/trainer_card_frlg.inc
new file mode 100644
index 000000000000..b61e6100a498
--- /dev/null
+++ b/data/text/trainer_card_frlg.inc
@@ -0,0 +1,167 @@
+CeladonCity_GameCorner_Text_TryPokemonPrinter::
+ .string "It's a POKéMON PRINTER!\p"
+ .string "It can put a print of your POKéMON\n"
+ .string "on the back of your TRAINER CARD.\p"
+ .string "It costs only ¥50.\n"
+ .string "Would you like to try it?$"
+
+CeladonCity_GameCorner_Text_DontHaveEnoughMoney::
+ .string "You don't have enough money.$"
+
+CeladonCity_GameCorner_Text_ChoosePrintType::
+ .string "Please choose the print type.$"
+
+CeladonCity_GameCorner_Text_BigSmileForPhoto::
+ .string "A big smile for the photo, please!\n"
+ .string "Three… Two… One…\p"
+ .string "Flash!$"
+
+CeladonCity_GameCorner_Text_PrintIsReadyCheckTrainerCard::
+ .string "Your POKéMON print is ready!\n"
+ .string "Check your TRAINER CARD.$"
+
+FourIsland_House2_Text_WishICouldShowOffStickers::
+ .string "Giggle…\n"
+ .string "I collected a ton of STICKERS.\l"
+ .string "I wish I could show them off…$"
+
+FourIsland_House2_Text_GiveYouStickerIfYouBrag::
+ .string "Oh, excellent!\n"
+ .string "You've come to the right place!\p"
+ .string "Look, look! See? See?\n"
+ .string "These are my STICKERS!\l"
+ .string "Look how many I got!\p"
+ .string "I bet you want some.\n"
+ .string "I bet you do!\p"
+ .string "I'll give a STICKER if you can tell\n"
+ .string "me something awesome about\l"
+ .string "yourself.\p"
+ .string "What will you brag about?$"
+
+FourIsland_House2_Text_BragAboutSomethingForMe::
+ .string "Brag about something for me.\n"
+ .string "I'll give you a STICKER.$"
+
+FourIsland_House2_Text_BragAboutWhatToday::
+ .string "Oh, hi!\n"
+ .string "Here comes the braggart.\p"
+ .string "What are you going to brag about\n"
+ .string "today?$"
+
+FourIsland_House2_Text_WowHoFLowest::
+ .string "Oh, wow, you made it into the\n"
+ .string "HALL OF FAME.\p"
+ .string "That's pretty good, yup!\n"
+ .string "I'll give you one of these.$"
+
+FourIsland_House2_Text_WowHoFLow::
+ .string "Oh, wow, you've entered the\n"
+ .string "HALL OF FAME often!\p"
+ .string "That's impressive, yup!\n"
+ .string "I'll give you one of these.$"
+
+FourIsland_House2_Text_WowHoFHigh::
+ .string "Whoa! You've made it into the\n"
+ .string "HALL OF FAME that often?\l"
+ .string "That's seriously incredible, yup!\p"
+ .string "You own the POKéMON LEAGUE!\n"
+ .string "I'll give you one of these.$"
+
+FourIsland_House2_Text_WowHoFHighest::
+ .string "No way! You've gone into the\n"
+ .string "HALL OF FAME that many times?\p"
+ .string "You're beyond incredible, yup!\n"
+ .string "That's it, I have to give you this.$"
+
+FourIsland_House2_Text_HoFStickerApplied::
+ .string "The HALL OF FAME STICKER was\n"
+ .string "applied to the TRAINER CARD.$"
+
+FourIsland_House2_Text_ComeBackWithBetterStoryHoF::
+ .string "Hmm…\p"
+ .string "Come back with a better story next\n"
+ .string "time, okay?$"
+
+FourIsland_House2_Text_LivingLegendHoF::
+ .string "Oh, no, no can do.\p"
+ .string "You're practically a living legend.\n"
+ .string "I have no SITCKERS left to give.$"
+
+FourIsland_House2_Text_WowEggsLowest::
+ .string "Oh, wow, there are POKéMON EGGS?\n"
+ .string "I didn't know that!\p"
+ .string "That's pretty good, yup!\n"
+ .string "I'll give you one of these.$"
+
+FourIsland_House2_Text_WowEggsLow::
+ .string "You've hatched that many EGGS?\n"
+ .string "You really must like them!\p"
+ .string "That's impressive, yup!\n"
+ .string "I'll give you one of these.$"
+
+FourIsland_House2_Text_WowEggsHigh::
+ .string "Whoa! You've hatched a whole\n"
+ .string "bunch of EGGS!\p"
+ .string "You're an EGG-hatching machine!\n"
+ .string "I'll give you one of these.$"
+
+FourIsland_House2_Text_WowEggsHighest::
+ .string "Wh… You hatched that many EGGS?\p"
+ .string "What's behind your love of EGGS?\n"
+ .string "It's beyond incredible, yup!\p"
+ .string "You're too awesome, I tell you.\n"
+ .string "That's it, I have to give you this.$"
+
+FourIsland_House2_Text_EggStickerApplied::
+ .string "The EGG STICKER was applied\n"
+ .string "to the TRAINER CARD.$"
+
+FourIsland_House2_Text_ComeBackWithBetterStoryEggs::
+ .string "Hmm…\p"
+ .string "Come back with a better story next\n"
+ .string "time, okay?$"
+
+FourIsland_House2_Text_LivingLegendEggs::
+ .string "Oh, no, no can do.\p"
+ .string "You're practically a living legend.\n"
+ .string "I have no SITCKERS left to give.$"
+
+FourIsland_House2_Text_WowLinkWinsLowest::
+ .string "Oh, wow, you've had success\n"
+ .string "link battling?\p"
+ .string "You're pretty strong, yup!\n"
+ .string "I'll give you one of these.$"
+
+FourIsland_House2_Text_WowLinkWinsLow::
+ .string "You've beaten your friends a lot\n"
+ .string "link battling, huh?\p"
+ .string "You're impressively strong, yup!\n"
+ .string "I'll give you one of these.$"
+
+FourIsland_House2_Text_WowLinkWinsHigh::
+ .string "Whoa! You've beaten your friends\n"
+ .string "a frightful number of times.\p"
+ .string "Have you lost friends over this?\n"
+ .string "I'll give you one of these.$"
+
+FourIsland_House2_Text_WowLinkWinsHighest::
+ .string "Wh… Wickedly whoa!\n"
+ .string "You've won mind-blowingly often!\p"
+ .string "It just knocks me out thinking\n"
+ .string "about how tough you are.\p"
+ .string "You're the stuff of nightmares!\n"
+ .string "That's it, I have to give you this.$"
+
+FourIsland_House2_Text_VictoryStickerApplied::
+ .string "The VICTORY STICKER was applied\n"
+ .string "to the TRAINER CARD.$"
+
+FourIsland_House2_Text_ComeBackWithBetterStoryLinkWins::
+ .string "Hmm…\p"
+ .string "Come back with a better story next\n"
+ .string "time, okay?$"
+
+FourIsland_House2_Text_LivingLegendLinkWins::
+ .string "Oh, no, no can do.\p"
+ .string "You're practically a living legend.\n"
+ .string "I have no SITCKERS left to give.$"
diff --git a/data/text/trainers_frlg.inc b/data/text/trainers_frlg.inc
new file mode 100644
index 000000000000..393c5da457a0
--- /dev/null
+++ b/data/text/trainers_frlg.inc
@@ -0,0 +1,992 @@
+Route3_Text_ColtonRematchIntro::
+ .string "Hey!\n"
+ .string "I saw you in VIRIDIAN FOREST!$"
+
+Route3_Text_BenRematchIntro::
+ .string "Hi! I like shorts!\n"
+ .string "They're comfy and easy to wear!\p"
+ .string "You should be wearing shorts, too!$"
+
+Route3_Text_JaniceRematchIntro::
+ .string "Excuse me!\n"
+ .string "You keep looking at me, don't you?$"
+
+Route3_Text_GregRematchIntro::
+ .string "You're a TRAINER, aren't you?\n"
+ .string "Let's get with it right away!$"
+
+Route3_Text_SallyRematchIntro::
+ .string "That look you give me…\n"
+ .string "It intrigues me so!$"
+
+Route3_Text_CalvinRematchIntro::
+ .string "Hey! What's wrong with you?\n"
+ .string "You're still not wearing shorts!$"
+
+Route3_Text_JamesRematchIntro::
+ .string "I'll battle you with the POKéMON\n"
+ .string "I started raising.$"
+
+Route3_Text_RobinRematchIntro::
+ .string "Eek!\n"
+ .string "Did you push me?$"
+
+Route4_Text_CrissyRematchIntro::
+ .string "I always catch mushroom POKéMON\n"
+ .string "on MT. MOON.$"
+
+Route6_Text_RickyRematchIntro::
+ .string "Oh! You're that nosy kid who\n"
+ .string "eavesdropped on us!$"
+
+Route6_Text_NancyRematchIntro::
+ .string "Excuse me! Didn't I tell you that\n"
+ .string "this is a private conversation?\p"
+ .string "You shouldn't be listening in,\n"
+ .string "you uncouth person!$"
+
+Route6_Text_KeigoRematchIntro::
+ .string "I'm trying to find something good\n"
+ .string "that's not a BUG POKéMON, but…$"
+
+Route6_Text_JeffRematchIntro::
+ .string "Huh?\n"
+ .string "You want to go with me again?$"
+
+Route6_Text_IsabelleRematchIntro::
+ .string "Me?\n"
+ .string "Well, okay. I'll play this once.$"
+
+Route6_Text_ElijahRematchIntro::
+ .string "Hey, long time!\n"
+ .string "Have you gotten better?$"
+
+Route8_Text_AidanRematchIntro::
+ .string "You are good at POKéMON, but how\n"
+ .string "is your chemistry grade?$"
+
+Route8_Text_StanRematchIntro::
+ .string "All right!\n"
+ .string "Let's play another game!$"
+
+Route8_Text_GlennRematchIntro::
+ .string "You need strategy to win at\n"
+ .string "battling.\p"
+ .string "Are you following my advice?$"
+
+Route8_Text_PaigeRematchIntro::
+ .string "I've collected many NIDORAN.\n"
+ .string "I don't want them to evolve, but…$"
+
+Route8_Text_LeslieRematchIntro::
+ .string "School is fun, but I still think\n"
+ .string "POKéMON are fun, too.$"
+
+Route8_Text_AndreaRematchIntro::
+ .string "MEOWTH and PERSIAN are so cute,\n"
+ .string "meow, meow, meow!$"
+
+Route8_Text_MeganRematchIntro::
+ .string "We may look silly standing here\n"
+ .string "like this, but I can still battle.$"
+
+Route8_Text_RichRematchIntro::
+ .string "I'm a rambling, gaming dude!\n"
+ .string "I'm on a winning streak!$"
+
+Route8_Text_JuliaRematchIntro::
+ .string "What's a cute, round, and fluffy\n"
+ .string "POKéMON?\p"
+ .string "You already know, don't you?$"
+
+Route8_Text_RicardoRematchIntro::
+ .string "My bike's still acting up, man.$"
+
+Route8_Text_JarenRematchIntro::
+ .string "Okay, kid!\n"
+ .string "Don't expect mercy this time!$"
+
+Route8_Text_EliRematchIntro::
+ .string "ELI: Our twin power became even\n"
+ .string "better!$"
+
+Route8_Text_AnneRematchIntro::
+ .string "ANNE: Our twin power powered up!$"
+
+Route9_Text_AliciaRematchIntro::
+ .string "We're to battle again?\n"
+ .string "This time, you're mine!$"
+
+Route9_Text_ChrisRematchIntro::
+ .string "I haven't forgotten you were with\n"
+ .string "those good-looking POKéMON.$"
+
+Route9_Text_DrewRematchIntro::
+ .string "I'm taking ROCK TUNNEL to go to\n"
+ .string "LAVENDER…\p"
+ .string "But I keep getting stopped by\n"
+ .string "everyone along the way…$"
+
+Route9_Text_CaitlinRematchIntro::
+ .string "Don't you dare patronize me today!\n"
+ .string "We're playing for keeps!$"
+
+Route9_Text_JeremyRematchIntro::
+ .string "Bwahaha!\n"
+ .string "Great! I was bored again, eh!$"
+
+Route9_Text_BriceRematchIntro::
+ .string "Hahaha!\n"
+ .string "A little toughie, as always!$"
+
+Route9_Text_BrentRematchIntro::
+ .string "I got up early every day to train\n"
+ .string "my POKéMON from cocoons!$"
+
+Route9_Text_AlanRematchIntro::
+ .string "Hahahaha!\n"
+ .string "I'll win this time!$"
+
+Route9_Text_ConnerRematchIntro::
+ .string "Go win, my super BUG POKéMON!$"
+
+Route10_Text_MarkRematchIntro::
+ .string "Wow, you came here again?\n"
+ .string "Maybe you're a POKéMANIAC, too?\l"
+ .string "Want to see my collection?$"
+
+Route10_Text_ClarkRematchIntro::
+ .string "Ha-hahah-ah-ha!\n"
+ .string "I can't stop sneezing!$"
+
+Route10_Text_HermanRematchIntro::
+ .string "Hi, kid!\n"
+ .string "Did I show you my POKéMON?$"
+
+Route10_Text_HeidiRematchIntro::
+ .string "I went out to a POKéMON GYM again.\p"
+ .string "…But I lost as usual.$"
+
+Route10_Text_TrentRematchIntro::
+ .string "Ah!\n"
+ .string "This mountain air is delicious!\l"
+ .string "It's so good, I can't leave!$"
+
+Route10_Text_CarolRematchIntro::
+ .string "My head is starting to spin.\n"
+ .string "I've been hiking for too long…$"
+
+Route11_Text_HugoRematchIntro::
+ .string "Win, lose, or draw!\n"
+ .string "Now for our rematch!$"
+
+Route11_Text_JasperRematchIntro::
+ .string "Competing is the ultimate thrill.\n"
+ .string "I still can't get enough!$"
+
+Route11_Text_EddieRematchIntro::
+ .string "You know, right?\n"
+ .string "Let's go, but don't cheat!$"
+
+Route11_Text_BraxtonRematchIntro::
+ .string "Hi, there!\p"
+ .string "But be careful!\n"
+ .string "I'm still laying down some cables!$"
+
+Route11_Text_DillonRematchIntro::
+ .string "I became a TRAINER a while ago.\n"
+ .string "But, I think I can win.$"
+
+Route11_Text_DirkRematchIntro::
+ .string "Fwahaha!\n"
+ .string "I have never lost!\p"
+ .string "…And if I did, I've forgotten all\n"
+ .string "about it!$"
+
+Route11_Text_DarianRematchIntro::
+ .string "I have never won before…\p"
+ .string "Perhaps I am destined to remain\n"
+ .string "that way…$"
+
+Route11_Text_YasuRematchIntro::
+ .string "I'm the best in my class.\n"
+ .string "I train every morning and night!$"
+
+Route11_Text_BernieRematchIntro::
+ .string "Keep your eyes out for live wires!$"
+
+Route11_Text_DaveRematchIntro::
+ .string "I raised my POKéMON carefully.\n"
+ .string "They should be ready by now.\l"
+ .string "This time, they should win, too.$"
+
+Route12_Text_NedRematchIntro::
+ .string "Yeah!\n"
+ .string "I got a bite, here!\l"
+ .string "Th-this might be the real thing!$"
+
+Route12_Text_ChipRematchIntro::
+ .string "You're finally here.\n"
+ .string "Fishing is a waiting game.$"
+
+Route12_Text_JustinRematchIntro::
+ .string "Still can't find a MOON STONE…\n"
+ .string "Have you found one?$"
+
+Route12_Text_LucaRematchIntro::
+ .string "Electricity has always been my\n"
+ .string "specialty.\p"
+ .string "I don't know a thing about POKéMON\n"
+ .string "of the sea, though.$"
+
+Route12_Text_HankRematchIntro::
+ .string "The FISHING FOOL vs. POKéMON KID!\n"
+ .string "Another round, fight!$"
+
+Route12_Text_ElliotRematchIntro::
+ .string "I love fishing, don't get me wrong.\n"
+ .string "But, I wish I had more work…\l"
+ .string "…It's hard to give up fishing!$"
+
+Route12_Text_AndrewRematchIntro::
+ .string "What's catching?\p"
+ .string "You'll never know unless you beat\n"
+ .string "me!$"
+
+Route12_Text_JesRematchIntro::
+ .string "JES: I'll win here today and\n"
+ .string "propose to my GIA.$"
+
+Route12_Text_GiaRematchIntro::
+ .string "GIA: Hey, JES…\n"
+ .string "I've been waiting a long time now.\p"
+ .string "If we win today, I'll marry you!$"
+
+Route13_Text_SebastianRematchIntro::
+ .string "My bird POKéMON remember you!$"
+
+Route13_Text_SusieRematchIntro::
+ .string "I want to be the best TRAINER \n"
+ .string "while I'm a kid!$"
+
+Route13_Text_ValerieRematchIntro::
+ .string "Wow!\n"
+ .string "You got more cool BADGES!$"
+
+Route13_Text_GwenRematchIntro::
+ .string "My cutely grown POKéMON wish to\n"
+ .string "become reacquainted with you.$"
+
+Route13_Text_AlmaRematchIntro::
+ .string "I cleaned out my savings and\n"
+ .string "bought more CARBOS.$"
+
+Route13_Text_PerryRematchIntro::
+ .string "I'm not going to lose this time.\n"
+ .string "The wind's blowing my way!$"
+
+Route13_Text_LolaRematchIntro::
+ .string "Oh, you're back?\p"
+ .string "Sure, I'll play again with you,\n"
+ .string "sweetie.$"
+
+Route13_Text_SheilaRematchIntro::
+ .string "Can't you forget that you battled\n"
+ .string "with me?$"
+
+Route13_Text_JaredRematchIntro::
+ .string "What're you starin' at?$"
+
+Route13_Text_RobertRematchIntro::
+ .string "I always go with bird POKéMON.\n"
+ .string "I've dedicated myself to them.$"
+
+Route14_Text_CarterRematchIntro::
+ .string "I used TMs to teach good moves\n"
+ .string "to my POKéMON.$"
+
+Route14_Text_MitchRematchIntro::
+ .string "My bird POKéMON should be ready\n"
+ .string "for battle this time.$"
+
+Route14_Text_BeckRematchIntro::
+ .string "Are you using TMs on POKéMON?\n"
+ .string "Just holding them is useless.$"
+
+Route14_Text_MarlonRematchIntro::
+ .string "Have you taught your bird POKéMON\n"
+ .string "how to FLY?\p"
+ .string "You'll be able to soar with it into\n"
+ .string "the sky! Give it a try.$"
+
+Route14_Text_DonaldRematchIntro::
+ .string "The legend of the winged mirages…\n"
+ .string "You've heard it, right?$"
+
+Route14_Text_BennyRematchIntro::
+ .string "I'm really not into it, but okay.\n"
+ .string "Let's go!$"
+
+Route14_Text_LukasRematchIntro::
+ .string "Hey!\n"
+ .string "I remember you!\p"
+ .string "C'mon, c'mon.\n"
+ .string "Let's go, let's go, let's go!$"
+
+Route14_Text_IsaacRematchIntro::
+ .string "You're here again, huh?\n"
+ .string "Shut up and battle.$"
+
+Route14_Text_GeraldRematchIntro::
+ .string "We've been riding here because of\n"
+ .string "the wide-open spaces.$"
+
+Route14_Text_MalikRematchIntro::
+ .string "POKéMON battle, right?\n"
+ .string "Cool! Rumble!$"
+
+Route14_Text_KiriRematchIntro::
+ .string "KIRI: JAN, I hope we win today.$"
+
+Route14_Text_JanRematchIntro::
+ .string "JAN: KIRI, here we go!\n"
+ .string "Let's win for sure this time!$"
+
+Route15_Text_KindraRematchIntro::
+ .string "I'm going to keep battling with the\n"
+ .string "POKéMON I got in trades.$"
+
+Route15_Text_BeckyRematchIntro::
+ .string "You look gentle, so I think I can\n"
+ .string "beat you.\p"
+ .string "I'll give it one more go!$"
+
+Route15_Text_EdwinRematchIntro::
+ .string "When I whistle, bird POKéMON\n"
+ .string "gather around.\p"
+ .string "They're amazingly cute!$"
+
+Route15_Text_ChesterRematchIntro::
+ .string "Hmm? My birds are shivering!\n"
+ .string "Wait, aren't you that TRAINER…$"
+
+Route15_Text_GraceRematchIntro::
+ .string "Oh, you're a little cutie!\n"
+ .string "So like a darling POKéMON!\l"
+ .string "I remember you now!$"
+
+Route15_Text_OliviaRematchIntro::
+ .string "I raise POKéMON for protection\n"
+ .string "because I live alone.\p"
+ .string "That hasn't changed.$"
+
+Route15_Text_ErnestRematchIntro::
+ .string "Hey, kid! C'mon!\n"
+ .string "I got these off some loser!$"
+
+Route15_Text_AlexRematchIntro::
+ .string "Fork over all your cash when you\n"
+ .string "lose to me, kid!$"
+
+Route15_Text_CeliaRematchIntro::
+ .string "What's cool and happening?\n"
+ .string "Trading POKéMON, of course.$"
+
+Route15_Text_YazminRematchIntro::
+ .string "Want to play with my POKéMON\n"
+ .string "again?$"
+
+Route15_Text_MyaRematchIntro::
+ .string "MYA: Hi, we keep meeting,\n"
+ .string "don't we?\p"
+ .string "Help me train my little brother\n"
+ .string "again?$"
+
+Route15_Text_RonRematchIntro::
+ .string "RON: My sister's gotten more\n"
+ .string "powerful…$"
+
+Route16_Text_LaoRematchIntro::
+ .string "What do you want?$"
+
+Route16_Text_KojiRematchIntro::
+ .string "Nice BIKE!\n"
+ .string "Hand it over quick!$"
+
+Route16_Text_LukeRematchIntro::
+ .string "Come out and play, little mouse.\n"
+ .string "I'll treat you right!$"
+
+Route16_Text_HideoRematchIntro::
+ .string "Hey, wait a second!\n"
+ .string "Don't call me and then run away!$"
+
+Route16_Text_CamronRematchIntro::
+ .string "I'm feeling hungry and mean!\n"
+ .string "I really need a punching bag!$"
+
+Route16_Text_RubenRematchIntro::
+ .string "Hey, there!\n"
+ .string "We'll have ourselves a good time!$"
+
+Route16_Text_JedRematchIntro::
+ .string "JED: Are you here to see our\n"
+ .string "love, which knows no bounds?$"
+
+Route16_Text_LeaRematchIntro::
+ .string "LEA: Sometimes, the intensity of\n"
+ .string "our love scares me.$"
+
+Route17_Text_RaulRematchIntro::
+ .string "I told you, there's no getting rich\n"
+ .string "quick in battling kids.$"
+
+Route17_Text_IsaiahRematchIntro::
+ .string "I'm mighty proud of my bod, kiddo.\n"
+ .string "Come on!$"
+
+Route17_Text_VirgilRematchIntro::
+ .string "You out for a stroll?$"
+
+Route17_Text_BillyRematchIntro::
+ .string "We're BIKERS!\n"
+ .string "We rule the roads, man!$"
+
+Route17_Text_NikolasRematchIntro::
+ .string "VOLTORB's going to seriously\n"
+ .string "electrify you today!$"
+
+Route17_Text_ZeekRematchIntro::
+ .string "I leveled up my POKéMON, but it\n"
+ .string "absolutely won't evolve. Why?$"
+
+Route17_Text_JamalRematchIntro::
+ .string "Gaah! I really need to exercise\n"
+ .string "and seriously trim some flab!$"
+
+Route17_Text_CoreyRematchIntro::
+ .string "Be a rebel!$"
+
+Route17_Text_JaxonRematchIntro::
+ .string "Yep, that's a nice BIKE!\n"
+ .string "How's it handle?$"
+
+Route17_Text_WilliamRematchIntro::
+ .string "Get lost, kid!\n"
+ .string "I'm bushed!$"
+
+Route18_Text_WiltonRematchIntro::
+ .string "I've been checking every grassy\n"
+ .string "area for new POKéMON.\p"
+ .string "But it's not always easy…$"
+
+Route18_Text_RamiroRematchIntro::
+ .string "Koorukukukoo!\n"
+ .string "Is my birdcall getting better?$"
+
+Route18_Text_JacobRematchIntro::
+ .string "I warned you before, this is my\n"
+ .string "turf!\p"
+ .string "I don't want you coming around.$"
+
+Route19_Text_RichardRematchIntro::
+ .string "I'm almost warmed up to go\n"
+ .string "out for a swim.$"
+
+Route19_Text_ReeceRematchIntro::
+ .string "Wait! Slow down!\n"
+ .string "What if you have a heart attack?$"
+
+Route19_Text_MatthewRematchIntro::
+ .string "I love swimming!\n"
+ .string "I guess you're the surfing type.$"
+
+Route19_Text_DouglasRematchIntro::
+ .string "What's beyond the horizon?\n"
+ .string "Have you seen?$"
+
+Route19_Text_DavidRematchIntro::
+ .string "I tried diving for POKéMON again,\n"
+ .string "but it was a no-go like before.$"
+
+Route19_Text_TonyRematchIntro::
+ .string "I look at the sea to forget all\n"
+ .string "the bad things that happened.\p"
+ .string "…Like losing to you the last time!$"
+
+Route19_Text_AnyaRematchIntro::
+ .string "You always get to ride your\n"
+ .string "POKéMON…\p"
+ .string "It looks so relaxing.\n"
+ .string "Can I have it if I win?$"
+
+Route19_Text_AliceRematchIntro::
+ .string "Swimming's great!\n"
+ .string "Sunburns aren't!$"
+
+Route19_Text_AxleRematchIntro::
+ .string "These waters are treacherous!\n"
+ .string "You shouldn't come back here!$"
+
+Route19_Text_ConnieRematchIntro::
+ .string "I swam here with my friends…\n"
+ .string "I'm tired…\l"
+ .string "Must we really battle again?$"
+
+Route19_Text_LiaRematchIntro::
+ .string "LIA: You know my brother just\n"
+ .string "became a TRAINER, right?\p"
+ .string "I want to make him better, so I\n"
+ .string "need your help again.$"
+
+Route19_Text_LucRematchIntro::
+ .string "LUC: My big sis taught me all\n"
+ .string "about POKéMON.\p"
+ .string "I wonder if I'm better?$"
+
+Route20_Text_BarryRematchIntro::
+ .string "The water is shallow here.\n"
+ .string "There are many people swimming.$"
+
+Route20_Text_ShirleyRematchIntro::
+ .string "Are you jealous that I'm\n"
+ .string "vacationing on SEAFOAM?$"
+
+Route20_Text_TiffanyRematchIntro::
+ .string "I love floating with the fishes\n"
+ .string "here among the waves.$"
+
+Route20_Text_IreneRematchIntro::
+ .string "Were you on vacation, too?$"
+
+Route20_Text_DeanRematchIntro::
+ .string "Check out my physique!\p"
+ .string "It's even more buff than ever\n"
+ .string "before!$"
+
+Route20_Text_DarrinRematchIntro::
+ .string "Why are you riding a POKéMON?\n"
+ .string "Haven't you learned to swim yet?$"
+
+Route20_Text_RogerRematchIntro::
+ .string "I rode my bird POKéMON here.$"
+
+Route20_Text_NoraRematchIntro::
+ .string "My boyfriend gave me big pearls.\n"
+ .string "And, they've grown bigger!$"
+
+Route20_Text_MissyRematchIntro::
+ .string "I swam here from CINNABAR ISLAND.\n"
+ .string "It wasn't easy, like I said.$"
+
+Route20_Text_MelissaRematchIntro::
+ .string "CINNABAR, in the west, has a LAB\n"
+ .string "for POKéMON.\p"
+ .string "My daddy works there.$"
+
+Route21_North_Text_RonaldRematchIntro::
+ .string "You want to know if the fish are\n"
+ .string "biting?$"
+
+Route21_North_Text_WadeRematchIntro::
+ .string "I got a big haul again!\n"
+ .string "Wanna go for it once more?$"
+
+Route21_North_Text_SpencerRematchIntro::
+ .string "The sea cleanses my body and soul!$"
+
+@ Unused trainer from RB that had a rematch intro added
+Route21_North_Text_CueBallRematchIntro::
+ .string "きょうも およぎに\n"
+ .string "きちまったぜ$"
+
+Route21_South_Text_JackRematchIntro::
+ .string "I caught my POKéMON at sea.\n"
+ .string "And that's where I train them.$"
+
+Route21_South_Text_JeromeRematchIntro::
+ .string "Right now, I'm in another triathlon\n"
+ .string "meet!$"
+
+Route21_South_Text_RolandRematchIntro::
+ .string "Ahh!\n"
+ .string "Feel the sun and the wind!$"
+
+Route21_South_Text_ClaudeRematchIntro::
+ .string "Hey, cut it out already.\n"
+ .string "You always scare away the fish!$"
+
+Route21_South_Text_NolanRematchIntro::
+ .string "Keep me company till I get a hit.$"
+
+Route21_North_Text_LilRematchIntro::
+ .string "LIL: Huh? A battle again?\n"
+ .string "IAN, can't you do it alone?$"
+
+Route21_North_Text_IanRematchIntro::
+ .string "IAN: My sis is still a slob.\n"
+ .string "Help me get her into shape!$"
+
+Route25_Text_JoeyRematchIntro::
+ .string "I won't lose while I'm here!$"
+
+Route25_Text_DanRematchIntro::
+ .string "Dad took me to a great party on\n"
+ .string "the S.S. ANNE at VERMILION CITY.$"
+
+Route25_Text_FlintRematchIntro::
+ .string "I'm a cool guy.\n"
+ .string "I've got a girlfriend!\p"
+ .string "I'll show her how cool I am for\n"
+ .string "sure this time!$"
+
+Route25_Text_KelseyRematchIntro::
+ .string "Hi!\n"
+ .string "My boyfriend is cool!\l"
+ .string "My conditioning's good today!$"
+
+Route25_Text_ChadRematchIntro::
+ .string "I had this feeling…\n"
+ .string "I knew I had to battle you again!$"
+
+Route25_Text_HaleyRematchIntro::
+ .string "My friend has many cute POKéMON.\n"
+ .string "I'm so jealous!$"
+
+Route25_Text_FranklinRematchIntro::
+ .string "I just trained up on MT. MOON,\n"
+ .string "but I've still got gas in the tank!$"
+
+Route25_Text_NobRematchIntro::
+ .string "A POKéMANIAC lives on the cape.\n"
+ .string "Have you seen his collection?$"
+
+Route25_Text_WayneRematchIntro::
+ .string "You're going to see BILL again?\n"
+ .string "First, we battle!$"
+
+Route24_Text_ShaneRematchIntro::
+ .string "I saw your feat from the grass!$"
+
+Route24_Text_EthanRematchIntro::
+ .string "Okay!\n"
+ .string "I'll stomp you!$"
+
+Route24_Text_ReliRematchIntro::
+ .string "You always look so busy…\n"
+ .string "Aren't you getting tired?$"
+
+Route24_Text_TimmyRematchIntro::
+ .string "You really must love coming to\n"
+ .string "NUGGET BRIDGE.$"
+
+Route24_Text_AliRematchIntro::
+ .string "The time we battled…\p"
+ .string "Even though I was the second in\n"
+ .string "line, I was the best, wasn't I?$"
+
+Route24_Text_CaleRematchIntro::
+ .string "People call this the NUGGET\n"
+ .string "BRIDGE!\p"
+ .string "You've already beaten us, so you're\n"
+ .string "not allowed to take the challenge…\p"
+ .string "…But, you're welcome to battle with\n"
+ .string "us again.$"
+
+OneIsland_TreasureBeach_Text_AmaraRematchIntro::
+ .string "Lying back, rocked by the waves…\n"
+ .string "I don't notice time slipping by…$"
+
+OneIsland_KindleRoad_Text_MariaRematchIntro::
+ .string "The weather's gorgeous!\n"
+ .string "I'll try not to spoil it.$"
+
+OneIsland_KindleRoad_Text_AbigailRematchIntro::
+ .string "My sunburn is starting to hurt…$"
+
+OneIsland_KindleRoad_Text_FinnRematchIntro::
+ .string "The fire bird's mountain casts\n"
+ .string "a huge shadow…$"
+
+OneIsland_KindleRoad_Text_GarrettRematchIntro::
+ .string "I have this strong feeling that\n"
+ .string "I can win this time!$"
+
+OneIsland_KindleRoad_Text_TommyRematchIntro::
+ .string "Wait! Wait a second!\n"
+ .string "I'm sure I've hooked a big one!$"
+
+OneIsland_KindleRoad_Text_SharonRematchIntro::
+ .string "You'll help me out with my\n"
+ .string "training again?$"
+
+OneIsland_KindleRoad_Text_TanyaRematchIntro::
+ .string "We haven't missed a single day of\n"
+ .string "training yet!$"
+
+OneIsland_KindleRoad_Text_SheaRematchIntro::
+ .string "Every morning, before breakfast,\n"
+ .string "I swim around this island…\l"
+ .string "Three times!$"
+
+OneIsland_KindleRoad_Text_HughRematchIntro::
+ .string "Dress appropriately for battle!\n"
+ .string "Lose that frivolous outfit, I said!$"
+
+OneIsland_KindleRoad_Text_BryceRematchIntro::
+ .string "You know, everything tastes great\n"
+ .string "when you're out in the wild.$"
+
+OneIsland_KindleRoad_Text_ClaireRematchIntro::
+ .string "I ate too much again, so will you\n"
+ .string "battle us for some exercise?$"
+
+OneIsland_KindleRoad_Text_KiaRematchIntro::
+ .string "KIA: My big brother and I make\n"
+ .string "an awesome combination!\p"
+ .string "We won't lose this time!$"
+
+OneIsland_KindleRoad_Text_MikRematchIntro::
+ .string "MIK: Together with KIA, we're\n"
+ .string "afraid of nothing!\p"
+ .string "We'll prove it to you this time!$"
+
+ThreeIsland_BondBridge_Text_NikkiRematchIntro::
+ .string "Are we to battle again?$"
+
+ThreeIsland_BondBridge_Text_VioletRematchIntro::
+ .string "From where have you come, and\n"
+ .string "where are you bound?$"
+
+ThreeIsland_BondBridge_Text_AmiraRematchIntro::
+ .string "I want to swim without my float\n"
+ .string "ring soon.$"
+
+ThreeIsland_BondBridge_Text_AlexisRematchIntro::
+ .string "Yay, yay!\n"
+ .string "POKéMON!$"
+
+ThreeIsland_BondBridge_Text_TishaRematchIntro::
+ .string "Oh, no, didn't I tell you already?\n"
+ .string "Please, stay away from me!$"
+
+ThreeIsland_BondBridge_Text_JoyRematchIntro::
+ .string "JOY: We've gotten stronger!\n"
+ .string "Lots and lots!$"
+
+ThreeIsland_BondBridge_Text_MegRematchIntro::
+ .string "MEG: You can't beat us today!$"
+
+FiveIsland_WaterLabyrinth_Text_AlizeRematchIntro::
+ .string "Oh, hello!\p"
+ .string "Are you raising your POKéMON in a\n"
+ .string "good environment?$"
+
+FiveIsland_ResortGorgeous_Text_DaisyRematchIntro::
+ .string "With these hands, I will create\n"
+ .string "my victory today.$"
+
+FiveIsland_ResortGorgeous_Text_CelinaRematchIntro::
+ .string "Must I repeat myself?\n"
+ .string "I'm trying to paint.\l"
+ .string "Please keep out of my sight!$"
+
+FiveIsland_ResortGorgeous_Text_RaynaRematchIntro::
+ .string "I haven't made any progress…\n"
+ .string "I still can't get the right angle…$"
+
+FiveIsland_ResortGorgeous_Text_JackiRematchIntro::
+ .string "Oh, you will give me another\n"
+ .string "opportunity to match wits with you?$"
+
+FiveIsland_ResortGorgeous_Text_GillianRematchIntro::
+ .string "They're almost finished making the\n"
+ .string "pool for my POKéMON.\p"
+ .string "You must drop in for a visit.$"
+
+FiveIsland_ResortGorgeous_Text_DestinRematchIntro::
+ .string "I'm a good runner.\n"
+ .string "I've gotten even faster!$"
+
+FiveIsland_ResortGorgeous_Text_TobyRematchIntro::
+ .string "I say, friend!\n"
+ .string "Let us enjoy our time together!$"
+
+FiveIsland_MemorialPillar_Text_MiloRematchIntro::
+ .string "I'm the eldest of the BIRD\n"
+ .string "BROTHERS. Remember me?\p"
+ .string "That's right, I'm the one who loves\n"
+ .string "birds for their beaks!$"
+
+FiveIsland_MemorialPillar_Text_ChazRematchIntro::
+ .string "I'm the middle kid of the BIRD\n"
+ .string "BROTHERS.\p"
+ .string "I'm the one that loves wings.\n"
+ .string "Let's battle again!$"
+
+FiveIsland_MemorialPillar_Text_HaroldRematchIntro::
+ .string "I'm the youngest of the BIRD\n"
+ .string "BROTHERS.\p"
+ .string "I love birds for their down.\n"
+ .string "I didn't think I'd see you again!$"
+
+SixIsland_OutcastIsland_Text_TylorRematchIntro::
+ .string "I'm still having no luck at all.\n"
+ .string "A battle'd be a change of pace!$"
+
+SixIsland_OutcastIsland_Text_MymoRematchIntro::
+ .string "Gasp… Gasp…\p"
+ .string "I swam here from SIX ISLAND's port\n"
+ .string "in one go again.$"
+
+SixIsland_OutcastIsland_Text_NicoleRematchIntro::
+ .string "You always come along while I'm\n"
+ .string "swimming.$"
+
+SixIsland_OutcastIsland_Text_AvaRematchIntro::
+ .string "AVA: Let's have another\n"
+ .string "two-on-two marine battle today!$"
+
+SixIsland_OutcastIsland_Text_GebRematchIntro::
+ .string "GEB: My big sister and I are way\n"
+ .string "tougher than before!$"
+
+SixIsland_GreenPath_Text_JaclynRematchIntro::
+ .string "…Huh?\p"
+ .string "I envision my house, but TELEPORT\n"
+ .string "always brings me here!$"
+
+SixIsland_WaterPath_Text_RoseRematchIntro::
+ .string "Oh, hello.\n"
+ .string "A pleasant breeze is blowing again.$"
+
+SixIsland_WaterPath_Text_EdwardRematchIntro::
+ .string "Hehehe, I'm practicing in secret\n"
+ .string "again.$"
+
+SixIsland_WaterPath_Text_SamirRematchIntro::
+ .string "What, you're sick of seeing\n"
+ .string "SWIMMERS like me?\p"
+ .string "Aww, don't be hatin'!\n"
+ .string "Battle with me again.$"
+
+SixIsland_WaterPath_Text_DeniseRematchIntro::
+ .string "Sigh…\n"
+ .string "My boyfriend's busy again…$"
+
+SixIsland_WaterPath_Text_EarlRematchIntro::
+ .string "Come on, tell me, where are the\n"
+ .string "mountains around these parts?$"
+
+SixIsland_WaterPath_Text_MiuRematchIntro::
+ .string "MIU: Hello, POKéMON!\n"
+ .string "It's time to play again!$"
+
+SixIsland_WaterPath_Text_MiaRematchIntro::
+ .string "MIA: Hello, POKéMON!\n"
+ .string "It's time to battle again!$"
+
+SixIsland_RuinValley_Text_StanlyRematchIntro::
+ .string "There appear to be many secrets\n"
+ .string "still unsolved in this world.$"
+
+SixIsland_RuinValley_Text_FosterRematchIntro::
+ .string "Hi, didn't we meet before?\n"
+ .string "What compelled you to come back?$"
+
+SixIsland_RuinValley_Text_LarryRematchIntro::
+ .string "It's been said that there are\n"
+ .string "mysterious stones on this island.\p"
+ .string "Have you discovered anything since\n"
+ .string "we last met?$"
+
+SixIsland_RuinValley_Text_DarylRematchIntro::
+ .string "A rematch with you, so high up!$"
+
+SixIsland_RuinValley_Text_HectorRematchIntro::
+ .string "I'm pretty familiar with the land\n"
+ .string "around these parts.$"
+
+SevenIsland_TrainerTower_Text_DarioRematchIntro::
+ .string "I sensed your approach.$"
+
+SevenIsland_TrainerTower_Text_RodetteRematchIntro::
+ .string "Somewhere on this island, peculiar\n"
+ .string "POKéMON are sleeping.$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_MiahRematchIntro::
+ .string "Kyahaha!\p"
+ .string "Coming back won't change a thing.\n"
+ .string "I'll flick you away effortlessly!$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_MasonRematchIntro::
+ .string "Howdy! You're a member of my\n"
+ .string "fan club, isn't that right?$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_NicolasRematchIntro::
+ .string "This island is too spread out…\n"
+ .string "Patrolling the place is a drag…$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_MadelineRematchIntro::
+ .string "I don't forgive people who abuse\n"
+ .string "POKéMON!$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_EveRematchIntro::
+ .string "EVE: I'll team up with JON and\n"
+ .string "battle together again.$"
+
+SevenIsland_SevaultCanyon_Entrance_Text_JonRematchIntro::
+ .string "JON: When I'm with EVE, it feels\n"
+ .string "like we could never lose, not ever.$"
+
+SevenIsland_SevaultCanyon_Text_CyndyRematchIntro::
+ .string "Let's have another battle.\n"
+ .string "My conditioning's in top form!$"
+
+SevenIsland_SevaultCanyon_Text_EvanRematchIntro::
+ .string "It doesn't matter if you happen to\n"
+ .string "have the strongest POKéMON…\p"
+ .string "It doesn't mean a thing if you don't\n"
+ .string "know how to use them properly!$"
+
+SevenIsland_SevaultCanyon_Text_JacksonRematchIntro::
+ .string "I work to protect the environment.\n"
+ .string "In turn, nature protects me!$"
+
+SevenIsland_SevaultCanyon_Text_KatelynRematchIntro::
+ .string "Every time we meet, you have those\n"
+ .string "snazzy shoes on.$"
+
+SevenIsland_SevaultCanyon_Text_LeroyRematchIntro::
+ .string "You must have gotten tougher.\n"
+ .string "Let me battle you, please!$"
+
+SevenIsland_SevaultCanyon_Text_MichelleRematchIntro::
+ .string "I was given the best possible\n"
+ .string "education to become this strong.\p"
+ .string "I won't lose this time.\n"
+ .string "Absolutely not!$"
+
+SevenIsland_SevaultCanyon_Text_LexRematchIntro::
+ .string "LEX: My darling NYA, together\n"
+ .string "we will win for certain!$"
+
+SevenIsland_SevaultCanyon_Text_NyaRematchIntro::
+ .string "NYA: I won't drag down my mentor\n"
+ .string "LEX! We're going to win!$"
+
+SevenIsland_TanobyRuins_Text_BrandonRematchIntro::
+ .string "Have you discovered anything about\n"
+ .string "this stone chamber?$"
+
+SevenIsland_TanobyRuins_Text_BenjaminRematchIntro::
+ .string "A mystic POKéMON is said to sleep\n"
+ .string "inside here.$"
+
+SevenIsland_TanobyRuins_Text_EdnaRematchIntro::
+ .string "My teacher is showing me how to\n"
+ .string "paint some more.$"
+
+SevenIsland_TanobyRuins_Text_CliffordRematchIntro::
+ .string "Today, in addition to our lesson,\n"
+ .string "we came to see the chamber again.$"
diff --git a/data/tilesets/primary/building_frlg/metatile_attributes.bin b/data/tilesets/primary/building_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..c387d17d2e63
Binary files /dev/null and b/data/tilesets/primary/building_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/primary/building_frlg/metatiles.bin b/data/tilesets/primary/building_frlg/metatiles.bin
new file mode 100644
index 000000000000..024797c8ee2b
Binary files /dev/null and b/data/tilesets/primary/building_frlg/metatiles.bin differ
diff --git a/data/tilesets/primary/building_frlg/palettes/00.pal b/data/tilesets/primary/building_frlg/palettes/00.pal
new file mode 100644
index 000000000000..3b6416376ec9
--- /dev/null
+++ b/data/tilesets/primary/building_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+156 213 255
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/primary/building_frlg/palettes/01.pal b/data/tilesets/primary/building_frlg/palettes/01.pal
new file mode 100644
index 000000000000..66561f6d3326
--- /dev/null
+++ b/data/tilesets/primary/building_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+139 180 222
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/primary/building_frlg/palettes/02.pal b/data/tilesets/primary/building_frlg/palettes/02.pal
new file mode 100644
index 000000000000..87a022102f19
--- /dev/null
+++ b/data/tilesets/primary/building_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+197 189 213
+255 255 255
+106 197 106
+230 213 123
+255 205 90
+255 238 197
+90 90 115
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/primary/building_frlg/palettes/03.pal b/data/tilesets/primary/building_frlg/palettes/03.pal
new file mode 100644
index 000000000000..783496dcd9bf
--- /dev/null
+++ b/data/tilesets/primary/building_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 180 74
+255 246 131
+65 98 156
+90 123 180
+115 156 197
+222 213 131
+164 164 172
+205 205 213
+238 238 246
+106 172 115
+156 205 139
diff --git a/data/tilesets/primary/building_frlg/palettes/04.pal b/data/tilesets/primary/building_frlg/palettes/04.pal
new file mode 100644
index 000000000000..89eace6050ad
--- /dev/null
+++ b/data/tilesets/primary/building_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 238 246
+172 197 180
+197 222 205
+90 189 172
+246 238 156
+205 189 131
+189 164 123
+148 131 106
+106 106 106
+213 222 230
+238 180 115
diff --git a/data/tilesets/primary/building_frlg/palettes/05.pal b/data/tilesets/primary/building_frlg/palettes/05.pal
new file mode 100644
index 000000000000..c7780e5c7515
--- /dev/null
+++ b/data/tilesets/primary/building_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+213 222 222
+164 180 189
+255 0 255
+131 115 74
+213 213 148
+197 189 139
+172 156 115
+148 131 90
+197 197 205
+205 82 65
+0 0 0
diff --git a/data/tilesets/primary/building_frlg/palettes/06.pal b/data/tilesets/primary/building_frlg/palettes/06.pal
new file mode 100644
index 000000000000..1d08ce9a2024
--- /dev/null
+++ b/data/tilesets/primary/building_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/primary/building_frlg/palettes/07.pal b/data/tilesets/primary/building_frlg/palettes/07.pal
new file mode 100644
index 000000000000..c1e7c3d5c579
--- /dev/null
+++ b/data/tilesets/primary/building_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
diff --git a/data/tilesets/primary/building_frlg/palettes/08.pal b/data/tilesets/primary/building_frlg/palettes/08.pal
new file mode 100644
index 000000000000..c1e7c3d5c579
--- /dev/null
+++ b/data/tilesets/primary/building_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
diff --git a/data/tilesets/primary/building_frlg/palettes/09.pal b/data/tilesets/primary/building_frlg/palettes/09.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/primary/building_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/primary/building_frlg/palettes/10.pal b/data/tilesets/primary/building_frlg/palettes/10.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/primary/building_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/primary/building_frlg/palettes/11.pal b/data/tilesets/primary/building_frlg/palettes/11.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/primary/building_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/primary/building_frlg/palettes/12.pal b/data/tilesets/primary/building_frlg/palettes/12.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/primary/building_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/primary/building_frlg/palettes/13.pal b/data/tilesets/primary/building_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/primary/building_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/primary/building_frlg/palettes/14.pal b/data/tilesets/primary/building_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/primary/building_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/primary/building_frlg/palettes/15.pal b/data/tilesets/primary/building_frlg/palettes/15.pal
new file mode 100644
index 000000000000..92e7ed30983d
--- /dev/null
+++ b/data/tilesets/primary/building_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+0 0 0
diff --git a/data/tilesets/primary/building_frlg/tiles.png b/data/tilesets/primary/building_frlg/tiles.png
new file mode 100644
index 000000000000..8d864f27e2f1
Binary files /dev/null and b/data/tilesets/primary/building_frlg/tiles.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/flower/0.png b/data/tilesets/primary/general_frlg/anim/flower/0.png
new file mode 100644
index 000000000000..d445b4045df3
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/flower/0.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/flower/1.png b/data/tilesets/primary/general_frlg/anim/flower/1.png
new file mode 100644
index 000000000000..1aed594f6560
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/flower/1.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/flower/2.png b/data/tilesets/primary/general_frlg/anim/flower/2.png
new file mode 100644
index 000000000000..5e58c29a90de
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/flower/2.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/flower/3.png b/data/tilesets/primary/general_frlg/anim/flower/3.png
new file mode 100644
index 000000000000..bac3d26ffa1c
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/flower/3.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/flower/4.png b/data/tilesets/primary/general_frlg/anim/flower/4.png
new file mode 100644
index 000000000000..8e589150a000
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/flower/4.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/sandwatersedge/0.png b/data/tilesets/primary/general_frlg/anim/sandwatersedge/0.png
new file mode 100644
index 000000000000..0ade81d73b6b
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/sandwatersedge/0.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/sandwatersedge/1.png b/data/tilesets/primary/general_frlg/anim/sandwatersedge/1.png
new file mode 100644
index 000000000000..8dac0eba76e9
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/sandwatersedge/1.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/sandwatersedge/2.png b/data/tilesets/primary/general_frlg/anim/sandwatersedge/2.png
new file mode 100644
index 000000000000..ba6e93bc4e76
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/sandwatersedge/2.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/sandwatersedge/3.png b/data/tilesets/primary/general_frlg/anim/sandwatersedge/3.png
new file mode 100644
index 000000000000..9436601c1f16
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/sandwatersedge/3.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/sandwatersedge/4.png b/data/tilesets/primary/general_frlg/anim/sandwatersedge/4.png
new file mode 100644
index 000000000000..5b74a16fa428
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/sandwatersedge/4.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/sandwatersedge/5.png b/data/tilesets/primary/general_frlg/anim/sandwatersedge/5.png
new file mode 100644
index 000000000000..6c72f4e0e291
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/sandwatersedge/5.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/sandwatersedge/6.png b/data/tilesets/primary/general_frlg/anim/sandwatersedge/6.png
new file mode 100644
index 000000000000..f56c55b04b75
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/sandwatersedge/6.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/sandwatersedge/7.png b/data/tilesets/primary/general_frlg/anim/sandwatersedge/7.png
new file mode 100644
index 000000000000..549c44410ca8
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/sandwatersedge/7.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/0.png b/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/0.png
new file mode 100644
index 000000000000..ce16ac050ca9
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/0.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/1.png b/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/1.png
new file mode 100644
index 000000000000..7e41494c5368
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/1.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/2.png b/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/2.png
new file mode 100644
index 000000000000..5765ac4773d5
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/2.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/3.png b/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/3.png
new file mode 100644
index 000000000000..dbc111a7f824
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/3.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/4.png b/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/4.png
new file mode 100644
index 000000000000..a8ee69c1e87a
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/4.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/5.png b/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/5.png
new file mode 100644
index 000000000000..318c7b79650d
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/5.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/6.png b/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/6.png
new file mode 100644
index 000000000000..c31713d3492b
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/6.png differ
diff --git a/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/7.png b/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/7.png
new file mode 100644
index 000000000000..e01c91449033
Binary files /dev/null and b/data/tilesets/primary/general_frlg/anim/water_current_landwatersedge/7.png differ
diff --git a/data/tilesets/primary/general_frlg/metatile_attributes.bin b/data/tilesets/primary/general_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..d4faf82055e0
Binary files /dev/null and b/data/tilesets/primary/general_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/primary/general_frlg/metatiles.bin b/data/tilesets/primary/general_frlg/metatiles.bin
new file mode 100644
index 000000000000..7a228eeaea2f
Binary files /dev/null and b/data/tilesets/primary/general_frlg/metatiles.bin differ
diff --git a/data/tilesets/primary/general_frlg/palettes/00.pal b/data/tilesets/primary/general_frlg/palettes/00.pal
new file mode 100644
index 000000000000..2f3f97d6fdb7
--- /dev/null
+++ b/data/tilesets/primary/general_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/primary/general_frlg/palettes/01.pal b/data/tilesets/primary/general_frlg/palettes/01.pal
new file mode 100644
index 000000000000..09828f4f1f27
--- /dev/null
+++ b/data/tilesets/primary/general_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+123 123 131
+32 49 57
+230 238 238
+90 189 139
+90 90 115
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+123 74 74
+90 57 65
+115 205 164
diff --git a/data/tilesets/primary/general_frlg/palettes/02.pal b/data/tilesets/primary/general_frlg/palettes/02.pal
new file mode 100644
index 000000000000..6b019b884c96
--- /dev/null
+++ b/data/tilesets/primary/general_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/primary/general_frlg/palettes/03.pal b/data/tilesets/primary/general_frlg/palettes/03.pal
new file mode 100644
index 000000000000..205c464c79d6
--- /dev/null
+++ b/data/tilesets/primary/general_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/primary/general_frlg/palettes/04.pal b/data/tilesets/primary/general_frlg/palettes/04.pal
new file mode 100644
index 000000000000..9b094a6aaa24
--- /dev/null
+++ b/data/tilesets/primary/general_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 0
+230 246 255
+189 222 255
+139 164 255
+106 164 230
+74 148 222
+74 123 222
+82 156 230
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+49 115 197
+238 230 139
+230 213 139
+213 197 106
diff --git a/data/tilesets/primary/general_frlg/palettes/05.pal b/data/tilesets/primary/general_frlg/palettes/05.pal
new file mode 100644
index 000000000000..c5a653979a01
--- /dev/null
+++ b/data/tilesets/primary/general_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/primary/general_frlg/palettes/06.pal b/data/tilesets/primary/general_frlg/palettes/06.pal
new file mode 100644
index 000000000000..cdf41b2983e5
--- /dev/null
+++ b/data/tilesets/primary/general_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 255 0
+205 230 246
+180 213 255
+123 156 238
+98 139 213
+65 123 189
+49 98 180
+82 123 205
+238 246 246
+205 222 238
+49 115 197
+139 189 255
+115 164 255
+65 139 222
+57 115 222
+82 148 230
diff --git a/data/tilesets/primary/general_frlg/palettes/07.pal b/data/tilesets/primary/general_frlg/palettes/07.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/primary/general_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/primary/general_frlg/palettes/08.pal b/data/tilesets/primary/general_frlg/palettes/08.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/primary/general_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/primary/general_frlg/palettes/09.pal b/data/tilesets/primary/general_frlg/palettes/09.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/primary/general_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/primary/general_frlg/palettes/10.pal b/data/tilesets/primary/general_frlg/palettes/10.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/primary/general_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/primary/general_frlg/palettes/11.pal b/data/tilesets/primary/general_frlg/palettes/11.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/primary/general_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/primary/general_frlg/palettes/12.pal b/data/tilesets/primary/general_frlg/palettes/12.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/primary/general_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/primary/general_frlg/palettes/13.pal b/data/tilesets/primary/general_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/primary/general_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/primary/general_frlg/palettes/14.pal b/data/tilesets/primary/general_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/primary/general_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/primary/general_frlg/palettes/15.pal b/data/tilesets/primary/general_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/primary/general_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/primary/general_frlg/tiles.png b/data/tilesets/primary/general_frlg/tiles.png
new file mode 100644
index 000000000000..84ba7b2f987c
Binary files /dev/null and b/data/tilesets/primary/general_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/berry_forest_frlg/metatile_attributes.bin b/data/tilesets/secondary/berry_forest_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..6d6c6d544fc7
Binary files /dev/null and b/data/tilesets/secondary/berry_forest_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/berry_forest_frlg/metatiles.bin b/data/tilesets/secondary/berry_forest_frlg/metatiles.bin
new file mode 100644
index 000000000000..fb47747c4b0b
Binary files /dev/null and b/data/tilesets/secondary/berry_forest_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/berry_forest_frlg/palettes/00.pal b/data/tilesets/secondary/berry_forest_frlg/palettes/00.pal
new file mode 100644
index 000000000000..7af5bb7d2167
--- /dev/null
+++ b/data/tilesets/secondary/berry_forest_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 82 0
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/berry_forest_frlg/palettes/01.pal b/data/tilesets/secondary/berry_forest_frlg/palettes/01.pal
new file mode 100644
index 000000000000..391d1e3d17b8
--- /dev/null
+++ b/data/tilesets/secondary/berry_forest_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 189 164
+189 148 139
+156 115 115
+123 82 82
+90 57 74
+115 205 164
diff --git a/data/tilesets/secondary/berry_forest_frlg/palettes/02.pal b/data/tilesets/secondary/berry_forest_frlg/palettes/02.pal
new file mode 100644
index 000000000000..6b019b884c96
--- /dev/null
+++ b/data/tilesets/secondary/berry_forest_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/berry_forest_frlg/palettes/03.pal b/data/tilesets/secondary/berry_forest_frlg/palettes/03.pal
new file mode 100644
index 000000000000..9581f2cd8be5
--- /dev/null
+++ b/data/tilesets/secondary/berry_forest_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 131
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/berry_forest_frlg/palettes/04.pal b/data/tilesets/secondary/berry_forest_frlg/palettes/04.pal
new file mode 100644
index 000000000000..702db8a907c6
--- /dev/null
+++ b/data/tilesets/secondary/berry_forest_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 222 172
+189 189 139
+156 156 106
+115 115 65
+255 255 213
+255 238 180
+238 222 156
+172 197 197
+148 189 189
+123 180 180
+230 246 255
+189 222 222
+172 213 222
+148 205 205
+255 255 255
diff --git a/data/tilesets/secondary/berry_forest_frlg/palettes/05.pal b/data/tilesets/secondary/berry_forest_frlg/palettes/05.pal
new file mode 100644
index 000000000000..3a2db72a7f32
--- /dev/null
+++ b/data/tilesets/secondary/berry_forest_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+222 205 131
+205 180 106
+180 139 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/berry_forest_frlg/palettes/06.pal b/data/tilesets/secondary/berry_forest_frlg/palettes/06.pal
new file mode 100644
index 000000000000..93518605a9ef
--- /dev/null
+++ b/data/tilesets/secondary/berry_forest_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
diff --git a/data/tilesets/secondary/berry_forest_frlg/palettes/07.pal b/data/tilesets/secondary/berry_forest_frlg/palettes/07.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/berry_forest_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/berry_forest_frlg/palettes/08.pal b/data/tilesets/secondary/berry_forest_frlg/palettes/08.pal
new file mode 100644
index 000000000000..650a35cc894c
--- /dev/null
+++ b/data/tilesets/secondary/berry_forest_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 82 0
+57 115 24
+98 65 74
+131 106 82
+65 57 49
+255 0 255
+255 0 255
+255 0 255
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/berry_forest_frlg/palettes/09.pal b/data/tilesets/secondary/berry_forest_frlg/palettes/09.pal
new file mode 100644
index 000000000000..df2d04037372
--- /dev/null
+++ b/data/tilesets/secondary/berry_forest_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+213 230 189
+57 172 131
+222 230 246
+230 172 123
+106 205 164
diff --git a/data/tilesets/secondary/berry_forest_frlg/palettes/10.pal b/data/tilesets/secondary/berry_forest_frlg/palettes/10.pal
new file mode 100644
index 000000000000..7464374928c5
--- /dev/null
+++ b/data/tilesets/secondary/berry_forest_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+222 230 246
+189 197 222
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+49 139 49
+57 82 0
+49 180 98
+238 230 164
+222 205 131
+213 180 106
+205 156 82
+106 205 164
diff --git a/data/tilesets/secondary/berry_forest_frlg/palettes/11.pal b/data/tilesets/secondary/berry_forest_frlg/palettes/11.pal
new file mode 100644
index 000000000000..6fe747b2d77a
--- /dev/null
+++ b/data/tilesets/secondary/berry_forest_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 255 148
+222 213 98
+57 148 49
+57 82 0
+57 115 24
+98 65 74
+131 106 82
+65 57 49
+164 164 49
+115 106 49
+255 0 255
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/berry_forest_frlg/palettes/12.pal b/data/tilesets/secondary/berry_forest_frlg/palettes/12.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/berry_forest_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/berry_forest_frlg/palettes/13.pal b/data/tilesets/secondary/berry_forest_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/berry_forest_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/berry_forest_frlg/palettes/14.pal b/data/tilesets/secondary/berry_forest_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/berry_forest_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/berry_forest_frlg/palettes/15.pal b/data/tilesets/secondary/berry_forest_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/berry_forest_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/berry_forest_frlg/tiles.png b/data/tilesets/secondary/berry_forest_frlg/tiles.png
new file mode 100644
index 000000000000..dacbc0120342
Binary files /dev/null and b/data/tilesets/secondary/berry_forest_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/bike_shop_frlg/metatile_attributes.bin b/data/tilesets/secondary/bike_shop_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..e3ebe9336261
Binary files /dev/null and b/data/tilesets/secondary/bike_shop_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/bike_shop_frlg/metatiles.bin b/data/tilesets/secondary/bike_shop_frlg/metatiles.bin
new file mode 100644
index 000000000000..f1c0ab02dab1
Binary files /dev/null and b/data/tilesets/secondary/bike_shop_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/bike_shop_frlg/palettes/00.pal b/data/tilesets/secondary/bike_shop_frlg/palettes/00.pal
new file mode 100644
index 000000000000..4b44e19f441b
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+205 156 156
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/bike_shop_frlg/palettes/01.pal b/data/tilesets/secondary/bike_shop_frlg/palettes/01.pal
new file mode 100644
index 000000000000..a39ca6aa86b7
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+205 156 156
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/bike_shop_frlg/palettes/02.pal b/data/tilesets/secondary/bike_shop_frlg/palettes/02.pal
new file mode 100644
index 000000000000..5a4f127be79c
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+205 156 156
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+106 197 106
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/bike_shop_frlg/palettes/03.pal b/data/tilesets/secondary/bike_shop_frlg/palettes/03.pal
new file mode 100644
index 000000000000..c84fa4a58be0
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+205 156 156
+82 82 106
+131 131 139
+172 172 164
+255 255 255
+230 180 74
+255 246 131
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+164 164 172
+205 205 213
+238 238 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/bike_shop_frlg/palettes/04.pal b/data/tilesets/secondary/bike_shop_frlg/palettes/04.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/bike_shop_frlg/palettes/05.pal b/data/tilesets/secondary/bike_shop_frlg/palettes/05.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/bike_shop_frlg/palettes/06.pal b/data/tilesets/secondary/bike_shop_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/bike_shop_frlg/palettes/07.pal b/data/tilesets/secondary/bike_shop_frlg/palettes/07.pal
new file mode 100644
index 000000000000..a71b8fee2c77
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+82 82 106
+131 131 139
+172 172 139
+205 205 180
+238 238 222
+131 148 139
+172 189 172
+205 205 205
+213 222 213
+255 255 255
+164 123 74
+189 148 98
+222 172 123
+172 180 106
+197 205 131
diff --git a/data/tilesets/secondary/bike_shop_frlg/palettes/08.pal b/data/tilesets/secondary/bike_shop_frlg/palettes/08.pal
new file mode 100644
index 000000000000..0a666a9c9835
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+65 74 106
+139 139 131
+197 197 197
+255 255 255
+0 0 0
+246 197 197
+74 74 213
+123 123 246
+180 180 0
+213 197 65
+246 246 32
+148 82 74
+205 49 41
+255 123 74
+0 0 0
diff --git a/data/tilesets/secondary/bike_shop_frlg/palettes/09.pal b/data/tilesets/secondary/bike_shop_frlg/palettes/09.pal
new file mode 100644
index 000000000000..c06a049b0e5c
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/bike_shop_frlg/palettes/10.pal b/data/tilesets/secondary/bike_shop_frlg/palettes/10.pal
new file mode 100644
index 000000000000..c06a049b0e5c
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/bike_shop_frlg/palettes/11.pal b/data/tilesets/secondary/bike_shop_frlg/palettes/11.pal
new file mode 100644
index 000000000000..c06a049b0e5c
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/bike_shop_frlg/palettes/12.pal b/data/tilesets/secondary/bike_shop_frlg/palettes/12.pal
new file mode 100644
index 000000000000..c06a049b0e5c
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/bike_shop_frlg/palettes/13.pal b/data/tilesets/secondary/bike_shop_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/bike_shop_frlg/palettes/14.pal b/data/tilesets/secondary/bike_shop_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/bike_shop_frlg/palettes/15.pal b/data/tilesets/secondary/bike_shop_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/bike_shop_frlg/tiles.png b/data/tilesets/secondary/bike_shop_frlg/tiles.png
new file mode 100644
index 000000000000..90124ff4a5a1
Binary files /dev/null and b/data/tilesets/secondary/bike_shop_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/burgled_house_frlg/metatile_attributes.bin b/data/tilesets/secondary/burgled_house_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..36bdebf586a3
Binary files /dev/null and b/data/tilesets/secondary/burgled_house_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/burgled_house_frlg/metatiles.bin b/data/tilesets/secondary/burgled_house_frlg/metatiles.bin
new file mode 100644
index 000000000000..dfe78c910c6d
Binary files /dev/null and b/data/tilesets/secondary/burgled_house_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/burgled_house_frlg/palettes/00.pal b/data/tilesets/secondary/burgled_house_frlg/palettes/00.pal
new file mode 100644
index 000000000000..6d876039d15c
--- /dev/null
+++ b/data/tilesets/secondary/burgled_house_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/burgled_house_frlg/palettes/01.pal b/data/tilesets/secondary/burgled_house_frlg/palettes/01.pal
new file mode 100644
index 000000000000..66561f6d3326
--- /dev/null
+++ b/data/tilesets/secondary/burgled_house_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+139 180 222
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/burgled_house_frlg/palettes/02.pal b/data/tilesets/secondary/burgled_house_frlg/palettes/02.pal
new file mode 100644
index 000000000000..87a022102f19
--- /dev/null
+++ b/data/tilesets/secondary/burgled_house_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+197 189 213
+255 255 255
+106 197 106
+230 213 123
+255 205 90
+255 238 197
+90 90 115
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/burgled_house_frlg/palettes/03.pal b/data/tilesets/secondary/burgled_house_frlg/palettes/03.pal
new file mode 100644
index 000000000000..783496dcd9bf
--- /dev/null
+++ b/data/tilesets/secondary/burgled_house_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 180 74
+255 246 131
+65 98 156
+90 123 180
+115 156 197
+222 213 131
+164 164 172
+205 205 213
+238 238 246
+106 172 115
+156 205 139
diff --git a/data/tilesets/secondary/burgled_house_frlg/palettes/04.pal b/data/tilesets/secondary/burgled_house_frlg/palettes/04.pal
new file mode 100644
index 000000000000..89eace6050ad
--- /dev/null
+++ b/data/tilesets/secondary/burgled_house_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 238 246
+172 197 180
+197 222 205
+90 189 172
+246 238 156
+205 189 131
+189 164 123
+148 131 106
+106 106 106
+213 222 230
+238 180 115
diff --git a/data/tilesets/secondary/burgled_house_frlg/palettes/05.pal b/data/tilesets/secondary/burgled_house_frlg/palettes/05.pal
new file mode 100644
index 000000000000..0eef3df8e8fb
--- /dev/null
+++ b/data/tilesets/secondary/burgled_house_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+213 222 222
+164 180 189
+255 0 255
+131 115 74
+213 213 148
+197 189 139
+172 156 115
+148 131 90
+255 0 255
+255 0 255
+0 0 0
diff --git a/data/tilesets/secondary/burgled_house_frlg/palettes/06.pal b/data/tilesets/secondary/burgled_house_frlg/palettes/06.pal
new file mode 100644
index 000000000000..1d08ce9a2024
--- /dev/null
+++ b/data/tilesets/secondary/burgled_house_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/burgled_house_frlg/palettes/07.pal b/data/tilesets/secondary/burgled_house_frlg/palettes/07.pal
new file mode 100644
index 000000000000..c1e7c3d5c579
--- /dev/null
+++ b/data/tilesets/secondary/burgled_house_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
diff --git a/data/tilesets/secondary/burgled_house_frlg/palettes/08.pal b/data/tilesets/secondary/burgled_house_frlg/palettes/08.pal
new file mode 100644
index 000000000000..c1e7c3d5c579
--- /dev/null
+++ b/data/tilesets/secondary/burgled_house_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
diff --git a/data/tilesets/secondary/burgled_house_frlg/palettes/09.pal b/data/tilesets/secondary/burgled_house_frlg/palettes/09.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/burgled_house_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/burgled_house_frlg/palettes/10.pal b/data/tilesets/secondary/burgled_house_frlg/palettes/10.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/burgled_house_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/burgled_house_frlg/palettes/11.pal b/data/tilesets/secondary/burgled_house_frlg/palettes/11.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/burgled_house_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/burgled_house_frlg/palettes/12.pal b/data/tilesets/secondary/burgled_house_frlg/palettes/12.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/burgled_house_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/burgled_house_frlg/palettes/13.pal b/data/tilesets/secondary/burgled_house_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/burgled_house_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/burgled_house_frlg/palettes/14.pal b/data/tilesets/secondary/burgled_house_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/burgled_house_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/burgled_house_frlg/palettes/15.pal b/data/tilesets/secondary/burgled_house_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/burgled_house_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/burgled_house_frlg/tiles.png b/data/tilesets/secondary/burgled_house_frlg/tiles.png
new file mode 100644
index 000000000000..9fcf94314319
Binary files /dev/null and b/data/tilesets/secondary/burgled_house_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/cable_club_frlg/metatile_attributes.bin b/data/tilesets/secondary/cable_club_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..9bbdd72ef1bf
Binary files /dev/null and b/data/tilesets/secondary/cable_club_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/cable_club_frlg/metatiles.bin b/data/tilesets/secondary/cable_club_frlg/metatiles.bin
new file mode 100644
index 000000000000..0e2f2a6c3461
Binary files /dev/null and b/data/tilesets/secondary/cable_club_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/cable_club_frlg/palettes/00.pal b/data/tilesets/secondary/cable_club_frlg/palettes/00.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cable_club_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cable_club_frlg/palettes/01.pal b/data/tilesets/secondary/cable_club_frlg/palettes/01.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cable_club_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cable_club_frlg/palettes/02.pal b/data/tilesets/secondary/cable_club_frlg/palettes/02.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cable_club_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cable_club_frlg/palettes/03.pal b/data/tilesets/secondary/cable_club_frlg/palettes/03.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cable_club_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cable_club_frlg/palettes/04.pal b/data/tilesets/secondary/cable_club_frlg/palettes/04.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cable_club_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cable_club_frlg/palettes/05.pal b/data/tilesets/secondary/cable_club_frlg/palettes/05.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cable_club_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cable_club_frlg/palettes/06.pal b/data/tilesets/secondary/cable_club_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cable_club_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cable_club_frlg/palettes/07.pal b/data/tilesets/secondary/cable_club_frlg/palettes/07.pal
new file mode 100644
index 000000000000..00ca6903faef
--- /dev/null
+++ b/data/tilesets/secondary/cable_club_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+65 74 106
+255 213 131
+246 180 82
+213 148 41
+180 172 148
+148 139 123
+255 255 222
+230 230 197
+180 74 24
+213 98 49
+90 156 139
+131 197 180
+172 230 205
+156 222 115
+148 189 106
diff --git a/data/tilesets/secondary/cable_club_frlg/palettes/08.pal b/data/tilesets/secondary/cable_club_frlg/palettes/08.pal
new file mode 100644
index 000000000000..43d6db90dcd5
--- /dev/null
+++ b/data/tilesets/secondary/cable_club_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+65 74 106
+230 238 255
+213 205 246
+164 164 180
+156 197 156
+106 156 139
+246 255 255
+0 0 0
+180 74 24
+213 98 49
+123 106 164
+156 156 197
+197 197 230
+156 222 115
+148 189 106
diff --git a/data/tilesets/secondary/cable_club_frlg/palettes/09.pal b/data/tilesets/secondary/cable_club_frlg/palettes/09.pal
new file mode 100644
index 000000000000..87857607f77a
--- /dev/null
+++ b/data/tilesets/secondary/cable_club_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+65 74 106
+238 255 255
+213 222 238
+189 205 197
+156 164 172
+0 0 0
+189 139 90
+222 172 106
+246 189 115
+82 156 164
+115 197 222
+213 98 82
+246 148 131
+148 205 90
+49 131 24
diff --git a/data/tilesets/secondary/cable_club_frlg/palettes/10.pal b/data/tilesets/secondary/cable_club_frlg/palettes/10.pal
new file mode 100644
index 000000000000..ab8f75e5a1d1
--- /dev/null
+++ b/data/tilesets/secondary/cable_club_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+65 74 106
+123 123 148
+246 255 255
+205 213 213
+0 0 0
+255 123 123
+172 123 115
+139 230 98
+115 189 57
+246 230 24
+189 180 49
+148 148 246
+123 123 180
+222 222 255
+180 172 213
diff --git a/data/tilesets/secondary/cable_club_frlg/palettes/11.pal b/data/tilesets/secondary/cable_club_frlg/palettes/11.pal
new file mode 100644
index 000000000000..468d7212c795
--- /dev/null
+++ b/data/tilesets/secondary/cable_club_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+49 57 74
+172 164 255
+131 123 230
+106 98 172
+82 74 180
+82 74 98
+246 255 255
+115 172 65
+123 189 74
+148 205 90
+98 90 148
+139 156 213
+57 57 106
+148 205 90
+0 255 0
diff --git a/data/tilesets/secondary/cable_club_frlg/palettes/12.pal b/data/tilesets/secondary/cable_club_frlg/palettes/12.pal
new file mode 100644
index 000000000000..05794ac8234d
--- /dev/null
+++ b/data/tilesets/secondary/cable_club_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+65 74 106
+197 238 255
+172 205 213
+131 164 180
+123 156 180
+98 139 148
+246 255 255
+164 123 115
+180 74 24
+213 98 49
+98 139 148
+172 205 213
+197 238 255
+156 222 115
+148 189 98
diff --git a/data/tilesets/secondary/cable_club_frlg/palettes/13.pal b/data/tilesets/secondary/cable_club_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cable_club_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cable_club_frlg/palettes/14.pal b/data/tilesets/secondary/cable_club_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cable_club_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cable_club_frlg/palettes/15.pal b/data/tilesets/secondary/cable_club_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cable_club_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cable_club_frlg/tiles.png b/data/tilesets/secondary/cable_club_frlg/tiles.png
new file mode 100644
index 000000000000..f71f2943244b
Binary files /dev/null and b/data/tilesets/secondary/cable_club_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/cave_frlg/metatile_attributes.bin b/data/tilesets/secondary/cave_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..685d0d0f9379
Binary files /dev/null and b/data/tilesets/secondary/cave_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/cave_frlg/metatiles.bin b/data/tilesets/secondary/cave_frlg/metatiles.bin
new file mode 100644
index 000000000000..9f35adc11270
Binary files /dev/null and b/data/tilesets/secondary/cave_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/cave_frlg/palettes/00.pal b/data/tilesets/secondary/cave_frlg/palettes/00.pal
new file mode 100644
index 000000000000..2f3f97d6fdb7
--- /dev/null
+++ b/data/tilesets/secondary/cave_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/cave_frlg/palettes/01.pal b/data/tilesets/secondary/cave_frlg/palettes/01.pal
new file mode 100644
index 000000000000..09828f4f1f27
--- /dev/null
+++ b/data/tilesets/secondary/cave_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+123 123 131
+32 49 57
+230 238 238
+90 189 139
+90 90 115
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+123 74 74
+90 57 65
+115 205 164
diff --git a/data/tilesets/secondary/cave_frlg/palettes/02.pal b/data/tilesets/secondary/cave_frlg/palettes/02.pal
new file mode 100644
index 000000000000..6b019b884c96
--- /dev/null
+++ b/data/tilesets/secondary/cave_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/cave_frlg/palettes/03.pal b/data/tilesets/secondary/cave_frlg/palettes/03.pal
new file mode 100644
index 000000000000..ef7460f41eb6
--- /dev/null
+++ b/data/tilesets/secondary/cave_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+123 197 255
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/cave_frlg/palettes/04.pal b/data/tilesets/secondary/cave_frlg/palettes/04.pal
new file mode 100644
index 000000000000..e83c6b367a2e
--- /dev/null
+++ b/data/tilesets/secondary/cave_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+230 246 255
+189 222 255
+139 189 255
+115 164 255
+65 139 222
+57 115 205
+82 148 230
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+49 115 197
+238 230 139
+230 213 139
+213 197 106
diff --git a/data/tilesets/secondary/cave_frlg/palettes/05.pal b/data/tilesets/secondary/cave_frlg/palettes/05.pal
new file mode 100644
index 000000000000..c5a653979a01
--- /dev/null
+++ b/data/tilesets/secondary/cave_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/cave_frlg/palettes/06.pal b/data/tilesets/secondary/cave_frlg/palettes/06.pal
new file mode 100644
index 000000000000..9bad44649513
--- /dev/null
+++ b/data/tilesets/secondary/cave_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+205 230 246
+180 213 255
+123 180 246
+98 148 230
+65 123 189
+49 98 180
+82 131 222
+213 230 238
+172 189 205
+123 123 131
+90 90 115
+238 246 246
+238 230 139
+230 213 139
+213 197 106
diff --git a/data/tilesets/secondary/cave_frlg/palettes/07.pal b/data/tilesets/secondary/cave_frlg/palettes/07.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/cave_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cave_frlg/palettes/08.pal b/data/tilesets/secondary/cave_frlg/palettes/08.pal
new file mode 100644
index 000000000000..1c8d33fac57f
--- /dev/null
+++ b/data/tilesets/secondary/cave_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+189 189 156
+172 172 139
+148 139 115
+123 115 90
+32 49 57
+255 0 255
+255 0 255
+255 0 255
+222 197 189
+205 180 156
+189 148 139
+148 115 106
+115 65 74
+82 49 65
+90 90 98
diff --git a/data/tilesets/secondary/cave_frlg/palettes/09.pal b/data/tilesets/secondary/cave_frlg/palettes/09.pal
new file mode 100644
index 000000000000..3795f6c6a5ab
--- /dev/null
+++ b/data/tilesets/secondary/cave_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 222 213
+189 189 156
+172 172 139
+148 139 115
+123 115 90
+255 238 164
+230 197 139
+205 172 123
+164 123 90
+148 115 74
+106 65 41
+74 74 57
+0 0 0
+98 139 197
+74 115 172
+57 98 156
diff --git a/data/tilesets/secondary/cave_frlg/palettes/10.pal b/data/tilesets/secondary/cave_frlg/palettes/10.pal
new file mode 100644
index 000000000000..937405d15bfe
--- /dev/null
+++ b/data/tilesets/secondary/cave_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+255 0 255
+255 0 255
+255 0 255
+0 0 0
+255 238 164
+230 197 139
+205 172 123
+172 139 106
+213 197 189
+205 180 156
+189 148 139
+148 115 106
+115 65 74
+82 49 65
+90 90 98
diff --git a/data/tilesets/secondary/cave_frlg/palettes/11.pal b/data/tilesets/secondary/cave_frlg/palettes/11.pal
new file mode 100644
index 000000000000..bb4f4867c43c
--- /dev/null
+++ b/data/tilesets/secondary/cave_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+189 189 156
+172 172 139
+148 139 115
+123 115 90
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+238 222 148
+222 205 115
+205 180 98
+189 172 98
diff --git a/data/tilesets/secondary/cave_frlg/palettes/12.pal b/data/tilesets/secondary/cave_frlg/palettes/12.pal
new file mode 100644
index 000000000000..583384664faa
--- /dev/null
+++ b/data/tilesets/secondary/cave_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+0 0 0
diff --git a/data/tilesets/secondary/cave_frlg/palettes/13.pal b/data/tilesets/secondary/cave_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cave_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cave_frlg/palettes/14.pal b/data/tilesets/secondary/cave_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cave_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cave_frlg/palettes/15.pal b/data/tilesets/secondary/cave_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cave_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cave_frlg/tiles.png b/data/tilesets/secondary/cave_frlg/tiles.png
new file mode 100644
index 000000000000..8e0f64a78c11
Binary files /dev/null and b/data/tilesets/secondary/cave_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/celadon_city_frlg/anim/fountain/0.png b/data/tilesets/secondary/celadon_city_frlg/anim/fountain/0.png
new file mode 100644
index 000000000000..c5783f481655
Binary files /dev/null and b/data/tilesets/secondary/celadon_city_frlg/anim/fountain/0.png differ
diff --git a/data/tilesets/secondary/celadon_city_frlg/anim/fountain/1.png b/data/tilesets/secondary/celadon_city_frlg/anim/fountain/1.png
new file mode 100644
index 000000000000..7d1f6fb2e8bd
Binary files /dev/null and b/data/tilesets/secondary/celadon_city_frlg/anim/fountain/1.png differ
diff --git a/data/tilesets/secondary/celadon_city_frlg/anim/fountain/2.png b/data/tilesets/secondary/celadon_city_frlg/anim/fountain/2.png
new file mode 100644
index 000000000000..91b54ad6e4ec
Binary files /dev/null and b/data/tilesets/secondary/celadon_city_frlg/anim/fountain/2.png differ
diff --git a/data/tilesets/secondary/celadon_city_frlg/anim/fountain/3.png b/data/tilesets/secondary/celadon_city_frlg/anim/fountain/3.png
new file mode 100644
index 000000000000..45f2e40ade33
Binary files /dev/null and b/data/tilesets/secondary/celadon_city_frlg/anim/fountain/3.png differ
diff --git a/data/tilesets/secondary/celadon_city_frlg/anim/fountain/4.png b/data/tilesets/secondary/celadon_city_frlg/anim/fountain/4.png
new file mode 100644
index 000000000000..dd9a94d479ee
Binary files /dev/null and b/data/tilesets/secondary/celadon_city_frlg/anim/fountain/4.png differ
diff --git a/data/tilesets/secondary/celadon_city_frlg/metatile_attributes.bin b/data/tilesets/secondary/celadon_city_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..c03afc9b34dc
Binary files /dev/null and b/data/tilesets/secondary/celadon_city_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/celadon_city_frlg/metatiles.bin b/data/tilesets/secondary/celadon_city_frlg/metatiles.bin
new file mode 100644
index 000000000000..3bfb9d239716
Binary files /dev/null and b/data/tilesets/secondary/celadon_city_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/celadon_city_frlg/palettes/00.pal b/data/tilesets/secondary/celadon_city_frlg/palettes/00.pal
new file mode 100644
index 000000000000..7af5bb7d2167
--- /dev/null
+++ b/data/tilesets/secondary/celadon_city_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 82 0
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/celadon_city_frlg/palettes/01.pal b/data/tilesets/secondary/celadon_city_frlg/palettes/01.pal
new file mode 100644
index 000000000000..391d1e3d17b8
--- /dev/null
+++ b/data/tilesets/secondary/celadon_city_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 189 164
+189 148 139
+156 115 115
+123 82 82
+90 57 74
+115 205 164
diff --git a/data/tilesets/secondary/celadon_city_frlg/palettes/02.pal b/data/tilesets/secondary/celadon_city_frlg/palettes/02.pal
new file mode 100644
index 000000000000..6b019b884c96
--- /dev/null
+++ b/data/tilesets/secondary/celadon_city_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/celadon_city_frlg/palettes/03.pal b/data/tilesets/secondary/celadon_city_frlg/palettes/03.pal
new file mode 100644
index 000000000000..973765509c44
--- /dev/null
+++ b/data/tilesets/secondary/celadon_city_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/celadon_city_frlg/palettes/04.pal b/data/tilesets/secondary/celadon_city_frlg/palettes/04.pal
new file mode 100644
index 000000000000..702db8a907c6
--- /dev/null
+++ b/data/tilesets/secondary/celadon_city_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 222 172
+189 189 139
+156 156 106
+115 115 65
+255 255 213
+255 238 180
+238 222 156
+172 197 197
+148 189 189
+123 180 180
+230 246 255
+189 222 222
+172 213 222
+148 205 205
+255 255 255
diff --git a/data/tilesets/secondary/celadon_city_frlg/palettes/05.pal b/data/tilesets/secondary/celadon_city_frlg/palettes/05.pal
new file mode 100644
index 000000000000..3a2db72a7f32
--- /dev/null
+++ b/data/tilesets/secondary/celadon_city_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+222 205 131
+205 180 106
+180 139 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/celadon_city_frlg/palettes/06.pal b/data/tilesets/secondary/celadon_city_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/celadon_city_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/celadon_city_frlg/palettes/07.pal b/data/tilesets/secondary/celadon_city_frlg/palettes/07.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/celadon_city_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/celadon_city_frlg/palettes/08.pal b/data/tilesets/secondary/celadon_city_frlg/palettes/08.pal
new file mode 100644
index 000000000000..86930c1d1c71
--- /dev/null
+++ b/data/tilesets/secondary/celadon_city_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+255 255 255
+222 222 230
+123 123 131
+82 82 106
+197 238 255
+172 213 255
+123 164 222
+98 139 189
+246 230 139
+197 180 115
+172 156 90
+123 164 189
+148 189 238
+255 205 139
+230 131 115
diff --git a/data/tilesets/secondary/celadon_city_frlg/palettes/09.pal b/data/tilesets/secondary/celadon_city_frlg/palettes/09.pal
new file mode 100644
index 000000000000..5dc82505a838
--- /dev/null
+++ b/data/tilesets/secondary/celadon_city_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+255 255 255
+222 222 230
+123 123 131
+82 82 106
+197 197 205
+255 213 164
+222 123 82
+189 90 57
+189 230 222
+131 189 164
+106 148 139
+246 238 189
+222 213 156
+213 189 123
+197 180 106
diff --git a/data/tilesets/secondary/celadon_city_frlg/palettes/10.pal b/data/tilesets/secondary/celadon_city_frlg/palettes/10.pal
new file mode 100644
index 000000000000..361b133e676d
--- /dev/null
+++ b/data/tilesets/secondary/celadon_city_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+255 255 255
+222 222 230
+123 123 131
+82 82 106
+238 230 255
+222 197 255
+180 148 222
+131 106 172
+255 0 255
+115 189 246
+74 148 205
+41 115 172
+148 164 180
+246 238 148
+213 172 74
diff --git a/data/tilesets/secondary/celadon_city_frlg/palettes/11.pal b/data/tilesets/secondary/celadon_city_frlg/palettes/11.pal
new file mode 100644
index 000000000000..00caf8dfcc6b
--- /dev/null
+++ b/data/tilesets/secondary/celadon_city_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 255 255
+180 205 213
+148 164 180
+123 123 131
+82 82 106
+205 222 238
+197 213 222
+164 180 197
+222 180 82
+230 238 238
+255 205 139
+222 106 98
+197 74 65
+98 189 148
+115 205 164
diff --git a/data/tilesets/secondary/celadon_city_frlg/palettes/12.pal b/data/tilesets/secondary/celadon_city_frlg/palettes/12.pal
new file mode 100644
index 000000000000..4257575aec41
--- /dev/null
+++ b/data/tilesets/secondary/celadon_city_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+213 222 164
+180 189 131
+139 148 90
+123 123 131
+90 90 115
+65 74 106
+180 148 222
+131 106 172
+189 230 222
+148 205 180
+115 172 148
+106 148 139
+74 115 106
+115 205 164
diff --git a/data/tilesets/secondary/celadon_city_frlg/palettes/13.pal b/data/tilesets/secondary/celadon_city_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/celadon_city_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/celadon_city_frlg/palettes/14.pal b/data/tilesets/secondary/celadon_city_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/celadon_city_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/celadon_city_frlg/palettes/15.pal b/data/tilesets/secondary/celadon_city_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/celadon_city_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/celadon_city_frlg/tiles.png b/data/tilesets/secondary/celadon_city_frlg/tiles.png
new file mode 100644
index 000000000000..db18cb938e59
Binary files /dev/null and b/data/tilesets/secondary/celadon_city_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/celadon_gym_frlg/anim/flowers/0.png b/data/tilesets/secondary/celadon_gym_frlg/anim/flowers/0.png
new file mode 100644
index 000000000000..eabff7d8ad78
Binary files /dev/null and b/data/tilesets/secondary/celadon_gym_frlg/anim/flowers/0.png differ
diff --git a/data/tilesets/secondary/celadon_gym_frlg/anim/flowers/1.png b/data/tilesets/secondary/celadon_gym_frlg/anim/flowers/1.png
new file mode 100644
index 000000000000..fd9eb53f7327
Binary files /dev/null and b/data/tilesets/secondary/celadon_gym_frlg/anim/flowers/1.png differ
diff --git a/data/tilesets/secondary/celadon_gym_frlg/anim/flowers/2.png b/data/tilesets/secondary/celadon_gym_frlg/anim/flowers/2.png
new file mode 100644
index 000000000000..a3edd7ccd77e
Binary files /dev/null and b/data/tilesets/secondary/celadon_gym_frlg/anim/flowers/2.png differ
diff --git a/data/tilesets/secondary/celadon_gym_frlg/metatile_attributes.bin b/data/tilesets/secondary/celadon_gym_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..b67cf87721a2
Binary files /dev/null and b/data/tilesets/secondary/celadon_gym_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/celadon_gym_frlg/metatiles.bin b/data/tilesets/secondary/celadon_gym_frlg/metatiles.bin
new file mode 100644
index 000000000000..f3f58a44dd16
Binary files /dev/null and b/data/tilesets/secondary/celadon_gym_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/celadon_gym_frlg/palettes/00.pal b/data/tilesets/secondary/celadon_gym_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/celadon_gym_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/celadon_gym_frlg/palettes/01.pal b/data/tilesets/secondary/celadon_gym_frlg/palettes/01.pal
new file mode 100644
index 000000000000..69f3f0b9e6e1
--- /dev/null
+++ b/data/tilesets/secondary/celadon_gym_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+180 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+255 230 156
+222 213 230
+238 246 238
diff --git a/data/tilesets/secondary/celadon_gym_frlg/palettes/02.pal b/data/tilesets/secondary/celadon_gym_frlg/palettes/02.pal
new file mode 100644
index 000000000000..330e35b020a6
--- /dev/null
+++ b/data/tilesets/secondary/celadon_gym_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+139 197 139
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+213 131 82
+156 205 246
+98 156 238
+57 123 222
+222 139 106
+189 98 74
diff --git a/data/tilesets/secondary/celadon_gym_frlg/palettes/03.pal b/data/tilesets/secondary/celadon_gym_frlg/palettes/03.pal
new file mode 100644
index 000000000000..eac8236f17e2
--- /dev/null
+++ b/data/tilesets/secondary/celadon_gym_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+148 148 148
+180 180 180
+255 255 255
+238 246 238
+222 238 222
+197 205 197
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/celadon_gym_frlg/palettes/04.pal b/data/tilesets/secondary/celadon_gym_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/celadon_gym_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/celadon_gym_frlg/palettes/05.pal b/data/tilesets/secondary/celadon_gym_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/celadon_gym_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/celadon_gym_frlg/palettes/06.pal b/data/tilesets/secondary/celadon_gym_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/celadon_gym_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/celadon_gym_frlg/palettes/07.pal b/data/tilesets/secondary/celadon_gym_frlg/palettes/07.pal
new file mode 100644
index 000000000000..9d84ecaba099
--- /dev/null
+++ b/data/tilesets/secondary/celadon_gym_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+139 139 148
+74 156 90
+65 139 139
+115 205 90
+148 238 74
+189 255 98
+156 131 82
+197 115 123
+255 164 123
+238 238 172
+82 115 82
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/celadon_gym_frlg/palettes/08.pal b/data/tilesets/secondary/celadon_gym_frlg/palettes/08.pal
new file mode 100644
index 000000000000..085c4934413d
--- /dev/null
+++ b/data/tilesets/secondary/celadon_gym_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+139 139 148
+222 213 246
+238 238 255
+123 156 246
+106 197 255
+131 222 255
+156 230 255
+115 90 98
+189 115 131
+246 189 115
+222 189 246
+255 230 115
+90 98 213
+255 172 197
diff --git a/data/tilesets/secondary/celadon_gym_frlg/palettes/09.pal b/data/tilesets/secondary/celadon_gym_frlg/palettes/09.pal
new file mode 100644
index 000000000000..9020b628fbb0
--- /dev/null
+++ b/data/tilesets/secondary/celadon_gym_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+156 131 57
+213 197 106
+246 238 148
+213 222 238
+222 230 255
+41 106 82
+57 131 115
+172 131 115
+197 156 148
+238 180 164
+180 139 123
diff --git a/data/tilesets/secondary/celadon_gym_frlg/palettes/10.pal b/data/tilesets/secondary/celadon_gym_frlg/palettes/10.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/celadon_gym_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/celadon_gym_frlg/palettes/11.pal b/data/tilesets/secondary/celadon_gym_frlg/palettes/11.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/celadon_gym_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/celadon_gym_frlg/palettes/12.pal b/data/tilesets/secondary/celadon_gym_frlg/palettes/12.pal
new file mode 100644
index 000000000000..041512724fa0
--- /dev/null
+++ b/data/tilesets/secondary/celadon_gym_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+41 123 123
+41 156 156
+49 189 172
+65 230 189
+65 246 230
+106 90 74
+131 106 74
+156 131 65
+172 156 74
+172 156 106
+205 180 106
+222 205 98
+230 222 106
diff --git a/data/tilesets/secondary/celadon_gym_frlg/palettes/13.pal b/data/tilesets/secondary/celadon_gym_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/celadon_gym_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/celadon_gym_frlg/palettes/14.pal b/data/tilesets/secondary/celadon_gym_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/celadon_gym_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/celadon_gym_frlg/palettes/15.pal b/data/tilesets/secondary/celadon_gym_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/celadon_gym_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/celadon_gym_frlg/tiles.png b/data/tilesets/secondary/celadon_gym_frlg/tiles.png
new file mode 100644
index 000000000000..ef08ccc83a6b
Binary files /dev/null and b/data/tilesets/secondary/celadon_gym_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/metatile_attributes.bin b/data/tilesets/secondary/cerulean_cave_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..8b165df4656c
Binary files /dev/null and b/data/tilesets/secondary/cerulean_cave_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/metatiles.bin b/data/tilesets/secondary/cerulean_cave_frlg/metatiles.bin
new file mode 100644
index 000000000000..249addbc7aad
Binary files /dev/null and b/data/tilesets/secondary/cerulean_cave_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/palettes/00.pal b/data/tilesets/secondary/cerulean_cave_frlg/palettes/00.pal
new file mode 100644
index 000000000000..a3fab1c2fb12
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_cave_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/palettes/01.pal b/data/tilesets/secondary/cerulean_cave_frlg/palettes/01.pal
new file mode 100644
index 000000000000..d8a4e7757d1b
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_cave_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+115 65 74
+82 49 65
+115 205 164
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/palettes/02.pal b/data/tilesets/secondary/cerulean_cave_frlg/palettes/02.pal
new file mode 100644
index 000000000000..6b019b884c96
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_cave_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/palettes/03.pal b/data/tilesets/secondary/cerulean_cave_frlg/palettes/03.pal
new file mode 100644
index 000000000000..205c464c79d6
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_cave_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/palettes/04.pal b/data/tilesets/secondary/cerulean_cave_frlg/palettes/04.pal
new file mode 100644
index 000000000000..702db8a907c6
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_cave_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 222 172
+189 189 139
+156 156 106
+115 115 65
+255 255 213
+255 238 180
+238 222 156
+172 197 197
+148 189 189
+123 180 180
+230 246 255
+189 222 222
+172 213 222
+148 205 205
+255 255 255
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/palettes/05.pal b/data/tilesets/secondary/cerulean_cave_frlg/palettes/05.pal
new file mode 100644
index 000000000000..c5a653979a01
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_cave_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/palettes/06.pal b/data/tilesets/secondary/cerulean_cave_frlg/palettes/06.pal
new file mode 100644
index 000000000000..995731c23cc0
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_cave_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/palettes/07.pal b/data/tilesets/secondary/cerulean_cave_frlg/palettes/07.pal
new file mode 100644
index 000000000000..995731c23cc0
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_cave_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/palettes/08.pal b/data/tilesets/secondary/cerulean_cave_frlg/palettes/08.pal
new file mode 100644
index 000000000000..db2216a0522c
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_cave_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+197 205 222
+172 180 197
+156 164 180
+115 123 139
+148 156 164
+255 0 255
+255 0 255
+255 0 255
+205 246 172
+172 213 148
+139 180 131
+115 156 106
+82 123 90
+57 98 74
+65 65 74
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/palettes/09.pal b/data/tilesets/secondary/cerulean_cave_frlg/palettes/09.pal
new file mode 100644
index 000000000000..c1a5d4f29fd0
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_cave_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+197 205 222
+197 205 222
+172 180 197
+156 164 180
+115 123 139
+255 246 164
+205 189 106
+156 131 57
+82 74 32
+90 106 115
+255 0 255
+65 65 74
+16 16 24
+98 139 197
+74 115 172
+57 98 156
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/palettes/10.pal b/data/tilesets/secondary/cerulean_cave_frlg/palettes/10.pal
new file mode 100644
index 000000000000..eb9198b0a7d1
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_cave_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+255 0 255
+255 0 255
+255 0 255
+0 0 0
+255 238 180
+230 205 164
+189 180 164
+172 164 156
+205 246 172
+172 213 148
+139 180 131
+115 156 106
+82 123 90
+57 98 74
+65 65 74
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/palettes/11.pal b/data/tilesets/secondary/cerulean_cave_frlg/palettes/11.pal
new file mode 100644
index 000000000000..9afe8750dac5
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_cave_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+197 205 222
+172 180 197
+156 164 180
+115 123 139
+148 156 164
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+123 189 156
+106 156 139
+98 123 123
+90 98 115
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/palettes/12.pal b/data/tilesets/secondary/cerulean_cave_frlg/palettes/12.pal
new file mode 100644
index 000000000000..aced117f7925
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_cave_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+197 205 222
+197 205 222
+172 180 197
+156 164 180
+115 123 139
+238 238 164
+205 205 106
+172 172 90
+123 131 74
+115 123 139
+82 90 32
+65 65 74
+16 16 24
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/palettes/13.pal b/data/tilesets/secondary/cerulean_cave_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_cave_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/palettes/14.pal b/data/tilesets/secondary/cerulean_cave_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_cave_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/palettes/15.pal b/data/tilesets/secondary/cerulean_cave_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_cave_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_cave_frlg/tiles.png b/data/tilesets/secondary/cerulean_cave_frlg/tiles.png
new file mode 100644
index 000000000000..d53a0cf177b2
Binary files /dev/null and b/data/tilesets/secondary/cerulean_cave_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/cerulean_city_frlg/metatile_attributes.bin b/data/tilesets/secondary/cerulean_city_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..6f93e29fdea7
Binary files /dev/null and b/data/tilesets/secondary/cerulean_city_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/cerulean_city_frlg/metatiles.bin b/data/tilesets/secondary/cerulean_city_frlg/metatiles.bin
new file mode 100644
index 000000000000..b810e799635b
Binary files /dev/null and b/data/tilesets/secondary/cerulean_city_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/cerulean_city_frlg/palettes/00.pal b/data/tilesets/secondary/cerulean_city_frlg/palettes/00.pal
new file mode 100644
index 000000000000..2f3f97d6fdb7
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_city_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/cerulean_city_frlg/palettes/01.pal b/data/tilesets/secondary/cerulean_city_frlg/palettes/01.pal
new file mode 100644
index 000000000000..31a636983fba
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_city_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+115 65 74
+82 49 65
+115 205 164
diff --git a/data/tilesets/secondary/cerulean_city_frlg/palettes/02.pal b/data/tilesets/secondary/cerulean_city_frlg/palettes/02.pal
new file mode 100644
index 000000000000..372fb5d7c3b6
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_city_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/cerulean_city_frlg/palettes/03.pal b/data/tilesets/secondary/cerulean_city_frlg/palettes/03.pal
new file mode 100644
index 000000000000..973765509c44
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_city_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/cerulean_city_frlg/palettes/04.pal b/data/tilesets/secondary/cerulean_city_frlg/palettes/04.pal
new file mode 100644
index 000000000000..91fdcabdf97f
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_city_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+213 238 255
+172 205 255
+139 180 238
+106 156 230
+74 139 189
+65 123 189
+82 139 205
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+49 115 172
+238 230 139
+230 213 139
+213 197 106
diff --git a/data/tilesets/secondary/cerulean_city_frlg/palettes/05.pal b/data/tilesets/secondary/cerulean_city_frlg/palettes/05.pal
new file mode 100644
index 000000000000..0edb843f52fb
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_city_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/cerulean_city_frlg/palettes/06.pal b/data/tilesets/secondary/cerulean_city_frlg/palettes/06.pal
new file mode 100644
index 000000000000..f8ebbc6dc2bd
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_city_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+213 238 255
+172 205 255
+139 180 238
+106 156 230
+65 123 172
+41 98 156
+74 115 197
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+49 115 172
+238 230 139
+230 213 139
+213 197 106
diff --git a/data/tilesets/secondary/cerulean_city_frlg/palettes/07.pal b/data/tilesets/secondary/cerulean_city_frlg/palettes/07.pal
new file mode 100644
index 000000000000..93518605a9ef
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_city_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
diff --git a/data/tilesets/secondary/cerulean_city_frlg/palettes/08.pal b/data/tilesets/secondary/cerulean_city_frlg/palettes/08.pal
new file mode 100644
index 000000000000..ae3dd3f0d64e
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_city_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+90 139 164
+115 164 189
+139 189 213
+172 222 238
+139 197 98
+156 222 106
+189 230 139
+222 205 172
+246 230 189
+255 246 213
+164 164 180
+82 82 106
+123 123 139
+205 205 222
+255 255 255
diff --git a/data/tilesets/secondary/cerulean_city_frlg/palettes/09.pal b/data/tilesets/secondary/cerulean_city_frlg/palettes/09.pal
new file mode 100644
index 000000000000..3ed18e08fdc4
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_city_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+180 106 90
+222 180 65
+238 164 156
+246 238 131
+230 205 98
+205 131 123
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+164 164 180
+82 82 106
+123 123 139
+205 205 222
+255 255 255
diff --git a/data/tilesets/secondary/cerulean_city_frlg/palettes/10.pal b/data/tilesets/secondary/cerulean_city_frlg/palettes/10.pal
new file mode 100644
index 000000000000..536972f8fbf9
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_city_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+255 238 197
+222 205 172
+180 164 123
+123 123 131
+90 90 115
+65 74 106
+123 180 222
+180 222 255
+255 213 164
+230 189 82
+213 164 57
+205 139 32
+172 90 16
+115 205 164
diff --git a/data/tilesets/secondary/cerulean_city_frlg/palettes/11.pal b/data/tilesets/secondary/cerulean_city_frlg/palettes/11.pal
new file mode 100644
index 000000000000..986335b745a2
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_city_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+255 238 197
+222 205 172
+180 164 123
+123 123 131
+90 90 115
+65 74 106
+230 222 131
+189 180 82
+180 230 172
+139 213 131
+106 180 106
+90 164 90
+57 131 65
+115 205 164
diff --git a/data/tilesets/secondary/cerulean_city_frlg/palettes/12.pal b/data/tilesets/secondary/cerulean_city_frlg/palettes/12.pal
new file mode 100644
index 000000000000..c44bc32b5ed0
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_city_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+238 222 180
+205 189 156
+180 164 123
+123 123 131
+90 90 115
+65 74 106
+139 197 98
+106 164 65
+172 222 238
+148 197 213
+115 164 189
+90 139 164
+74 123 148
+115 205 164
diff --git a/data/tilesets/secondary/cerulean_city_frlg/palettes/13.pal b/data/tilesets/secondary/cerulean_city_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_city_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_city_frlg/palettes/14.pal b/data/tilesets/secondary/cerulean_city_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_city_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_city_frlg/palettes/15.pal b/data/tilesets/secondary/cerulean_city_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_city_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_city_frlg/tiles.png b/data/tilesets/secondary/cerulean_city_frlg/tiles.png
new file mode 100644
index 000000000000..737d3dd7fbe6
Binary files /dev/null and b/data/tilesets/secondary/cerulean_city_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/metatile_attributes.bin b/data/tilesets/secondary/cerulean_gym_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..03770d28c566
Binary files /dev/null and b/data/tilesets/secondary/cerulean_gym_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/metatiles.bin b/data/tilesets/secondary/cerulean_gym_frlg/metatiles.bin
new file mode 100644
index 000000000000..c026eb65a14a
Binary files /dev/null and b/data/tilesets/secondary/cerulean_gym_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/palettes/00.pal b/data/tilesets/secondary/cerulean_gym_frlg/palettes/00.pal
new file mode 100644
index 000000000000..4b44e19f441b
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_gym_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+205 156 156
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/palettes/01.pal b/data/tilesets/secondary/cerulean_gym_frlg/palettes/01.pal
new file mode 100644
index 000000000000..a39ca6aa86b7
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_gym_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+205 156 156
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/palettes/02.pal b/data/tilesets/secondary/cerulean_gym_frlg/palettes/02.pal
new file mode 100644
index 000000000000..5a4f127be79c
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_gym_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+205 156 156
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+106 197 106
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/palettes/03.pal b/data/tilesets/secondary/cerulean_gym_frlg/palettes/03.pal
new file mode 100644
index 000000000000..c84fa4a58be0
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_gym_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+205 156 156
+82 82 106
+131 131 139
+172 172 164
+255 255 255
+230 180 74
+255 246 131
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+164 164 172
+205 205 213
+238 238 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/palettes/04.pal b/data/tilesets/secondary/cerulean_gym_frlg/palettes/04.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_gym_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/palettes/05.pal b/data/tilesets/secondary/cerulean_gym_frlg/palettes/05.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_gym_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/palettes/06.pal b/data/tilesets/secondary/cerulean_gym_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_gym_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/palettes/07.pal b/data/tilesets/secondary/cerulean_gym_frlg/palettes/07.pal
new file mode 100644
index 000000000000..aac016a72f80
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_gym_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+156 205 246
+98 156 238
+0 0 0
+0 0 0
+123 164 172
+148 189 197
+172 205 213
+205 222 230
+98 123 148
+123 148 172
+148 172 197
+98 98 123
+148 139 131
+222 205 213
+255 255 255
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/palettes/08.pal b/data/tilesets/secondary/cerulean_gym_frlg/palettes/08.pal
new file mode 100644
index 000000000000..c06a049b0e5c
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_gym_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/palettes/09.pal b/data/tilesets/secondary/cerulean_gym_frlg/palettes/09.pal
new file mode 100644
index 000000000000..c06a049b0e5c
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_gym_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/palettes/10.pal b/data/tilesets/secondary/cerulean_gym_frlg/palettes/10.pal
new file mode 100644
index 000000000000..c06a049b0e5c
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_gym_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/palettes/11.pal b/data/tilesets/secondary/cerulean_gym_frlg/palettes/11.pal
new file mode 100644
index 000000000000..c06a049b0e5c
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_gym_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/palettes/12.pal b/data/tilesets/secondary/cerulean_gym_frlg/palettes/12.pal
new file mode 100644
index 000000000000..419c00911ab7
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_gym_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+123 164 172
+222 189 172
+246 213 189
+246 230 180
+255 246 213
+164 189 213
+189 205 230
+222 230 246
+98 123 148
+123 148 172
+148 172 197
+98 98 123
+148 139 131
+205 189 197
+255 255 255
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/palettes/13.pal b/data/tilesets/secondary/cerulean_gym_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_gym_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/palettes/14.pal b/data/tilesets/secondary/cerulean_gym_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_gym_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/palettes/15.pal b/data/tilesets/secondary/cerulean_gym_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cerulean_gym_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cerulean_gym_frlg/tiles.png b/data/tilesets/secondary/cerulean_gym_frlg/tiles.png
new file mode 100644
index 000000000000..44b7c0c34c70
Binary files /dev/null and b/data/tilesets/secondary/cerulean_gym_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/metatile_attributes.bin b/data/tilesets/secondary/cinnabar_gym_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..d7293b0b8484
Binary files /dev/null and b/data/tilesets/secondary/cinnabar_gym_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/metatiles.bin b/data/tilesets/secondary/cinnabar_gym_frlg/metatiles.bin
new file mode 100644
index 000000000000..7a5532619872
Binary files /dev/null and b/data/tilesets/secondary/cinnabar_gym_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/palettes/00.pal b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/palettes/01.pal b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/01.pal
new file mode 100644
index 000000000000..69f3f0b9e6e1
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+180 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+255 230 156
+222 213 230
+238 246 238
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/palettes/02.pal b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/02.pal
new file mode 100644
index 000000000000..330e35b020a6
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+139 197 139
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+213 131 82
+156 205 246
+98 156 238
+57 123 222
+222 139 106
+189 98 74
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/palettes/03.pal b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/03.pal
new file mode 100644
index 000000000000..eac8236f17e2
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+148 148 148
+180 180 180
+255 255 255
+238 246 238
+222 238 222
+197 205 197
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/palettes/04.pal b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/palettes/05.pal b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/palettes/06.pal b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/palettes/07.pal b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/07.pal
new file mode 100644
index 000000000000..5b659ef1be5b
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+139 139 148
+180 156 172
+205 189 189
+230 222 189
+90 115 90
+131 197 115
+205 238 115
+123 82 74
+180 98 98
+255 139 74
+238 246 172
+255 230 74
+106 90 82
+255 0 255
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/palettes/08.pal b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/08.pal
new file mode 100644
index 000000000000..f5a4ee6780d5
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+139 139 148
+205 189 189
+246 246 255
+148 131 180
+205 189 230
+123 98 255
+82 172 148
+255 98 98
+90 115 90
+131 197 115
+205 238 115
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/palettes/09.pal b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/09.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/palettes/10.pal b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/10.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/palettes/11.pal b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/11.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/palettes/12.pal b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/12.pal
new file mode 100644
index 000000000000..3f9aa94d67a2
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+106 90 82
+148 115 82
+172 131 90
+213 172 90
+230 180 90
+164 90 172
+197 115 205
+230 148 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/palettes/13.pal b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/palettes/14.pal b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/palettes/15.pal b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/15.pal
new file mode 100644
index 000000000000..92e7ed30983d
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_gym_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+0 0 0
diff --git a/data/tilesets/secondary/cinnabar_gym_frlg/tiles.png b/data/tilesets/secondary/cinnabar_gym_frlg/tiles.png
new file mode 100644
index 000000000000..213799158f7d
Binary files /dev/null and b/data/tilesets/secondary/cinnabar_gym_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/metatile_attributes.bin b/data/tilesets/secondary/cinnabar_island_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..2785a3aabecc
Binary files /dev/null and b/data/tilesets/secondary/cinnabar_island_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/metatiles.bin b/data/tilesets/secondary/cinnabar_island_frlg/metatiles.bin
new file mode 100644
index 000000000000..0abe4b18dc7a
Binary files /dev/null and b/data/tilesets/secondary/cinnabar_island_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/palettes/00.pal b/data/tilesets/secondary/cinnabar_island_frlg/palettes/00.pal
new file mode 100644
index 000000000000..9dcb673aaf75
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_island_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+189 255 139
+131 213 98
+57 148 49
+57 82 0
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/palettes/01.pal b/data/tilesets/secondary/cinnabar_island_frlg/palettes/01.pal
new file mode 100644
index 000000000000..391d1e3d17b8
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_island_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 189 164
+189 148 139
+156 115 115
+123 82 82
+90 57 74
+115 205 164
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/palettes/02.pal b/data/tilesets/secondary/cinnabar_island_frlg/palettes/02.pal
new file mode 100644
index 000000000000..6b019b884c96
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_island_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/palettes/03.pal b/data/tilesets/secondary/cinnabar_island_frlg/palettes/03.pal
new file mode 100644
index 000000000000..205c464c79d6
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_island_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/palettes/04.pal b/data/tilesets/secondary/cinnabar_island_frlg/palettes/04.pal
new file mode 100644
index 000000000000..702db8a907c6
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_island_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 222 172
+189 189 139
+156 156 106
+115 115 65
+255 255 213
+255 238 180
+238 222 156
+172 197 197
+148 189 189
+123 180 180
+230 246 255
+189 222 222
+172 213 222
+148 205 205
+255 255 255
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/palettes/05.pal b/data/tilesets/secondary/cinnabar_island_frlg/palettes/05.pal
new file mode 100644
index 000000000000..3a2db72a7f32
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_island_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+222 205 131
+205 180 106
+180 139 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/palettes/06.pal b/data/tilesets/secondary/cinnabar_island_frlg/palettes/06.pal
new file mode 100644
index 000000000000..93518605a9ef
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_island_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/palettes/07.pal b/data/tilesets/secondary/cinnabar_island_frlg/palettes/07.pal
new file mode 100644
index 000000000000..93518605a9ef
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_island_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/palettes/08.pal b/data/tilesets/secondary/cinnabar_island_frlg/palettes/08.pal
new file mode 100644
index 000000000000..f734cd1666d5
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_island_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+139 82 57
+164 106 82
+205 148 123
+222 164 139
+172 189 238
+213 222 246
+156 131 90
+189 164 115
+222 205 156
+255 238 189
+164 164 180
+82 82 106
+123 123 139
+205 205 222
+255 255 255
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/palettes/09.pal b/data/tilesets/secondary/cinnabar_island_frlg/palettes/09.pal
new file mode 100644
index 000000000000..ca26d1b0806e
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_island_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+255 255 246
+230 230 189
+197 197 156
+172 172 131
+123 123 82
+65 74 106
+123 123 131
+123 123 131
+98 164 222
+74 131 197
+139 222 189
+106 189 156
+106 189 156
+74 156 123
+90 90 115
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/palettes/10.pal b/data/tilesets/secondary/cinnabar_island_frlg/palettes/10.pal
new file mode 100644
index 000000000000..608bbc2cf85b
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_island_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/palettes/11.pal b/data/tilesets/secondary/cinnabar_island_frlg/palettes/11.pal
new file mode 100644
index 000000000000..608bbc2cf85b
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_island_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/palettes/12.pal b/data/tilesets/secondary/cinnabar_island_frlg/palettes/12.pal
new file mode 100644
index 000000000000..608bbc2cf85b
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_island_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/palettes/13.pal b/data/tilesets/secondary/cinnabar_island_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_island_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/palettes/14.pal b/data/tilesets/secondary/cinnabar_island_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_island_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/palettes/15.pal b/data/tilesets/secondary/cinnabar_island_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/cinnabar_island_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/cinnabar_island_frlg/tiles.png b/data/tilesets/secondary/cinnabar_island_frlg/tiles.png
new file mode 100644
index 000000000000..ddb9ad0cbb73
Binary files /dev/null and b/data/tilesets/secondary/cinnabar_island_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/condominiums_frlg/metatile_attributes.bin b/data/tilesets/secondary/condominiums_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..0f542bc5bfb2
Binary files /dev/null and b/data/tilesets/secondary/condominiums_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/condominiums_frlg/metatiles.bin b/data/tilesets/secondary/condominiums_frlg/metatiles.bin
new file mode 100644
index 000000000000..117c036fa8fa
Binary files /dev/null and b/data/tilesets/secondary/condominiums_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/condominiums_frlg/palettes/00.pal b/data/tilesets/secondary/condominiums_frlg/palettes/00.pal
new file mode 100644
index 000000000000..5867e5ba690d
--- /dev/null
+++ b/data/tilesets/secondary/condominiums_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+156 213 255
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/condominiums_frlg/palettes/01.pal b/data/tilesets/secondary/condominiums_frlg/palettes/01.pal
new file mode 100644
index 000000000000..66561f6d3326
--- /dev/null
+++ b/data/tilesets/secondary/condominiums_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+139 180 222
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/condominiums_frlg/palettes/02.pal b/data/tilesets/secondary/condominiums_frlg/palettes/02.pal
new file mode 100644
index 000000000000..87a022102f19
--- /dev/null
+++ b/data/tilesets/secondary/condominiums_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+197 189 213
+255 255 255
+106 197 106
+230 213 123
+255 205 90
+255 238 197
+90 90 115
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/condominiums_frlg/palettes/03.pal b/data/tilesets/secondary/condominiums_frlg/palettes/03.pal
new file mode 100644
index 000000000000..783496dcd9bf
--- /dev/null
+++ b/data/tilesets/secondary/condominiums_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 180 74
+255 246 131
+65 98 156
+90 123 180
+115 156 197
+222 213 131
+164 164 172
+205 205 213
+238 238 246
+106 172 115
+156 205 139
diff --git a/data/tilesets/secondary/condominiums_frlg/palettes/04.pal b/data/tilesets/secondary/condominiums_frlg/palettes/04.pal
new file mode 100644
index 000000000000..89eace6050ad
--- /dev/null
+++ b/data/tilesets/secondary/condominiums_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 238 246
+172 197 180
+197 222 205
+90 189 172
+246 238 156
+205 189 131
+189 164 123
+148 131 106
+106 106 106
+213 222 230
+238 180 115
diff --git a/data/tilesets/secondary/condominiums_frlg/palettes/05.pal b/data/tilesets/secondary/condominiums_frlg/palettes/05.pal
new file mode 100644
index 000000000000..c7780e5c7515
--- /dev/null
+++ b/data/tilesets/secondary/condominiums_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+213 222 222
+164 180 189
+255 0 255
+131 115 74
+213 213 148
+197 189 139
+172 156 115
+148 131 90
+197 197 205
+205 82 65
+0 0 0
diff --git a/data/tilesets/secondary/condominiums_frlg/palettes/06.pal b/data/tilesets/secondary/condominiums_frlg/palettes/06.pal
new file mode 100644
index 000000000000..1d08ce9a2024
--- /dev/null
+++ b/data/tilesets/secondary/condominiums_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/condominiums_frlg/palettes/07.pal b/data/tilesets/secondary/condominiums_frlg/palettes/07.pal
new file mode 100644
index 000000000000..35987db53279
--- /dev/null
+++ b/data/tilesets/secondary/condominiums_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+139 139 148
+180 180 164
+255 255 255
+205 197 106
+246 238 148
+255 255 222
+98 98 123
+238 238 238
+82 222 123
+131 255 164
+82 164 57
+230 139 98
+189 98 74
+213 213 213
diff --git a/data/tilesets/secondary/condominiums_frlg/palettes/08.pal b/data/tilesets/secondary/condominiums_frlg/palettes/08.pal
new file mode 100644
index 000000000000..7f33e006f849
--- /dev/null
+++ b/data/tilesets/secondary/condominiums_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+148 148 164
+180 180 164
+255 255 255
+213 213 213
+106 156 164
+131 189 197
+172 222 230
+238 180 222
+180 115 164
+213 213 180
+255 0 255
+156 205 246
+98 156 238
diff --git a/data/tilesets/secondary/condominiums_frlg/palettes/09.pal b/data/tilesets/secondary/condominiums_frlg/palettes/09.pal
new file mode 100644
index 000000000000..75022050dcb6
--- /dev/null
+++ b/data/tilesets/secondary/condominiums_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+148 148 164
+180 180 164
+255 255 255
+213 213 213
+148 205 180
+115 172 148
+106 148 139
+197 238 255
+172 213 255
+123 164 222
+98 139 189
+123 164 189
+148 189 238
diff --git a/data/tilesets/secondary/condominiums_frlg/palettes/10.pal b/data/tilesets/secondary/condominiums_frlg/palettes/10.pal
new file mode 100644
index 000000000000..3c091df8b340
--- /dev/null
+++ b/data/tilesets/secondary/condominiums_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+148 148 164
+205 189 197
+255 255 255
+255 213 115
+189 148 49
+139 98 74
+90 106 180
+255 205 139
+230 172 90
+230 148 65
+180 98 24
+238 213 172
+222 156 139
+123 123 123
diff --git a/data/tilesets/secondary/condominiums_frlg/palettes/11.pal b/data/tilesets/secondary/condominiums_frlg/palettes/11.pal
new file mode 100644
index 000000000000..79494336b9f1
--- /dev/null
+++ b/data/tilesets/secondary/condominiums_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+115 115 115
+180 180 164
+238 238 238
+213 222 164
+115 156 148
+230 213 115
+180 172 90
+139 148 90
+98 123 180
+148 156 156
+189 197 197
+246 230 164
+180 189 131
+205 213 213
diff --git a/data/tilesets/secondary/condominiums_frlg/palettes/12.pal b/data/tilesets/secondary/condominiums_frlg/palettes/12.pal
new file mode 100644
index 000000000000..b9b1e6061db3
--- /dev/null
+++ b/data/tilesets/secondary/condominiums_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+131 131 82
+164 164 98
+197 197 156
+106 164 172
+197 205 213
+205 156 32
+172 148 197
+205 164 230
+230 197 255
+205 197 106
+230 230 230
diff --git a/data/tilesets/secondary/condominiums_frlg/palettes/13.pal b/data/tilesets/secondary/condominiums_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/condominiums_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/condominiums_frlg/palettes/14.pal b/data/tilesets/secondary/condominiums_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/condominiums_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/condominiums_frlg/palettes/15.pal b/data/tilesets/secondary/condominiums_frlg/palettes/15.pal
new file mode 100644
index 000000000000..093fbdd6c952
--- /dev/null
+++ b/data/tilesets/secondary/condominiums_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+213 222 164
+180 189 131
+139 148 90
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/condominiums_frlg/tiles.png b/data/tilesets/secondary/condominiums_frlg/tiles.png
new file mode 100644
index 000000000000..324b42c9f727
Binary files /dev/null and b/data/tilesets/secondary/condominiums_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/department_store_frlg/metatile_attributes.bin b/data/tilesets/secondary/department_store_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..1df374f9bd76
Binary files /dev/null and b/data/tilesets/secondary/department_store_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/department_store_frlg/metatiles.bin b/data/tilesets/secondary/department_store_frlg/metatiles.bin
new file mode 100644
index 000000000000..05304519032c
Binary files /dev/null and b/data/tilesets/secondary/department_store_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/department_store_frlg/palettes/00.pal b/data/tilesets/secondary/department_store_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/department_store_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/department_store_frlg/palettes/01.pal b/data/tilesets/secondary/department_store_frlg/palettes/01.pal
new file mode 100644
index 000000000000..30be2fbe3f58
--- /dev/null
+++ b/data/tilesets/secondary/department_store_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/department_store_frlg/palettes/02.pal b/data/tilesets/secondary/department_store_frlg/palettes/02.pal
new file mode 100644
index 000000000000..cc3a9457d494
--- /dev/null
+++ b/data/tilesets/secondary/department_store_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+139 197 139
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/department_store_frlg/palettes/03.pal b/data/tilesets/secondary/department_store_frlg/palettes/03.pal
new file mode 100644
index 000000000000..7ec794ae5408
--- /dev/null
+++ b/data/tilesets/secondary/department_store_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+172 172 164
+255 255 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+164 164 172
+205 205 213
+238 238 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/department_store_frlg/palettes/04.pal b/data/tilesets/secondary/department_store_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/department_store_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/department_store_frlg/palettes/05.pal b/data/tilesets/secondary/department_store_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/department_store_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/department_store_frlg/palettes/06.pal b/data/tilesets/secondary/department_store_frlg/palettes/06.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/department_store_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/department_store_frlg/palettes/07.pal b/data/tilesets/secondary/department_store_frlg/palettes/07.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/department_store_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/department_store_frlg/palettes/08.pal b/data/tilesets/secondary/department_store_frlg/palettes/08.pal
new file mode 100644
index 000000000000..18480092bee7
--- /dev/null
+++ b/data/tilesets/secondary/department_store_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+139 222 156
+82 82 106
+115 123 131
+98 90 65
+139 123 82
+197 172 90
+230 230 238
+205 115 74
+238 172 82
+238 213 82
+131 189 57
+164 222 82
+156 139 172
+205 172 222
+213 205 230
+246 255 255
diff --git a/data/tilesets/secondary/department_store_frlg/palettes/09.pal b/data/tilesets/secondary/department_store_frlg/palettes/09.pal
new file mode 100644
index 000000000000..dd18b9d0720c
--- /dev/null
+++ b/data/tilesets/secondary/department_store_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+139 222 156
+82 82 106
+131 131 131
+172 123 82
+205 131 65
+213 148 65
+205 148 82
+238 164 82
+238 180 82
+148 106 74
+189 197 213
+222 230 230
+156 172 172
+90 131 238
+106 164 255
+156 189 255
diff --git a/data/tilesets/secondary/department_store_frlg/palettes/10.pal b/data/tilesets/secondary/department_store_frlg/palettes/10.pal
new file mode 100644
index 000000000000..c6e769cccf6a
--- /dev/null
+++ b/data/tilesets/secondary/department_store_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+139 222 156
+82 82 106
+131 131 131
+57 106 82
+41 156 98
+90 205 115
+197 172 90
+156 131 82
+213 205 106
+230 197 238
+180 189 164
+213 222 189
+156 172 172
+205 180 213
+189 197 213
+230 246 238
diff --git a/data/tilesets/secondary/department_store_frlg/palettes/11.pal b/data/tilesets/secondary/department_store_frlg/palettes/11.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/department_store_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/department_store_frlg/palettes/12.pal b/data/tilesets/secondary/department_store_frlg/palettes/12.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/department_store_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/department_store_frlg/palettes/13.pal b/data/tilesets/secondary/department_store_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/department_store_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/department_store_frlg/palettes/14.pal b/data/tilesets/secondary/department_store_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/department_store_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/department_store_frlg/palettes/15.pal b/data/tilesets/secondary/department_store_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/department_store_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/department_store_frlg/tiles.png b/data/tilesets/secondary/department_store_frlg/tiles.png
new file mode 100644
index 000000000000..42193211864b
Binary files /dev/null and b/data/tilesets/secondary/department_store_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/digletts_cave_frlg/metatile_attributes.bin b/data/tilesets/secondary/digletts_cave_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..7677c6c5e2d4
Binary files /dev/null and b/data/tilesets/secondary/digletts_cave_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/digletts_cave_frlg/metatiles.bin b/data/tilesets/secondary/digletts_cave_frlg/metatiles.bin
new file mode 100644
index 000000000000..37ef8fe349d6
Binary files /dev/null and b/data/tilesets/secondary/digletts_cave_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/digletts_cave_frlg/palettes/00.pal b/data/tilesets/secondary/digletts_cave_frlg/palettes/00.pal
new file mode 100644
index 000000000000..a3fab1c2fb12
--- /dev/null
+++ b/data/tilesets/secondary/digletts_cave_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/digletts_cave_frlg/palettes/01.pal b/data/tilesets/secondary/digletts_cave_frlg/palettes/01.pal
new file mode 100644
index 000000000000..d8a4e7757d1b
--- /dev/null
+++ b/data/tilesets/secondary/digletts_cave_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+115 65 74
+82 49 65
+115 205 164
diff --git a/data/tilesets/secondary/digletts_cave_frlg/palettes/02.pal b/data/tilesets/secondary/digletts_cave_frlg/palettes/02.pal
new file mode 100644
index 000000000000..6b019b884c96
--- /dev/null
+++ b/data/tilesets/secondary/digletts_cave_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/digletts_cave_frlg/palettes/03.pal b/data/tilesets/secondary/digletts_cave_frlg/palettes/03.pal
new file mode 100644
index 000000000000..205c464c79d6
--- /dev/null
+++ b/data/tilesets/secondary/digletts_cave_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/digletts_cave_frlg/palettes/04.pal b/data/tilesets/secondary/digletts_cave_frlg/palettes/04.pal
new file mode 100644
index 000000000000..702db8a907c6
--- /dev/null
+++ b/data/tilesets/secondary/digletts_cave_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 222 172
+189 189 139
+156 156 106
+115 115 65
+255 255 213
+255 238 180
+238 222 156
+172 197 197
+148 189 189
+123 180 180
+230 246 255
+189 222 222
+172 213 222
+148 205 205
+255 255 255
diff --git a/data/tilesets/secondary/digletts_cave_frlg/palettes/05.pal b/data/tilesets/secondary/digletts_cave_frlg/palettes/05.pal
new file mode 100644
index 000000000000..c5a653979a01
--- /dev/null
+++ b/data/tilesets/secondary/digletts_cave_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/digletts_cave_frlg/palettes/06.pal b/data/tilesets/secondary/digletts_cave_frlg/palettes/06.pal
new file mode 100644
index 000000000000..995731c23cc0
--- /dev/null
+++ b/data/tilesets/secondary/digletts_cave_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/digletts_cave_frlg/palettes/07.pal b/data/tilesets/secondary/digletts_cave_frlg/palettes/07.pal
new file mode 100644
index 000000000000..995731c23cc0
--- /dev/null
+++ b/data/tilesets/secondary/digletts_cave_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/digletts_cave_frlg/palettes/08.pal b/data/tilesets/secondary/digletts_cave_frlg/palettes/08.pal
new file mode 100644
index 000000000000..74cbc54c6189
--- /dev/null
+++ b/data/tilesets/secondary/digletts_cave_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+197 172 123
+172 139 90
+148 106 65
+123 74 41
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+222 222 156
+189 189 123
+148 148 106
+115 106 90
+82 74 65
+57 49 41
+65 65 74
diff --git a/data/tilesets/secondary/digletts_cave_frlg/palettes/09.pal b/data/tilesets/secondary/digletts_cave_frlg/palettes/09.pal
new file mode 100644
index 000000000000..def7acffc543
--- /dev/null
+++ b/data/tilesets/secondary/digletts_cave_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+197 172 123
+172 139 90
+148 106 65
+123 74 41
+164 180 230
+139 156 222
+98 106 139
+65 65 57
+255 0 255
+255 0 255
+65 65 74
+0 0 0
+98 139 197
+74 115 172
+57 98 156
diff --git a/data/tilesets/secondary/digletts_cave_frlg/palettes/10.pal b/data/tilesets/secondary/digletts_cave_frlg/palettes/10.pal
new file mode 100644
index 000000000000..5ccabc5a0ee9
--- /dev/null
+++ b/data/tilesets/secondary/digletts_cave_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+255 0 255
+255 0 255
+255 0 255
+0 0 0
+255 238 180
+222 205 148
+197 172 123
+172 139 90
+222 222 156
+189 189 123
+148 148 106
+115 106 90
+82 74 65
+57 49 41
+65 65 74
diff --git a/data/tilesets/secondary/digletts_cave_frlg/palettes/11.pal b/data/tilesets/secondary/digletts_cave_frlg/palettes/11.pal
new file mode 100644
index 000000000000..fa0038726572
--- /dev/null
+++ b/data/tilesets/secondary/digletts_cave_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+197 172 123
+172 139 90
+148 106 65
+123 74 41
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+230 222 164
+213 197 131
+197 172 106
+172 148 74
diff --git a/data/tilesets/secondary/digletts_cave_frlg/palettes/12.pal b/data/tilesets/secondary/digletts_cave_frlg/palettes/12.pal
new file mode 100644
index 000000000000..c19d59bd0619
--- /dev/null
+++ b/data/tilesets/secondary/digletts_cave_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+180 180 98
+164 164 74
+139 139 49
+123 115 41
+255 238 180
+222 205 148
+197 172 123
+172 139 90
+222 222 156
+189 189 123
+148 148 82
+115 106 49
+90 82 41
+57 49 41
+65 65 74
diff --git a/data/tilesets/secondary/digletts_cave_frlg/palettes/13.pal b/data/tilesets/secondary/digletts_cave_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/digletts_cave_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/digletts_cave_frlg/palettes/14.pal b/data/tilesets/secondary/digletts_cave_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/digletts_cave_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/digletts_cave_frlg/palettes/15.pal b/data/tilesets/secondary/digletts_cave_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/digletts_cave_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/digletts_cave_frlg/tiles.png b/data/tilesets/secondary/digletts_cave_frlg/tiles.png
new file mode 100644
index 000000000000..77b767b799d8
Binary files /dev/null and b/data/tilesets/secondary/digletts_cave_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/metatile_attributes.bin b/data/tilesets/secondary/fan_club_daycare_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..f40b4f5055b9
Binary files /dev/null and b/data/tilesets/secondary/fan_club_daycare_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/metatiles.bin b/data/tilesets/secondary/fan_club_daycare_frlg/metatiles.bin
new file mode 100644
index 000000000000..63ddd975bc00
Binary files /dev/null and b/data/tilesets/secondary/fan_club_daycare_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/palettes/00.pal b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/00.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/palettes/01.pal b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/01.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/palettes/02.pal b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/02.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/palettes/03.pal b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/03.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/palettes/04.pal b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/04.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/palettes/05.pal b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/05.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/palettes/06.pal b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/palettes/07.pal b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/07.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/palettes/08.pal b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/08.pal
new file mode 100644
index 000000000000..4b7de801212f
--- /dev/null
+++ b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 197
+82 82 106
+131 131 131
+131 115 90
+189 131 90
+205 156 90
+238 180 90
+172 172 131
+222 222 172
+172 180 205
+238 230 172
+255 255 246
+255 255 246
+197 205 222
+205 213 230
+230 230 246
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/palettes/09.pal b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/09.pal
new file mode 100644
index 000000000000..8fe0861de6f3
--- /dev/null
+++ b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 197
+82 82 106
+131 131 131
+246 246 189
+180 180 139
+205 156 90
+230 230 131
+222 213 131
+205 205 115
+197 180 115
+255 0 255
+123 123 98
+156 156 98
+205 148 197
+90 164 205
+90 189 246
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/palettes/10.pal b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/10.pal
new file mode 100644
index 000000000000..afe462f8ea0a
--- /dev/null
+++ b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 197
+82 82 106
+131 131 131
+123 189 222
+123 156 189
+164 222 246
+189 238 238
+74 139 98
+106 172 106
+123 205 123
+90 148 115
+139 197 131
+197 238 123
+197 172 74
+255 0 255
+230 230 106
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/palettes/11.pal b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/11.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/palettes/12.pal b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/12.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/palettes/13.pal b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/palettes/14.pal b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/palettes/15.pal b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fan_club_daycare_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fan_club_daycare_frlg/tiles.png b/data/tilesets/secondary/fan_club_daycare_frlg/tiles.png
new file mode 100644
index 000000000000..b8a2a1a4fb79
Binary files /dev/null and b/data/tilesets/secondary/fan_club_daycare_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/metatile_attributes.bin b/data/tilesets/secondary/fuchsia_city_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..3e370a7471a1
Binary files /dev/null and b/data/tilesets/secondary/fuchsia_city_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/metatiles.bin b/data/tilesets/secondary/fuchsia_city_frlg/metatiles.bin
new file mode 100644
index 000000000000..0e0e722da6c7
Binary files /dev/null and b/data/tilesets/secondary/fuchsia_city_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/palettes/00.pal b/data/tilesets/secondary/fuchsia_city_frlg/palettes/00.pal
new file mode 100644
index 000000000000..5fb8bdb0154d
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_city_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+189 255 139
+131 213 98
+57 139 49
+57 82 0
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/palettes/01.pal b/data/tilesets/secondary/fuchsia_city_frlg/palettes/01.pal
new file mode 100644
index 000000000000..391d1e3d17b8
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_city_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 189 164
+189 148 139
+156 115 115
+123 82 82
+90 57 74
+115 205 164
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/palettes/02.pal b/data/tilesets/secondary/fuchsia_city_frlg/palettes/02.pal
new file mode 100644
index 000000000000..6b019b884c96
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_city_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/palettes/03.pal b/data/tilesets/secondary/fuchsia_city_frlg/palettes/03.pal
new file mode 100644
index 000000000000..9581f2cd8be5
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_city_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 131
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/palettes/04.pal b/data/tilesets/secondary/fuchsia_city_frlg/palettes/04.pal
new file mode 100644
index 000000000000..702db8a907c6
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_city_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 222 172
+189 189 139
+156 156 106
+115 115 65
+255 255 213
+255 238 180
+238 222 156
+172 197 197
+148 189 189
+123 180 180
+230 246 255
+189 222 222
+172 213 222
+148 205 205
+255 255 255
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/palettes/05.pal b/data/tilesets/secondary/fuchsia_city_frlg/palettes/05.pal
new file mode 100644
index 000000000000..3a2db72a7f32
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_city_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+222 205 131
+205 180 106
+180 139 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/palettes/06.pal b/data/tilesets/secondary/fuchsia_city_frlg/palettes/06.pal
new file mode 100644
index 000000000000..93518605a9ef
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_city_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/palettes/07.pal b/data/tilesets/secondary/fuchsia_city_frlg/palettes/07.pal
new file mode 100644
index 000000000000..93518605a9ef
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_city_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/palettes/08.pal b/data/tilesets/secondary/fuchsia_city_frlg/palettes/08.pal
new file mode 100644
index 000000000000..8a0a9a1e0fab
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_city_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+65 74 106
+123 123 131
+98 90 82
+115 106 98
+148 131 131
+180 156 131
+189 172 98
+213 205 131
+238 222 139
+90 106 164
+98 139 230
+115 205 255
+255 0 255
+255 0 255
+98 106 115
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/palettes/09.pal b/data/tilesets/secondary/fuchsia_city_frlg/palettes/09.pal
new file mode 100644
index 000000000000..d39bbb454e7f
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_city_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+65 74 106
+123 123 131
+139 90 82
+189 123 115
+222 148 131
+255 197 156
+156 156 172
+189 197 213
+230 238 238
+49 98 90
+74 148 131
+82 197 148
+106 230 172
+164 238 172
+98 106 115
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/palettes/10.pal b/data/tilesets/secondary/fuchsia_city_frlg/palettes/10.pal
new file mode 100644
index 000000000000..d82bb039195f
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_city_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+65 74 106
+123 123 131
+180 164 90
+0 0 255
+255 238 197
+238 238 205
+189 180 172
+172 172 156
+205 205 172
+139 123 49
+164 148 74
+205 197 123
+230 213 139
+106 172 123
+123 197 139
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/palettes/11.pal b/data/tilesets/secondary/fuchsia_city_frlg/palettes/11.pal
new file mode 100644
index 000000000000..cc0cf52cf42c
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_city_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+197 197 197
+180 238 82
+139 213 82
+90 164 49
+57 90 90
+74 123 74
+90 98 49
+139 131 49
+65 57 49
+57 139 98
+123 197 49
+123 197 82
+57 139 49
+115 205 164
+57 172 156
+255 0 255
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/palettes/12.pal b/data/tilesets/secondary/fuchsia_city_frlg/palettes/12.pal
new file mode 100644
index 000000000000..ebcfeb596c03
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_city_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 131
+205 180 106
+238 180 139
+222 148 131
+189 123 115
+139 90 82
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/palettes/13.pal b/data/tilesets/secondary/fuchsia_city_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_city_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/palettes/14.pal b/data/tilesets/secondary/fuchsia_city_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_city_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/palettes/15.pal b/data/tilesets/secondary/fuchsia_city_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_city_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fuchsia_city_frlg/tiles.png b/data/tilesets/secondary/fuchsia_city_frlg/tiles.png
new file mode 100644
index 000000000000..a9e9e13e82f5
Binary files /dev/null and b/data/tilesets/secondary/fuchsia_city_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/metatile_attributes.bin b/data/tilesets/secondary/fuchsia_gym_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..7dfeb1349648
Binary files /dev/null and b/data/tilesets/secondary/fuchsia_gym_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/metatiles.bin b/data/tilesets/secondary/fuchsia_gym_frlg/metatiles.bin
new file mode 100644
index 000000000000..25e3b6297b69
Binary files /dev/null and b/data/tilesets/secondary/fuchsia_gym_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/palettes/00.pal b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/palettes/01.pal b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/01.pal
new file mode 100644
index 000000000000..d99adaffffc0
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+255 230 156
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/palettes/02.pal b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/02.pal
new file mode 100644
index 000000000000..cc3a9457d494
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+139 197 139
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/palettes/03.pal b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/03.pal
new file mode 100644
index 000000000000..7ec794ae5408
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+172 172 164
+255 255 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+164 164 172
+205 205 213
+238 238 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/palettes/04.pal b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/palettes/05.pal b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/palettes/06.pal b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/palettes/07.pal b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/07.pal
new file mode 100644
index 000000000000..9020b628fbb0
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+156 131 57
+213 197 106
+246 238 148
+213 222 238
+222 230 255
+41 106 82
+57 131 115
+172 131 115
+197 156 148
+238 180 164
+180 139 123
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/palettes/08.pal b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/08.pal
new file mode 100644
index 000000000000..1873ad439780
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+156 131 57
+213 197 106
+246 238 148
+156 205 246
+115 172 222
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/palettes/09.pal b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/09.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/palettes/10.pal b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/10.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/palettes/11.pal b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/11.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/palettes/12.pal b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/12.pal
new file mode 100644
index 000000000000..ebfedc7d514f
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+131 131 131
+180 180 164
+255 255 255
+172 131 115
+197 156 148
+238 180 164
+255 222 197
+255 238 238
+230 164 98
+255 197 98
+205 164 156
+180 139 123
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/palettes/13.pal b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/palettes/14.pal b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/palettes/15.pal b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/fuchsia_gym_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/fuchsia_gym_frlg/tiles.png b/data/tilesets/secondary/fuchsia_gym_frlg/tiles.png
new file mode 100644
index 000000000000..cf2fa4ff7695
Binary files /dev/null and b/data/tilesets/secondary/fuchsia_gym_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/game_corner_frlg/metatile_attributes.bin b/data/tilesets/secondary/game_corner_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..893ac5f1d259
Binary files /dev/null and b/data/tilesets/secondary/game_corner_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/game_corner_frlg/metatiles.bin b/data/tilesets/secondary/game_corner_frlg/metatiles.bin
new file mode 100644
index 000000000000..1529f8582e5a
Binary files /dev/null and b/data/tilesets/secondary/game_corner_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/game_corner_frlg/palettes/00.pal b/data/tilesets/secondary/game_corner_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/game_corner_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/game_corner_frlg/palettes/01.pal b/data/tilesets/secondary/game_corner_frlg/palettes/01.pal
new file mode 100644
index 000000000000..d99adaffffc0
--- /dev/null
+++ b/data/tilesets/secondary/game_corner_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+255 230 156
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/game_corner_frlg/palettes/02.pal b/data/tilesets/secondary/game_corner_frlg/palettes/02.pal
new file mode 100644
index 000000000000..cc3a9457d494
--- /dev/null
+++ b/data/tilesets/secondary/game_corner_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+139 197 139
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/game_corner_frlg/palettes/03.pal b/data/tilesets/secondary/game_corner_frlg/palettes/03.pal
new file mode 100644
index 000000000000..7ec794ae5408
--- /dev/null
+++ b/data/tilesets/secondary/game_corner_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+172 172 164
+255 255 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+164 164 172
+205 205 213
+238 238 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/game_corner_frlg/palettes/04.pal b/data/tilesets/secondary/game_corner_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/game_corner_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/game_corner_frlg/palettes/05.pal b/data/tilesets/secondary/game_corner_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/game_corner_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/game_corner_frlg/palettes/06.pal b/data/tilesets/secondary/game_corner_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/game_corner_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/game_corner_frlg/palettes/07.pal b/data/tilesets/secondary/game_corner_frlg/palettes/07.pal
new file mode 100644
index 000000000000..b3612e537b88
--- /dev/null
+++ b/data/tilesets/secondary/game_corner_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+131 131 131
+180 180 164
+255 255 255
+255 164 115
+255 222 189
+123 164 238
+172 205 238
+213 230 238
+164 255 180
+238 164 0
+139 90 197
+213 156 255
+255 255 148
+255 0 255
diff --git a/data/tilesets/secondary/game_corner_frlg/palettes/08.pal b/data/tilesets/secondary/game_corner_frlg/palettes/08.pal
new file mode 100644
index 000000000000..e58f94305080
--- /dev/null
+++ b/data/tilesets/secondary/game_corner_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 255 0
+82 82 106
+131 131 131
+180 180 164
+255 255 255
+255 255 123
+205 180 98
+246 230 172
+74 131 197
+139 197 255
+164 255 180
+238 246 246
+164 74 32
+213 115 57
+238 148 98
+255 189 98
diff --git a/data/tilesets/secondary/game_corner_frlg/palettes/09.pal b/data/tilesets/secondary/game_corner_frlg/palettes/09.pal
new file mode 100644
index 000000000000..75f1d81b5228
--- /dev/null
+++ b/data/tilesets/secondary/game_corner_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+255 0 255
+255 0 255
+255 255 255
+255 0 255
+131 172 238
+246 230 172
+82 180 172
+32 115 123
+255 148 115
+230 106 90
+90 213 156
+255 189 82
+16 123 255
+131 189 246
diff --git a/data/tilesets/secondary/game_corner_frlg/palettes/10.pal b/data/tilesets/secondary/game_corner_frlg/palettes/10.pal
new file mode 100644
index 000000000000..6d76050a9423
--- /dev/null
+++ b/data/tilesets/secondary/game_corner_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+230 230 230
+172 148 197
+205 164 230
+230 197 255
+238 230 123
+189 172 98
+255 255 148
+131 255 255
+74 131 197
+230 189 164
+255 0 255
diff --git a/data/tilesets/secondary/game_corner_frlg/palettes/11.pal b/data/tilesets/secondary/game_corner_frlg/palettes/11.pal
new file mode 100644
index 000000000000..9359b8858a56
--- /dev/null
+++ b/data/tilesets/secondary/game_corner_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+172 172 156
+230 230 205
+197 197 172
+172 172 164
+189 189 164
+255 0 255
+131 172 238
+106 197 106
+197 180 74
+255 0 255
+222 222 222
+213 139 57
+255 255 255
diff --git a/data/tilesets/secondary/game_corner_frlg/palettes/12.pal b/data/tilesets/secondary/game_corner_frlg/palettes/12.pal
new file mode 100644
index 000000000000..61b3764be4c4
--- /dev/null
+++ b/data/tilesets/secondary/game_corner_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+222 238 255
+255 0 255
+255 0 255
+32 156 222
+139 197 255
+180 98 0
+197 123 0
+205 139 0
+213 164 0
+230 180 0
+230 197 65
diff --git a/data/tilesets/secondary/game_corner_frlg/palettes/13.pal b/data/tilesets/secondary/game_corner_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/game_corner_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/game_corner_frlg/palettes/14.pal b/data/tilesets/secondary/game_corner_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/game_corner_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/game_corner_frlg/palettes/15.pal b/data/tilesets/secondary/game_corner_frlg/palettes/15.pal
new file mode 100644
index 000000000000..3bb14e4454e4
--- /dev/null
+++ b/data/tilesets/secondary/game_corner_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+230 230 205
+205 205 180
+172 172 148
+222 222 222
+156 115 197
+131 172 238
+106 197 106
+197 180 74
+0 0 0
+213 139 57
+238 222 131
+255 255 255
diff --git a/data/tilesets/secondary/game_corner_frlg/tiles.png b/data/tilesets/secondary/game_corner_frlg/tiles.png
new file mode 100644
index 000000000000..b5b249d0ab15
Binary files /dev/null and b/data/tilesets/secondary/game_corner_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/generic_building_1_frlg/metatile_attributes.bin b/data/tilesets/secondary/generic_building_1_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..be95e451cd25
Binary files /dev/null and b/data/tilesets/secondary/generic_building_1_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/generic_building_1_frlg/metatiles.bin b/data/tilesets/secondary/generic_building_1_frlg/metatiles.bin
new file mode 100644
index 000000000000..806d040ce610
Binary files /dev/null and b/data/tilesets/secondary/generic_building_1_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/generic_building_1_frlg/palettes/00.pal b/data/tilesets/secondary/generic_building_1_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_1_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/generic_building_1_frlg/palettes/01.pal b/data/tilesets/secondary/generic_building_1_frlg/palettes/01.pal
new file mode 100644
index 000000000000..69f3f0b9e6e1
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_1_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+180 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+255 230 156
+222 213 230
+238 246 238
diff --git a/data/tilesets/secondary/generic_building_1_frlg/palettes/02.pal b/data/tilesets/secondary/generic_building_1_frlg/palettes/02.pal
new file mode 100644
index 000000000000..c8ee236d76d6
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_1_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+139 197 139
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+255 0 255
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/generic_building_1_frlg/palettes/03.pal b/data/tilesets/secondary/generic_building_1_frlg/palettes/03.pal
new file mode 100644
index 000000000000..b17dbb054879
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_1_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+164 164 164
+180 189 189
+255 255 255
+238 246 238
+213 230 222
+197 205 197
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_1_frlg/palettes/04.pal b/data/tilesets/secondary/generic_building_1_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_1_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_1_frlg/palettes/05.pal b/data/tilesets/secondary/generic_building_1_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_1_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_1_frlg/palettes/06.pal b/data/tilesets/secondary/generic_building_1_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_1_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_1_frlg/palettes/07.pal b/data/tilesets/secondary/generic_building_1_frlg/palettes/07.pal
new file mode 100644
index 000000000000..c1e7c3d5c579
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_1_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
diff --git a/data/tilesets/secondary/generic_building_1_frlg/palettes/08.pal b/data/tilesets/secondary/generic_building_1_frlg/palettes/08.pal
new file mode 100644
index 000000000000..18480092bee7
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_1_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+139 222 156
+82 82 106
+115 123 131
+98 90 65
+139 123 82
+197 172 90
+230 230 238
+205 115 74
+238 172 82
+238 213 82
+131 189 57
+164 222 82
+156 139 172
+205 172 222
+213 205 230
+246 255 255
diff --git a/data/tilesets/secondary/generic_building_1_frlg/palettes/09.pal b/data/tilesets/secondary/generic_building_1_frlg/palettes/09.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_1_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_1_frlg/palettes/10.pal b/data/tilesets/secondary/generic_building_1_frlg/palettes/10.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_1_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_1_frlg/palettes/11.pal b/data/tilesets/secondary/generic_building_1_frlg/palettes/11.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_1_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_1_frlg/palettes/12.pal b/data/tilesets/secondary/generic_building_1_frlg/palettes/12.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_1_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_1_frlg/palettes/13.pal b/data/tilesets/secondary/generic_building_1_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_1_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_1_frlg/palettes/14.pal b/data/tilesets/secondary/generic_building_1_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_1_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_1_frlg/palettes/15.pal b/data/tilesets/secondary/generic_building_1_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_1_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_1_frlg/tiles.png b/data/tilesets/secondary/generic_building_1_frlg/tiles.png
new file mode 100644
index 000000000000..19128719751b
Binary files /dev/null and b/data/tilesets/secondary/generic_building_1_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/generic_building_2_frlg/metatile_attributes.bin b/data/tilesets/secondary/generic_building_2_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..6e96ad073ef4
Binary files /dev/null and b/data/tilesets/secondary/generic_building_2_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/generic_building_2_frlg/metatiles.bin b/data/tilesets/secondary/generic_building_2_frlg/metatiles.bin
new file mode 100644
index 000000000000..0943dc7afe85
Binary files /dev/null and b/data/tilesets/secondary/generic_building_2_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/generic_building_2_frlg/palettes/00.pal b/data/tilesets/secondary/generic_building_2_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_2_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/generic_building_2_frlg/palettes/01.pal b/data/tilesets/secondary/generic_building_2_frlg/palettes/01.pal
new file mode 100644
index 000000000000..d99adaffffc0
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_2_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+255 230 156
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/generic_building_2_frlg/palettes/02.pal b/data/tilesets/secondary/generic_building_2_frlg/palettes/02.pal
new file mode 100644
index 000000000000..cc3a9457d494
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_2_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+139 197 139
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/generic_building_2_frlg/palettes/03.pal b/data/tilesets/secondary/generic_building_2_frlg/palettes/03.pal
new file mode 100644
index 000000000000..7ec794ae5408
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_2_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+172 172 164
+255 255 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+164 164 172
+205 205 213
+238 238 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/generic_building_2_frlg/palettes/04.pal b/data/tilesets/secondary/generic_building_2_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_2_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_2_frlg/palettes/05.pal b/data/tilesets/secondary/generic_building_2_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_2_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_2_frlg/palettes/06.pal b/data/tilesets/secondary/generic_building_2_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_2_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_2_frlg/palettes/07.pal b/data/tilesets/secondary/generic_building_2_frlg/palettes/07.pal
new file mode 100644
index 000000000000..c62a40b0d024
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_2_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+148 172 139
+180 197 164
+213 222 197
+238 255 213
+115 156 180
+197 222 238
+123 197 189
+156 222 213
+213 255 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/generic_building_2_frlg/palettes/08.pal b/data/tilesets/secondary/generic_building_2_frlg/palettes/08.pal
new file mode 100644
index 000000000000..8c66b4998189
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_2_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+230 222 156
+189 98 74
+230 156 98
+213 205 156
+115 156 180
+246 238 189
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/generic_building_2_frlg/palettes/09.pal b/data/tilesets/secondary/generic_building_2_frlg/palettes/09.pal
new file mode 100644
index 000000000000..25d5d7019354
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_2_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+156 213 255
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_2_frlg/palettes/10.pal b/data/tilesets/secondary/generic_building_2_frlg/palettes/10.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_2_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_2_frlg/palettes/11.pal b/data/tilesets/secondary/generic_building_2_frlg/palettes/11.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_2_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_2_frlg/palettes/12.pal b/data/tilesets/secondary/generic_building_2_frlg/palettes/12.pal
new file mode 100644
index 000000000000..2903bb074c9e
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_2_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+131 131 131
+180 180 164
+255 255 255
+189 164 82
+222 197 106
+230 222 156
+123 197 189
+156 222 213
+213 255 246
+255 0 255
+255 0 255
+213 131 65
+222 230 222
+246 238 189
diff --git a/data/tilesets/secondary/generic_building_2_frlg/palettes/13.pal b/data/tilesets/secondary/generic_building_2_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_2_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_2_frlg/palettes/14.pal b/data/tilesets/secondary/generic_building_2_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_2_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_2_frlg/palettes/15.pal b/data/tilesets/secondary/generic_building_2_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/generic_building_2_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/generic_building_2_frlg/tiles.png b/data/tilesets/secondary/generic_building_2_frlg/tiles.png
new file mode 100644
index 000000000000..ca6e21f03c56
Binary files /dev/null and b/data/tilesets/secondary/generic_building_2_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/metatile_attributes.bin b/data/tilesets/secondary/hall_of_fame_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..7068e079113b
Binary files /dev/null and b/data/tilesets/secondary/hall_of_fame_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/metatiles.bin b/data/tilesets/secondary/hall_of_fame_frlg/metatiles.bin
new file mode 100644
index 000000000000..6f4e8a22e0f5
Binary files /dev/null and b/data/tilesets/secondary/hall_of_fame_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/palettes/00.pal b/data/tilesets/secondary/hall_of_fame_frlg/palettes/00.pal
new file mode 100644
index 000000000000..8db07d4180d2
--- /dev/null
+++ b/data/tilesets/secondary/hall_of_fame_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/palettes/01.pal b/data/tilesets/secondary/hall_of_fame_frlg/palettes/01.pal
new file mode 100644
index 000000000000..66561f6d3326
--- /dev/null
+++ b/data/tilesets/secondary/hall_of_fame_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+139 180 222
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/palettes/02.pal b/data/tilesets/secondary/hall_of_fame_frlg/palettes/02.pal
new file mode 100644
index 000000000000..87a022102f19
--- /dev/null
+++ b/data/tilesets/secondary/hall_of_fame_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+197 189 213
+255 255 255
+106 197 106
+230 213 123
+255 205 90
+255 238 197
+90 90 115
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/palettes/03.pal b/data/tilesets/secondary/hall_of_fame_frlg/palettes/03.pal
new file mode 100644
index 000000000000..783496dcd9bf
--- /dev/null
+++ b/data/tilesets/secondary/hall_of_fame_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 180 74
+255 246 131
+65 98 156
+90 123 180
+115 156 197
+222 213 131
+164 164 172
+205 205 213
+238 238 246
+106 172 115
+156 205 139
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/palettes/04.pal b/data/tilesets/secondary/hall_of_fame_frlg/palettes/04.pal
new file mode 100644
index 000000000000..89eace6050ad
--- /dev/null
+++ b/data/tilesets/secondary/hall_of_fame_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 238 246
+172 197 180
+197 222 205
+90 189 172
+246 238 156
+205 189 131
+189 164 123
+148 131 106
+106 106 106
+213 222 230
+238 180 115
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/palettes/05.pal b/data/tilesets/secondary/hall_of_fame_frlg/palettes/05.pal
new file mode 100644
index 000000000000..c7780e5c7515
--- /dev/null
+++ b/data/tilesets/secondary/hall_of_fame_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+213 222 222
+164 180 189
+255 0 255
+131 115 74
+213 213 148
+197 189 139
+172 156 115
+148 131 90
+197 197 205
+205 82 65
+0 0 0
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/palettes/06.pal b/data/tilesets/secondary/hall_of_fame_frlg/palettes/06.pal
new file mode 100644
index 000000000000..1d08ce9a2024
--- /dev/null
+++ b/data/tilesets/secondary/hall_of_fame_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/palettes/07.pal b/data/tilesets/secondary/hall_of_fame_frlg/palettes/07.pal
new file mode 100644
index 000000000000..f0c97cf87fbb
--- /dev/null
+++ b/data/tilesets/secondary/hall_of_fame_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+156 189 255
+82 123 197
+49 90 156
+106 164 148
+82 139 123
+106 164 222
+222 230 148
+189 197 115
+90 148 197
+222 164 32
+189 230 255
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/palettes/08.pal b/data/tilesets/secondary/hall_of_fame_frlg/palettes/08.pal
new file mode 100644
index 000000000000..33b52bbbd0ac
--- /dev/null
+++ b/data/tilesets/secondary/hall_of_fame_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+82 82 106
+131 131 139
+172 172 164
+255 255 255
+213 222 222
+180 197 213
+156 172 197
+230 106 90
+189 65 49
+255 131 115
+139 41 24
+197 255 205
+238 197 106
+255 255 213
+255 246 172
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/palettes/09.pal b/data/tilesets/secondary/hall_of_fame_frlg/palettes/09.pal
new file mode 100644
index 000000000000..3a2cf3b7a123
--- /dev/null
+++ b/data/tilesets/secondary/hall_of_fame_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+139 222 148
+156 238 164
+197 255 205
+172 246 180
+238 238 197
+255 0 255
+255 0 255
+0 255 156
+189 65 49
+255 222 123
+246 197 0
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/palettes/10.pal b/data/tilesets/secondary/hall_of_fame_frlg/palettes/10.pal
new file mode 100644
index 000000000000..6ea570459943
--- /dev/null
+++ b/data/tilesets/secondary/hall_of_fame_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+238 230 156
+230 189 131
+131 189 172
+205 82 65
+255 148 0
+106 164 148
+82 139 123
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+156 213 197
+164 172 139
+90 0 255
+90 0 255
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/palettes/11.pal b/data/tilesets/secondary/hall_of_fame_frlg/palettes/11.pal
new file mode 100644
index 000000000000..008f150c7dfb
--- /dev/null
+++ b/data/tilesets/secondary/hall_of_fame_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+148 148 164
+205 189 197
+255 255 255
+115 115 131
+255 0 255
+0 255 156
+106 164 148
+82 139 123
+255 0 255
+255 255 172
+255 213 115
+213 180 106
+164 131 74
+222 213 230
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/palettes/12.pal b/data/tilesets/secondary/hall_of_fame_frlg/palettes/12.pal
new file mode 100644
index 000000000000..c1e7c3d5c579
--- /dev/null
+++ b/data/tilesets/secondary/hall_of_fame_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/palettes/13.pal b/data/tilesets/secondary/hall_of_fame_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/hall_of_fame_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/palettes/14.pal b/data/tilesets/secondary/hall_of_fame_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/hall_of_fame_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/palettes/15.pal b/data/tilesets/secondary/hall_of_fame_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/hall_of_fame_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/hall_of_fame_frlg/tiles.png b/data/tilesets/secondary/hall_of_fame_frlg/tiles.png
new file mode 100644
index 000000000000..f5ab3a9cb00a
Binary files /dev/null and b/data/tilesets/secondary/hall_of_fame_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/hoenn_building_frlg/metatile_attributes.bin b/data/tilesets/secondary/hoenn_building_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..6c4ffed21772
Binary files /dev/null and b/data/tilesets/secondary/hoenn_building_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/hoenn_building_frlg/metatiles.bin b/data/tilesets/secondary/hoenn_building_frlg/metatiles.bin
new file mode 100644
index 000000000000..af8effb1198b
Binary files /dev/null and b/data/tilesets/secondary/hoenn_building_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/hoenn_building_frlg/palettes/00.pal b/data/tilesets/secondary/hoenn_building_frlg/palettes/00.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/hoenn_building_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/hoenn_building_frlg/palettes/01.pal b/data/tilesets/secondary/hoenn_building_frlg/palettes/01.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/hoenn_building_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/hoenn_building_frlg/palettes/02.pal b/data/tilesets/secondary/hoenn_building_frlg/palettes/02.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/hoenn_building_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/hoenn_building_frlg/palettes/03.pal b/data/tilesets/secondary/hoenn_building_frlg/palettes/03.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/hoenn_building_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/hoenn_building_frlg/palettes/04.pal b/data/tilesets/secondary/hoenn_building_frlg/palettes/04.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/hoenn_building_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/hoenn_building_frlg/palettes/05.pal b/data/tilesets/secondary/hoenn_building_frlg/palettes/05.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/hoenn_building_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/hoenn_building_frlg/palettes/06.pal b/data/tilesets/secondary/hoenn_building_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/hoenn_building_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/hoenn_building_frlg/palettes/07.pal b/data/tilesets/secondary/hoenn_building_frlg/palettes/07.pal
new file mode 100644
index 000000000000..53377871201c
--- /dev/null
+++ b/data/tilesets/secondary/hoenn_building_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+65 74 106
+139 139 139
+189 189 164
+255 255 255
+230 222 246
+255 238 213
+255 0 0
+115 115 164
+131 139 230
+164 164 255
+156 106 16
+115 115 139
+213 213 172
+222 172 82
+189 139 49
diff --git a/data/tilesets/secondary/hoenn_building_frlg/palettes/08.pal b/data/tilesets/secondary/hoenn_building_frlg/palettes/08.pal
new file mode 100644
index 000000000000..0b01f1a0f66f
--- /dev/null
+++ b/data/tilesets/secondary/hoenn_building_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+65 74 106
+139 139 148
+180 180 164
+255 255 255
+255 0 0
+255 0 0
+255 0 0
+255 0 0
+172 90 49
+205 98 57
+246 139 98
+255 205 139
+255 0 0
+255 0 0
+255 0 0
diff --git a/data/tilesets/secondary/hoenn_building_frlg/palettes/09.pal b/data/tilesets/secondary/hoenn_building_frlg/palettes/09.pal
new file mode 100644
index 000000000000..371e5a211fb7
--- /dev/null
+++ b/data/tilesets/secondary/hoenn_building_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+65 74 106
+139 139 139
+189 189 164
+255 255 255
+230 222 246
+148 148 197
+189 189 246
+205 106 49
+246 180 49
+255 246 131
+255 0 0
+189 172 82
+213 205 98
+148 115 41
+172 139 57
diff --git a/data/tilesets/secondary/hoenn_building_frlg/palettes/10.pal b/data/tilesets/secondary/hoenn_building_frlg/palettes/10.pal
new file mode 100644
index 000000000000..432f421491ab
--- /dev/null
+++ b/data/tilesets/secondary/hoenn_building_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+65 74 106
+123 123 131
+189 189 164
+255 255 255
+213 197 74
+213 180 131
+148 115 41
+172 139 57
+213 213 180
+106 139 49
+131 172 74
+164 205 106
+197 255 172
+115 90 57
+255 0 0
diff --git a/data/tilesets/secondary/hoenn_building_frlg/palettes/11.pal b/data/tilesets/secondary/hoenn_building_frlg/palettes/11.pal
new file mode 100644
index 000000000000..8c2460403c4d
--- /dev/null
+++ b/data/tilesets/secondary/hoenn_building_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+65 74 106
+139 139 139
+189 189 164
+255 255 255
+222 197 74
+230 230 106
+230 222 246
+148 98 123
+197 131 156
+197 164 189
+123 164 189
+131 197 98
+172 238 139
+90 156 57
+0 0 0
diff --git a/data/tilesets/secondary/hoenn_building_frlg/palettes/12.pal b/data/tilesets/secondary/hoenn_building_frlg/palettes/12.pal
new file mode 100644
index 000000000000..920ad12c9ec9
--- /dev/null
+++ b/data/tilesets/secondary/hoenn_building_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+65 74 106
+139 139 139
+180 180 164
+255 255 255
+189 180 49
+222 213 82
+123 115 49
+156 148 16
+213 213 180
+98 156 139
+123 180 189
+172 222 230
+255 205 139
+246 246 164
+222 131 90
diff --git a/data/tilesets/secondary/hoenn_building_frlg/palettes/13.pal b/data/tilesets/secondary/hoenn_building_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/hoenn_building_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/hoenn_building_frlg/palettes/14.pal b/data/tilesets/secondary/hoenn_building_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/hoenn_building_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/hoenn_building_frlg/palettes/15.pal b/data/tilesets/secondary/hoenn_building_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/hoenn_building_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/hoenn_building_frlg/tiles.png b/data/tilesets/secondary/hoenn_building_frlg/tiles.png
new file mode 100644
index 000000000000..ef8a943fa2a3
Binary files /dev/null and b/data/tilesets/secondary/hoenn_building_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/metatile_attributes.bin b/data/tilesets/secondary/indigo_plateau_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..1abbfdc22221
Binary files /dev/null and b/data/tilesets/secondary/indigo_plateau_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/metatiles.bin b/data/tilesets/secondary/indigo_plateau_frlg/metatiles.bin
new file mode 100644
index 000000000000..bbb7ffbee0b5
Binary files /dev/null and b/data/tilesets/secondary/indigo_plateau_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/palettes/00.pal b/data/tilesets/secondary/indigo_plateau_frlg/palettes/00.pal
new file mode 100644
index 000000000000..2f3f97d6fdb7
--- /dev/null
+++ b/data/tilesets/secondary/indigo_plateau_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/palettes/01.pal b/data/tilesets/secondary/indigo_plateau_frlg/palettes/01.pal
new file mode 100644
index 000000000000..cf11238126ab
--- /dev/null
+++ b/data/tilesets/secondary/indigo_plateau_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+115 65 74
+82 49 65
+115 205 164
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/palettes/02.pal b/data/tilesets/secondary/indigo_plateau_frlg/palettes/02.pal
new file mode 100644
index 000000000000..372fb5d7c3b6
--- /dev/null
+++ b/data/tilesets/secondary/indigo_plateau_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/palettes/03.pal b/data/tilesets/secondary/indigo_plateau_frlg/palettes/03.pal
new file mode 100644
index 000000000000..5a5e602118b6
--- /dev/null
+++ b/data/tilesets/secondary/indigo_plateau_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/palettes/04.pal b/data/tilesets/secondary/indigo_plateau_frlg/palettes/04.pal
new file mode 100644
index 000000000000..229f9132c30b
--- /dev/null
+++ b/data/tilesets/secondary/indigo_plateau_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+222 230 255
+197 213 255
+164 197 238
+123 172 230
+90 148 197
+65 123 180
+90 164 205
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+32 98 139
+238 230 139
+222 197 139
+205 180 106
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/palettes/05.pal b/data/tilesets/secondary/indigo_plateau_frlg/palettes/05.pal
new file mode 100644
index 000000000000..215dd1272875
--- /dev/null
+++ b/data/tilesets/secondary/indigo_plateau_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/palettes/06.pal b/data/tilesets/secondary/indigo_plateau_frlg/palettes/06.pal
new file mode 100644
index 000000000000..7e7862a192f8
--- /dev/null
+++ b/data/tilesets/secondary/indigo_plateau_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+222 230 255
+197 213 255
+164 197 238
+123 172 230
+41 82 164
+41 57 131
+74 123 197
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+32 98 139
+238 230 139
+222 197 139
+205 180 106
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/palettes/07.pal b/data/tilesets/secondary/indigo_plateau_frlg/palettes/07.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/indigo_plateau_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/palettes/08.pal b/data/tilesets/secondary/indigo_plateau_frlg/palettes/08.pal
new file mode 100644
index 000000000000..995731c23cc0
--- /dev/null
+++ b/data/tilesets/secondary/indigo_plateau_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/palettes/09.pal b/data/tilesets/secondary/indigo_plateau_frlg/palettes/09.pal
new file mode 100644
index 000000000000..3ff6139ac954
--- /dev/null
+++ b/data/tilesets/secondary/indigo_plateau_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 205 65
+222 172 65
+180 98 0
+213 213 139
+189 189 115
+148 148 82
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/palettes/10.pal b/data/tilesets/secondary/indigo_plateau_frlg/palettes/10.pal
new file mode 100644
index 000000000000..70ed40322587
--- /dev/null
+++ b/data/tilesets/secondary/indigo_plateau_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+213 230 197
+156 172 139
+123 123 131
+90 90 115
+65 74 106
+222 172 65
+180 98 0
+131 65 0
+205 205 123
+164 164 57
+115 189 246
+74 148 213
+49 115 180
+189 197 164
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/palettes/11.pal b/data/tilesets/secondary/indigo_plateau_frlg/palettes/11.pal
new file mode 100644
index 000000000000..7b47acf60ad7
--- /dev/null
+++ b/data/tilesets/secondary/indigo_plateau_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+255 255 255
+213 213 222
+180 180 164
+148 148 139
+123 123 131
+82 82 106
+197 222 205
+148 172 156
+98 131 106
+230 139 24
+197 98 0
+172 65 0
+230 213 139
+205 180 106
+172 148 82
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/palettes/12.pal b/data/tilesets/secondary/indigo_plateau_frlg/palettes/12.pal
new file mode 100644
index 000000000000..f5ff3dddfa15
--- /dev/null
+++ b/data/tilesets/secondary/indigo_plateau_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+148 148 139
+222 222 230
+205 205 213
+180 180 164
+255 0 255
+222 222 205
+205 205 189
+172 172 164
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+230 213 139
+205 180 106
+115 205 164
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/palettes/13.pal b/data/tilesets/secondary/indigo_plateau_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/indigo_plateau_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/palettes/14.pal b/data/tilesets/secondary/indigo_plateau_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/indigo_plateau_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/palettes/15.pal b/data/tilesets/secondary/indigo_plateau_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/indigo_plateau_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/indigo_plateau_frlg/tiles.png b/data/tilesets/secondary/indigo_plateau_frlg/tiles.png
new file mode 100644
index 000000000000..4a938b4c518b
Binary files /dev/null and b/data/tilesets/secondary/indigo_plateau_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/island_harbor_frlg/metatile_attributes.bin b/data/tilesets/secondary/island_harbor_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..f6a9032d4b5c
Binary files /dev/null and b/data/tilesets/secondary/island_harbor_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/island_harbor_frlg/metatiles.bin b/data/tilesets/secondary/island_harbor_frlg/metatiles.bin
new file mode 100644
index 000000000000..d5916a2cfea7
Binary files /dev/null and b/data/tilesets/secondary/island_harbor_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/island_harbor_frlg/palettes/00.pal b/data/tilesets/secondary/island_harbor_frlg/palettes/00.pal
new file mode 100644
index 000000000000..2f3f97d6fdb7
--- /dev/null
+++ b/data/tilesets/secondary/island_harbor_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/island_harbor_frlg/palettes/01.pal b/data/tilesets/secondary/island_harbor_frlg/palettes/01.pal
new file mode 100644
index 000000000000..22eb1667cb56
--- /dev/null
+++ b/data/tilesets/secondary/island_harbor_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+123 123 131
+65 49 65
+230 238 238
+90 189 139
+90 90 115
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+115 65 74
+82 49 65
+115 205 164
diff --git a/data/tilesets/secondary/island_harbor_frlg/palettes/02.pal b/data/tilesets/secondary/island_harbor_frlg/palettes/02.pal
new file mode 100644
index 000000000000..6b019b884c96
--- /dev/null
+++ b/data/tilesets/secondary/island_harbor_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/island_harbor_frlg/palettes/03.pal b/data/tilesets/secondary/island_harbor_frlg/palettes/03.pal
new file mode 100644
index 000000000000..205c464c79d6
--- /dev/null
+++ b/data/tilesets/secondary/island_harbor_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/island_harbor_frlg/palettes/04.pal b/data/tilesets/secondary/island_harbor_frlg/palettes/04.pal
new file mode 100644
index 000000000000..5871a448c008
--- /dev/null
+++ b/data/tilesets/secondary/island_harbor_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+230 246 255
+189 222 255
+139 189 255
+115 164 255
+65 139 222
+57 115 222
+82 148 230
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+49 115 197
+238 230 139
+230 213 139
+213 197 106
diff --git a/data/tilesets/secondary/island_harbor_frlg/palettes/05.pal b/data/tilesets/secondary/island_harbor_frlg/palettes/05.pal
new file mode 100644
index 000000000000..c5a653979a01
--- /dev/null
+++ b/data/tilesets/secondary/island_harbor_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/island_harbor_frlg/palettes/06.pal b/data/tilesets/secondary/island_harbor_frlg/palettes/06.pal
new file mode 100644
index 000000000000..9bad44649513
--- /dev/null
+++ b/data/tilesets/secondary/island_harbor_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+205 230 246
+180 213 255
+123 180 246
+98 148 230
+65 123 189
+49 98 180
+82 131 222
+213 230 238
+172 189 205
+123 123 131
+90 90 115
+238 246 246
+238 230 139
+230 213 139
+213 197 106
diff --git a/data/tilesets/secondary/island_harbor_frlg/palettes/07.pal b/data/tilesets/secondary/island_harbor_frlg/palettes/07.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/island_harbor_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/island_harbor_frlg/palettes/08.pal b/data/tilesets/secondary/island_harbor_frlg/palettes/08.pal
new file mode 100644
index 000000000000..5c1251024531
--- /dev/null
+++ b/data/tilesets/secondary/island_harbor_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+172 172 164
+205 213 213
+180 189 189
+148 156 156
+106 115 115
+197 246 230
+106 205 164
+57 156 115
+222 106 98
+222 213 123
+255 180 148
+197 189 98
+238 246 255
diff --git a/data/tilesets/secondary/island_harbor_frlg/palettes/09.pal b/data/tilesets/secondary/island_harbor_frlg/palettes/09.pal
new file mode 100644
index 000000000000..c25501332d0d
--- /dev/null
+++ b/data/tilesets/secondary/island_harbor_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+65 123 180
+238 246 255
+222 230 238
+189 205 230
+156 164 189
+139 139 156
+98 98 123
+57 57 106
+197 98 98
+172 65 106
+32 74 156
+197 148 0
+246 213 24
+222 238 255
+255 255 255
+74 106 139
diff --git a/data/tilesets/secondary/island_harbor_frlg/palettes/10.pal b/data/tilesets/secondary/island_harbor_frlg/palettes/10.pal
new file mode 100644
index 000000000000..3c091df8b340
--- /dev/null
+++ b/data/tilesets/secondary/island_harbor_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+148 148 164
+205 189 197
+255 255 255
+255 213 115
+189 148 49
+139 98 74
+90 106 180
+255 205 139
+230 172 90
+230 148 65
+180 98 24
+238 213 172
+222 156 139
+123 123 123
diff --git a/data/tilesets/secondary/island_harbor_frlg/palettes/11.pal b/data/tilesets/secondary/island_harbor_frlg/palettes/11.pal
new file mode 100644
index 000000000000..c42eeb7e128e
--- /dev/null
+++ b/data/tilesets/secondary/island_harbor_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+148 148 164
+172 172 164
+164 222 255
+115 180 205
+65 139 164
+41 106 148
+205 213 213
+238 230 139
+189 180 98
+139 131 65
+0 0 0
+255 255 255
+230 172 90
+189 246 255
diff --git a/data/tilesets/secondary/island_harbor_frlg/palettes/12.pal b/data/tilesets/secondary/island_harbor_frlg/palettes/12.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/island_harbor_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/island_harbor_frlg/palettes/13.pal b/data/tilesets/secondary/island_harbor_frlg/palettes/13.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/island_harbor_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/island_harbor_frlg/palettes/14.pal b/data/tilesets/secondary/island_harbor_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/island_harbor_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/island_harbor_frlg/palettes/15.pal b/data/tilesets/secondary/island_harbor_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/island_harbor_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/island_harbor_frlg/tiles.png b/data/tilesets/secondary/island_harbor_frlg/tiles.png
new file mode 100644
index 000000000000..166ae2e18f97
Binary files /dev/null and b/data/tilesets/secondary/island_harbor_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/lab_frlg/metatile_attributes.bin b/data/tilesets/secondary/lab_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..be758150268a
Binary files /dev/null and b/data/tilesets/secondary/lab_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/lab_frlg/metatiles.bin b/data/tilesets/secondary/lab_frlg/metatiles.bin
new file mode 100644
index 000000000000..a7833446f030
Binary files /dev/null and b/data/tilesets/secondary/lab_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/lab_frlg/palettes/00.pal b/data/tilesets/secondary/lab_frlg/palettes/00.pal
new file mode 100644
index 000000000000..9fc16da3b5f1
--- /dev/null
+++ b/data/tilesets/secondary/lab_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+238 238 246
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/lab_frlg/palettes/01.pal b/data/tilesets/secondary/lab_frlg/palettes/01.pal
new file mode 100644
index 000000000000..76403e6d627e
--- /dev/null
+++ b/data/tilesets/secondary/lab_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+139 180 222
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/lab_frlg/palettes/02.pal b/data/tilesets/secondary/lab_frlg/palettes/02.pal
new file mode 100644
index 000000000000..b1ecd71dcb90
--- /dev/null
+++ b/data/tilesets/secondary/lab_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+197 189 213
+255 255 255
+106 197 106
+230 213 123
+255 205 90
+255 238 197
+90 90 115
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/lab_frlg/palettes/03.pal b/data/tilesets/secondary/lab_frlg/palettes/03.pal
new file mode 100644
index 000000000000..43d9b60e3726
--- /dev/null
+++ b/data/tilesets/secondary/lab_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 180 74
+255 246 131
+65 98 156
+90 123 180
+115 156 197
+255 0 255
+164 164 172
+205 205 213
+238 238 246
+106 172 115
+156 205 139
diff --git a/data/tilesets/secondary/lab_frlg/palettes/04.pal b/data/tilesets/secondary/lab_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/lab_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/lab_frlg/palettes/05.pal b/data/tilesets/secondary/lab_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/lab_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/lab_frlg/palettes/06.pal b/data/tilesets/secondary/lab_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/lab_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/lab_frlg/palettes/07.pal b/data/tilesets/secondary/lab_frlg/palettes/07.pal
new file mode 100644
index 000000000000..3d7f8bd898ab
--- /dev/null
+++ b/data/tilesets/secondary/lab_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+139 131 148
+180 172 180
+189 197 213
+255 255 255
+255 205 139
+230 164 98
+197 131 65
+172 90 24
+82 148 197
+131 189 222
+189 230 255
+123 123 123
+197 180 74
+246 238 148
diff --git a/data/tilesets/secondary/lab_frlg/palettes/08.pal b/data/tilesets/secondary/lab_frlg/palettes/08.pal
new file mode 100644
index 000000000000..7fce49d063f3
--- /dev/null
+++ b/data/tilesets/secondary/lab_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+139 131 148
+180 172 180
+189 197 213
+255 255 255
+222 222 180
+197 197 148
+156 156 106
+230 164 98
+172 90 24
+172 164 65
+139 123 24
+246 238 148
+0 0 0
+246 238 148
diff --git a/data/tilesets/secondary/lab_frlg/palettes/09.pal b/data/tilesets/secondary/lab_frlg/palettes/09.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/lab_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/lab_frlg/palettes/10.pal b/data/tilesets/secondary/lab_frlg/palettes/10.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/lab_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/lab_frlg/palettes/11.pal b/data/tilesets/secondary/lab_frlg/palettes/11.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/lab_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/lab_frlg/palettes/12.pal b/data/tilesets/secondary/lab_frlg/palettes/12.pal
new file mode 100644
index 000000000000..3c32c9fd4326
--- /dev/null
+++ b/data/tilesets/secondary/lab_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+238 238 246
+82 82 106
+139 131 148
+180 172 180
+189 197 213
+255 255 255
+139 197 139
+156 205 246
+98 156 238
+90 123 180
+222 205 106
+213 230 246
+255 189 180
+230 106 65
+255 131 115
+246 238 148
diff --git a/data/tilesets/secondary/lab_frlg/palettes/13.pal b/data/tilesets/secondary/lab_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/lab_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/lab_frlg/palettes/14.pal b/data/tilesets/secondary/lab_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/lab_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/lab_frlg/palettes/15.pal b/data/tilesets/secondary/lab_frlg/palettes/15.pal
new file mode 100644
index 000000000000..92e7ed30983d
--- /dev/null
+++ b/data/tilesets/secondary/lab_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+0 0 0
diff --git a/data/tilesets/secondary/lab_frlg/tiles.png b/data/tilesets/secondary/lab_frlg/tiles.png
new file mode 100644
index 000000000000..6caeac8a8c86
Binary files /dev/null and b/data/tilesets/secondary/lab_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/lavender_town_frlg/metatile_attributes.bin b/data/tilesets/secondary/lavender_town_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..d103d7155e69
Binary files /dev/null and b/data/tilesets/secondary/lavender_town_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/lavender_town_frlg/metatiles.bin b/data/tilesets/secondary/lavender_town_frlg/metatiles.bin
new file mode 100644
index 000000000000..f69885645f02
Binary files /dev/null and b/data/tilesets/secondary/lavender_town_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/lavender_town_frlg/palettes/00.pal b/data/tilesets/secondary/lavender_town_frlg/palettes/00.pal
new file mode 100644
index 000000000000..2f3f97d6fdb7
--- /dev/null
+++ b/data/tilesets/secondary/lavender_town_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/lavender_town_frlg/palettes/01.pal b/data/tilesets/secondary/lavender_town_frlg/palettes/01.pal
new file mode 100644
index 000000000000..d8a4e7757d1b
--- /dev/null
+++ b/data/tilesets/secondary/lavender_town_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+115 65 74
+82 49 65
+115 205 164
diff --git a/data/tilesets/secondary/lavender_town_frlg/palettes/02.pal b/data/tilesets/secondary/lavender_town_frlg/palettes/02.pal
new file mode 100644
index 000000000000..6b019b884c96
--- /dev/null
+++ b/data/tilesets/secondary/lavender_town_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/lavender_town_frlg/palettes/03.pal b/data/tilesets/secondary/lavender_town_frlg/palettes/03.pal
new file mode 100644
index 000000000000..205c464c79d6
--- /dev/null
+++ b/data/tilesets/secondary/lavender_town_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/lavender_town_frlg/palettes/04.pal b/data/tilesets/secondary/lavender_town_frlg/palettes/04.pal
new file mode 100644
index 000000000000..07dcd957cf71
--- /dev/null
+++ b/data/tilesets/secondary/lavender_town_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 255 255
+172 222 255
+148 189 238
+106 156 230
+57 148 197
+32 131 172
+82 148 213
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+230 213 148
+238 230 139
+222 197 139
+213 189 106
diff --git a/data/tilesets/secondary/lavender_town_frlg/palettes/05.pal b/data/tilesets/secondary/lavender_town_frlg/palettes/05.pal
new file mode 100644
index 000000000000..c5a653979a01
--- /dev/null
+++ b/data/tilesets/secondary/lavender_town_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/lavender_town_frlg/palettes/06.pal b/data/tilesets/secondary/lavender_town_frlg/palettes/06.pal
new file mode 100644
index 000000000000..0dba59a72c27
--- /dev/null
+++ b/data/tilesets/secondary/lavender_town_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+222 255 255
+172 222 255
+148 189 238
+106 156 230
+41 90 172
+41 57 148
+74 123 197
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+230 213 148
+238 230 139
+222 197 139
+213 189 106
diff --git a/data/tilesets/secondary/lavender_town_frlg/palettes/07.pal b/data/tilesets/secondary/lavender_town_frlg/palettes/07.pal
new file mode 100644
index 000000000000..93518605a9ef
--- /dev/null
+++ b/data/tilesets/secondary/lavender_town_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
diff --git a/data/tilesets/secondary/lavender_town_frlg/palettes/08.pal b/data/tilesets/secondary/lavender_town_frlg/palettes/08.pal
new file mode 100644
index 000000000000..376749664117
--- /dev/null
+++ b/data/tilesets/secondary/lavender_town_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+115 205 164
+148 164 180
+123 123 131
+65 74 106
+205 82 74
+172 32 41
+255 246 189
+238 230 156
+222 205 131
+189 164 90
+148 131 49
+123 90 24
+123 123 131
+65 74 106
+205 222 238
diff --git a/data/tilesets/secondary/lavender_town_frlg/palettes/09.pal b/data/tilesets/secondary/lavender_town_frlg/palettes/09.pal
new file mode 100644
index 000000000000..82b469a66915
--- /dev/null
+++ b/data/tilesets/secondary/lavender_town_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+255 255 255
+230 246 238
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+172 172 106
+213 213 148
+180 205 180
+148 180 148
+131 164 131
+106 139 106
+197 222 197
+139 172 139
+90 115 90
diff --git a/data/tilesets/secondary/lavender_town_frlg/palettes/10.pal b/data/tilesets/secondary/lavender_town_frlg/palettes/10.pal
new file mode 100644
index 000000000000..b97e9df4b8f2
--- /dev/null
+++ b/data/tilesets/secondary/lavender_town_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+255 255 255
+213 230 222
+148 164 180
+123 123 131
+90 90 115
+82 82 106
+213 238 255
+164 189 222
+123 148 180
+255 238 139
+222 180 65
+255 255 189
+164 98 98
+213 148 148
+197 123 131
diff --git a/data/tilesets/secondary/lavender_town_frlg/palettes/11.pal b/data/tilesets/secondary/lavender_town_frlg/palettes/11.pal
new file mode 100644
index 000000000000..f711819764aa
--- /dev/null
+++ b/data/tilesets/secondary/lavender_town_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+255 255 255
+255 0 255
+255 0 255
+123 123 131
+255 0 255
+82 82 106
+213 238 255
+164 189 222
+123 148 180
+255 238 139
+222 180 65
+255 255 189
+156 213 255
+115 189 246
+98 164 222
diff --git a/data/tilesets/secondary/lavender_town_frlg/palettes/12.pal b/data/tilesets/secondary/lavender_town_frlg/palettes/12.pal
new file mode 100644
index 000000000000..0cdcab8c27b8
--- /dev/null
+++ b/data/tilesets/secondary/lavender_town_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+246 246 255
+222 205 246
+205 172 255
+172 139 213
+123 123 131
+90 90 115
+65 74 106
+230 222 131
+213 189 98
+222 197 255
+172 139 213
+148 115 189
+139 106 180
+255 246 164
+172 148 82
diff --git a/data/tilesets/secondary/lavender_town_frlg/palettes/13.pal b/data/tilesets/secondary/lavender_town_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/lavender_town_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/lavender_town_frlg/palettes/14.pal b/data/tilesets/secondary/lavender_town_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/lavender_town_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/lavender_town_frlg/palettes/15.pal b/data/tilesets/secondary/lavender_town_frlg/palettes/15.pal
new file mode 100644
index 000000000000..3973e491ad46
--- /dev/null
+++ b/data/tilesets/secondary/lavender_town_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+246 230 172
+246 213 180
+222 189 164
+180 148 123
+139 98 90
+90 57 74
+123 123 131
+65 74 106
+205 222 238
diff --git a/data/tilesets/secondary/lavender_town_frlg/tiles.png b/data/tilesets/secondary/lavender_town_frlg/tiles.png
new file mode 100644
index 000000000000..66bd81f8ba29
Binary files /dev/null and b/data/tilesets/secondary/lavender_town_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/mart_frlg/metatile_attributes.bin b/data/tilesets/secondary/mart_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..429e556c74da
Binary files /dev/null and b/data/tilesets/secondary/mart_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/mart_frlg/metatiles.bin b/data/tilesets/secondary/mart_frlg/metatiles.bin
new file mode 100644
index 000000000000..1c00836c1a7f
Binary files /dev/null and b/data/tilesets/secondary/mart_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/mart_frlg/palettes/00.pal b/data/tilesets/secondary/mart_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/mart_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/mart_frlg/palettes/01.pal b/data/tilesets/secondary/mart_frlg/palettes/01.pal
new file mode 100644
index 000000000000..3a16a45c79a0
--- /dev/null
+++ b/data/tilesets/secondary/mart_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+255 230 156
+222 213 230
+238 246 238
diff --git a/data/tilesets/secondary/mart_frlg/palettes/02.pal b/data/tilesets/secondary/mart_frlg/palettes/02.pal
new file mode 100644
index 000000000000..cc3a9457d494
--- /dev/null
+++ b/data/tilesets/secondary/mart_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+139 197 139
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/mart_frlg/palettes/03.pal b/data/tilesets/secondary/mart_frlg/palettes/03.pal
new file mode 100644
index 000000000000..e1b56cd57de4
--- /dev/null
+++ b/data/tilesets/secondary/mart_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+164 172 164
+180 189 189
+238 246 246
+238 246 238
+213 230 222
+197 205 197
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/mart_frlg/palettes/04.pal b/data/tilesets/secondary/mart_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/mart_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/mart_frlg/palettes/05.pal b/data/tilesets/secondary/mart_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/mart_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/mart_frlg/palettes/06.pal b/data/tilesets/secondary/mart_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/mart_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/mart_frlg/palettes/07.pal b/data/tilesets/secondary/mart_frlg/palettes/07.pal
new file mode 100644
index 000000000000..0a07057ecda5
--- /dev/null
+++ b/data/tilesets/secondary/mart_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/mart_frlg/palettes/08.pal b/data/tilesets/secondary/mart_frlg/palettes/08.pal
new file mode 100644
index 000000000000..06fcc911b85a
--- /dev/null
+++ b/data/tilesets/secondary/mart_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+115 189 139
+172 230 172
+205 246 205
+0 0 0
diff --git a/data/tilesets/secondary/mart_frlg/palettes/09.pal b/data/tilesets/secondary/mart_frlg/palettes/09.pal
new file mode 100644
index 000000000000..ea018609bd99
--- /dev/null
+++ b/data/tilesets/secondary/mart_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+164 172 164
+180 189 189
+238 246 246
+238 246 238
+213 230 222
+197 205 197
+255 0 255
+255 0 255
+156 205 255
+106 164 238
+74 139 230
+57 131 205
+41 98 189
+255 0 255
diff --git a/data/tilesets/secondary/mart_frlg/palettes/10.pal b/data/tilesets/secondary/mart_frlg/palettes/10.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/mart_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/mart_frlg/palettes/11.pal b/data/tilesets/secondary/mart_frlg/palettes/11.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/mart_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/mart_frlg/palettes/12.pal b/data/tilesets/secondary/mart_frlg/palettes/12.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/mart_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/mart_frlg/palettes/13.pal b/data/tilesets/secondary/mart_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/mart_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/mart_frlg/palettes/14.pal b/data/tilesets/secondary/mart_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/mart_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/mart_frlg/palettes/15.pal b/data/tilesets/secondary/mart_frlg/palettes/15.pal
new file mode 100644
index 000000000000..92e7ed30983d
--- /dev/null
+++ b/data/tilesets/secondary/mart_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+0 0 0
diff --git a/data/tilesets/secondary/mart_frlg/tiles.png b/data/tilesets/secondary/mart_frlg/tiles.png
new file mode 100644
index 000000000000..2bfeb408064a
Binary files /dev/null and b/data/tilesets/secondary/mart_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_0.png b/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_0.png
new file mode 100644
index 000000000000..18ea4bdd7d0e
Binary files /dev/null and b/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_0.png differ
diff --git a/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_1.png b/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_1.png
new file mode 100644
index 000000000000..350108ce0e47
Binary files /dev/null and b/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_1.png differ
diff --git a/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_2.png b/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_2.png
new file mode 100644
index 000000000000..91c3cde759d5
Binary files /dev/null and b/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_2.png differ
diff --git a/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_3.png b/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_3.png
new file mode 100644
index 000000000000..a6e727c7a983
Binary files /dev/null and b/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_3.png differ
diff --git a/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_4.png b/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_4.png
new file mode 100644
index 000000000000..80e86e3f0e3a
Binary files /dev/null and b/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_4.png differ
diff --git a/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_5.png b/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_5.png
new file mode 100644
index 000000000000..2ab35d89094d
Binary files /dev/null and b/data/tilesets/secondary/mauville_game_corner/anim/lights/light_anim_5.png differ
diff --git a/data/tilesets/secondary/mauville_game_corner/metatile_attributes.bin b/data/tilesets/secondary/mauville_game_corner/metatile_attributes.bin
index 2ebca58dde6e..e1eedfdb8779 100644
Binary files a/data/tilesets/secondary/mauville_game_corner/metatile_attributes.bin and b/data/tilesets/secondary/mauville_game_corner/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/mauville_game_corner/metatiles.bin b/data/tilesets/secondary/mauville_game_corner/metatiles.bin
index 07cf8c1c9757..b71363d940b0 100644
Binary files a/data/tilesets/secondary/mauville_game_corner/metatiles.bin and b/data/tilesets/secondary/mauville_game_corner/metatiles.bin differ
diff --git a/data/tilesets/secondary/mauville_game_corner/palettes/06.pal b/data/tilesets/secondary/mauville_game_corner/palettes/06.pal
index 7dc7f376afd5..f55bf6e9cdd2 100644
--- a/data/tilesets/secondary/mauville_game_corner/palettes/06.pal
+++ b/data/tilesets/secondary/mauville_game_corner/palettes/06.pal
@@ -3,17 +3,17 @@ JASC-PAL
16
0 0 0
82 82 106
-123 123 139
-205 205 197
+117 123 135
+185 191 212
255 255 255
-49 131 156
-98 172 205
-189 205 230
-238 230 246
-213 82 49
-246 82 82
+136 139 159
+176 173 196
+203 209 232
+214 230 246
+220 70 81
+255 85 85
164 74 65
172 98 90
-0 0 0
-0 0 0
+156 255 90
+131 197 90
0 0 0
diff --git a/data/tilesets/secondary/mauville_game_corner/palettes/08.pal b/data/tilesets/secondary/mauville_game_corner/palettes/08.pal
index 4f83e4b70839..67068e968862 100644
--- a/data/tilesets/secondary/mauville_game_corner/palettes/08.pal
+++ b/data/tilesets/secondary/mauville_game_corner/palettes/08.pal
@@ -2,18 +2,18 @@ JASC-PAL
0100
16
0 0 0
-82 82 106
-156 148 139
-205 189 197
-255 255 255
-82 123 255
-156 255 90
-131 197 90
-123 148 213
-180 205 230
-180 123 49
-222 156 74
-255 189 90
-0 0 0
-255 49 148
+128 132 152
+160 72 64
+128 196 88
+80 80 104
+200 208 232
+176 172 192
+152 252 88
+216 68 80
+248 252 248
+168 96 88
+208 228 240
+136 148 168
+184 188 208
+248 84 80
0 0 0
diff --git a/data/tilesets/secondary/mauville_game_corner/palettes/09.pal b/data/tilesets/secondary/mauville_game_corner/palettes/09.pal
index 0f7f46c29aa6..b6fe0a8c8a6b 100644
--- a/data/tilesets/secondary/mauville_game_corner/palettes/09.pal
+++ b/data/tilesets/secondary/mauville_game_corner/palettes/09.pal
@@ -4,7 +4,7 @@ JASC-PAL
0 0 0
82 82 106
123 123 139
-205 205 197
+168 148 151
255 255 255
156 90 57
197 131 82
diff --git a/data/tilesets/secondary/mauville_game_corner/palettes/10.pal b/data/tilesets/secondary/mauville_game_corner/palettes/10.pal
index 4b0812f09403..450793286e48 100644
--- a/data/tilesets/secondary/mauville_game_corner/palettes/10.pal
+++ b/data/tilesets/secondary/mauville_game_corner/palettes/10.pal
@@ -2,18 +2,18 @@ JASC-PAL
0100
16
0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
+82 82 106
+132 135 152
+185 191 212
+255 255 255
+142 148 174
+176 173 196
+203 209 232
+214 230 246
+46 130 217
+53 173 214
+32 78 171
+84 98 177
+156 255 90
+131 197 90
0 0 0
diff --git a/data/tilesets/secondary/mauville_game_corner/palettes/11.pal b/data/tilesets/secondary/mauville_game_corner/palettes/11.pal
index 4b0812f09403..8ae3d09397b6 100644
--- a/data/tilesets/secondary/mauville_game_corner/palettes/11.pal
+++ b/data/tilesets/secondary/mauville_game_corner/palettes/11.pal
@@ -2,18 +2,18 @@ JASC-PAL
0100
16
0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
+65 74 106
+139 139 148
+180 180 164
+255 255 255
+206 159 70
+64 123 199
+101 171 255
+148 205 252
+217 188 98
+205 98 57
+246 139 98
+255 223 162
+116 101 183
+161 135 229
+110 99 122
diff --git a/data/tilesets/secondary/mauville_game_corner/palettes/12.pal b/data/tilesets/secondary/mauville_game_corner/palettes/12.pal
index 4b0812f09403..03160d6bda5c 100644
--- a/data/tilesets/secondary/mauville_game_corner/palettes/12.pal
+++ b/data/tilesets/secondary/mauville_game_corner/palettes/12.pal
@@ -2,18 +2,18 @@ JASC-PAL
0100
16
0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
+82 82 106
+132 135 152
+185 191 212
+255 255 255
+142 148 174
+176 173 196
+203 209 232
+214 230 246
+130 101 162
+155 114 185
+96 78 122
+107 93 136
+156 255 90
+131 197 90
0 0 0
diff --git a/data/tilesets/secondary/mauville_game_corner/tiles.png b/data/tilesets/secondary/mauville_game_corner/tiles.png
index 50e341fde562..d09b9e51b6f9 100644
Binary files a/data/tilesets/secondary/mauville_game_corner/tiles.png and b/data/tilesets/secondary/mauville_game_corner/tiles.png differ
diff --git a/data/tilesets/secondary/mt_ember_frlg/anim/steam/0.png b/data/tilesets/secondary/mt_ember_frlg/anim/steam/0.png
new file mode 100644
index 000000000000..ab0ca2c698a8
Binary files /dev/null and b/data/tilesets/secondary/mt_ember_frlg/anim/steam/0.png differ
diff --git a/data/tilesets/secondary/mt_ember_frlg/anim/steam/1.png b/data/tilesets/secondary/mt_ember_frlg/anim/steam/1.png
new file mode 100644
index 000000000000..1324c7ad5cab
Binary files /dev/null and b/data/tilesets/secondary/mt_ember_frlg/anim/steam/1.png differ
diff --git a/data/tilesets/secondary/mt_ember_frlg/anim/steam/2.png b/data/tilesets/secondary/mt_ember_frlg/anim/steam/2.png
new file mode 100644
index 000000000000..310aa1ebd801
Binary files /dev/null and b/data/tilesets/secondary/mt_ember_frlg/anim/steam/2.png differ
diff --git a/data/tilesets/secondary/mt_ember_frlg/anim/steam/3.png b/data/tilesets/secondary/mt_ember_frlg/anim/steam/3.png
new file mode 100644
index 000000000000..a6ec412cf459
Binary files /dev/null and b/data/tilesets/secondary/mt_ember_frlg/anim/steam/3.png differ
diff --git a/data/tilesets/secondary/mt_ember_frlg/metatile_attributes.bin b/data/tilesets/secondary/mt_ember_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..2d655cf7e883
Binary files /dev/null and b/data/tilesets/secondary/mt_ember_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/mt_ember_frlg/metatiles.bin b/data/tilesets/secondary/mt_ember_frlg/metatiles.bin
new file mode 100644
index 000000000000..b8079682100d
Binary files /dev/null and b/data/tilesets/secondary/mt_ember_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/mt_ember_frlg/palettes/00.pal b/data/tilesets/secondary/mt_ember_frlg/palettes/00.pal
new file mode 100644
index 000000000000..30ff4070a1a6
--- /dev/null
+++ b/data/tilesets/secondary/mt_ember_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/mt_ember_frlg/palettes/01.pal b/data/tilesets/secondary/mt_ember_frlg/palettes/01.pal
new file mode 100644
index 000000000000..e15d979f128b
--- /dev/null
+++ b/data/tilesets/secondary/mt_ember_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+222 230 230
+197 205 213
+172 189 205
+123 123 131
+65 49 65
+230 238 238
+90 189 139
+90 90 115
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+115 65 74
+82 49 65
+115 205 164
diff --git a/data/tilesets/secondary/mt_ember_frlg/palettes/02.pal b/data/tilesets/secondary/mt_ember_frlg/palettes/02.pal
new file mode 100644
index 000000000000..372fb5d7c3b6
--- /dev/null
+++ b/data/tilesets/secondary/mt_ember_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/mt_ember_frlg/palettes/03.pal b/data/tilesets/secondary/mt_ember_frlg/palettes/03.pal
new file mode 100644
index 000000000000..973765509c44
--- /dev/null
+++ b/data/tilesets/secondary/mt_ember_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/mt_ember_frlg/palettes/04.pal b/data/tilesets/secondary/mt_ember_frlg/palettes/04.pal
new file mode 100644
index 000000000000..91fdcabdf97f
--- /dev/null
+++ b/data/tilesets/secondary/mt_ember_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+213 238 255
+172 205 255
+139 180 238
+106 156 230
+74 139 189
+65 123 189
+82 139 205
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+49 115 172
+238 230 139
+230 213 139
+213 197 106
diff --git a/data/tilesets/secondary/mt_ember_frlg/palettes/05.pal b/data/tilesets/secondary/mt_ember_frlg/palettes/05.pal
new file mode 100644
index 000000000000..0edb843f52fb
--- /dev/null
+++ b/data/tilesets/secondary/mt_ember_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/mt_ember_frlg/palettes/06.pal b/data/tilesets/secondary/mt_ember_frlg/palettes/06.pal
new file mode 100644
index 000000000000..32afdccbb1f8
--- /dev/null
+++ b/data/tilesets/secondary/mt_ember_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+213 238 255
+172 205 255
+139 180 238
+106 156 230
+65 123 172
+41 98 156
+74 115 197
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+49 115 172
+238 230 139
+230 213 139
+213 197 106
diff --git a/data/tilesets/secondary/mt_ember_frlg/palettes/07.pal b/data/tilesets/secondary/mt_ember_frlg/palettes/07.pal
new file mode 100644
index 000000000000..fa9d5d6332a1
--- /dev/null
+++ b/data/tilesets/secondary/mt_ember_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+172 123 123
+139 98 98
+115 74 74
+90 49 49
+65 24 24
+41 0 0
+41 41 49
diff --git a/data/tilesets/secondary/mt_ember_frlg/palettes/08.pal b/data/tilesets/secondary/mt_ember_frlg/palettes/08.pal
new file mode 100644
index 000000000000..f4a797b8723c
--- /dev/null
+++ b/data/tilesets/secondary/mt_ember_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+197 197 180
+172 172 156
+148 148 123
+123 123 106
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+213 172 172
+197 156 148
+172 123 123
+131 82 74
+115 49 49
+90 24 24
+90 90 98
diff --git a/data/tilesets/secondary/mt_ember_frlg/palettes/09.pal b/data/tilesets/secondary/mt_ember_frlg/palettes/09.pal
new file mode 100644
index 000000000000..0a21091959b0
--- /dev/null
+++ b/data/tilesets/secondary/mt_ember_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+197 197 180
+172 172 156
+148 148 123
+123 123 106
+255 238 164
+230 197 139
+205 172 123
+164 123 90
+148 115 74
+106 65 41
+74 74 57
+0 0 0
+98 139 197
+74 115 172
+57 98 156
diff --git a/data/tilesets/secondary/mt_ember_frlg/palettes/10.pal b/data/tilesets/secondary/mt_ember_frlg/palettes/10.pal
new file mode 100644
index 000000000000..fc340ed1503a
--- /dev/null
+++ b/data/tilesets/secondary/mt_ember_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+255 0 255
+255 0 255
+255 0 255
+0 0 0
+255 238 164
+230 197 139
+205 172 123
+172 139 106
+213 172 172
+197 156 148
+172 123 123
+131 82 74
+115 49 49
+90 24 24
+90 90 98
diff --git a/data/tilesets/secondary/mt_ember_frlg/palettes/11.pal b/data/tilesets/secondary/mt_ember_frlg/palettes/11.pal
new file mode 100644
index 000000000000..e07ce69097ae
--- /dev/null
+++ b/data/tilesets/secondary/mt_ember_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+197 197 180
+172 172 156
+148 148 123
+123 123 106
+164 172 172
+255 230 65
+123 123 106
+255 255 255
+74 65 74
+238 238 230
+189 189 180
+230 230 205
+205 205 180
+180 180 164
+164 164 148
diff --git a/data/tilesets/secondary/mt_ember_frlg/palettes/12.pal b/data/tilesets/secondary/mt_ember_frlg/palettes/12.pal
new file mode 100644
index 000000000000..cc53a5940868
--- /dev/null
+++ b/data/tilesets/secondary/mt_ember_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 115 172
+139 205 246
+98 172 197
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+139 90 90
+106 65 65
+82 49 49
+49 32 32
+24 16 16
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/mt_ember_frlg/palettes/13.pal b/data/tilesets/secondary/mt_ember_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/mt_ember_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/mt_ember_frlg/palettes/14.pal b/data/tilesets/secondary/mt_ember_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/mt_ember_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/mt_ember_frlg/palettes/15.pal b/data/tilesets/secondary/mt_ember_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/mt_ember_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/mt_ember_frlg/tiles.png b/data/tilesets/secondary/mt_ember_frlg/tiles.png
new file mode 100644
index 000000000000..04d2b7b67516
Binary files /dev/null and b/data/tilesets/secondary/mt_ember_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/museum_frlg/metatile_attributes.bin b/data/tilesets/secondary/museum_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..77ad62e5aa33
Binary files /dev/null and b/data/tilesets/secondary/museum_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/museum_frlg/metatiles.bin b/data/tilesets/secondary/museum_frlg/metatiles.bin
new file mode 100644
index 000000000000..993b73cbd093
Binary files /dev/null and b/data/tilesets/secondary/museum_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/museum_frlg/palettes/00.pal b/data/tilesets/secondary/museum_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/museum_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/museum_frlg/palettes/01.pal b/data/tilesets/secondary/museum_frlg/palettes/01.pal
new file mode 100644
index 000000000000..69f3f0b9e6e1
--- /dev/null
+++ b/data/tilesets/secondary/museum_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+180 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+255 230 156
+222 213 230
+238 246 238
diff --git a/data/tilesets/secondary/museum_frlg/palettes/02.pal b/data/tilesets/secondary/museum_frlg/palettes/02.pal
new file mode 100644
index 000000000000..330e35b020a6
--- /dev/null
+++ b/data/tilesets/secondary/museum_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+139 197 139
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+213 131 82
+156 205 246
+98 156 238
+57 123 222
+222 139 106
+189 98 74
diff --git a/data/tilesets/secondary/museum_frlg/palettes/03.pal b/data/tilesets/secondary/museum_frlg/palettes/03.pal
new file mode 100644
index 000000000000..1520bed0b528
--- /dev/null
+++ b/data/tilesets/secondary/museum_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+148 148 148
+180 180 180
+255 255 255
+238 246 238
+222 238 222
+197 205 197
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+90 90 90
+115 106 98
+148 123 98
diff --git a/data/tilesets/secondary/museum_frlg/palettes/04.pal b/data/tilesets/secondary/museum_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/museum_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/museum_frlg/palettes/05.pal b/data/tilesets/secondary/museum_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/museum_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/museum_frlg/palettes/06.pal b/data/tilesets/secondary/museum_frlg/palettes/06.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/museum_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/museum_frlg/palettes/07.pal b/data/tilesets/secondary/museum_frlg/palettes/07.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/museum_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/museum_frlg/palettes/08.pal b/data/tilesets/secondary/museum_frlg/palettes/08.pal
new file mode 100644
index 000000000000..223737ab6991
--- /dev/null
+++ b/data/tilesets/secondary/museum_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+106 98 74
+139 123 74
+164 139 74
+222 205 74
+123 123 123
+189 197 205
+238 246 238
+98 90 98
+156 131 106
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/museum_frlg/palettes/09.pal b/data/tilesets/secondary/museum_frlg/palettes/09.pal
new file mode 100644
index 000000000000..6de173f9078e
--- /dev/null
+++ b/data/tilesets/secondary/museum_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+98 98 74
+164 139 82
+222 205 74
+255 0 255
+255 0 255
+213 213 156
+222 230 172
+246 246 238
+90 90 98
+115 115 106
+156 131 106
+205 131 82
+238 164 106
diff --git a/data/tilesets/secondary/museum_frlg/palettes/10.pal b/data/tilesets/secondary/museum_frlg/palettes/10.pal
new file mode 100644
index 000000000000..fc8da5d40d17
--- /dev/null
+++ b/data/tilesets/secondary/museum_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+98 98 74
+164 139 82
+222 205 74
+65 123 164
+82 139 197
+98 189 213
+148 213 213
+180 238 230
+189 197 205
+238 246 238
+222 222 172
+205 131 82
+246 172 106
diff --git a/data/tilesets/secondary/museum_frlg/palettes/11.pal b/data/tilesets/secondary/museum_frlg/palettes/11.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/museum_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/museum_frlg/palettes/12.pal b/data/tilesets/secondary/museum_frlg/palettes/12.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/museum_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/museum_frlg/palettes/13.pal b/data/tilesets/secondary/museum_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/museum_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/museum_frlg/palettes/14.pal b/data/tilesets/secondary/museum_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/museum_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/museum_frlg/palettes/15.pal b/data/tilesets/secondary/museum_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/museum_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/museum_frlg/tiles.png b/data/tilesets/secondary/museum_frlg/tiles.png
new file mode 100644
index 000000000000..9be5ebca9014
Binary files /dev/null and b/data/tilesets/secondary/museum_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/navel_rock_frlg/metatile_attributes.bin b/data/tilesets/secondary/navel_rock_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..961e6098eb04
Binary files /dev/null and b/data/tilesets/secondary/navel_rock_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/navel_rock_frlg/metatiles.bin b/data/tilesets/secondary/navel_rock_frlg/metatiles.bin
new file mode 100644
index 000000000000..7fdc5c55d751
Binary files /dev/null and b/data/tilesets/secondary/navel_rock_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/navel_rock_frlg/palettes/00.pal b/data/tilesets/secondary/navel_rock_frlg/palettes/00.pal
new file mode 100644
index 000000000000..2f3f97d6fdb7
--- /dev/null
+++ b/data/tilesets/secondary/navel_rock_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/navel_rock_frlg/palettes/01.pal b/data/tilesets/secondary/navel_rock_frlg/palettes/01.pal
new file mode 100644
index 000000000000..d8a4e7757d1b
--- /dev/null
+++ b/data/tilesets/secondary/navel_rock_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+115 65 74
+82 49 65
+115 205 164
diff --git a/data/tilesets/secondary/navel_rock_frlg/palettes/02.pal b/data/tilesets/secondary/navel_rock_frlg/palettes/02.pal
new file mode 100644
index 000000000000..6b019b884c96
--- /dev/null
+++ b/data/tilesets/secondary/navel_rock_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/navel_rock_frlg/palettes/03.pal b/data/tilesets/secondary/navel_rock_frlg/palettes/03.pal
new file mode 100644
index 000000000000..205c464c79d6
--- /dev/null
+++ b/data/tilesets/secondary/navel_rock_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/navel_rock_frlg/palettes/04.pal b/data/tilesets/secondary/navel_rock_frlg/palettes/04.pal
new file mode 100644
index 000000000000..702db8a907c6
--- /dev/null
+++ b/data/tilesets/secondary/navel_rock_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 222 172
+189 189 139
+156 156 106
+115 115 65
+255 255 213
+255 238 180
+238 222 156
+172 197 197
+148 189 189
+123 180 180
+230 246 255
+189 222 222
+172 213 222
+148 205 205
+255 255 255
diff --git a/data/tilesets/secondary/navel_rock_frlg/palettes/05.pal b/data/tilesets/secondary/navel_rock_frlg/palettes/05.pal
new file mode 100644
index 000000000000..c5a653979a01
--- /dev/null
+++ b/data/tilesets/secondary/navel_rock_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/navel_rock_frlg/palettes/06.pal b/data/tilesets/secondary/navel_rock_frlg/palettes/06.pal
new file mode 100644
index 000000000000..995731c23cc0
--- /dev/null
+++ b/data/tilesets/secondary/navel_rock_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/navel_rock_frlg/palettes/07.pal b/data/tilesets/secondary/navel_rock_frlg/palettes/07.pal
new file mode 100644
index 000000000000..364379ad9d46
--- /dev/null
+++ b/data/tilesets/secondary/navel_rock_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+255 0 255
+197 213 205
+180 197 189
+164 172 172
+131 148 139
+255 0 255
+246 205 74
+255 0 255
+180 189 197
+180 189 197
+189 197 197
+164 172 172
+131 139 139
+106 106 106
+90 90 82
diff --git a/data/tilesets/secondary/navel_rock_frlg/palettes/08.pal b/data/tilesets/secondary/navel_rock_frlg/palettes/08.pal
new file mode 100644
index 000000000000..102aaaf2cc78
--- /dev/null
+++ b/data/tilesets/secondary/navel_rock_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+255 0 255
+197 213 205
+180 197 189
+164 172 172
+131 148 139
+255 0 255
+255 0 255
+255 0 255
+255 255 255
+255 255 255
+246 246 238
+222 222 213
+189 189 180
+156 156 139
+98 98 90
diff --git a/data/tilesets/secondary/navel_rock_frlg/palettes/09.pal b/data/tilesets/secondary/navel_rock_frlg/palettes/09.pal
new file mode 100644
index 000000000000..91329f82ec6b
--- /dev/null
+++ b/data/tilesets/secondary/navel_rock_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+238 238 164
+197 213 205
+180 197 189
+164 172 172
+205 205 106
+205 205 197
+172 172 90
+123 131 74
+82 90 32
+106 106 82
+74 74 74
+0 0 0
+98 139 197
+74 115 172
+57 98 156
diff --git a/data/tilesets/secondary/navel_rock_frlg/palettes/10.pal b/data/tilesets/secondary/navel_rock_frlg/palettes/10.pal
new file mode 100644
index 000000000000..334da8f23881
--- /dev/null
+++ b/data/tilesets/secondary/navel_rock_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+238 238 230
+172 172 164
+74 74 74
+0 0 0
+255 246 180
+238 222 123
+197 205 123
+197 213 205
+255 255 255
+255 255 255
+246 246 238
+222 222 213
+189 189 180
+156 156 139
+98 98 90
diff --git a/data/tilesets/secondary/navel_rock_frlg/palettes/11.pal b/data/tilesets/secondary/navel_rock_frlg/palettes/11.pal
new file mode 100644
index 000000000000..0c3d2870e3ae
--- /dev/null
+++ b/data/tilesets/secondary/navel_rock_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+230 197 65
+197 213 205
+180 197 189
+164 172 172
+205 205 197
+255 230 65
+123 123 131
+255 255 255
+74 65 74
+238 238 230
+189 189 180
+238 238 230
+222 222 213
+205 205 197
+156 156 164
diff --git a/data/tilesets/secondary/navel_rock_frlg/palettes/12.pal b/data/tilesets/secondary/navel_rock_frlg/palettes/12.pal
new file mode 100644
index 000000000000..a68c94c2c6f1
--- /dev/null
+++ b/data/tilesets/secondary/navel_rock_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+197 213 205
+180 197 189
+164 172 172
+131 148 139
+255 0 255
+255 0 255
+255 0 255
+139 156 180
+139 139 164
+131 139 148
+115 115 131
+90 90 106
+82 82 82
+57 65 65
diff --git a/data/tilesets/secondary/navel_rock_frlg/palettes/13.pal b/data/tilesets/secondary/navel_rock_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/navel_rock_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/navel_rock_frlg/palettes/14.pal b/data/tilesets/secondary/navel_rock_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/navel_rock_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/navel_rock_frlg/palettes/15.pal b/data/tilesets/secondary/navel_rock_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/navel_rock_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/navel_rock_frlg/tiles.png b/data/tilesets/secondary/navel_rock_frlg/tiles.png
new file mode 100644
index 000000000000..cbce25763a36
Binary files /dev/null and b/data/tilesets/secondary/navel_rock_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/pallet_town_frlg/metatile_attributes.bin b/data/tilesets/secondary/pallet_town_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..bd99388ce83a
Binary files /dev/null and b/data/tilesets/secondary/pallet_town_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/pallet_town_frlg/metatiles.bin b/data/tilesets/secondary/pallet_town_frlg/metatiles.bin
new file mode 100644
index 000000000000..41db27015095
Binary files /dev/null and b/data/tilesets/secondary/pallet_town_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/pallet_town_frlg/palettes/00.pal b/data/tilesets/secondary/pallet_town_frlg/palettes/00.pal
new file mode 100644
index 000000000000..42246e9ea73b
--- /dev/null
+++ b/data/tilesets/secondary/pallet_town_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 139 49
+57 82 0
+115 98 98
+65 57 49
+255 255 255
+139 213 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 189 139
+24 172 106
diff --git a/data/tilesets/secondary/pallet_town_frlg/palettes/01.pal b/data/tilesets/secondary/pallet_town_frlg/palettes/01.pal
new file mode 100644
index 000000000000..28db536cb43b
--- /dev/null
+++ b/data/tilesets/secondary/pallet_town_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+238 238 238
+222 222 230
+172 189 205
+131 131 139
+65 49 65
+139 230 189
+74 205 131
+65 172 115
+238 213 197
+222 189 164
+189 148 139
+156 115 115
+123 82 82
+90 57 74
+115 205 164
diff --git a/data/tilesets/secondary/pallet_town_frlg/palettes/02.pal b/data/tilesets/secondary/pallet_town_frlg/palettes/02.pal
new file mode 100644
index 000000000000..937cec4da854
--- /dev/null
+++ b/data/tilesets/secondary/pallet_town_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+24 41 82
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+115 82 74
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+197 172 139
diff --git a/data/tilesets/secondary/pallet_town_frlg/palettes/03.pal b/data/tilesets/secondary/pallet_town_frlg/palettes/03.pal
new file mode 100644
index 000000000000..6d1dfb5af46c
--- /dev/null
+++ b/data/tilesets/secondary/pallet_town_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 238 246
+189 139 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+172 32 41
diff --git a/data/tilesets/secondary/pallet_town_frlg/palettes/04.pal b/data/tilesets/secondary/pallet_town_frlg/palettes/04.pal
new file mode 100644
index 000000000000..cde020d4ea5a
--- /dev/null
+++ b/data/tilesets/secondary/pallet_town_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 255 255
+222 230 238
+230 213 164
+205 197 148
+222 180 164
+156 164 189
+82 106 213
+65 90 189
+57 82 156
+41 65 139
+172 197 230
+139 164 222
+106 131 213
+82 106 213
+189 148 139
diff --git a/data/tilesets/secondary/pallet_town_frlg/palettes/05.pal b/data/tilesets/secondary/pallet_town_frlg/palettes/05.pal
new file mode 100644
index 000000000000..bdcc7b8ed092
--- /dev/null
+++ b/data/tilesets/secondary/pallet_town_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+238 222 164
+222 205 131
+205 180 106
+180 139 74
+238 230 172
+246 238 205
+222 205 131
+255 0 255
+65 189 139
+115 205 164
diff --git a/data/tilesets/secondary/pallet_town_frlg/palettes/06.pal b/data/tilesets/secondary/pallet_town_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pallet_town_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pallet_town_frlg/palettes/07.pal b/data/tilesets/secondary/pallet_town_frlg/palettes/07.pal
new file mode 100644
index 000000000000..995731c23cc0
--- /dev/null
+++ b/data/tilesets/secondary/pallet_town_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pallet_town_frlg/palettes/08.pal b/data/tilesets/secondary/pallet_town_frlg/palettes/08.pal
new file mode 100644
index 000000000000..dcecb9c40718
--- /dev/null
+++ b/data/tilesets/secondary/pallet_town_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+246 246 255
+222 230 246
+189 197 222
+156 172 189
+123 123 131
+90 90 115
+65 74 106
+156 205 246
+98 156 238
+57 123 222
+255 205 180
+246 164 131
+222 139 106
+189 98 74
+123 205 164
diff --git a/data/tilesets/secondary/pallet_town_frlg/palettes/09.pal b/data/tilesets/secondary/pallet_town_frlg/palettes/09.pal
new file mode 100644
index 000000000000..90bb77517197
--- /dev/null
+++ b/data/tilesets/secondary/pallet_town_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+246 246 255
+222 230 246
+189 197 222
+156 172 189
+123 123 131
+90 90 115
+65 74 106
+156 205 246
+98 156 238
+57 123 222
+246 238 197
+230 222 148
+213 189 106
+197 148 74
+222 205 123
diff --git a/data/tilesets/secondary/pallet_town_frlg/palettes/10.pal b/data/tilesets/secondary/pallet_town_frlg/palettes/10.pal
new file mode 100644
index 000000000000..1958eff11b30
--- /dev/null
+++ b/data/tilesets/secondary/pallet_town_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 205 148
+246 246 255
+189 197 222
+156 172 189
+123 123 131
+90 90 115
+65 74 106
+156 205 246
+98 156 238
+98 156 238
+205 139 148
+189 123 131
+164 90 106
+139 65 82
+32 172 98
diff --git a/data/tilesets/secondary/pallet_town_frlg/palettes/11.pal b/data/tilesets/secondary/pallet_town_frlg/palettes/11.pal
new file mode 100644
index 000000000000..896c79281af5
--- /dev/null
+++ b/data/tilesets/secondary/pallet_town_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+238 255 255
+156 230 197
+148 222 189
+139 213 189
+255 0 255
+255 0 255
+255 0 255
+189 238 213
+115 205 164
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/pallet_town_frlg/palettes/12.pal b/data/tilesets/secondary/pallet_town_frlg/palettes/12.pal
new file mode 100644
index 000000000000..2bfc45b6d384
--- /dev/null
+++ b/data/tilesets/secondary/pallet_town_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+156 230 197
+148 222 189
+139 213 189
+238 213 197
+222 189 164
+189 148 139
+156 115 115
+123 82 82
+90 57 74
+189 238 213
diff --git a/data/tilesets/secondary/pallet_town_frlg/palettes/13.pal b/data/tilesets/secondary/pallet_town_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pallet_town_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pallet_town_frlg/palettes/14.pal b/data/tilesets/secondary/pallet_town_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pallet_town_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pallet_town_frlg/palettes/15.pal b/data/tilesets/secondary/pallet_town_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pallet_town_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pallet_town_frlg/tiles.png b/data/tilesets/secondary/pallet_town_frlg/tiles.png
new file mode 100644
index 000000000000..771eed906cc7
Binary files /dev/null and b/data/tilesets/secondary/pallet_town_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/pewter_city_frlg/metatile_attributes.bin b/data/tilesets/secondary/pewter_city_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..4e19ca1853f4
Binary files /dev/null and b/data/tilesets/secondary/pewter_city_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/pewter_city_frlg/metatiles.bin b/data/tilesets/secondary/pewter_city_frlg/metatiles.bin
new file mode 100644
index 000000000000..a23224773df2
Binary files /dev/null and b/data/tilesets/secondary/pewter_city_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/pewter_city_frlg/palettes/00.pal b/data/tilesets/secondary/pewter_city_frlg/palettes/00.pal
new file mode 100644
index 000000000000..620015e777bf
--- /dev/null
+++ b/data/tilesets/secondary/pewter_city_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 139 49
+57 82 0
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/pewter_city_frlg/palettes/01.pal b/data/tilesets/secondary/pewter_city_frlg/palettes/01.pal
new file mode 100644
index 000000000000..60de8c7ad121
--- /dev/null
+++ b/data/tilesets/secondary/pewter_city_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+255 0 255
+255 0 255
+238 213 197
+222 189 164
+189 148 139
+156 115 115
+123 82 82
+90 57 74
+115 205 164
diff --git a/data/tilesets/secondary/pewter_city_frlg/palettes/02.pal b/data/tilesets/secondary/pewter_city_frlg/palettes/02.pal
new file mode 100644
index 000000000000..6b019b884c96
--- /dev/null
+++ b/data/tilesets/secondary/pewter_city_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/pewter_city_frlg/palettes/03.pal b/data/tilesets/secondary/pewter_city_frlg/palettes/03.pal
new file mode 100644
index 000000000000..9581f2cd8be5
--- /dev/null
+++ b/data/tilesets/secondary/pewter_city_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 131
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/pewter_city_frlg/palettes/04.pal b/data/tilesets/secondary/pewter_city_frlg/palettes/04.pal
new file mode 100644
index 000000000000..702db8a907c6
--- /dev/null
+++ b/data/tilesets/secondary/pewter_city_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 222 172
+189 189 139
+156 156 106
+115 115 65
+255 255 213
+255 238 180
+238 222 156
+172 197 197
+148 189 189
+123 180 180
+230 246 255
+189 222 222
+172 213 222
+148 205 205
+255 255 255
diff --git a/data/tilesets/secondary/pewter_city_frlg/palettes/05.pal b/data/tilesets/secondary/pewter_city_frlg/palettes/05.pal
new file mode 100644
index 000000000000..3a2db72a7f32
--- /dev/null
+++ b/data/tilesets/secondary/pewter_city_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+222 205 131
+205 180 106
+180 139 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/pewter_city_frlg/palettes/06.pal b/data/tilesets/secondary/pewter_city_frlg/palettes/06.pal
new file mode 100644
index 000000000000..93518605a9ef
--- /dev/null
+++ b/data/tilesets/secondary/pewter_city_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
diff --git a/data/tilesets/secondary/pewter_city_frlg/palettes/07.pal b/data/tilesets/secondary/pewter_city_frlg/palettes/07.pal
new file mode 100644
index 000000000000..93518605a9ef
--- /dev/null
+++ b/data/tilesets/secondary/pewter_city_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
diff --git a/data/tilesets/secondary/pewter_city_frlg/palettes/08.pal b/data/tilesets/secondary/pewter_city_frlg/palettes/08.pal
new file mode 100644
index 000000000000..d404706ab9e2
--- /dev/null
+++ b/data/tilesets/secondary/pewter_city_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+24 41 82
+246 246 255
+230 238 255
+197 205 222
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 205 246
+98 156 238
+57 123 222
+222 106 98
+205 82 74
+222 230 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/pewter_city_frlg/palettes/09.pal b/data/tilesets/secondary/pewter_city_frlg/palettes/09.pal
new file mode 100644
index 000000000000..cacf892a652e
--- /dev/null
+++ b/data/tilesets/secondary/pewter_city_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 205 246
+98 156 238
+57 123 222
+222 197 139
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/pewter_city_frlg/palettes/10.pal b/data/tilesets/secondary/pewter_city_frlg/palettes/10.pal
new file mode 100644
index 000000000000..76fda8006ae3
--- /dev/null
+++ b/data/tilesets/secondary/pewter_city_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+230 238 255
+180 197 213
+131 148 164
+123 123 131
+90 90 115
+57 65 98
+255 246 238
+213 197 189
+172 156 148
+131 123 115
+246 213 246
+238 189 213
+197 115 180
+172 106 131
diff --git a/data/tilesets/secondary/pewter_city_frlg/palettes/11.pal b/data/tilesets/secondary/pewter_city_frlg/palettes/11.pal
new file mode 100644
index 000000000000..3f8fdc519c10
--- /dev/null
+++ b/data/tilesets/secondary/pewter_city_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+123 123 131
+230 238 255
+197 205 222
+164 180 197
+156 205 246
+98 156 238
+57 65 98
+255 246 238
+213 197 189
+172 156 148
+131 123 115
+57 123 222
+238 238 246
+213 222 222
+197 197 213
diff --git a/data/tilesets/secondary/pewter_city_frlg/palettes/12.pal b/data/tilesets/secondary/pewter_city_frlg/palettes/12.pal
new file mode 100644
index 000000000000..995731c23cc0
--- /dev/null
+++ b/data/tilesets/secondary/pewter_city_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pewter_city_frlg/palettes/13.pal b/data/tilesets/secondary/pewter_city_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pewter_city_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pewter_city_frlg/palettes/14.pal b/data/tilesets/secondary/pewter_city_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pewter_city_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pewter_city_frlg/palettes/15.pal b/data/tilesets/secondary/pewter_city_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pewter_city_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pewter_city_frlg/tiles.png b/data/tilesets/secondary/pewter_city_frlg/tiles.png
new file mode 100644
index 000000000000..d3148ba5a111
Binary files /dev/null and b/data/tilesets/secondary/pewter_city_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/pewter_gym_frlg/metatile_attributes.bin b/data/tilesets/secondary/pewter_gym_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..6d45628f6515
Binary files /dev/null and b/data/tilesets/secondary/pewter_gym_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/pewter_gym_frlg/metatiles.bin b/data/tilesets/secondary/pewter_gym_frlg/metatiles.bin
new file mode 100644
index 000000000000..7034bb6d6552
Binary files /dev/null and b/data/tilesets/secondary/pewter_gym_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/pewter_gym_frlg/palettes/00.pal b/data/tilesets/secondary/pewter_gym_frlg/palettes/00.pal
new file mode 100644
index 000000000000..8db07d4180d2
--- /dev/null
+++ b/data/tilesets/secondary/pewter_gym_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/pewter_gym_frlg/palettes/01.pal b/data/tilesets/secondary/pewter_gym_frlg/palettes/01.pal
new file mode 100644
index 000000000000..66561f6d3326
--- /dev/null
+++ b/data/tilesets/secondary/pewter_gym_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+139 180 222
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/pewter_gym_frlg/palettes/02.pal b/data/tilesets/secondary/pewter_gym_frlg/palettes/02.pal
new file mode 100644
index 000000000000..87a022102f19
--- /dev/null
+++ b/data/tilesets/secondary/pewter_gym_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+197 189 213
+255 255 255
+106 197 106
+230 213 123
+255 205 90
+255 238 197
+90 90 115
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/pewter_gym_frlg/palettes/03.pal b/data/tilesets/secondary/pewter_gym_frlg/palettes/03.pal
new file mode 100644
index 000000000000..783496dcd9bf
--- /dev/null
+++ b/data/tilesets/secondary/pewter_gym_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 180 74
+255 246 131
+65 98 156
+90 123 180
+115 156 197
+222 213 131
+164 164 172
+205 205 213
+238 238 246
+106 172 115
+156 205 139
diff --git a/data/tilesets/secondary/pewter_gym_frlg/palettes/04.pal b/data/tilesets/secondary/pewter_gym_frlg/palettes/04.pal
new file mode 100644
index 000000000000..89eace6050ad
--- /dev/null
+++ b/data/tilesets/secondary/pewter_gym_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 238 246
+172 197 180
+197 222 205
+90 189 172
+246 238 156
+205 189 131
+189 164 123
+148 131 106
+106 106 106
+213 222 230
+238 180 115
diff --git a/data/tilesets/secondary/pewter_gym_frlg/palettes/05.pal b/data/tilesets/secondary/pewter_gym_frlg/palettes/05.pal
new file mode 100644
index 000000000000..0eef3df8e8fb
--- /dev/null
+++ b/data/tilesets/secondary/pewter_gym_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+213 222 222
+164 180 189
+255 0 255
+131 115 74
+213 213 148
+197 189 139
+172 156 115
+148 131 90
+255 0 255
+255 0 255
+0 0 0
diff --git a/data/tilesets/secondary/pewter_gym_frlg/palettes/06.pal b/data/tilesets/secondary/pewter_gym_frlg/palettes/06.pal
new file mode 100644
index 000000000000..1d08ce9a2024
--- /dev/null
+++ b/data/tilesets/secondary/pewter_gym_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pewter_gym_frlg/palettes/07.pal b/data/tilesets/secondary/pewter_gym_frlg/palettes/07.pal
new file mode 100644
index 000000000000..34c0ddd1717d
--- /dev/null
+++ b/data/tilesets/secondary/pewter_gym_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+131 131 131
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+82 82 106
+123 123 139
+205 205 197
+255 255 255
diff --git a/data/tilesets/secondary/pewter_gym_frlg/palettes/08.pal b/data/tilesets/secondary/pewter_gym_frlg/palettes/08.pal
new file mode 100644
index 000000000000..77e03a48cd35
--- /dev/null
+++ b/data/tilesets/secondary/pewter_gym_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+82 82 106
+123 123 123
+172 172 164
+222 213 139
+180 172 98
+156 148 82
+213 255 197
+164 230 148
+123 172 148
+148 213 164
+156 74 41
+180 90 65
+213 131 106
+238 164 139
+246 238 205
diff --git a/data/tilesets/secondary/pewter_gym_frlg/palettes/09.pal b/data/tilesets/secondary/pewter_gym_frlg/palettes/09.pal
new file mode 100644
index 000000000000..ef91ae987825
--- /dev/null
+++ b/data/tilesets/secondary/pewter_gym_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+82 82 106
+123 123 123
+172 172 164
+156 189 131
+222 205 115
+156 148 82
+123 106 57
+74 131 164
+98 172 205
+49 139 49
+106 205 164
+156 148 82
+115 164 106
+205 230 197
+238 255 238
diff --git a/data/tilesets/secondary/pewter_gym_frlg/palettes/10.pal b/data/tilesets/secondary/pewter_gym_frlg/palettes/10.pal
new file mode 100644
index 000000000000..131aaa71cb61
--- /dev/null
+++ b/data/tilesets/secondary/pewter_gym_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/pewter_gym_frlg/palettes/11.pal b/data/tilesets/secondary/pewter_gym_frlg/palettes/11.pal
new file mode 100644
index 000000000000..131aaa71cb61
--- /dev/null
+++ b/data/tilesets/secondary/pewter_gym_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/pewter_gym_frlg/palettes/12.pal b/data/tilesets/secondary/pewter_gym_frlg/palettes/12.pal
new file mode 100644
index 000000000000..c8dfac7d2278
--- /dev/null
+++ b/data/tilesets/secondary/pewter_gym_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+131 131 131
+98 74 49
+131 106 82
+164 139 115
+197 189 139
+148 148 156
+172 172 172
+172 189 115
+205 222 148
+98 131 131
+131 164 164
+164 197 197
+82 82 106
+123 123 139
+205 205 197
+255 255 255
diff --git a/data/tilesets/secondary/pewter_gym_frlg/palettes/13.pal b/data/tilesets/secondary/pewter_gym_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pewter_gym_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pewter_gym_frlg/palettes/14.pal b/data/tilesets/secondary/pewter_gym_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pewter_gym_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pewter_gym_frlg/palettes/15.pal b/data/tilesets/secondary/pewter_gym_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pewter_gym_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pewter_gym_frlg/tiles.png b/data/tilesets/secondary/pewter_gym_frlg/tiles.png
new file mode 100644
index 000000000000..6e97a68a13d2
Binary files /dev/null and b/data/tilesets/secondary/pewter_gym_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/pokemon_center_frlg/metatile_attributes.bin b/data/tilesets/secondary/pokemon_center_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..7ce3f4752213
Binary files /dev/null and b/data/tilesets/secondary/pokemon_center_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/pokemon_center_frlg/metatiles.bin b/data/tilesets/secondary/pokemon_center_frlg/metatiles.bin
new file mode 100644
index 000000000000..2ec8817bca86
Binary files /dev/null and b/data/tilesets/secondary/pokemon_center_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/pokemon_center_frlg/palettes/00.pal b/data/tilesets/secondary/pokemon_center_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_center_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/pokemon_center_frlg/palettes/01.pal b/data/tilesets/secondary/pokemon_center_frlg/palettes/01.pal
new file mode 100644
index 000000000000..d99adaffffc0
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_center_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+255 230 156
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/pokemon_center_frlg/palettes/02.pal b/data/tilesets/secondary/pokemon_center_frlg/palettes/02.pal
new file mode 100644
index 000000000000..cc3a9457d494
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_center_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+139 197 139
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/pokemon_center_frlg/palettes/03.pal b/data/tilesets/secondary/pokemon_center_frlg/palettes/03.pal
new file mode 100644
index 000000000000..7ec794ae5408
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_center_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+172 172 164
+255 255 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+164 164 172
+205 205 213
+238 238 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/pokemon_center_frlg/palettes/04.pal b/data/tilesets/secondary/pokemon_center_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_center_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_center_frlg/palettes/05.pal b/data/tilesets/secondary/pokemon_center_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_center_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_center_frlg/palettes/06.pal b/data/tilesets/secondary/pokemon_center_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_center_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_center_frlg/palettes/07.pal b/data/tilesets/secondary/pokemon_center_frlg/palettes/07.pal
new file mode 100644
index 000000000000..27ca86ca31f4
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_center_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+197 222 205
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/pokemon_center_frlg/palettes/08.pal b/data/tilesets/secondary/pokemon_center_frlg/palettes/08.pal
new file mode 100644
index 000000000000..6b6a0f25f210
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_center_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+131 205 139
+230 189 115
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/pokemon_center_frlg/palettes/09.pal b/data/tilesets/secondary/pokemon_center_frlg/palettes/09.pal
new file mode 100644
index 000000000000..4b279ecf992b
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_center_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 255 0
+82 82 106
+148 148 164
+205 189 197
+255 255 255
+189 148 49
+156 115 90
+197 238 148
+156 197 74
+106 164 41
+197 222 205
+139 180 172
+172 205 180
+123 123 139
+255 98 49
+238 222 164
diff --git a/data/tilesets/secondary/pokemon_center_frlg/palettes/10.pal b/data/tilesets/secondary/pokemon_center_frlg/palettes/10.pal
new file mode 100644
index 000000000000..62e3e6d6bd27
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_center_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+189 98 74
+255 131 115
+255 0 255
+255 0 255
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+189 230 255
+189 230 255
+156 189 213
+90 131 180
diff --git a/data/tilesets/secondary/pokemon_center_frlg/palettes/11.pal b/data/tilesets/secondary/pokemon_center_frlg/palettes/11.pal
new file mode 100644
index 000000000000..7ba7bcccaa06
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_center_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+230 222 156
+82 82 106
+123 123 123
+180 180 164
+222 230 230
+180 213 230
+131 180 205
+98 156 164
+57 115 139
+255 65 0
+205 49 0
+8 90 255
+0 57 197
+255 180 0
+0 230 115
+255 255 255
diff --git a/data/tilesets/secondary/pokemon_center_frlg/palettes/12.pal b/data/tilesets/secondary/pokemon_center_frlg/palettes/12.pal
new file mode 100644
index 000000000000..0f1f367389af
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_center_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+164 172 164
+180 189 189
+255 255 255
+115 115 123
+213 205 156
+238 238 172
+197 180 139
+230 222 156
+246 246 205
+0 82 123
+57 139 180
+115 197 238
+222 230 222
+131 131 139
diff --git a/data/tilesets/secondary/pokemon_center_frlg/palettes/13.pal b/data/tilesets/secondary/pokemon_center_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_center_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_center_frlg/palettes/14.pal b/data/tilesets/secondary/pokemon_center_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_center_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_center_frlg/palettes/15.pal b/data/tilesets/secondary/pokemon_center_frlg/palettes/15.pal
new file mode 100644
index 000000000000..92e7ed30983d
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_center_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_center_frlg/tiles.png b/data/tilesets/secondary/pokemon_center_frlg/tiles.png
new file mode 100644
index 000000000000..92d0112f38af
Binary files /dev/null and b/data/tilesets/secondary/pokemon_center_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/pokemon_league_frlg/metatile_attributes.bin b/data/tilesets/secondary/pokemon_league_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..bcc2fedb440e
Binary files /dev/null and b/data/tilesets/secondary/pokemon_league_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/pokemon_league_frlg/metatiles.bin b/data/tilesets/secondary/pokemon_league_frlg/metatiles.bin
new file mode 100644
index 000000000000..7cdfa846a884
Binary files /dev/null and b/data/tilesets/secondary/pokemon_league_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/pokemon_league_frlg/palettes/00.pal b/data/tilesets/secondary/pokemon_league_frlg/palettes/00.pal
new file mode 100644
index 000000000000..8db07d4180d2
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_league_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/pokemon_league_frlg/palettes/01.pal b/data/tilesets/secondary/pokemon_league_frlg/palettes/01.pal
new file mode 100644
index 000000000000..fc945ef6cc91
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_league_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+139 180 222
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/pokemon_league_frlg/palettes/02.pal b/data/tilesets/secondary/pokemon_league_frlg/palettes/02.pal
new file mode 100644
index 000000000000..87a022102f19
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_league_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+197 189 213
+255 255 255
+106 197 106
+230 213 123
+255 205 90
+255 238 197
+90 90 115
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/pokemon_league_frlg/palettes/03.pal b/data/tilesets/secondary/pokemon_league_frlg/palettes/03.pal
new file mode 100644
index 000000000000..783496dcd9bf
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_league_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 180 74
+255 246 131
+65 98 156
+90 123 180
+115 156 197
+222 213 131
+164 164 172
+205 205 213
+238 238 246
+106 172 115
+156 205 139
diff --git a/data/tilesets/secondary/pokemon_league_frlg/palettes/04.pal b/data/tilesets/secondary/pokemon_league_frlg/palettes/04.pal
new file mode 100644
index 000000000000..89eace6050ad
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_league_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 238 246
+172 197 180
+197 222 205
+90 189 172
+246 238 156
+205 189 131
+189 164 123
+148 131 106
+106 106 106
+213 222 230
+238 180 115
diff --git a/data/tilesets/secondary/pokemon_league_frlg/palettes/05.pal b/data/tilesets/secondary/pokemon_league_frlg/palettes/05.pal
new file mode 100644
index 000000000000..34ef2f2d2eac
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_league_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+213 222 222
+164 180 189
+222 164 115
+131 115 74
+213 213 148
+197 189 139
+172 156 115
+148 131 90
+197 197 205
+205 82 65
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_league_frlg/palettes/06.pal b/data/tilesets/secondary/pokemon_league_frlg/palettes/06.pal
new file mode 100644
index 000000000000..1d08ce9a2024
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_league_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_league_frlg/palettes/07.pal b/data/tilesets/secondary/pokemon_league_frlg/palettes/07.pal
new file mode 100644
index 000000000000..6528f9f75f7d
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_league_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+82 82 106
+123 123 123
+255 74 0
+255 213 131
+230 164 98
+197 115 74
+164 82 65
+255 255 180
+189 189 115
+82 82 106
+82 82 106
+82 82 106
+82 82 106
+82 82 106
+82 82 106
diff --git a/data/tilesets/secondary/pokemon_league_frlg/palettes/08.pal b/data/tilesets/secondary/pokemon_league_frlg/palettes/08.pal
new file mode 100644
index 000000000000..6b56cd49e698
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_league_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+255 255 255
+222 222 222
+106 115 115
+189 230 255
+123 205 255
+98 180 246
+49 139 213
+180 180 164
+172 213 222
+156 197 205
+180 156 222
+156 131 205
+139 197 230
+131 172 222
+98 148 197
diff --git a/data/tilesets/secondary/pokemon_league_frlg/palettes/09.pal b/data/tilesets/secondary/pokemon_league_frlg/palettes/09.pal
new file mode 100644
index 000000000000..5c2ed43a0051
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_league_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+255 255 255
+222 222 222
+106 115 115
+222 230 238
+180 197 205
+148 164 180
+131 139 139
+238 238 238
+230 230 230
+213 213 213
+139 213 156
+123 189 139
+230 222 123
+213 205 106
+189 180 90
diff --git a/data/tilesets/secondary/pokemon_league_frlg/palettes/10.pal b/data/tilesets/secondary/pokemon_league_frlg/palettes/10.pal
new file mode 100644
index 000000000000..18908d2ef15c
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_league_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+255 255 255
+222 222 222
+106 115 115
+230 197 246
+180 82 205
+148 57 180
+230 222 123
+189 180 82
+230 230 172
+222 213 139
+222 164 164
+205 139 139
+205 180 238
+189 148 230
+164 131 205
diff --git a/data/tilesets/secondary/pokemon_league_frlg/palettes/11.pal b/data/tilesets/secondary/pokemon_league_frlg/palettes/11.pal
new file mode 100644
index 000000000000..edc05893b76e
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_league_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+82 164 164
+255 255 255
+230 230 230
+123 123 123
+189 189 197
+148 148 156
+213 213 222
+98 98 106
+180 180 164
+230 172 164
+197 131 131
+180 82 205
+148 57 180
+106 189 189
+82 164 164
+57 139 139
diff --git a/data/tilesets/secondary/pokemon_league_frlg/palettes/12.pal b/data/tilesets/secondary/pokemon_league_frlg/palettes/12.pal
new file mode 100644
index 000000000000..36807053a1e1
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_league_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+74 90 98
+98 123 139
+164 197 197
+222 238 238
+255 255 255
+123 123 123
+180 82 205
+131 49 164
+131 164 164
+230 213 156
+255 0 255
+213 131 222
+255 246 156
+90 16 131
+41 49 57
diff --git a/data/tilesets/secondary/pokemon_league_frlg/palettes/13.pal b/data/tilesets/secondary/pokemon_league_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_league_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_league_frlg/palettes/14.pal b/data/tilesets/secondary/pokemon_league_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_league_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_league_frlg/palettes/15.pal b/data/tilesets/secondary/pokemon_league_frlg/palettes/15.pal
new file mode 100644
index 000000000000..0b5e86def41b
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_league_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+131 230 255
diff --git a/data/tilesets/secondary/pokemon_league_frlg/tiles.png b/data/tilesets/secondary/pokemon_league_frlg/tiles.png
new file mode 100644
index 000000000000..0f65e1ff3564
Binary files /dev/null and b/data/tilesets/secondary/pokemon_league_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/metatile_attributes.bin b/data/tilesets/secondary/pokemon_mansion_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..43bead9ab10f
Binary files /dev/null and b/data/tilesets/secondary/pokemon_mansion_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/metatiles.bin b/data/tilesets/secondary/pokemon_mansion_frlg/metatiles.bin
new file mode 100644
index 000000000000..5caba25a7b0b
Binary files /dev/null and b/data/tilesets/secondary/pokemon_mansion_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/palettes/00.pal b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/00.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/palettes/01.pal b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/01.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/palettes/02.pal b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/02.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/palettes/03.pal b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/03.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/palettes/04.pal b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/04.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/palettes/05.pal b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/05.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/palettes/06.pal b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/palettes/07.pal b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/07.pal
new file mode 100644
index 000000000000..4d22869cd51f
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+148 148 148
+82 131 106
+131 180 156
+180 230 205
+180 0 0
+255 0 0
+148 148 156
+172 172 172
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+82 82 106
+123 123 139
+205 205 197
+255 255 255
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/palettes/08.pal b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/08.pal
new file mode 100644
index 000000000000..2a9d791a4238
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+148 148 148
+164 98 74
+222 148 123
+255 189 164
+139 82 57
+172 197 230
+213 222 238
+0 0 0
+0 0 0
+189 164 115
+0 0 0
+255 238 189
+82 82 106
+123 123 139
+205 205 197
+255 255 255
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/palettes/09.pal b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/09.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/palettes/10.pal b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/10.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/palettes/11.pal b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/11.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/palettes/12.pal b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/12.pal
new file mode 100644
index 000000000000..9c9a571ef464
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+148 148 148
+164 98 74
+222 148 123
+255 189 164
+139 82 57
+189 131 156
+246 205 238
+139 115 49
+156 131 90
+189 164 115
+222 205 156
+255 238 189
+82 82 106
+123 123 139
+205 205 197
+255 255 255
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/palettes/13.pal b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/palettes/14.pal b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/palettes/15.pal b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_mansion_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_mansion_frlg/tiles.png b/data/tilesets/secondary/pokemon_mansion_frlg/tiles.png
new file mode 100644
index 000000000000..3e69db5c3e88
Binary files /dev/null and b/data/tilesets/secondary/pokemon_mansion_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/metatile_attributes.bin b/data/tilesets/secondary/pokemon_tower_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..a2f1a0f9a926
Binary files /dev/null and b/data/tilesets/secondary/pokemon_tower_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/metatiles.bin b/data/tilesets/secondary/pokemon_tower_frlg/metatiles.bin
new file mode 100644
index 000000000000..d4216989eaae
Binary files /dev/null and b/data/tilesets/secondary/pokemon_tower_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/palettes/00.pal b/data/tilesets/secondary/pokemon_tower_frlg/palettes/00.pal
new file mode 100644
index 000000000000..8db07d4180d2
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_tower_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/palettes/01.pal b/data/tilesets/secondary/pokemon_tower_frlg/palettes/01.pal
new file mode 100644
index 000000000000..30be2fbe3f58
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_tower_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/palettes/02.pal b/data/tilesets/secondary/pokemon_tower_frlg/palettes/02.pal
new file mode 100644
index 000000000000..e7c4b911ada2
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_tower_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+106 197 106
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/palettes/03.pal b/data/tilesets/secondary/pokemon_tower_frlg/palettes/03.pal
new file mode 100644
index 000000000000..54b77e0c8452
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_tower_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+172 172 164
+255 255 255
+230 180 74
+255 246 131
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+164 164 172
+205 205 213
+238 238 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/palettes/04.pal b/data/tilesets/secondary/pokemon_tower_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_tower_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/palettes/05.pal b/data/tilesets/secondary/pokemon_tower_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_tower_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/palettes/06.pal b/data/tilesets/secondary/pokemon_tower_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_tower_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/palettes/07.pal b/data/tilesets/secondary/pokemon_tower_frlg/palettes/07.pal
new file mode 100644
index 000000000000..241a2678c68a
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_tower_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+115 115 115
+180 180 164
+238 238 246
+82 123 82
+90 131 90
+106 156 106
+131 172 131
+180 156 222
+106 82 156
+139 115 189
+213 189 255
+255 0 255
+65 106 65
+255 255 255
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/palettes/08.pal b/data/tilesets/secondary/pokemon_tower_frlg/palettes/08.pal
new file mode 100644
index 000000000000..ebd9e912ce31
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_tower_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+115 115 115
+180 180 164
+238 238 246
+98 139 98
+106 156 106
+131 172 131
+148 189 148
+180 156 222
+205 139 32
+222 172 57
+246 238 164
+255 0 255
+82 123 82
+255 255 255
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/palettes/09.pal b/data/tilesets/secondary/pokemon_tower_frlg/palettes/09.pal
new file mode 100644
index 000000000000..51daf670133a
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_tower_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+115 115 115
+180 180 164
+238 238 246
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+172 123 32
+238 189 74
+74 205 205
+164 255 255
+255 255 255
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/palettes/10.pal b/data/tilesets/secondary/pokemon_tower_frlg/palettes/10.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_tower_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/palettes/11.pal b/data/tilesets/secondary/pokemon_tower_frlg/palettes/11.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_tower_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/palettes/12.pal b/data/tilesets/secondary/pokemon_tower_frlg/palettes/12.pal
new file mode 100644
index 000000000000..fa56f966e195
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_tower_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+131 106 189
+156 123 205
+230 230 255
+115 115 123
+106 156 106
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+106 82 156
+156 131 205
+205 172 246
+189 164 230
+115 115 123
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/palettes/13.pal b/data/tilesets/secondary/pokemon_tower_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_tower_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/palettes/14.pal b/data/tilesets/secondary/pokemon_tower_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_tower_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/palettes/15.pal b/data/tilesets/secondary/pokemon_tower_frlg/palettes/15.pal
new file mode 100644
index 000000000000..92e7ed30983d
--- /dev/null
+++ b/data/tilesets/secondary/pokemon_tower_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+0 0 0
diff --git a/data/tilesets/secondary/pokemon_tower_frlg/tiles.png b/data/tilesets/secondary/pokemon_tower_frlg/tiles.png
new file mode 100644
index 000000000000..b8f8c6a4dde2
Binary files /dev/null and b/data/tilesets/secondary/pokemon_tower_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/power_plant_frlg/metatile_attributes.bin b/data/tilesets/secondary/power_plant_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..c1ebebbcb35b
Binary files /dev/null and b/data/tilesets/secondary/power_plant_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/power_plant_frlg/metatiles.bin b/data/tilesets/secondary/power_plant_frlg/metatiles.bin
new file mode 100644
index 000000000000..7d1e1567669f
Binary files /dev/null and b/data/tilesets/secondary/power_plant_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/power_plant_frlg/palettes/00.pal b/data/tilesets/secondary/power_plant_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/power_plant_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/power_plant_frlg/palettes/01.pal b/data/tilesets/secondary/power_plant_frlg/palettes/01.pal
new file mode 100644
index 000000000000..30be2fbe3f58
--- /dev/null
+++ b/data/tilesets/secondary/power_plant_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/power_plant_frlg/palettes/02.pal b/data/tilesets/secondary/power_plant_frlg/palettes/02.pal
new file mode 100644
index 000000000000..e7c4b911ada2
--- /dev/null
+++ b/data/tilesets/secondary/power_plant_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+106 197 106
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/power_plant_frlg/palettes/03.pal b/data/tilesets/secondary/power_plant_frlg/palettes/03.pal
new file mode 100644
index 000000000000..54b77e0c8452
--- /dev/null
+++ b/data/tilesets/secondary/power_plant_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+172 172 164
+255 255 255
+230 180 74
+255 246 131
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+164 164 172
+205 205 213
+238 238 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/power_plant_frlg/palettes/04.pal b/data/tilesets/secondary/power_plant_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/power_plant_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/power_plant_frlg/palettes/05.pal b/data/tilesets/secondary/power_plant_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/power_plant_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/power_plant_frlg/palettes/06.pal b/data/tilesets/secondary/power_plant_frlg/palettes/06.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/power_plant_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/power_plant_frlg/palettes/07.pal b/data/tilesets/secondary/power_plant_frlg/palettes/07.pal
new file mode 100644
index 000000000000..b69e6cfa4a9a
--- /dev/null
+++ b/data/tilesets/secondary/power_plant_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+156 205 156
+156 65 65
+57 106 16
+0 0 139
+98 123 156
+131 156 180
+164 189 213
+197 197 148
+213 205 172
+230 222 197
+164 156 164
+205 197 189
+82 82 106
+123 123 139
+246 238 222
+255 255 255
diff --git a/data/tilesets/secondary/power_plant_frlg/palettes/08.pal b/data/tilesets/secondary/power_plant_frlg/palettes/08.pal
new file mode 100644
index 000000000000..3cada9fa116c
--- /dev/null
+++ b/data/tilesets/secondary/power_plant_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+156 205 156
+180 180 90
+222 222 148
+246 246 180
+156 65 65
+222 131 131
+189 98 98
+255 0 255
+255 0 255
+255 0 255
+164 156 164
+205 197 189
+82 82 106
+123 123 139
+246 238 222
+255 255 255
diff --git a/data/tilesets/secondary/power_plant_frlg/palettes/09.pal b/data/tilesets/secondary/power_plant_frlg/palettes/09.pal
new file mode 100644
index 000000000000..2a1743eaafef
--- /dev/null
+++ b/data/tilesets/secondary/power_plant_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+156 205 156
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/power_plant_frlg/palettes/10.pal b/data/tilesets/secondary/power_plant_frlg/palettes/10.pal
new file mode 100644
index 000000000000..2a1743eaafef
--- /dev/null
+++ b/data/tilesets/secondary/power_plant_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+156 205 156
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/power_plant_frlg/palettes/11.pal b/data/tilesets/secondary/power_plant_frlg/palettes/11.pal
new file mode 100644
index 000000000000..307e0ea7e8a7
--- /dev/null
+++ b/data/tilesets/secondary/power_plant_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+156 205 156
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+0 0 0
diff --git a/data/tilesets/secondary/power_plant_frlg/palettes/12.pal b/data/tilesets/secondary/power_plant_frlg/palettes/12.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/power_plant_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/power_plant_frlg/palettes/13.pal b/data/tilesets/secondary/power_plant_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/power_plant_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/power_plant_frlg/palettes/14.pal b/data/tilesets/secondary/power_plant_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/power_plant_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/power_plant_frlg/palettes/15.pal b/data/tilesets/secondary/power_plant_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/power_plant_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/power_plant_frlg/tiles.png b/data/tilesets/secondary/power_plant_frlg/tiles.png
new file mode 100644
index 000000000000..d252dbcd30ff
Binary files /dev/null and b/data/tilesets/secondary/power_plant_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/metatile_attributes.bin b/data/tilesets/secondary/restaurant_hotel_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..6652fce50bf3
Binary files /dev/null and b/data/tilesets/secondary/restaurant_hotel_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/metatiles.bin b/data/tilesets/secondary/restaurant_hotel_frlg/metatiles.bin
new file mode 100644
index 000000000000..5cddd954c0f1
Binary files /dev/null and b/data/tilesets/secondary/restaurant_hotel_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/palettes/00.pal b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/palettes/01.pal b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/01.pal
new file mode 100644
index 000000000000..30be2fbe3f58
--- /dev/null
+++ b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/palettes/02.pal b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/02.pal
new file mode 100644
index 000000000000..e7c4b911ada2
--- /dev/null
+++ b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+106 197 106
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/palettes/03.pal b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/03.pal
new file mode 100644
index 000000000000..54b77e0c8452
--- /dev/null
+++ b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+172 172 164
+255 255 255
+230 180 74
+255 246 131
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+164 164 172
+205 205 213
+238 238 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/palettes/04.pal b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/palettes/05.pal b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/palettes/06.pal b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/06.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/palettes/07.pal b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/07.pal
new file mode 100644
index 000000000000..5e3bac102cf7
--- /dev/null
+++ b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+106 197 106
+255 205 90
+82 148 197
+189 230 255
+139 98 41
+156 123 65
+180 148 90
+205 172 115
+246 213 172
+205 106 90
+255 148 131
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/palettes/08.pal b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/08.pal
new file mode 100644
index 000000000000..2257c0006796
--- /dev/null
+++ b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+82 82 106
+131 131 139
+230 222 246
+255 255 255
+255 205 98
+255 255 148
+189 230 255
+180 148 90
+255 139 180
+197 180 131
+213 213 164
+238 238 213
+106 197 106
+205 106 90
+131 115 16
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/palettes/09.pal b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/09.pal
new file mode 100644
index 000000000000..c06a049b0e5c
--- /dev/null
+++ b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/palettes/10.pal b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/10.pal
new file mode 100644
index 000000000000..c06a049b0e5c
--- /dev/null
+++ b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/palettes/11.pal b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/11.pal
new file mode 100644
index 000000000000..c06a049b0e5c
--- /dev/null
+++ b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/palettes/12.pal b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/12.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/palettes/13.pal b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/palettes/14.pal b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/palettes/15.pal b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/15.pal
new file mode 100644
index 000000000000..71b5ee827718
--- /dev/null
+++ b/data/tilesets/secondary/restaurant_hotel_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
diff --git a/data/tilesets/secondary/restaurant_hotel_frlg/tiles.png b/data/tilesets/secondary/restaurant_hotel_frlg/tiles.png
new file mode 100644
index 000000000000..5c8a38b9edf2
Binary files /dev/null and b/data/tilesets/secondary/restaurant_hotel_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/metatile_attributes.bin b/data/tilesets/secondary/rock_tunnel_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..7195b71a2763
Binary files /dev/null and b/data/tilesets/secondary/rock_tunnel_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/metatiles.bin b/data/tilesets/secondary/rock_tunnel_frlg/metatiles.bin
new file mode 100644
index 000000000000..0ee478c87629
Binary files /dev/null and b/data/tilesets/secondary/rock_tunnel_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/palettes/00.pal b/data/tilesets/secondary/rock_tunnel_frlg/palettes/00.pal
new file mode 100644
index 000000000000..2f3f97d6fdb7
--- /dev/null
+++ b/data/tilesets/secondary/rock_tunnel_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/palettes/01.pal b/data/tilesets/secondary/rock_tunnel_frlg/palettes/01.pal
new file mode 100644
index 000000000000..d8a4e7757d1b
--- /dev/null
+++ b/data/tilesets/secondary/rock_tunnel_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+115 65 74
+82 49 65
+115 205 164
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/palettes/02.pal b/data/tilesets/secondary/rock_tunnel_frlg/palettes/02.pal
new file mode 100644
index 000000000000..6b019b884c96
--- /dev/null
+++ b/data/tilesets/secondary/rock_tunnel_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/palettes/03.pal b/data/tilesets/secondary/rock_tunnel_frlg/palettes/03.pal
new file mode 100644
index 000000000000..205c464c79d6
--- /dev/null
+++ b/data/tilesets/secondary/rock_tunnel_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/palettes/04.pal b/data/tilesets/secondary/rock_tunnel_frlg/palettes/04.pal
new file mode 100644
index 000000000000..702db8a907c6
--- /dev/null
+++ b/data/tilesets/secondary/rock_tunnel_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 222 172
+189 189 139
+156 156 106
+115 115 65
+255 255 213
+255 238 180
+238 222 156
+172 197 197
+148 189 189
+123 180 180
+230 246 255
+189 222 222
+172 213 222
+148 205 205
+255 255 255
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/palettes/05.pal b/data/tilesets/secondary/rock_tunnel_frlg/palettes/05.pal
new file mode 100644
index 000000000000..c5a653979a01
--- /dev/null
+++ b/data/tilesets/secondary/rock_tunnel_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/palettes/06.pal b/data/tilesets/secondary/rock_tunnel_frlg/palettes/06.pal
new file mode 100644
index 000000000000..995731c23cc0
--- /dev/null
+++ b/data/tilesets/secondary/rock_tunnel_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/palettes/07.pal b/data/tilesets/secondary/rock_tunnel_frlg/palettes/07.pal
new file mode 100644
index 000000000000..995731c23cc0
--- /dev/null
+++ b/data/tilesets/secondary/rock_tunnel_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/palettes/08.pal b/data/tilesets/secondary/rock_tunnel_frlg/palettes/08.pal
new file mode 100644
index 000000000000..34a637b1a9f3
--- /dev/null
+++ b/data/tilesets/secondary/rock_tunnel_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+205 189 115
+172 172 115
+156 156 115
+131 131 115
+98 106 90
+255 0 255
+255 0 255
+255 0 255
+197 230 230
+180 213 213
+172 189 197
+131 156 156
+90 115 115
+74 82 82
+49 57 57
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/palettes/09.pal b/data/tilesets/secondary/rock_tunnel_frlg/palettes/09.pal
new file mode 100644
index 000000000000..f10a94f7c25a
--- /dev/null
+++ b/data/tilesets/secondary/rock_tunnel_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+205 189 115
+172 172 115
+156 156 115
+131 131 115
+238 222 123
+255 0 255
+222 180 57
+189 148 57
+148 115 74
+106 106 82
+74 74 74
+0 0 0
+98 139 197
+74 115 172
+57 98 156
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/palettes/10.pal b/data/tilesets/secondary/rock_tunnel_frlg/palettes/10.pal
new file mode 100644
index 000000000000..4235579fc41e
--- /dev/null
+++ b/data/tilesets/secondary/rock_tunnel_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+255 0 255
+255 0 255
+255 0 255
+0 0 0
+238 238 180
+230 213 123
+205 180 98
+156 156 115
+197 230 230
+180 213 213
+172 189 197
+131 156 156
+90 115 115
+74 82 82
+49 57 57
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/palettes/11.pal b/data/tilesets/secondary/rock_tunnel_frlg/palettes/11.pal
new file mode 100644
index 000000000000..27717297657b
--- /dev/null
+++ b/data/tilesets/secondary/rock_tunnel_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+205 189 115
+172 172 115
+156 156 115
+131 131 115
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+164 156 98
+148 139 98
+115 123 98
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/palettes/12.pal b/data/tilesets/secondary/rock_tunnel_frlg/palettes/12.pal
new file mode 100644
index 000000000000..2fa21e9fbacb
--- /dev/null
+++ b/data/tilesets/secondary/rock_tunnel_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+0 0 0
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/palettes/13.pal b/data/tilesets/secondary/rock_tunnel_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/rock_tunnel_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/palettes/14.pal b/data/tilesets/secondary/rock_tunnel_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/rock_tunnel_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/palettes/15.pal b/data/tilesets/secondary/rock_tunnel_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/rock_tunnel_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/rock_tunnel_frlg/tiles.png b/data/tilesets/secondary/rock_tunnel_frlg/tiles.png
new file mode 100644
index 000000000000..cb4078fa9236
Binary files /dev/null and b/data/tilesets/secondary/rock_tunnel_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/metatile_attributes.bin b/data/tilesets/secondary/safari_zone_building_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..b3edaca96102
Binary files /dev/null and b/data/tilesets/secondary/safari_zone_building_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/metatiles.bin b/data/tilesets/secondary/safari_zone_building_frlg/metatiles.bin
new file mode 100644
index 000000000000..3337a5393720
Binary files /dev/null and b/data/tilesets/secondary/safari_zone_building_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/palettes/00.pal b/data/tilesets/secondary/safari_zone_building_frlg/palettes/00.pal
new file mode 100644
index 000000000000..620015e777bf
--- /dev/null
+++ b/data/tilesets/secondary/safari_zone_building_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 139 49
+57 82 0
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/palettes/01.pal b/data/tilesets/secondary/safari_zone_building_frlg/palettes/01.pal
new file mode 100644
index 000000000000..66561f6d3326
--- /dev/null
+++ b/data/tilesets/secondary/safari_zone_building_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+139 180 222
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/palettes/02.pal b/data/tilesets/secondary/safari_zone_building_frlg/palettes/02.pal
new file mode 100644
index 000000000000..ddec077d01d4
--- /dev/null
+++ b/data/tilesets/secondary/safari_zone_building_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+115 82 74
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+197 172 139
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/palettes/03.pal b/data/tilesets/secondary/safari_zone_building_frlg/palettes/03.pal
new file mode 100644
index 000000000000..6d1dfb5af46c
--- /dev/null
+++ b/data/tilesets/secondary/safari_zone_building_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 238 246
+189 139 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+172 32 41
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/palettes/04.pal b/data/tilesets/secondary/safari_zone_building_frlg/palettes/04.pal
new file mode 100644
index 000000000000..702db8a907c6
--- /dev/null
+++ b/data/tilesets/secondary/safari_zone_building_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 222 172
+189 189 139
+156 156 106
+115 115 65
+255 255 213
+255 238 180
+238 222 156
+172 197 197
+148 189 189
+123 180 180
+230 246 255
+189 222 222
+172 213 222
+148 205 205
+255 255 255
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/palettes/05.pal b/data/tilesets/secondary/safari_zone_building_frlg/palettes/05.pal
new file mode 100644
index 000000000000..9de0ef422ffe
--- /dev/null
+++ b/data/tilesets/secondary/safari_zone_building_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+222 205 131
+205 180 106
+180 139 74
+238 238 164
+255 0 255
+255 0 255
+180 222 164
+131 213 164
+115 205 164
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/palettes/06.pal b/data/tilesets/secondary/safari_zone_building_frlg/palettes/06.pal
new file mode 100644
index 000000000000..995731c23cc0
--- /dev/null
+++ b/data/tilesets/secondary/safari_zone_building_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/palettes/07.pal b/data/tilesets/secondary/safari_zone_building_frlg/palettes/07.pal
new file mode 100644
index 000000000000..995731c23cc0
--- /dev/null
+++ b/data/tilesets/secondary/safari_zone_building_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/palettes/08.pal b/data/tilesets/secondary/safari_zone_building_frlg/palettes/08.pal
new file mode 100644
index 000000000000..eed6dbc35936
--- /dev/null
+++ b/data/tilesets/secondary/safari_zone_building_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+123 197 180
+74 74 90
+123 123 131
+189 197 189
+255 0 255
+205 222 222
+90 90 65
+131 115 74
+148 148 115
+189 189 131
+238 238 139
+238 238 246
+74 98 65
+74 156 65
+115 197 98
+156 230 98
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/palettes/09.pal b/data/tilesets/secondary/safari_zone_building_frlg/palettes/09.pal
new file mode 100644
index 000000000000..e9b93cfd22f0
--- /dev/null
+++ b/data/tilesets/secondary/safari_zone_building_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+123 197 180
+74 74 90
+123 123 131
+205 213 213
+205 156 115
+238 172 115
+106 123 74
+156 148 98
+197 172 115
+222 205 139
+230 222 156
+90 90 49
+213 180 230
+164 139 197
+148 115 172
+123 98 131
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/palettes/10.pal b/data/tilesets/secondary/safari_zone_building_frlg/palettes/10.pal
new file mode 100644
index 000000000000..1f08b0f6fa89
--- /dev/null
+++ b/data/tilesets/secondary/safari_zone_building_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+238 172 115
+205 156 115
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+156 148 98
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/palettes/11.pal b/data/tilesets/secondary/safari_zone_building_frlg/palettes/11.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/safari_zone_building_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/palettes/12.pal b/data/tilesets/secondary/safari_zone_building_frlg/palettes/12.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/safari_zone_building_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/palettes/13.pal b/data/tilesets/secondary/safari_zone_building_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/safari_zone_building_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/palettes/14.pal b/data/tilesets/secondary/safari_zone_building_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/safari_zone_building_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/palettes/15.pal b/data/tilesets/secondary/safari_zone_building_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/safari_zone_building_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/safari_zone_building_frlg/tiles.png b/data/tilesets/secondary/safari_zone_building_frlg/tiles.png
new file mode 100644
index 000000000000..6c8d53e34ce3
Binary files /dev/null and b/data/tilesets/secondary/safari_zone_building_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/saffron_city_frlg/metatile_attributes.bin b/data/tilesets/secondary/saffron_city_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..bcc8d5517e4b
Binary files /dev/null and b/data/tilesets/secondary/saffron_city_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/saffron_city_frlg/metatiles.bin b/data/tilesets/secondary/saffron_city_frlg/metatiles.bin
new file mode 100644
index 000000000000..dd43794df62a
Binary files /dev/null and b/data/tilesets/secondary/saffron_city_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/saffron_city_frlg/palettes/00.pal b/data/tilesets/secondary/saffron_city_frlg/palettes/00.pal
new file mode 100644
index 000000000000..9dcb673aaf75
--- /dev/null
+++ b/data/tilesets/secondary/saffron_city_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+189 255 139
+131 213 98
+57 148 49
+57 82 0
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/saffron_city_frlg/palettes/01.pal b/data/tilesets/secondary/saffron_city_frlg/palettes/01.pal
new file mode 100644
index 000000000000..391d1e3d17b8
--- /dev/null
+++ b/data/tilesets/secondary/saffron_city_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 189 164
+189 148 139
+156 115 115
+123 82 82
+90 57 74
+115 205 164
diff --git a/data/tilesets/secondary/saffron_city_frlg/palettes/02.pal b/data/tilesets/secondary/saffron_city_frlg/palettes/02.pal
new file mode 100644
index 000000000000..6b019b884c96
--- /dev/null
+++ b/data/tilesets/secondary/saffron_city_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/saffron_city_frlg/palettes/03.pal b/data/tilesets/secondary/saffron_city_frlg/palettes/03.pal
new file mode 100644
index 000000000000..973765509c44
--- /dev/null
+++ b/data/tilesets/secondary/saffron_city_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/saffron_city_frlg/palettes/04.pal b/data/tilesets/secondary/saffron_city_frlg/palettes/04.pal
new file mode 100644
index 000000000000..702db8a907c6
--- /dev/null
+++ b/data/tilesets/secondary/saffron_city_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 222 172
+189 189 139
+156 156 106
+115 115 65
+255 255 213
+255 238 180
+238 222 156
+172 197 197
+148 189 189
+123 180 180
+230 246 255
+189 222 222
+172 213 222
+148 205 205
+255 255 255
diff --git a/data/tilesets/secondary/saffron_city_frlg/palettes/05.pal b/data/tilesets/secondary/saffron_city_frlg/palettes/05.pal
new file mode 100644
index 000000000000..3a2db72a7f32
--- /dev/null
+++ b/data/tilesets/secondary/saffron_city_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+222 205 131
+205 180 106
+180 139 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/saffron_city_frlg/palettes/06.pal b/data/tilesets/secondary/saffron_city_frlg/palettes/06.pal
new file mode 100644
index 000000000000..93518605a9ef
--- /dev/null
+++ b/data/tilesets/secondary/saffron_city_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
diff --git a/data/tilesets/secondary/saffron_city_frlg/palettes/07.pal b/data/tilesets/secondary/saffron_city_frlg/palettes/07.pal
new file mode 100644
index 000000000000..93518605a9ef
--- /dev/null
+++ b/data/tilesets/secondary/saffron_city_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
diff --git a/data/tilesets/secondary/saffron_city_frlg/palettes/08.pal b/data/tilesets/secondary/saffron_city_frlg/palettes/08.pal
new file mode 100644
index 000000000000..b1e16885507b
--- /dev/null
+++ b/data/tilesets/secondary/saffron_city_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+197 197 197
+222 222 230
+148 164 180
+123 123 131
+65 74 106
+246 246 255
+205 164 255
+164 131 205
+123 90 164
+255 0 255
+255 0 255
+255 0 255
+164 131 205
+205 164 255
+90 90 115
diff --git a/data/tilesets/secondary/saffron_city_frlg/palettes/09.pal b/data/tilesets/secondary/saffron_city_frlg/palettes/09.pal
new file mode 100644
index 000000000000..7a88fdbbf61d
--- /dev/null
+++ b/data/tilesets/secondary/saffron_city_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+255 255 255
+205 205 213
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 238 246
+255 238 139
+230 189 82
+238 148 115
+222 246 255
+172 230 255
+123 205 213
+197 106 74
diff --git a/data/tilesets/secondary/saffron_city_frlg/palettes/10.pal b/data/tilesets/secondary/saffron_city_frlg/palettes/10.pal
new file mode 100644
index 000000000000..ce671fee4a26
--- /dev/null
+++ b/data/tilesets/secondary/saffron_city_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+24 255 82
+238 238 238
+222 222 230
+123 123 131
+172 189 205
+65 74 106
+222 222 205
+205 205 189
+180 180 164
+213 213 164
+189 189 139
+148 148 98
+32 82 164
+156 205 246
+82 164 205
+115 205 164
diff --git a/data/tilesets/secondary/saffron_city_frlg/palettes/11.pal b/data/tilesets/secondary/saffron_city_frlg/palettes/11.pal
new file mode 100644
index 000000000000..d1ae629c8ef5
--- /dev/null
+++ b/data/tilesets/secondary/saffron_city_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+197 197 205
+49 98 164
+172 222 180
+139 189 148
+106 156 115
+82 131 90
+65 115 74
+255 0 255
diff --git a/data/tilesets/secondary/saffron_city_frlg/palettes/12.pal b/data/tilesets/secondary/saffron_city_frlg/palettes/12.pal
new file mode 100644
index 000000000000..b66bd774a765
--- /dev/null
+++ b/data/tilesets/secondary/saffron_city_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+255 255 255
+222 222 230
+139 156 172
+123 123 131
+82 82 106
+213 205 32
+246 238 74
+164 131 205
+164 156 16
+205 197 106
+255 255 148
+139 189 148
+74 131 197
+197 197 205
+115 189 246
diff --git a/data/tilesets/secondary/saffron_city_frlg/palettes/13.pal b/data/tilesets/secondary/saffron_city_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/saffron_city_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/saffron_city_frlg/palettes/14.pal b/data/tilesets/secondary/saffron_city_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/saffron_city_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/saffron_city_frlg/palettes/15.pal b/data/tilesets/secondary/saffron_city_frlg/palettes/15.pal
new file mode 100644
index 000000000000..3ffc684ac7cd
--- /dev/null
+++ b/data/tilesets/secondary/saffron_city_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+230 222 164
+222 205 131
+205 180 106
+213 213 197
+197 197 180
+164 164 148
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/saffron_city_frlg/tiles.png b/data/tilesets/secondary/saffron_city_frlg/tiles.png
new file mode 100644
index 000000000000..ea835f8ddf1b
Binary files /dev/null and b/data/tilesets/secondary/saffron_city_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/saffron_gym_frlg/metatile_attributes.bin b/data/tilesets/secondary/saffron_gym_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..aa5259655580
Binary files /dev/null and b/data/tilesets/secondary/saffron_gym_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/saffron_gym_frlg/metatiles.bin b/data/tilesets/secondary/saffron_gym_frlg/metatiles.bin
new file mode 100644
index 000000000000..e0fdb79fbc5d
Binary files /dev/null and b/data/tilesets/secondary/saffron_gym_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/saffron_gym_frlg/palettes/00.pal b/data/tilesets/secondary/saffron_gym_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/saffron_gym_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/saffron_gym_frlg/palettes/01.pal b/data/tilesets/secondary/saffron_gym_frlg/palettes/01.pal
new file mode 100644
index 000000000000..3a16a45c79a0
--- /dev/null
+++ b/data/tilesets/secondary/saffron_gym_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+255 230 156
+222 213 230
+238 246 238
diff --git a/data/tilesets/secondary/saffron_gym_frlg/palettes/02.pal b/data/tilesets/secondary/saffron_gym_frlg/palettes/02.pal
new file mode 100644
index 000000000000..c8ee236d76d6
--- /dev/null
+++ b/data/tilesets/secondary/saffron_gym_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+139 197 139
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+255 0 255
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/saffron_gym_frlg/palettes/03.pal b/data/tilesets/secondary/saffron_gym_frlg/palettes/03.pal
new file mode 100644
index 000000000000..b17dbb054879
--- /dev/null
+++ b/data/tilesets/secondary/saffron_gym_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+164 164 164
+180 189 189
+255 255 255
+238 246 238
+213 230 222
+197 205 197
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/saffron_gym_frlg/palettes/04.pal b/data/tilesets/secondary/saffron_gym_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/saffron_gym_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/saffron_gym_frlg/palettes/05.pal b/data/tilesets/secondary/saffron_gym_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/saffron_gym_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/saffron_gym_frlg/palettes/06.pal b/data/tilesets/secondary/saffron_gym_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/saffron_gym_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/saffron_gym_frlg/palettes/07.pal b/data/tilesets/secondary/saffron_gym_frlg/palettes/07.pal
new file mode 100644
index 000000000000..c66eaedff69c
--- /dev/null
+++ b/data/tilesets/secondary/saffron_gym_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 131
+197 189 213
+255 255 255
+180 123 148
+230 139 230
+255 222 255
+213 213 222
+213 98 65
+246 139 106
+255 0 255
+255 0 255
+255 0 255
+205 246 255
+98 197 238
diff --git a/data/tilesets/secondary/saffron_gym_frlg/palettes/08.pal b/data/tilesets/secondary/saffron_gym_frlg/palettes/08.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/saffron_gym_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/saffron_gym_frlg/palettes/09.pal b/data/tilesets/secondary/saffron_gym_frlg/palettes/09.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/saffron_gym_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/saffron_gym_frlg/palettes/10.pal b/data/tilesets/secondary/saffron_gym_frlg/palettes/10.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/saffron_gym_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/saffron_gym_frlg/palettes/11.pal b/data/tilesets/secondary/saffron_gym_frlg/palettes/11.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/saffron_gym_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/saffron_gym_frlg/palettes/12.pal b/data/tilesets/secondary/saffron_gym_frlg/palettes/12.pal
new file mode 100644
index 000000000000..702c67ecb801
--- /dev/null
+++ b/data/tilesets/secondary/saffron_gym_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 131
+197 189 213
+255 255 255
+148 148 156
+180 139 222
+205 172 246
+222 205 255
+106 123 172
+131 148 197
+156 172 230
+65 205 82
+180 255 197
+246 164 115
+255 230 148
diff --git a/data/tilesets/secondary/saffron_gym_frlg/palettes/13.pal b/data/tilesets/secondary/saffron_gym_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/saffron_gym_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/saffron_gym_frlg/palettes/14.pal b/data/tilesets/secondary/saffron_gym_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/saffron_gym_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/saffron_gym_frlg/palettes/15.pal b/data/tilesets/secondary/saffron_gym_frlg/palettes/15.pal
new file mode 100644
index 000000000000..92e7ed30983d
--- /dev/null
+++ b/data/tilesets/secondary/saffron_gym_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+0 0 0
diff --git a/data/tilesets/secondary/saffron_gym_frlg/tiles.png b/data/tilesets/secondary/saffron_gym_frlg/tiles.png
new file mode 100644
index 000000000000..87641a309c8e
Binary files /dev/null and b/data/tilesets/secondary/saffron_gym_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/school_frlg/metatile_attributes.bin b/data/tilesets/secondary/school_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..c01201dcce2d
Binary files /dev/null and b/data/tilesets/secondary/school_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/school_frlg/metatiles.bin b/data/tilesets/secondary/school_frlg/metatiles.bin
new file mode 100644
index 000000000000..35009a690963
Binary files /dev/null and b/data/tilesets/secondary/school_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/school_frlg/palettes/00.pal b/data/tilesets/secondary/school_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/school_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/school_frlg/palettes/01.pal b/data/tilesets/secondary/school_frlg/palettes/01.pal
new file mode 100644
index 000000000000..30be2fbe3f58
--- /dev/null
+++ b/data/tilesets/secondary/school_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/school_frlg/palettes/02.pal b/data/tilesets/secondary/school_frlg/palettes/02.pal
new file mode 100644
index 000000000000..e7c4b911ada2
--- /dev/null
+++ b/data/tilesets/secondary/school_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+106 197 106
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/school_frlg/palettes/03.pal b/data/tilesets/secondary/school_frlg/palettes/03.pal
new file mode 100644
index 000000000000..54b77e0c8452
--- /dev/null
+++ b/data/tilesets/secondary/school_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+172 172 164
+255 255 255
+230 180 74
+255 246 131
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+164 164 172
+205 205 213
+238 238 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/school_frlg/palettes/04.pal b/data/tilesets/secondary/school_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/school_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/school_frlg/palettes/05.pal b/data/tilesets/secondary/school_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/school_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/school_frlg/palettes/06.pal b/data/tilesets/secondary/school_frlg/palettes/06.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/school_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/school_frlg/palettes/07.pal b/data/tilesets/secondary/school_frlg/palettes/07.pal
new file mode 100644
index 000000000000..6c1a5b0967f9
--- /dev/null
+++ b/data/tilesets/secondary/school_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+172 148 90
+213 189 131
+255 230 172
+255 255 98
+255 197 197
+98 156 74
+148 205 123
+98 156 172
+123 180 197
+156 205 222
+189 230 246
diff --git a/data/tilesets/secondary/school_frlg/palettes/08.pal b/data/tilesets/secondary/school_frlg/palettes/08.pal
new file mode 100644
index 000000000000..1557a55f0e7c
--- /dev/null
+++ b/data/tilesets/secondary/school_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+123 131 82
+139 148 82
+156 164 90
+172 180 106
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/school_frlg/palettes/09.pal b/data/tilesets/secondary/school_frlg/palettes/09.pal
new file mode 100644
index 000000000000..c06a049b0e5c
--- /dev/null
+++ b/data/tilesets/secondary/school_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/school_frlg/palettes/10.pal b/data/tilesets/secondary/school_frlg/palettes/10.pal
new file mode 100644
index 000000000000..c06a049b0e5c
--- /dev/null
+++ b/data/tilesets/secondary/school_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/school_frlg/palettes/11.pal b/data/tilesets/secondary/school_frlg/palettes/11.pal
new file mode 100644
index 000000000000..c06a049b0e5c
--- /dev/null
+++ b/data/tilesets/secondary/school_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/school_frlg/palettes/12.pal b/data/tilesets/secondary/school_frlg/palettes/12.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/school_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/school_frlg/palettes/13.pal b/data/tilesets/secondary/school_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/school_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/school_frlg/palettes/14.pal b/data/tilesets/secondary/school_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/school_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/school_frlg/palettes/15.pal b/data/tilesets/secondary/school_frlg/palettes/15.pal
new file mode 100644
index 000000000000..71b5ee827718
--- /dev/null
+++ b/data/tilesets/secondary/school_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
diff --git a/data/tilesets/secondary/school_frlg/tiles.png b/data/tilesets/secondary/school_frlg/tiles.png
new file mode 100644
index 000000000000..935afccd2fc6
Binary files /dev/null and b/data/tilesets/secondary/school_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/sea_cottage_frlg/metatile_attributes.bin b/data/tilesets/secondary/sea_cottage_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..599482a47c78
Binary files /dev/null and b/data/tilesets/secondary/sea_cottage_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/sea_cottage_frlg/metatiles.bin b/data/tilesets/secondary/sea_cottage_frlg/metatiles.bin
new file mode 100644
index 000000000000..6ac3cbf9840c
Binary files /dev/null and b/data/tilesets/secondary/sea_cottage_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/sea_cottage_frlg/palettes/00.pal b/data/tilesets/secondary/sea_cottage_frlg/palettes/00.pal
new file mode 100644
index 000000000000..ed708dd79a6a
--- /dev/null
+++ b/data/tilesets/secondary/sea_cottage_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 205 172
+189 255 139
+131 213 98
+57 148 49
+57 82 0
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/sea_cottage_frlg/palettes/01.pal b/data/tilesets/secondary/sea_cottage_frlg/palettes/01.pal
new file mode 100644
index 000000000000..4d2b4899195a
--- /dev/null
+++ b/data/tilesets/secondary/sea_cottage_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 205 172
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 189 164
+189 148 139
+156 115 115
+123 82 82
+90 57 74
+115 205 164
diff --git a/data/tilesets/secondary/sea_cottage_frlg/palettes/02.pal b/data/tilesets/secondary/sea_cottage_frlg/palettes/02.pal
new file mode 100644
index 000000000000..878c13c95dca
--- /dev/null
+++ b/data/tilesets/secondary/sea_cottage_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 205 172
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/sea_cottage_frlg/palettes/03.pal b/data/tilesets/secondary/sea_cottage_frlg/palettes/03.pal
new file mode 100644
index 000000000000..bed4c20c37cc
--- /dev/null
+++ b/data/tilesets/secondary/sea_cottage_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 205 172
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/sea_cottage_frlg/palettes/04.pal b/data/tilesets/secondary/sea_cottage_frlg/palettes/04.pal
new file mode 100644
index 000000000000..b77ba3e87372
--- /dev/null
+++ b/data/tilesets/secondary/sea_cottage_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 205 172
+222 222 172
+189 189 139
+156 156 106
+115 115 65
+255 255 213
+255 238 180
+238 222 156
+172 197 197
+148 189 189
+123 180 180
+230 246 255
+189 222 222
+172 213 222
+148 205 205
+255 255 255
diff --git a/data/tilesets/secondary/sea_cottage_frlg/palettes/05.pal b/data/tilesets/secondary/sea_cottage_frlg/palettes/05.pal
new file mode 100644
index 000000000000..74a2a9ed0d48
--- /dev/null
+++ b/data/tilesets/secondary/sea_cottage_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 205 172
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+222 205 131
+205 180 106
+180 139 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/sea_cottage_frlg/palettes/06.pal b/data/tilesets/secondary/sea_cottage_frlg/palettes/06.pal
new file mode 100644
index 000000000000..93518605a9ef
--- /dev/null
+++ b/data/tilesets/secondary/sea_cottage_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
diff --git a/data/tilesets/secondary/sea_cottage_frlg/palettes/07.pal b/data/tilesets/secondary/sea_cottage_frlg/palettes/07.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/sea_cottage_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sea_cottage_frlg/palettes/08.pal b/data/tilesets/secondary/sea_cottage_frlg/palettes/08.pal
new file mode 100644
index 000000000000..370a3d2dbbb3
--- /dev/null
+++ b/data/tilesets/secondary/sea_cottage_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 205 172
+82 82 106
+131 131 131
+139 164 164
+164 189 189
+205 222 222
+205 238 238
+90 139 115
+139 148 115
+106 189 197
+82 180 106
+115 222 148
+148 246 180
+131 123 57
+197 106 74
+238 148 74
diff --git a/data/tilesets/secondary/sea_cottage_frlg/palettes/09.pal b/data/tilesets/secondary/sea_cottage_frlg/palettes/09.pal
new file mode 100644
index 000000000000..1193cc807f8c
--- /dev/null
+++ b/data/tilesets/secondary/sea_cottage_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 205 172
+82 82 106
+131 131 131
+98 106 148
+115 131 197
+139 164 230
+164 213 246
+197 197 197
+238 230 205
+255 0 255
+106 98 90
+131 115 90
+156 139 90
+131 139 90
+164 156 90
+189 172 90
diff --git a/data/tilesets/secondary/sea_cottage_frlg/palettes/10.pal b/data/tilesets/secondary/sea_cottage_frlg/palettes/10.pal
new file mode 100644
index 000000000000..e8624e82f923
--- /dev/null
+++ b/data/tilesets/secondary/sea_cottage_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 205 172
+82 82 106
+131 131 131
+139 164 164
+164 189 189
+205 222 222
+205 238 238
+90 139 115
+0 0 0
+0 0 0
+82 180 106
+115 222 148
+205 197 57
+230 230 139
+238 131 74
+255 180 98
diff --git a/data/tilesets/secondary/sea_cottage_frlg/palettes/11.pal b/data/tilesets/secondary/sea_cottage_frlg/palettes/11.pal
new file mode 100644
index 000000000000..9cec1272b936
--- /dev/null
+++ b/data/tilesets/secondary/sea_cottage_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 205 172
+82 82 106
+131 131 131
+0 0 0
+0 0 0
+0 0 0
+205 238 238
+222 255 255
+0 0 0
+106 189 197
+106 246 230
+164 255 238
+0 0 0
+131 123 57
+197 106 74
+238 148 74
diff --git a/data/tilesets/secondary/sea_cottage_frlg/palettes/12.pal b/data/tilesets/secondary/sea_cottage_frlg/palettes/12.pal
new file mode 100644
index 000000000000..600d8f469645
--- /dev/null
+++ b/data/tilesets/secondary/sea_cottage_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 205 172
+82 82 106
+131 131 131
+255 255 255
+90 230 255
+213 255 255
+148 238 255
+90 139 115
+0 0 0
+0 0 0
+82 180 106
+115 222 148
+148 246 180
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sea_cottage_frlg/palettes/13.pal b/data/tilesets/secondary/sea_cottage_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/sea_cottage_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sea_cottage_frlg/palettes/14.pal b/data/tilesets/secondary/sea_cottage_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/sea_cottage_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sea_cottage_frlg/palettes/15.pal b/data/tilesets/secondary/sea_cottage_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/sea_cottage_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sea_cottage_frlg/tiles.png b/data/tilesets/secondary/sea_cottage_frlg/tiles.png
new file mode 100644
index 000000000000..42d557bcfd36
Binary files /dev/null and b/data/tilesets/secondary/sea_cottage_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/metatile_attributes.bin b/data/tilesets/secondary/seafoam_islands_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..7becb8211dd0
Binary files /dev/null and b/data/tilesets/secondary/seafoam_islands_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/metatiles.bin b/data/tilesets/secondary/seafoam_islands_frlg/metatiles.bin
new file mode 100644
index 000000000000..8f8bd569b2d6
Binary files /dev/null and b/data/tilesets/secondary/seafoam_islands_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/palettes/00.pal b/data/tilesets/secondary/seafoam_islands_frlg/palettes/00.pal
new file mode 100644
index 000000000000..2f3f97d6fdb7
--- /dev/null
+++ b/data/tilesets/secondary/seafoam_islands_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/palettes/01.pal b/data/tilesets/secondary/seafoam_islands_frlg/palettes/01.pal
new file mode 100644
index 000000000000..d8a4e7757d1b
--- /dev/null
+++ b/data/tilesets/secondary/seafoam_islands_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+115 65 74
+82 49 65
+115 205 164
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/palettes/02.pal b/data/tilesets/secondary/seafoam_islands_frlg/palettes/02.pal
new file mode 100644
index 000000000000..6b019b884c96
--- /dev/null
+++ b/data/tilesets/secondary/seafoam_islands_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/palettes/03.pal b/data/tilesets/secondary/seafoam_islands_frlg/palettes/03.pal
new file mode 100644
index 000000000000..205c464c79d6
--- /dev/null
+++ b/data/tilesets/secondary/seafoam_islands_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/palettes/04.pal b/data/tilesets/secondary/seafoam_islands_frlg/palettes/04.pal
new file mode 100644
index 000000000000..702db8a907c6
--- /dev/null
+++ b/data/tilesets/secondary/seafoam_islands_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 222 172
+189 189 139
+156 156 106
+115 115 65
+255 255 213
+255 238 180
+238 222 156
+172 197 197
+148 189 189
+123 180 180
+230 246 255
+189 222 222
+172 213 222
+148 205 205
+255 255 255
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/palettes/05.pal b/data/tilesets/secondary/seafoam_islands_frlg/palettes/05.pal
new file mode 100644
index 000000000000..c5a653979a01
--- /dev/null
+++ b/data/tilesets/secondary/seafoam_islands_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/palettes/06.pal b/data/tilesets/secondary/seafoam_islands_frlg/palettes/06.pal
new file mode 100644
index 000000000000..995731c23cc0
--- /dev/null
+++ b/data/tilesets/secondary/seafoam_islands_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/palettes/07.pal b/data/tilesets/secondary/seafoam_islands_frlg/palettes/07.pal
new file mode 100644
index 000000000000..995731c23cc0
--- /dev/null
+++ b/data/tilesets/secondary/seafoam_islands_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/palettes/08.pal b/data/tilesets/secondary/seafoam_islands_frlg/palettes/08.pal
new file mode 100644
index 000000000000..d96f3f0fc255
--- /dev/null
+++ b/data/tilesets/secondary/seafoam_islands_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+189 213 230
+189 197 230
+172 180 213
+148 156 172
+156 238 255
+164 246 255
+213 255 255
+205 230 238
+238 238 246
+180 205 238
+123 180 230
+90 156 197
+98 123 172
+82 98 131
+65 74 82
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/palettes/09.pal b/data/tilesets/secondary/seafoam_islands_frlg/palettes/09.pal
new file mode 100644
index 000000000000..1a1dc881b76b
--- /dev/null
+++ b/data/tilesets/secondary/seafoam_islands_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+189 213 230
+189 197 230
+172 180 213
+148 156 172
+255 238 164
+238 230 139
+230 205 90
+197 172 74
+156 123 57
+106 82 115
+65 57 74
+0 0 0
+98 139 197
+74 115 172
+57 98 156
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/palettes/10.pal b/data/tilesets/secondary/seafoam_islands_frlg/palettes/10.pal
new file mode 100644
index 000000000000..7116e91ff6b9
--- /dev/null
+++ b/data/tilesets/secondary/seafoam_islands_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+255 0 255
+255 0 255
+255 0 255
+0 0 0
+238 238 180
+238 222 148
+189 222 156
+205 230 238
+238 238 246
+180 205 238
+123 180 230
+90 156 197
+98 123 172
+82 98 131
+65 74 82
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/palettes/11.pal b/data/tilesets/secondary/seafoam_islands_frlg/palettes/11.pal
new file mode 100644
index 000000000000..b237ef1c825e
--- /dev/null
+++ b/data/tilesets/secondary/seafoam_islands_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+189 213 230
+189 197 230
+172 180 213
+148 156 172
+156 238 255
+164 246 255
+213 255 255
+106 230 255
+41 205 255
+32 131 255
+32 82 197
+32 74 131
+205 230 172
+189 213 172
+0 0 0
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/palettes/12.pal b/data/tilesets/secondary/seafoam_islands_frlg/palettes/12.pal
new file mode 100644
index 000000000000..ed56edee1c99
--- /dev/null
+++ b/data/tilesets/secondary/seafoam_islands_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+0 0 0
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/palettes/13.pal b/data/tilesets/secondary/seafoam_islands_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/seafoam_islands_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/palettes/14.pal b/data/tilesets/secondary/seafoam_islands_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/seafoam_islands_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/palettes/15.pal b/data/tilesets/secondary/seafoam_islands_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/seafoam_islands_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/seafoam_islands_frlg/tiles.png b/data/tilesets/secondary/seafoam_islands_frlg/tiles.png
new file mode 100644
index 000000000000..e085d8e33f3f
Binary files /dev/null and b/data/tilesets/secondary/seafoam_islands_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/metatile_attributes.bin b/data/tilesets/secondary/sevii_islands_123_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..76f77dd0477a
Binary files /dev/null and b/data/tilesets/secondary/sevii_islands_123_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/metatiles.bin b/data/tilesets/secondary/sevii_islands_123_frlg/metatiles.bin
new file mode 100644
index 000000000000..52d2f020d970
Binary files /dev/null and b/data/tilesets/secondary/sevii_islands_123_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/palettes/00.pal b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/00.pal
new file mode 100644
index 000000000000..2f3f97d6fdb7
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/palettes/01.pal b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/01.pal
new file mode 100644
index 000000000000..e15d979f128b
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+222 230 230
+197 205 213
+172 189 205
+123 123 131
+65 49 65
+230 238 238
+90 189 139
+90 90 115
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+115 65 74
+82 49 65
+115 205 164
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/palettes/02.pal b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/02.pal
new file mode 100644
index 000000000000..372fb5d7c3b6
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/palettes/03.pal b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/03.pal
new file mode 100644
index 000000000000..205c464c79d6
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/palettes/04.pal b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/04.pal
new file mode 100644
index 000000000000..fca4a2623911
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+213 238 255
+172 205 255
+139 180 238
+106 156 230
+74 139 189
+65 123 189
+82 139 205
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+49 115 172
+238 230 139
+230 213 139
+213 197 106
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/palettes/05.pal b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/05.pal
new file mode 100644
index 000000000000..09555ded561b
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/palettes/06.pal b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/06.pal
new file mode 100644
index 000000000000..f8ebbc6dc2bd
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+213 238 255
+172 205 255
+139 180 238
+106 156 230
+65 123 172
+41 98 156
+74 115 197
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+49 115 172
+238 230 139
+230 213 139
+213 197 106
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/palettes/07.pal b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/07.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/palettes/08.pal b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/08.pal
new file mode 100644
index 000000000000..4d9ab6348057
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+131 197 164
+98 164 131
+123 123 131
+90 90 115
+65 74 106
+222 230 238
+197 213 230
+164 180 197
+255 222 255
+222 172 230
+172 123 189
+148 98 164
+115 65 131
+238 213 156
+205 189 123
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/palettes/09.pal b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/09.pal
new file mode 100644
index 000000000000..b66fdcdbf840
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+115 189 246
+98 164 222
+123 123 131
+90 90 115
+65 74 106
+246 246 213
+230 230 189
+189 189 148
+172 172 131
+156 156 115
+230 222 115
+246 156 115
+222 115 98
+131 230 180
+49 164 123
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/palettes/10.pal b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/10.pal
new file mode 100644
index 000000000000..265fb0625eca
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+205 222 238
+156 172 189
+123 123 131
+90 90 115
+65 74 106
+255 255 180
+255 238 123
+156 115 65
+238 197 246
+213 156 213
+189 106 172
+238 230 74
+238 189 0
+222 156 0
+255 255 255
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/palettes/11.pal b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/11.pal
new file mode 100644
index 000000000000..9e1e423c6767
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+238 238 246
+197 205 222
+172 172 197
+139 156 172
+123 123 131
+90 90 115
+65 74 106
+123 139 222
+115 189 246
+255 230 156
+255 189 65
+238 164 41
+213 131 16
+180 82 0
+255 205 106
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/palettes/12.pal b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/12.pal
new file mode 100644
index 000000000000..375e3914b90a
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+222 230 230
+197 205 213
+172 189 205
+123 123 131
+65 49 65
+230 238 238
+90 189 139
+90 90 115
+230 230 222
+213 213 197
+180 180 164
+148 148 131
+123 123 90
+98 98 74
+115 205 164
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/palettes/13.pal b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/palettes/14.pal b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/palettes/15.pal b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_123_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sevii_islands_123_frlg/tiles.png b/data/tilesets/secondary/sevii_islands_123_frlg/tiles.png
new file mode 100644
index 000000000000..ad8f73a2c665
Binary files /dev/null and b/data/tilesets/secondary/sevii_islands_123_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/metatile_attributes.bin b/data/tilesets/secondary/sevii_islands_45_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..d67c4690c303
Binary files /dev/null and b/data/tilesets/secondary/sevii_islands_45_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/metatiles.bin b/data/tilesets/secondary/sevii_islands_45_frlg/metatiles.bin
new file mode 100644
index 000000000000..7613f37024fd
Binary files /dev/null and b/data/tilesets/secondary/sevii_islands_45_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/palettes/00.pal b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/00.pal
new file mode 100644
index 000000000000..2f3f97d6fdb7
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/palettes/01.pal b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/01.pal
new file mode 100644
index 000000000000..d8a4e7757d1b
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+115 65 74
+82 49 65
+115 205 164
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/palettes/02.pal b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/02.pal
new file mode 100644
index 000000000000..372fb5d7c3b6
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/palettes/03.pal b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/03.pal
new file mode 100644
index 000000000000..205c464c79d6
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/palettes/04.pal b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/04.pal
new file mode 100644
index 000000000000..fca4a2623911
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+213 238 255
+172 205 255
+139 180 238
+106 156 230
+74 139 189
+65 123 189
+82 139 205
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+49 115 172
+238 230 139
+230 213 139
+213 197 106
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/palettes/05.pal b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/05.pal
new file mode 100644
index 000000000000..09555ded561b
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/palettes/06.pal b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/06.pal
new file mode 100644
index 000000000000..f8ebbc6dc2bd
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+213 238 255
+172 205 255
+139 180 238
+106 156 230
+65 123 172
+41 98 156
+74 115 197
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+49 115 172
+238 230 139
+230 213 139
+213 197 106
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/palettes/07.pal b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/07.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/palettes/08.pal b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/08.pal
new file mode 100644
index 000000000000..4d9ab6348057
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+131 197 164
+98 164 131
+123 123 131
+90 90 115
+65 74 106
+222 230 238
+197 213 230
+164 180 197
+255 222 255
+222 172 230
+172 123 189
+148 98 164
+115 65 131
+238 213 156
+205 189 123
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/palettes/09.pal b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/09.pal
new file mode 100644
index 000000000000..5ac617b25f37
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+156 156 222
+255 238 189
+123 123 131
+90 90 115
+65 74 106
+222 230 238
+197 213 230
+164 180 197
+255 222 139
+230 172 98
+213 139 74
+197 115 49
+156 90 16
+115 189 246
+74 131 197
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/palettes/10.pal b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/10.pal
new file mode 100644
index 000000000000..86502dd48ef7
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+205 222 230
+164 180 197
+123 123 131
+90 90 115
+65 74 106
+205 197 148
+180 172 123
+156 148 106
+230 156 106
+197 115 74
+172 98 49
+148 82 32
+205 222 230
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/palettes/11.pal b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/11.pal
new file mode 100644
index 000000000000..b05410cbad36
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+0 0 0
+0 0 0
+0 0 0
+131 131 139
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+0 0 0
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/palettes/12.pal b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/12.pal
new file mode 100644
index 000000000000..995731c23cc0
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/palettes/13.pal b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/palettes/14.pal b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/palettes/15.pal b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_45_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sevii_islands_45_frlg/tiles.png b/data/tilesets/secondary/sevii_islands_45_frlg/tiles.png
new file mode 100644
index 000000000000..744b38638c50
Binary files /dev/null and b/data/tilesets/secondary/sevii_islands_45_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/metatile_attributes.bin b/data/tilesets/secondary/sevii_islands_67_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..b4fe36868060
Binary files /dev/null and b/data/tilesets/secondary/sevii_islands_67_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/metatiles.bin b/data/tilesets/secondary/sevii_islands_67_frlg/metatiles.bin
new file mode 100644
index 000000000000..13f97073b8ed
Binary files /dev/null and b/data/tilesets/secondary/sevii_islands_67_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/palettes/00.pal b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/00.pal
new file mode 100644
index 000000000000..2f3f97d6fdb7
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/palettes/01.pal b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/01.pal
new file mode 100644
index 000000000000..09828f4f1f27
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+123 123 131
+32 49 57
+230 238 238
+90 189 139
+90 90 115
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+123 74 74
+90 57 65
+115 205 164
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/palettes/02.pal b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/02.pal
new file mode 100644
index 000000000000..6b019b884c96
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/palettes/03.pal b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/03.pal
new file mode 100644
index 000000000000..205c464c79d6
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/palettes/04.pal b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/04.pal
new file mode 100644
index 000000000000..5871a448c008
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+230 246 255
+189 222 255
+139 189 255
+115 164 255
+65 139 222
+57 115 222
+82 148 230
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+49 115 197
+238 230 139
+230 213 139
+213 197 106
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/palettes/05.pal b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/05.pal
new file mode 100644
index 000000000000..c5a653979a01
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/palettes/06.pal b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/06.pal
new file mode 100644
index 000000000000..9bad44649513
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+205 230 246
+180 213 255
+123 180 246
+98 148 230
+65 123 189
+49 98 180
+82 131 222
+213 230 238
+172 189 205
+123 123 131
+90 90 115
+238 246 246
+238 230 139
+230 213 139
+213 197 106
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/palettes/07.pal b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/07.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/palettes/08.pal b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/08.pal
new file mode 100644
index 000000000000..4d9ab6348057
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+131 197 164
+98 164 131
+123 123 131
+90 90 115
+65 74 106
+222 230 238
+197 213 230
+164 180 197
+255 222 255
+222 172 230
+172 123 189
+148 98 164
+115 65 131
+238 213 156
+205 189 123
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/palettes/09.pal b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/09.pal
new file mode 100644
index 000000000000..edc5961bb5ac
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+238 246 255
+197 213 222
+139 156 172
+123 123 131
+90 90 115
+65 74 106
+115 172 246
+65 123 172
+49 90 139
+32 74 123
+189 230 164
+115 156 90
+148 131 74
+156 213 255
+98 164 230
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/palettes/10.pal b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/10.pal
new file mode 100644
index 000000000000..d26d003afbf5
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+238 246 255
+197 213 222
+172 189 197
+139 156 172
+123 123 131
+90 90 115
+65 74 106
+255 0 255
+131 172 148
+189 180 164
+172 164 156
+148 139 139
+123 115 115
+106 98 106
+115 205 164
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/palettes/11.pal b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/11.pal
new file mode 100644
index 000000000000..995731c23cc0
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/palettes/12.pal b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/12.pal
new file mode 100644
index 000000000000..995731c23cc0
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/palettes/13.pal b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/palettes/14.pal b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/palettes/15.pal b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/sevii_islands_67_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/sevii_islands_67_frlg/tiles.png b/data/tilesets/secondary/sevii_islands_67_frlg/tiles.png
new file mode 100644
index 000000000000..d40c92649aeb
Binary files /dev/null and b/data/tilesets/secondary/sevii_islands_67_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/silph_co_frlg/anim/fountain/0.png b/data/tilesets/secondary/silph_co_frlg/anim/fountain/0.png
new file mode 100644
index 000000000000..09714447b9cc
Binary files /dev/null and b/data/tilesets/secondary/silph_co_frlg/anim/fountain/0.png differ
diff --git a/data/tilesets/secondary/silph_co_frlg/anim/fountain/1.png b/data/tilesets/secondary/silph_co_frlg/anim/fountain/1.png
new file mode 100644
index 000000000000..5063c1476e1f
Binary files /dev/null and b/data/tilesets/secondary/silph_co_frlg/anim/fountain/1.png differ
diff --git a/data/tilesets/secondary/silph_co_frlg/anim/fountain/2.png b/data/tilesets/secondary/silph_co_frlg/anim/fountain/2.png
new file mode 100644
index 000000000000..eb46683ea93b
Binary files /dev/null and b/data/tilesets/secondary/silph_co_frlg/anim/fountain/2.png differ
diff --git a/data/tilesets/secondary/silph_co_frlg/anim/fountain/3.png b/data/tilesets/secondary/silph_co_frlg/anim/fountain/3.png
new file mode 100644
index 000000000000..e582fbce24f0
Binary files /dev/null and b/data/tilesets/secondary/silph_co_frlg/anim/fountain/3.png differ
diff --git a/data/tilesets/secondary/silph_co_frlg/metatile_attributes.bin b/data/tilesets/secondary/silph_co_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..fe4e55d57b53
Binary files /dev/null and b/data/tilesets/secondary/silph_co_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/silph_co_frlg/metatiles.bin b/data/tilesets/secondary/silph_co_frlg/metatiles.bin
new file mode 100644
index 000000000000..c86070668b57
Binary files /dev/null and b/data/tilesets/secondary/silph_co_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/ss_anne_frlg/metatile_attributes.bin b/data/tilesets/secondary/ss_anne_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..0e1deb580fd5
Binary files /dev/null and b/data/tilesets/secondary/ss_anne_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/ss_anne_frlg/metatiles.bin b/data/tilesets/secondary/ss_anne_frlg/metatiles.bin
new file mode 100644
index 000000000000..a976297b3ea1
Binary files /dev/null and b/data/tilesets/secondary/ss_anne_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/ss_anne_frlg/palettes/00.pal b/data/tilesets/secondary/ss_anne_frlg/palettes/00.pal
new file mode 100644
index 000000000000..28232d99edd0
--- /dev/null
+++ b/data/tilesets/secondary/ss_anne_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/ss_anne_frlg/palettes/01.pal b/data/tilesets/secondary/ss_anne_frlg/palettes/01.pal
new file mode 100644
index 000000000000..b43532470f65
--- /dev/null
+++ b/data/tilesets/secondary/ss_anne_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+115 65 74
+82 49 65
+115 205 164
diff --git a/data/tilesets/secondary/ss_anne_frlg/palettes/02.pal b/data/tilesets/secondary/ss_anne_frlg/palettes/02.pal
new file mode 100644
index 000000000000..e267ae90e403
--- /dev/null
+++ b/data/tilesets/secondary/ss_anne_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/ss_anne_frlg/palettes/03.pal b/data/tilesets/secondary/ss_anne_frlg/palettes/03.pal
new file mode 100644
index 000000000000..503f22878d98
--- /dev/null
+++ b/data/tilesets/secondary/ss_anne_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/ss_anne_frlg/palettes/04.pal b/data/tilesets/secondary/ss_anne_frlg/palettes/04.pal
new file mode 100644
index 000000000000..cdf1b6190640
--- /dev/null
+++ b/data/tilesets/secondary/ss_anne_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+222 255 255
+172 222 255
+148 189 238
+106 156 230
+57 148 197
+32 131 172
+82 148 213
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+230 213 148
+238 230 139
+222 197 139
+213 189 106
diff --git a/data/tilesets/secondary/ss_anne_frlg/palettes/05.pal b/data/tilesets/secondary/ss_anne_frlg/palettes/05.pal
new file mode 100644
index 000000000000..09555ded561b
--- /dev/null
+++ b/data/tilesets/secondary/ss_anne_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/ss_anne_frlg/palettes/06.pal b/data/tilesets/secondary/ss_anne_frlg/palettes/06.pal
new file mode 100644
index 000000000000..0dba59a72c27
--- /dev/null
+++ b/data/tilesets/secondary/ss_anne_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+222 255 255
+172 222 255
+148 189 238
+106 156 230
+41 90 172
+41 57 148
+74 123 197
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+230 213 148
+238 230 139
+222 197 139
+213 189 106
diff --git a/data/tilesets/secondary/ss_anne_frlg/palettes/07.pal b/data/tilesets/secondary/ss_anne_frlg/palettes/07.pal
new file mode 100644
index 000000000000..e9848a1c072e
--- /dev/null
+++ b/data/tilesets/secondary/ss_anne_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+156 205 156
+82 82 106
+115 115 139
+148 148 172
+189 189 205
+222 222 230
+255 255 255
+180 180 74
+205 205 98
+255 255 98
+98 98 172
+131 131 213
+164 164 255
+131 98 41
+164 139 82
+205 180 123
diff --git a/data/tilesets/secondary/ss_anne_frlg/palettes/08.pal b/data/tilesets/secondary/ss_anne_frlg/palettes/08.pal
new file mode 100644
index 000000000000..b5c80c8f409b
--- /dev/null
+++ b/data/tilesets/secondary/ss_anne_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+156 205 156
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+90 156 57
+131 180 49
+172 205 49
+197 230 98
+222 255 148
+222 172 98
+255 197 98
+255 222 156
+131 98 41
+164 139 82
+205 180 123
diff --git a/data/tilesets/secondary/ss_anne_frlg/palettes/09.pal b/data/tilesets/secondary/ss_anne_frlg/palettes/09.pal
new file mode 100644
index 000000000000..b66b2399a661
--- /dev/null
+++ b/data/tilesets/secondary/ss_anne_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+156 205 156
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+255 0 255
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+255 0 255
+255 0 255
+255 0 255
+131 98 41
+164 139 82
+205 180 123
diff --git a/data/tilesets/secondary/ss_anne_frlg/palettes/10.pal b/data/tilesets/secondary/ss_anne_frlg/palettes/10.pal
new file mode 100644
index 000000000000..2a1743eaafef
--- /dev/null
+++ b/data/tilesets/secondary/ss_anne_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+156 205 156
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/ss_anne_frlg/palettes/11.pal b/data/tilesets/secondary/ss_anne_frlg/palettes/11.pal
new file mode 100644
index 000000000000..307e0ea7e8a7
--- /dev/null
+++ b/data/tilesets/secondary/ss_anne_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+156 205 156
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+0 0 0
diff --git a/data/tilesets/secondary/ss_anne_frlg/palettes/12.pal b/data/tilesets/secondary/ss_anne_frlg/palettes/12.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/ss_anne_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/ss_anne_frlg/palettes/13.pal b/data/tilesets/secondary/ss_anne_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/ss_anne_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/ss_anne_frlg/palettes/14.pal b/data/tilesets/secondary/ss_anne_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/ss_anne_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/ss_anne_frlg/palettes/15.pal b/data/tilesets/secondary/ss_anne_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/ss_anne_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/ss_anne_frlg/tiles.png b/data/tilesets/secondary/ss_anne_frlg/tiles.png
new file mode 100644
index 000000000000..280f3e227720
Binary files /dev/null and b/data/tilesets/secondary/ss_anne_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/metatile_attributes.bin b/data/tilesets/secondary/tanoby_ruins_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..5fe7d59fc4e3
Binary files /dev/null and b/data/tilesets/secondary/tanoby_ruins_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/metatiles.bin b/data/tilesets/secondary/tanoby_ruins_frlg/metatiles.bin
new file mode 100644
index 000000000000..2b3a9543e11c
Binary files /dev/null and b/data/tilesets/secondary/tanoby_ruins_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/palettes/00.pal b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/00.pal
new file mode 100644
index 000000000000..83b30fc17a34
--- /dev/null
+++ b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 172 82
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/palettes/01.pal b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/01.pal
new file mode 100644
index 000000000000..66561f6d3326
--- /dev/null
+++ b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+139 180 222
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/palettes/02.pal b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/02.pal
new file mode 100644
index 000000000000..87a022102f19
--- /dev/null
+++ b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+197 189 213
+255 255 255
+106 197 106
+230 213 123
+255 205 90
+255 238 197
+90 90 115
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/palettes/03.pal b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/03.pal
new file mode 100644
index 000000000000..783496dcd9bf
--- /dev/null
+++ b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 180 74
+255 246 131
+65 98 156
+90 123 180
+115 156 197
+222 213 131
+164 164 172
+205 205 213
+238 238 246
+106 172 115
+156 205 139
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/palettes/04.pal b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/04.pal
new file mode 100644
index 000000000000..89eace6050ad
--- /dev/null
+++ b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 238 246
+172 197 180
+197 222 205
+90 189 172
+246 238 156
+205 189 131
+189 164 123
+148 131 106
+106 106 106
+213 222 230
+238 180 115
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/palettes/05.pal b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/05.pal
new file mode 100644
index 000000000000..c7780e5c7515
--- /dev/null
+++ b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+213 222 222
+164 180 189
+255 0 255
+131 115 74
+213 213 148
+197 189 139
+172 156 115
+148 131 90
+197 197 205
+205 82 65
+0 0 0
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/palettes/06.pal b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/06.pal
new file mode 100644
index 000000000000..1d08ce9a2024
--- /dev/null
+++ b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/palettes/07.pal b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/07.pal
new file mode 100644
index 000000000000..dfa7796353f8
--- /dev/null
+++ b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 172 82
+82 82 106
+131 131 131
+98 131 131
+139 172 172
+164 205 189
+98 106 131
+90 98 106
+98 156 197
+164 172 139
+139 156 139
+115 123 123
+205 213 156
+180 197 156
+164 172 156
+90 0 255
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/palettes/08.pal b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/08.pal
new file mode 100644
index 000000000000..fd7d8a9d79b2
--- /dev/null
+++ b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 172 82
+82 82 106
+230 222 164
+156 148 90
+123 115 115
+205 197 106
+164 156 90
+189 172 90
+246 246 222
+238 238 164
+98 106 90
+205 213 156
+139 148 106
+98 98 106
+205 139 189
+213 148 74
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/palettes/09.pal b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/09.pal
new file mode 100644
index 000000000000..0d43d6ef9430
--- /dev/null
+++ b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 172 82
+82 82 106
+230 222 164
+156 148 90
+123 115 115
+205 197 106
+164 156 90
+189 172 90
+246 246 222
+238 238 164
+98 106 90
+205 213 156
+139 148 106
+98 98 106
+131 205 82
+230 213 82
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/palettes/10.pal b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/10.pal
new file mode 100644
index 000000000000..fb565545bf13
--- /dev/null
+++ b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 172 82
+82 82 106
+230 222 164
+156 148 90
+123 115 115
+205 197 106
+164 156 90
+189 172 90
+246 246 222
+238 238 164
+98 106 90
+205 213 156
+139 148 106
+98 98 106
+90 0 255
+222 222 230
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/palettes/11.pal b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/11.pal
new file mode 100644
index 000000000000..e637019c6b0a
--- /dev/null
+++ b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 172 82
+82 82 106
+230 222 164
+156 148 90
+123 115 115
+205 197 106
+164 156 90
+189 172 90
+246 246 222
+238 238 164
+98 106 90
+205 213 156
+139 148 106
+98 98 106
+90 0 255
+139 148 139
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/palettes/12.pal b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/12.pal
new file mode 100644
index 000000000000..775369fed94d
--- /dev/null
+++ b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 172 82
+82 82 106
+230 222 164
+156 148 90
+123 115 115
+205 197 106
+164 156 90
+189 172 90
+246 246 222
+238 238 164
+98 106 90
+205 213 156
+139 148 106
+98 98 106
+90 0 255
+156 197 213
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/palettes/13.pal b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/palettes/14.pal b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/palettes/15.pal b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/tanoby_ruins_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/tanoby_ruins_frlg/tiles.png b/data/tilesets/secondary/tanoby_ruins_frlg/tiles.png
new file mode 100644
index 000000000000..c61f91c47ce0
Binary files /dev/null and b/data/tilesets/secondary/tanoby_ruins_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/trainer_tower_frlg/metatile_attributes.bin b/data/tilesets/secondary/trainer_tower_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..b499b0fa9b2d
Binary files /dev/null and b/data/tilesets/secondary/trainer_tower_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/trainer_tower_frlg/metatiles.bin b/data/tilesets/secondary/trainer_tower_frlg/metatiles.bin
new file mode 100644
index 000000000000..f045f57e8886
Binary files /dev/null and b/data/tilesets/secondary/trainer_tower_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/trainer_tower_frlg/palettes/00.pal b/data/tilesets/secondary/trainer_tower_frlg/palettes/00.pal
new file mode 100644
index 000000000000..8db07d4180d2
--- /dev/null
+++ b/data/tilesets/secondary/trainer_tower_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/trainer_tower_frlg/palettes/01.pal b/data/tilesets/secondary/trainer_tower_frlg/palettes/01.pal
new file mode 100644
index 000000000000..66561f6d3326
--- /dev/null
+++ b/data/tilesets/secondary/trainer_tower_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+139 180 222
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/trainer_tower_frlg/palettes/02.pal b/data/tilesets/secondary/trainer_tower_frlg/palettes/02.pal
new file mode 100644
index 000000000000..87a022102f19
--- /dev/null
+++ b/data/tilesets/secondary/trainer_tower_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+197 189 213
+255 255 255
+106 197 106
+230 213 123
+255 205 90
+255 238 197
+90 90 115
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/trainer_tower_frlg/palettes/03.pal b/data/tilesets/secondary/trainer_tower_frlg/palettes/03.pal
new file mode 100644
index 000000000000..783496dcd9bf
--- /dev/null
+++ b/data/tilesets/secondary/trainer_tower_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 180 74
+255 246 131
+65 98 156
+90 123 180
+115 156 197
+222 213 131
+164 164 172
+205 205 213
+238 238 246
+106 172 115
+156 205 139
diff --git a/data/tilesets/secondary/trainer_tower_frlg/palettes/04.pal b/data/tilesets/secondary/trainer_tower_frlg/palettes/04.pal
new file mode 100644
index 000000000000..89eace6050ad
--- /dev/null
+++ b/data/tilesets/secondary/trainer_tower_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 238 246
+172 197 180
+197 222 205
+90 189 172
+246 238 156
+205 189 131
+189 164 123
+148 131 106
+106 106 106
+213 222 230
+238 180 115
diff --git a/data/tilesets/secondary/trainer_tower_frlg/palettes/05.pal b/data/tilesets/secondary/trainer_tower_frlg/palettes/05.pal
new file mode 100644
index 000000000000..c7780e5c7515
--- /dev/null
+++ b/data/tilesets/secondary/trainer_tower_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+213 222 222
+164 180 189
+255 0 255
+131 115 74
+213 213 148
+197 189 139
+172 156 115
+148 131 90
+197 197 205
+205 82 65
+0 0 0
diff --git a/data/tilesets/secondary/trainer_tower_frlg/palettes/06.pal b/data/tilesets/secondary/trainer_tower_frlg/palettes/06.pal
new file mode 100644
index 000000000000..1d08ce9a2024
--- /dev/null
+++ b/data/tilesets/secondary/trainer_tower_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/trainer_tower_frlg/palettes/07.pal b/data/tilesets/secondary/trainer_tower_frlg/palettes/07.pal
new file mode 100644
index 000000000000..edc5961bb5ac
--- /dev/null
+++ b/data/tilesets/secondary/trainer_tower_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+238 246 255
+197 213 222
+139 156 172
+123 123 131
+90 90 115
+65 74 106
+115 172 246
+65 123 172
+49 90 139
+32 74 123
+189 230 164
+115 156 90
+148 131 74
+156 213 255
+98 164 230
diff --git a/data/tilesets/secondary/trainer_tower_frlg/palettes/08.pal b/data/tilesets/secondary/trainer_tower_frlg/palettes/08.pal
new file mode 100644
index 000000000000..317213c427fd
--- /dev/null
+++ b/data/tilesets/secondary/trainer_tower_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+123 74 148
+148 106 180
+230 213 246
+205 172 213
+222 213 90
+197 189 65
+189 180 49
+172 164 32
+213 205 90
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/trainer_tower_frlg/palettes/09.pal b/data/tilesets/secondary/trainer_tower_frlg/palettes/09.pal
new file mode 100644
index 000000000000..19dc9a47e98f
--- /dev/null
+++ b/data/tilesets/secondary/trainer_tower_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+255 0 255
+255 131 115
+106 197 106
+164 255 180
+238 197 115
+213 131 74
+189 213 230
+123 156 180
+90 123 156
+156 180 205
+222 230 238
diff --git a/data/tilesets/secondary/trainer_tower_frlg/palettes/10.pal b/data/tilesets/secondary/trainer_tower_frlg/palettes/10.pal
new file mode 100644
index 000000000000..ab3a7d14f8a7
--- /dev/null
+++ b/data/tilesets/secondary/trainer_tower_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+172 213 255
+139 189 246
+123 172 222
+98 180 230
+106 148 213
+255 0 255
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+189 230 255
+189 230 255
+156 189 213
+90 131 180
diff --git a/data/tilesets/secondary/trainer_tower_frlg/palettes/11.pal b/data/tilesets/secondary/trainer_tower_frlg/palettes/11.pal
new file mode 100644
index 000000000000..bb88b4d57179
--- /dev/null
+++ b/data/tilesets/secondary/trainer_tower_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+148 148 148
+123 123 123
+98 98 98
+82 82 106
+255 213 90
+230 164 74
+255 0 255
+222 230 238
+197 205 156
+205 139 115
+172 172 172
+222 230 189
+230 172 139
+0 0 0
+255 255 255
diff --git a/data/tilesets/secondary/trainer_tower_frlg/palettes/12.pal b/data/tilesets/secondary/trainer_tower_frlg/palettes/12.pal
new file mode 100644
index 000000000000..b0d005f21c41
--- /dev/null
+++ b/data/tilesets/secondary/trainer_tower_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+205 205 205
+255 131 65
+222 98 32
+255 0 255
+222 213 90
+197 189 65
+189 180 49
+172 164 32
+213 205 90
+148 148 148
+230 230 230
diff --git a/data/tilesets/secondary/trainer_tower_frlg/palettes/13.pal b/data/tilesets/secondary/trainer_tower_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/trainer_tower_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/trainer_tower_frlg/palettes/14.pal b/data/tilesets/secondary/trainer_tower_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/trainer_tower_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/trainer_tower_frlg/palettes/15.pal b/data/tilesets/secondary/trainer_tower_frlg/palettes/15.pal
new file mode 100644
index 000000000000..6a17f18dc2b2
--- /dev/null
+++ b/data/tilesets/secondary/trainer_tower_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+172 222 172
+189 238 197
+139 189 139
+205 246 213
+172 222 172
+74 106 156
+90 131 180
+213 222 222
+156 189 213
+238 139 98
+189 98 74
+156 65 49
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/trainer_tower_frlg/tiles.png b/data/tilesets/secondary/trainer_tower_frlg/tiles.png
new file mode 100644
index 000000000000..f74f7c9f7e7c
Binary files /dev/null and b/data/tilesets/secondary/trainer_tower_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/underground_path_frlg/metatile_attributes.bin b/data/tilesets/secondary/underground_path_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..f711a0221a3e
Binary files /dev/null and b/data/tilesets/secondary/underground_path_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/underground_path_frlg/metatiles.bin b/data/tilesets/secondary/underground_path_frlg/metatiles.bin
new file mode 100644
index 000000000000..2010e1eca87c
Binary files /dev/null and b/data/tilesets/secondary/underground_path_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/underground_path_frlg/palettes/00.pal b/data/tilesets/secondary/underground_path_frlg/palettes/00.pal
new file mode 100644
index 000000000000..6d876039d15c
--- /dev/null
+++ b/data/tilesets/secondary/underground_path_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/underground_path_frlg/palettes/01.pal b/data/tilesets/secondary/underground_path_frlg/palettes/01.pal
new file mode 100644
index 000000000000..66561f6d3326
--- /dev/null
+++ b/data/tilesets/secondary/underground_path_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+139 180 222
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+246 238 148
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/underground_path_frlg/palettes/02.pal b/data/tilesets/secondary/underground_path_frlg/palettes/02.pal
new file mode 100644
index 000000000000..87a022102f19
--- /dev/null
+++ b/data/tilesets/secondary/underground_path_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+197 189 213
+255 255 255
+106 197 106
+230 213 123
+255 205 90
+255 238 197
+90 90 115
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/underground_path_frlg/palettes/03.pal b/data/tilesets/secondary/underground_path_frlg/palettes/03.pal
new file mode 100644
index 000000000000..783496dcd9bf
--- /dev/null
+++ b/data/tilesets/secondary/underground_path_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 180 74
+255 246 131
+65 98 156
+90 123 180
+115 156 197
+222 213 131
+164 164 172
+205 205 213
+238 238 246
+106 172 115
+156 205 139
diff --git a/data/tilesets/secondary/underground_path_frlg/palettes/04.pal b/data/tilesets/secondary/underground_path_frlg/palettes/04.pal
new file mode 100644
index 000000000000..89eace6050ad
--- /dev/null
+++ b/data/tilesets/secondary/underground_path_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+230 238 246
+172 197 180
+197 222 205
+90 189 172
+246 238 156
+205 189 131
+189 164 123
+148 131 106
+106 106 106
+213 222 230
+238 180 115
diff --git a/data/tilesets/secondary/underground_path_frlg/palettes/05.pal b/data/tilesets/secondary/underground_path_frlg/palettes/05.pal
new file mode 100644
index 000000000000..0eef3df8e8fb
--- /dev/null
+++ b/data/tilesets/secondary/underground_path_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+213 222 222
+164 180 189
+255 0 255
+131 115 74
+213 213 148
+197 189 139
+172 156 115
+148 131 90
+255 0 255
+255 0 255
+0 0 0
diff --git a/data/tilesets/secondary/underground_path_frlg/palettes/06.pal b/data/tilesets/secondary/underground_path_frlg/palettes/06.pal
new file mode 100644
index 000000000000..1d08ce9a2024
--- /dev/null
+++ b/data/tilesets/secondary/underground_path_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+213 213 172
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/underground_path_frlg/palettes/07.pal b/data/tilesets/secondary/underground_path_frlg/palettes/07.pal
new file mode 100644
index 000000000000..23e995640fb6
--- /dev/null
+++ b/data/tilesets/secondary/underground_path_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+148 148 156
+205 205 197
+148 139 90
+172 164 106
+197 189 131
+82 139 148
+115 164 172
+156 189 197
+180 90 74
+205 115 90
+238 156 123
diff --git a/data/tilesets/secondary/underground_path_frlg/palettes/08.pal b/data/tilesets/secondary/underground_path_frlg/palettes/08.pal
new file mode 100644
index 000000000000..3ce3570a15f2
--- /dev/null
+++ b/data/tilesets/secondary/underground_path_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+82 82 106
+123 123 123
+172 172 164
+255 255 255
+255 255 156
+197 197 156
+172 172 139
+148 148 131
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/underground_path_frlg/palettes/09.pal b/data/tilesets/secondary/underground_path_frlg/palettes/09.pal
new file mode 100644
index 000000000000..e12b8edac859
--- /dev/null
+++ b/data/tilesets/secondary/underground_path_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/underground_path_frlg/palettes/10.pal b/data/tilesets/secondary/underground_path_frlg/palettes/10.pal
new file mode 100644
index 000000000000..e12b8edac859
--- /dev/null
+++ b/data/tilesets/secondary/underground_path_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/underground_path_frlg/palettes/11.pal b/data/tilesets/secondary/underground_path_frlg/palettes/11.pal
new file mode 100644
index 000000000000..e12b8edac859
--- /dev/null
+++ b/data/tilesets/secondary/underground_path_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/underground_path_frlg/palettes/12.pal b/data/tilesets/secondary/underground_path_frlg/palettes/12.pal
new file mode 100644
index 000000000000..e12b8edac859
--- /dev/null
+++ b/data/tilesets/secondary/underground_path_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+172 189 115
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/underground_path_frlg/palettes/13.pal b/data/tilesets/secondary/underground_path_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/underground_path_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/underground_path_frlg/palettes/14.pal b/data/tilesets/secondary/underground_path_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/underground_path_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/underground_path_frlg/palettes/15.pal b/data/tilesets/secondary/underground_path_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/underground_path_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/underground_path_frlg/tiles.png b/data/tilesets/secondary/underground_path_frlg/tiles.png
new file mode 100644
index 000000000000..b8865022d7dc
Binary files /dev/null and b/data/tilesets/secondary/underground_path_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/metatile_attributes.bin b/data/tilesets/secondary/unused_gatehouse_1_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..3549eaa93cd3
Binary files /dev/null and b/data/tilesets/secondary/unused_gatehouse_1_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/metatiles.bin b/data/tilesets/secondary/unused_gatehouse_1_frlg/metatiles.bin
new file mode 100644
index 000000000000..ea1398be38ba
Binary files /dev/null and b/data/tilesets/secondary/unused_gatehouse_1_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/00.pal b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/01.pal b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/01.pal
new file mode 100644
index 000000000000..d99adaffffc0
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+255 230 156
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/02.pal b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/02.pal
new file mode 100644
index 000000000000..cc3a9457d494
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+139 197 139
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/03.pal b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/03.pal
new file mode 100644
index 000000000000..7ec794ae5408
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+172 172 164
+255 255 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+164 164 172
+205 205 213
+238 238 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/04.pal b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/05.pal b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/06.pal b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/06.pal
new file mode 100644
index 000000000000..2903bb074c9e
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+131 131 131
+180 180 164
+255 255 255
+189 164 82
+222 197 106
+230 222 156
+123 197 189
+156 222 213
+213 255 246
+255 0 255
+255 0 255
+213 131 65
+222 230 222
+246 238 189
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/07.pal b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/07.pal
new file mode 100644
index 000000000000..c62a40b0d024
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+148 172 139
+180 197 164
+213 222 197
+238 255 213
+115 156 180
+197 222 238
+123 197 189
+156 222 213
+213 255 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/08.pal b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/08.pal
new file mode 100644
index 000000000000..8c66b4998189
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+230 222 156
+189 98 74
+230 156 98
+213 205 156
+115 156 180
+246 238 189
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/09.pal b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/09.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/10.pal b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/10.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/11.pal b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/11.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/12.pal b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/12.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/13.pal b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/14.pal b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/15.pal b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_1_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_1_frlg/tiles.png b/data/tilesets/secondary/unused_gatehouse_1_frlg/tiles.png
new file mode 100644
index 000000000000..6d376f447b5b
Binary files /dev/null and b/data/tilesets/secondary/unused_gatehouse_1_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/metatile_attributes.bin b/data/tilesets/secondary/unused_gatehouse_2_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..3549eaa93cd3
Binary files /dev/null and b/data/tilesets/secondary/unused_gatehouse_2_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/metatiles.bin b/data/tilesets/secondary/unused_gatehouse_2_frlg/metatiles.bin
new file mode 100644
index 000000000000..ea1398be38ba
Binary files /dev/null and b/data/tilesets/secondary/unused_gatehouse_2_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/00.pal b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/01.pal b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/01.pal
new file mode 100644
index 000000000000..d99adaffffc0
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+255 230 156
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/02.pal b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/02.pal
new file mode 100644
index 000000000000..cc3a9457d494
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+139 197 139
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/03.pal b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/03.pal
new file mode 100644
index 000000000000..7ec794ae5408
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+172 172 164
+255 255 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+164 164 172
+205 205 213
+238 238 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/04.pal b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/05.pal b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/06.pal b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/06.pal
new file mode 100644
index 000000000000..2903bb074c9e
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+131 131 131
+180 180 164
+255 255 255
+189 164 82
+222 197 106
+230 222 156
+123 197 189
+156 222 213
+213 255 246
+255 0 255
+255 0 255
+213 131 65
+222 230 222
+246 238 189
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/07.pal b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/07.pal
new file mode 100644
index 000000000000..c62a40b0d024
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+148 172 139
+180 197 164
+213 222 197
+238 255 213
+115 156 180
+197 222 238
+123 197 189
+156 222 213
+213 255 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/08.pal b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/08.pal
new file mode 100644
index 000000000000..8c66b4998189
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+230 222 156
+189 98 74
+230 156 98
+213 205 156
+115 156 180
+246 238 189
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/09.pal b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/09.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/10.pal b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/10.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/11.pal b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/11.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/12.pal b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/12.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/13.pal b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/14.pal b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/15.pal b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/unused_gatehouse_2_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/unused_gatehouse_2_frlg/tiles.png b/data/tilesets/secondary/unused_gatehouse_2_frlg/tiles.png
new file mode 100644
index 000000000000..6d376f447b5b
Binary files /dev/null and b/data/tilesets/secondary/unused_gatehouse_2_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/vermilion_city_frlg/metatile_attributes.bin b/data/tilesets/secondary/vermilion_city_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..1136f644af4b
Binary files /dev/null and b/data/tilesets/secondary/vermilion_city_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/vermilion_city_frlg/metatiles.bin b/data/tilesets/secondary/vermilion_city_frlg/metatiles.bin
new file mode 100644
index 000000000000..c7978128e2b5
Binary files /dev/null and b/data/tilesets/secondary/vermilion_city_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/vermilion_city_frlg/palettes/00.pal b/data/tilesets/secondary/vermilion_city_frlg/palettes/00.pal
new file mode 100644
index 000000000000..2f3f97d6fdb7
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_city_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/vermilion_city_frlg/palettes/01.pal b/data/tilesets/secondary/vermilion_city_frlg/palettes/01.pal
new file mode 100644
index 000000000000..09828f4f1f27
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_city_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+123 123 131
+32 49 57
+230 238 238
+90 189 139
+90 90 115
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+123 74 74
+90 57 65
+115 205 164
diff --git a/data/tilesets/secondary/vermilion_city_frlg/palettes/02.pal b/data/tilesets/secondary/vermilion_city_frlg/palettes/02.pal
new file mode 100644
index 000000000000..372fb5d7c3b6
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_city_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/vermilion_city_frlg/palettes/03.pal b/data/tilesets/secondary/vermilion_city_frlg/palettes/03.pal
new file mode 100644
index 000000000000..205c464c79d6
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_city_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/vermilion_city_frlg/palettes/04.pal b/data/tilesets/secondary/vermilion_city_frlg/palettes/04.pal
new file mode 100644
index 000000000000..5871a448c008
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_city_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+230 246 255
+189 222 255
+139 189 255
+115 164 255
+65 139 222
+57 115 222
+82 148 230
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+49 115 197
+238 230 139
+230 213 139
+213 197 106
diff --git a/data/tilesets/secondary/vermilion_city_frlg/palettes/05.pal b/data/tilesets/secondary/vermilion_city_frlg/palettes/05.pal
new file mode 100644
index 000000000000..c5a653979a01
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_city_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/vermilion_city_frlg/palettes/06.pal b/data/tilesets/secondary/vermilion_city_frlg/palettes/06.pal
new file mode 100644
index 000000000000..9bad44649513
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_city_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+205 230 246
+180 213 255
+123 180 246
+98 148 230
+65 123 189
+49 98 180
+82 131 222
+213 230 238
+172 189 205
+123 123 131
+90 90 115
+238 246 246
+238 230 139
+230 213 139
+213 197 106
diff --git a/data/tilesets/secondary/vermilion_city_frlg/palettes/07.pal b/data/tilesets/secondary/vermilion_city_frlg/palettes/07.pal
new file mode 100644
index 000000000000..17b1a0ed2879
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_city_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
diff --git a/data/tilesets/secondary/vermilion_city_frlg/palettes/08.pal b/data/tilesets/secondary/vermilion_city_frlg/palettes/08.pal
new file mode 100644
index 000000000000..7179b91bd801
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_city_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+255 246 172
+255 189 32
+222 156 0
+189 106 57
+123 123 131
+90 90 115
+65 74 106
+255 255 255
+205 205 222
+255 230 131
+238 205 123
+197 164 90
+131 164 197
+255 0 255
+180 156 49
diff --git a/data/tilesets/secondary/vermilion_city_frlg/palettes/09.pal b/data/tilesets/secondary/vermilion_city_frlg/palettes/09.pal
new file mode 100644
index 000000000000..746dac7dacc7
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_city_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+74 123 180
+90 164 213
+57 90 148
+213 148 49
+238 180 82
+205 205 222
+115 189 246
+74 131 197
diff --git a/data/tilesets/secondary/vermilion_city_frlg/palettes/10.pal b/data/tilesets/secondary/vermilion_city_frlg/palettes/10.pal
new file mode 100644
index 000000000000..892aae6edd9d
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_city_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+115 82 41
+255 189 32
+222 156 0
+189 106 57
+123 123 131
+90 90 115
+65 74 106
+189 255 139
+131 213 98
+106 180 98
+255 230 131
+238 205 123
+197 164 90
+131 164 197
+255 0 255
diff --git a/data/tilesets/secondary/vermilion_city_frlg/palettes/11.pal b/data/tilesets/secondary/vermilion_city_frlg/palettes/11.pal
new file mode 100644
index 000000000000..b2a405273f09
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_city_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/vermilion_city_frlg/palettes/12.pal b/data/tilesets/secondary/vermilion_city_frlg/palettes/12.pal
new file mode 100644
index 000000000000..f124929b457b
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_city_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 238 189
+222 205 131
+205 180 106
+180 139 74
+246 246 255
+172 189 205
+222 106 98
+213 164 156
+213 148 49
+65 74 106
+123 123 131
+16 123 74
+49 148 106
+98 189 148
+164 230 197
diff --git a/data/tilesets/secondary/vermilion_city_frlg/palettes/13.pal b/data/tilesets/secondary/vermilion_city_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_city_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/vermilion_city_frlg/palettes/14.pal b/data/tilesets/secondary/vermilion_city_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_city_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/vermilion_city_frlg/palettes/15.pal b/data/tilesets/secondary/vermilion_city_frlg/palettes/15.pal
new file mode 100644
index 000000000000..ac0d32eb09d5
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_city_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+246 222 90
+246 197 65
+238 164 57
+172 189 205
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/vermilion_city_frlg/tiles.png b/data/tilesets/secondary/vermilion_city_frlg/tiles.png
new file mode 100644
index 000000000000..8cfa9b4ddac6
Binary files /dev/null and b/data/tilesets/secondary/vermilion_city_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/anim/motorizeddoor/0.png b/data/tilesets/secondary/vermilion_gym_frlg/anim/motorizeddoor/0.png
new file mode 100644
index 000000000000..a17ad6f5ead2
Binary files /dev/null and b/data/tilesets/secondary/vermilion_gym_frlg/anim/motorizeddoor/0.png differ
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/anim/motorizeddoor/1.png b/data/tilesets/secondary/vermilion_gym_frlg/anim/motorizeddoor/1.png
new file mode 100644
index 000000000000..bfddebccd994
Binary files /dev/null and b/data/tilesets/secondary/vermilion_gym_frlg/anim/motorizeddoor/1.png differ
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/metatile_attributes.bin b/data/tilesets/secondary/vermilion_gym_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..015dd4e76ff6
Binary files /dev/null and b/data/tilesets/secondary/vermilion_gym_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/metatiles.bin b/data/tilesets/secondary/vermilion_gym_frlg/metatiles.bin
new file mode 100644
index 000000000000..25a46724bb29
Binary files /dev/null and b/data/tilesets/secondary/vermilion_gym_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/palettes/00.pal b/data/tilesets/secondary/vermilion_gym_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_gym_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/palettes/01.pal b/data/tilesets/secondary/vermilion_gym_frlg/palettes/01.pal
new file mode 100644
index 000000000000..d99adaffffc0
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_gym_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+255 230 156
+222 213 230
+90 131 180
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/palettes/02.pal b/data/tilesets/secondary/vermilion_gym_frlg/palettes/02.pal
new file mode 100644
index 000000000000..cc3a9457d494
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_gym_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+139 197 139
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+246 238 164
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/palettes/03.pal b/data/tilesets/secondary/vermilion_gym_frlg/palettes/03.pal
new file mode 100644
index 000000000000..7ec794ae5408
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_gym_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+172 172 164
+255 255 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+164 164 172
+205 205 213
+238 238 246
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/palettes/04.pal b/data/tilesets/secondary/vermilion_gym_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_gym_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/palettes/05.pal b/data/tilesets/secondary/vermilion_gym_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_gym_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/palettes/06.pal b/data/tilesets/secondary/vermilion_gym_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_gym_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/palettes/07.pal b/data/tilesets/secondary/vermilion_gym_frlg/palettes/07.pal
new file mode 100644
index 000000000000..efd64bcc5892
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_gym_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+32 180 230
+172 255 230
+189 189 115
+238 222 164
+255 255 180
+205 82 65
+255 131 115
+189 180 106
+205 197 123
+222 222 148
+164 164 98
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/palettes/08.pal b/data/tilesets/secondary/vermilion_gym_frlg/palettes/08.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_gym_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/palettes/09.pal b/data/tilesets/secondary/vermilion_gym_frlg/palettes/09.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_gym_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/palettes/10.pal b/data/tilesets/secondary/vermilion_gym_frlg/palettes/10.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_gym_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/palettes/11.pal b/data/tilesets/secondary/vermilion_gym_frlg/palettes/11.pal
new file mode 100644
index 000000000000..9fa42f21fca8
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_gym_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+65 74 106
+90 90 115
+123 123 131
+148 164 180
+172 189 205
+205 222 238
+246 246 255
+255 0 255
+255 0 255
+205 82 65
+255 131 115
+230 172 57
+222 213 0
+222 180 65
+255 222 98
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/palettes/12.pal b/data/tilesets/secondary/vermilion_gym_frlg/palettes/12.pal
new file mode 100644
index 000000000000..5e2756cc990b
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_gym_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+131 131 131
+180 180 164
+255 255 255
+222 180 65
+238 197 82
+189 148 49
+246 238 164
+213 213 222
+156 156 205
+180 180 246
+82 106 156
+123 148 197
+189 197 255
+0 0 0
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/palettes/13.pal b/data/tilesets/secondary/vermilion_gym_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_gym_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/palettes/14.pal b/data/tilesets/secondary/vermilion_gym_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_gym_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/palettes/15.pal b/data/tilesets/secondary/vermilion_gym_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/vermilion_gym_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/vermilion_gym_frlg/tiles.png b/data/tilesets/secondary/vermilion_gym_frlg/tiles.png
new file mode 100644
index 000000000000..1baac08930ac
Binary files /dev/null and b/data/tilesets/secondary/vermilion_gym_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/viridian_city_frlg/metatile_attributes.bin b/data/tilesets/secondary/viridian_city_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..ee2d7d5b3eae
Binary files /dev/null and b/data/tilesets/secondary/viridian_city_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/viridian_city_frlg/metatiles.bin b/data/tilesets/secondary/viridian_city_frlg/metatiles.bin
new file mode 100644
index 000000000000..297673a4beec
Binary files /dev/null and b/data/tilesets/secondary/viridian_city_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/viridian_city_frlg/palettes/00.pal b/data/tilesets/secondary/viridian_city_frlg/palettes/00.pal
new file mode 100644
index 000000000000..2f3f97d6fdb7
--- /dev/null
+++ b/data/tilesets/secondary/viridian_city_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 90 16
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/viridian_city_frlg/palettes/01.pal b/data/tilesets/secondary/viridian_city_frlg/palettes/01.pal
new file mode 100644
index 000000000000..cf11238126ab
--- /dev/null
+++ b/data/tilesets/secondary/viridian_city_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 197 164
+189 148 139
+148 106 106
+115 65 74
+82 49 65
+115 205 164
diff --git a/data/tilesets/secondary/viridian_city_frlg/palettes/02.pal b/data/tilesets/secondary/viridian_city_frlg/palettes/02.pal
new file mode 100644
index 000000000000..372fb5d7c3b6
--- /dev/null
+++ b/data/tilesets/secondary/viridian_city_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/viridian_city_frlg/palettes/03.pal b/data/tilesets/secondary/viridian_city_frlg/palettes/03.pal
new file mode 100644
index 000000000000..5a5e602118b6
--- /dev/null
+++ b/data/tilesets/secondary/viridian_city_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/viridian_city_frlg/palettes/04.pal b/data/tilesets/secondary/viridian_city_frlg/palettes/04.pal
new file mode 100644
index 000000000000..229f9132c30b
--- /dev/null
+++ b/data/tilesets/secondary/viridian_city_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+222 230 255
+197 213 255
+164 197 238
+123 172 230
+90 148 197
+65 123 180
+90 164 205
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+32 98 139
+238 230 139
+222 197 139
+205 180 106
diff --git a/data/tilesets/secondary/viridian_city_frlg/palettes/05.pal b/data/tilesets/secondary/viridian_city_frlg/palettes/05.pal
new file mode 100644
index 000000000000..215dd1272875
--- /dev/null
+++ b/data/tilesets/secondary/viridian_city_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+213 197 131
+197 172 106
+172 148 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/viridian_city_frlg/palettes/06.pal b/data/tilesets/secondary/viridian_city_frlg/palettes/06.pal
new file mode 100644
index 000000000000..7e7862a192f8
--- /dev/null
+++ b/data/tilesets/secondary/viridian_city_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+222 230 255
+197 213 255
+164 197 238
+123 172 230
+41 82 164
+41 57 131
+74 123 197
+205 222 238
+172 189 205
+123 123 131
+90 90 115
+32 98 139
+238 230 139
+222 197 139
+205 180 106
diff --git a/data/tilesets/secondary/viridian_city_frlg/palettes/07.pal b/data/tilesets/secondary/viridian_city_frlg/palettes/07.pal
new file mode 100644
index 000000000000..93518605a9ef
--- /dev/null
+++ b/data/tilesets/secondary/viridian_city_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
diff --git a/data/tilesets/secondary/viridian_city_frlg/palettes/08.pal b/data/tilesets/secondary/viridian_city_frlg/palettes/08.pal
new file mode 100644
index 000000000000..219129ebabb2
--- /dev/null
+++ b/data/tilesets/secondary/viridian_city_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+65 65 82
+74 74 90
+123 123 131
+106 139 205
+115 197 238
+164 230 238
+131 115 57
+180 172 65
+222 205 65
+246 246 205
+213 205 205
+90 90 115
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/viridian_city_frlg/palettes/09.pal b/data/tilesets/secondary/viridian_city_frlg/palettes/09.pal
new file mode 100644
index 000000000000..0aa2b58dcfed
--- /dev/null
+++ b/data/tilesets/secondary/viridian_city_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 205 65
+222 172 65
+180 98 0
+213 213 139
+189 189 115
+148 148 82
+255 0 255
+115 205 164
diff --git a/data/tilesets/secondary/viridian_city_frlg/palettes/10.pal b/data/tilesets/secondary/viridian_city_frlg/palettes/10.pal
new file mode 100644
index 000000000000..4baf904aeaa0
--- /dev/null
+++ b/data/tilesets/secondary/viridian_city_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+65 65 82
+74 74 90
+123 123 131
+106 139 205
+172 213 230
+115 98 65
+148 123 65
+238 172 65
+230 213 74
+65 123 123
+65 156 131
+65 205 156
+74 123 65
+90 172 74
+123 213 98
+172 238 106
diff --git a/data/tilesets/secondary/viridian_city_frlg/palettes/11.pal b/data/tilesets/secondary/viridian_city_frlg/palettes/11.pal
new file mode 100644
index 000000000000..2e92b3cc3e58
--- /dev/null
+++ b/data/tilesets/secondary/viridian_city_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+246 246 205
+213 213 213
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+246 230 131
+222 205 65
+172 238 106
+123 213 98
+106 197 82
+90 172 74
+74 123 65
+115 205 164
diff --git a/data/tilesets/secondary/viridian_city_frlg/palettes/12.pal b/data/tilesets/secondary/viridian_city_frlg/palettes/12.pal
new file mode 100644
index 000000000000..70ed40322587
--- /dev/null
+++ b/data/tilesets/secondary/viridian_city_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+246 246 255
+213 230 197
+156 172 139
+123 123 131
+90 90 115
+65 74 106
+222 172 65
+180 98 0
+131 65 0
+205 205 123
+164 164 57
+115 189 246
+74 148 213
+49 115 180
+189 197 164
diff --git a/data/tilesets/secondary/viridian_city_frlg/palettes/13.pal b/data/tilesets/secondary/viridian_city_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/viridian_city_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/viridian_city_frlg/palettes/14.pal b/data/tilesets/secondary/viridian_city_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/viridian_city_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/viridian_city_frlg/palettes/15.pal b/data/tilesets/secondary/viridian_city_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/viridian_city_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/viridian_city_frlg/tiles.png b/data/tilesets/secondary/viridian_city_frlg/tiles.png
new file mode 100644
index 000000000000..39b80d8f9de1
Binary files /dev/null and b/data/tilesets/secondary/viridian_city_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/viridian_forest_frlg/metatile_attributes.bin b/data/tilesets/secondary/viridian_forest_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..990d6861cc95
Binary files /dev/null and b/data/tilesets/secondary/viridian_forest_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/viridian_forest_frlg/metatiles.bin b/data/tilesets/secondary/viridian_forest_frlg/metatiles.bin
new file mode 100644
index 000000000000..cd0bd5f53fb3
Binary files /dev/null and b/data/tilesets/secondary/viridian_forest_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/viridian_forest_frlg/palettes/00.pal b/data/tilesets/secondary/viridian_forest_frlg/palettes/00.pal
new file mode 100644
index 000000000000..7af5bb7d2167
--- /dev/null
+++ b/data/tilesets/secondary/viridian_forest_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 82 0
+115 98 98
+65 57 49
+255 0 255
+139 222 189
+255 197 115
+238 131 106
+197 49 65
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/viridian_forest_frlg/palettes/01.pal b/data/tilesets/secondary/viridian_forest_frlg/palettes/01.pal
new file mode 100644
index 000000000000..391d1e3d17b8
--- /dev/null
+++ b/data/tilesets/secondary/viridian_forest_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 230
+197 205 213
+172 189 205
+131 131 139
+65 49 65
+230 238 238
+90 189 139
+255 0 255
+238 213 197
+222 189 164
+189 148 139
+156 115 115
+123 82 82
+90 57 74
+115 205 164
diff --git a/data/tilesets/secondary/viridian_forest_frlg/palettes/02.pal b/data/tilesets/secondary/viridian_forest_frlg/palettes/02.pal
new file mode 100644
index 000000000000..6b019b884c96
--- /dev/null
+++ b/data/tilesets/secondary/viridian_forest_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+156 123 98
+197 172 139
+255 205 139
+238 148 115
+222 106 98
+205 82 74
+172 32 41
+74 131 197
diff --git a/data/tilesets/secondary/viridian_forest_frlg/palettes/03.pal b/data/tilesets/secondary/viridian_forest_frlg/palettes/03.pal
new file mode 100644
index 000000000000..9581f2cd8be5
--- /dev/null
+++ b/data/tilesets/secondary/viridian_forest_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+205 222 238
+172 189 205
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+230 222 131
+205 180 106
+156 213 255
+115 189 246
+98 164 222
+74 131 197
+49 98 164
+115 205 164
diff --git a/data/tilesets/secondary/viridian_forest_frlg/palettes/04.pal b/data/tilesets/secondary/viridian_forest_frlg/palettes/04.pal
new file mode 100644
index 000000000000..702db8a907c6
--- /dev/null
+++ b/data/tilesets/secondary/viridian_forest_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 222 172
+189 189 139
+156 156 106
+115 115 65
+255 255 213
+255 238 180
+238 222 156
+172 197 197
+148 189 189
+123 180 180
+230 246 255
+189 222 222
+172 213 222
+148 205 205
+255 255 255
diff --git a/data/tilesets/secondary/viridian_forest_frlg/palettes/05.pal b/data/tilesets/secondary/viridian_forest_frlg/palettes/05.pal
new file mode 100644
index 000000000000..3a2db72a7f32
--- /dev/null
+++ b/data/tilesets/secondary/viridian_forest_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+222 230 238
+172 189 205
+123 123 131
+90 90 115
+65 74 106
+230 222 164
+222 205 131
+205 180 106
+180 139 74
+238 230 139
+222 197 139
+213 189 106
+189 230 164
+172 222 164
+115 205 164
diff --git a/data/tilesets/secondary/viridian_forest_frlg/palettes/06.pal b/data/tilesets/secondary/viridian_forest_frlg/palettes/06.pal
new file mode 100644
index 000000000000..93518605a9ef
--- /dev/null
+++ b/data/tilesets/secondary/viridian_forest_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
+0 0 255
diff --git a/data/tilesets/secondary/viridian_forest_frlg/palettes/07.pal b/data/tilesets/secondary/viridian_forest_frlg/palettes/07.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/viridian_forest_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/viridian_forest_frlg/palettes/08.pal b/data/tilesets/secondary/viridian_forest_frlg/palettes/08.pal
new file mode 100644
index 000000000000..650a35cc894c
--- /dev/null
+++ b/data/tilesets/secondary/viridian_forest_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+189 255 139
+131 213 98
+57 148 49
+57 82 0
+57 115 24
+98 65 74
+131 106 82
+65 57 49
+255 0 255
+255 0 255
+255 0 255
+164 230 197
+115 205 164
+65 180 139
+24 164 106
diff --git a/data/tilesets/secondary/viridian_forest_frlg/palettes/09.pal b/data/tilesets/secondary/viridian_forest_frlg/palettes/09.pal
new file mode 100644
index 000000000000..df2d04037372
--- /dev/null
+++ b/data/tilesets/secondary/viridian_forest_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+213 230 189
+57 172 131
+222 230 246
+230 172 123
+106 205 164
diff --git a/data/tilesets/secondary/viridian_forest_frlg/palettes/10.pal b/data/tilesets/secondary/viridian_forest_frlg/palettes/10.pal
new file mode 100644
index 000000000000..7464374928c5
--- /dev/null
+++ b/data/tilesets/secondary/viridian_forest_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+246 246 255
+222 230 246
+189 197 222
+148 164 180
+123 123 131
+90 90 115
+65 74 106
+49 139 49
+57 82 0
+49 180 98
+238 230 164
+222 205 131
+213 180 106
+205 156 82
+106 205 164
diff --git a/data/tilesets/secondary/viridian_forest_frlg/palettes/11.pal b/data/tilesets/secondary/viridian_forest_frlg/palettes/11.pal
new file mode 100644
index 000000000000..410d5193a245
--- /dev/null
+++ b/data/tilesets/secondary/viridian_forest_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/viridian_forest_frlg/palettes/12.pal b/data/tilesets/secondary/viridian_forest_frlg/palettes/12.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/viridian_forest_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/viridian_forest_frlg/palettes/13.pal b/data/tilesets/secondary/viridian_forest_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/viridian_forest_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/viridian_forest_frlg/palettes/14.pal b/data/tilesets/secondary/viridian_forest_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/viridian_forest_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/viridian_forest_frlg/palettes/15.pal b/data/tilesets/secondary/viridian_forest_frlg/palettes/15.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/viridian_forest_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/viridian_forest_frlg/tiles.png b/data/tilesets/secondary/viridian_forest_frlg/tiles.png
new file mode 100644
index 000000000000..451eb8d5a0f8
Binary files /dev/null and b/data/tilesets/secondary/viridian_forest_frlg/tiles.png differ
diff --git a/data/tilesets/secondary/viridian_gym_frlg/metatile_attributes.bin b/data/tilesets/secondary/viridian_gym_frlg/metatile_attributes.bin
new file mode 100644
index 000000000000..d935f8be0099
Binary files /dev/null and b/data/tilesets/secondary/viridian_gym_frlg/metatile_attributes.bin differ
diff --git a/data/tilesets/secondary/viridian_gym_frlg/metatiles.bin b/data/tilesets/secondary/viridian_gym_frlg/metatiles.bin
new file mode 100644
index 000000000000..2980877c10aa
Binary files /dev/null and b/data/tilesets/secondary/viridian_gym_frlg/metatiles.bin differ
diff --git a/data/tilesets/secondary/viridian_gym_frlg/palettes/00.pal b/data/tilesets/secondary/viridian_gym_frlg/palettes/00.pal
new file mode 100644
index 000000000000..88e712348b43
--- /dev/null
+++ b/data/tilesets/secondary/viridian_gym_frlg/palettes/00.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+32 32 57
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+172 148 65
+213 197 106
+246 238 148
+82 148 197
+172 205 246
+222 230 230
+106 197 106
+164 255 180
+205 82 65
+255 131 115
+148 148 139
diff --git a/data/tilesets/secondary/viridian_gym_frlg/palettes/01.pal b/data/tilesets/secondary/viridian_gym_frlg/palettes/01.pal
new file mode 100644
index 000000000000..3a16a45c79a0
--- /dev/null
+++ b/data/tilesets/secondary/viridian_gym_frlg/palettes/01.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+123 123 123
+180 180 164
+255 255 255
+197 197 148
+213 213 172
+189 230 255
+156 189 213
+131 115 16
+164 148 49
+197 180 74
+222 205 106
+255 230 156
+222 213 230
+238 246 238
diff --git a/data/tilesets/secondary/viridian_gym_frlg/palettes/02.pal b/data/tilesets/secondary/viridian_gym_frlg/palettes/02.pal
new file mode 100644
index 000000000000..c8ee236d76d6
--- /dev/null
+++ b/data/tilesets/secondary/viridian_gym_frlg/palettes/02.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+131 131 139
+197 189 213
+255 255 255
+139 197 139
+230 213 123
+255 205 90
+255 238 197
+115 115 123
+230 238 246
+156 205 246
+98 156 238
+255 0 255
+230 139 98
+189 98 74
diff --git a/data/tilesets/secondary/viridian_gym_frlg/palettes/03.pal b/data/tilesets/secondary/viridian_gym_frlg/palettes/03.pal
new file mode 100644
index 000000000000..b17dbb054879
--- /dev/null
+++ b/data/tilesets/secondary/viridian_gym_frlg/palettes/03.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+82 82 106
+164 164 164
+180 189 189
+255 255 255
+238 246 238
+213 230 222
+197 205 197
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/viridian_gym_frlg/palettes/04.pal b/data/tilesets/secondary/viridian_gym_frlg/palettes/04.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/viridian_gym_frlg/palettes/04.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/viridian_gym_frlg/palettes/05.pal b/data/tilesets/secondary/viridian_gym_frlg/palettes/05.pal
new file mode 100644
index 000000000000..6f31ca776222
--- /dev/null
+++ b/data/tilesets/secondary/viridian_gym_frlg/palettes/05.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/viridian_gym_frlg/palettes/06.pal b/data/tilesets/secondary/viridian_gym_frlg/palettes/06.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/viridian_gym_frlg/palettes/06.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/viridian_gym_frlg/palettes/07.pal b/data/tilesets/secondary/viridian_gym_frlg/palettes/07.pal
new file mode 100644
index 000000000000..f55e52fe2e0c
--- /dev/null
+++ b/data/tilesets/secondary/viridian_gym_frlg/palettes/07.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+139 139 148
+197 189 213
+255 255 255
+205 197 106
+246 238 148
+255 255 222
+98 98 123
+238 238 238
+82 222 123
+131 255 164
+82 164 57
+255 0 255
+255 0 255
+172 106 74
diff --git a/data/tilesets/secondary/viridian_gym_frlg/palettes/08.pal b/data/tilesets/secondary/viridian_gym_frlg/palettes/08.pal
new file mode 100644
index 000000000000..3a7dbc274cec
--- /dev/null
+++ b/data/tilesets/secondary/viridian_gym_frlg/palettes/08.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+139 139 148
+197 189 213
+255 255 255
+222 222 238
+230 205 131
+189 197 82
+222 230 115
+238 230 148
+74 123 180
+131 131 139
+255 0 255
+255 0 255
+255 0 255
+255 0 255
diff --git a/data/tilesets/secondary/viridian_gym_frlg/palettes/09.pal b/data/tilesets/secondary/viridian_gym_frlg/palettes/09.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/viridian_gym_frlg/palettes/09.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/viridian_gym_frlg/palettes/10.pal b/data/tilesets/secondary/viridian_gym_frlg/palettes/10.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/viridian_gym_frlg/palettes/10.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/viridian_gym_frlg/palettes/11.pal b/data/tilesets/secondary/viridian_gym_frlg/palettes/11.pal
new file mode 100644
index 000000000000..6b0281bd6a48
--- /dev/null
+++ b/data/tilesets/secondary/viridian_gym_frlg/palettes/11.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/viridian_gym_frlg/palettes/12.pal b/data/tilesets/secondary/viridian_gym_frlg/palettes/12.pal
new file mode 100644
index 000000000000..d2c6cb0891ee
--- /dev/null
+++ b/data/tilesets/secondary/viridian_gym_frlg/palettes/12.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 0 255
+82 82 106
+123 123 123
+180 180 164
+230 230 230
+255 255 255
+180 115 82
+213 156 123
+123 123 123
+106 156 148
+139 189 180
+180 222 213
+255 0 255
+213 213 213
+230 189 123
+246 197 156
diff --git a/data/tilesets/secondary/viridian_gym_frlg/palettes/13.pal b/data/tilesets/secondary/viridian_gym_frlg/palettes/13.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/viridian_gym_frlg/palettes/13.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/viridian_gym_frlg/palettes/14.pal b/data/tilesets/secondary/viridian_gym_frlg/palettes/14.pal
new file mode 100644
index 000000000000..4b0812f09403
--- /dev/null
+++ b/data/tilesets/secondary/viridian_gym_frlg/palettes/14.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/tilesets/secondary/viridian_gym_frlg/palettes/15.pal b/data/tilesets/secondary/viridian_gym_frlg/palettes/15.pal
new file mode 100644
index 000000000000..92e7ed30983d
--- /dev/null
+++ b/data/tilesets/secondary/viridian_gym_frlg/palettes/15.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+90 0 255
+0 0 0
diff --git a/data/tilesets/secondary/viridian_gym_frlg/tiles.png b/data/tilesets/secondary/viridian_gym_frlg/tiles.png
new file mode 100644
index 000000000000..b53b94b965f4
Binary files /dev/null and b/data/tilesets/secondary/viridian_gym_frlg/tiles.png differ
diff --git a/dev_scripts/delete_frlg_maps.py b/dev_scripts/delete_frlg_maps.py
new file mode 100644
index 000000000000..743f14b7194d
--- /dev/null
+++ b/dev_scripts/delete_frlg_maps.py
@@ -0,0 +1,44 @@
+import json
+import os
+import re
+
+if not os.path.exists("Makefile"):
+ print("Please run this script from your root folder.")
+ quit()
+
+os.system("rm -R data/layouts/*_Frlg")
+print("rm -R data/layouts/*_Frlg")
+os.system("touch data/layouts/layouts.json")
+os.system("rm -R data/maps/*_Frlg")
+print("rm -R data/maps/*_Frlg")
+
+fileInput = "data/event_scripts.s"
+allLines = list()
+print("Deleting FRLG maps from data/event_scripts.s")
+with open(fileInput, 'r', encoding='UTF-8') as file:
+ while line:=file.readline():
+ if re.search(r"data/maps/\w+_Frlg", line):
+ pass
+ else:
+ allLines.append(line)
+
+with open(fileInput, 'w', encoding='UTF-8') as file:
+ for line in allLines:
+ file.write(line)
+
+fileInput = "data/maps/map_groups.json"
+print("Deleting FRLG maps from data/maps/map_groups.json")
+with open(fileInput, 'r') as f:
+ map_data = json.load(f)
+
+new_group_order = list()
+for group in map_data["group_order"]:
+ if re.search(r"\w+_Frlg", group):
+ map_data.pop(group, None)
+ else:
+ new_group_order.append(group)
+
+map_data["group_order"] = new_group_order;
+
+with open(fileInput, 'w') as f:
+ json.dump(map_data, f, indent=2)
diff --git a/docs/STYLEGUIDE.md b/docs/STYLEGUIDE.md
index 9535ce4fe36f..c320444de41a 100644
--- a/docs/STYLEGUIDE.md
+++ b/docs/STYLEGUIDE.md
@@ -168,10 +168,20 @@ int MyFunction(int bar)
}
```
-A chain of `if-else` statements in which any block is more than one line of
-code should use braces. If all blocks are single-line, then no braces are necessary.
+A chain of `if-else` statements in which any condition or block is more
+than one line of code should use braces. If all blocks *and* conditions
+are single-line, then no braces are necessary.
```c
+if (foo) // correct
+ return 1;
+
+if (foo
+ && bar) // correct
+{
+ return 1;
+}
+
if (foo) // correct
{
return 1;
@@ -182,6 +192,25 @@ else
return 0;
}
+if (foo) // correct
+{
+ return 1;
+}
+else if (foo
+ && bar)
+{
+ return 0;
+}
+
+if (foo) // incorrect
+{
+ return 1;
+}
+
+if (foo
+ && bar) // incorrect
+ return 1;
+
if (foo) // incorrect
return 1;
else
@@ -189,6 +218,26 @@ else
MyFunction();
return 0;
}
+
+if (foo) // incorrect
+ return 1;
+else if (foo
+ && bar)
+ return 0;
+```
+
+The exception is `assertf` which should always use braces if it has a recovery path, even for one line of conditions and one line of code.
+
+```c
+assertf(true); // correct
+
+assertf(true) // correct
+{
+ return NULL;
+}
+
+assertf(true) // incorrect
+ return NULL;
```
### Control Structures
diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md
index 97130374bf51..833429d262be 100644
--- a/docs/SUMMARY.md
+++ b/docs/SUMMARY.md
@@ -25,6 +25,7 @@
- [Tutorials]()
- [What are AI Flags?](tutorials/ai_flags.md)
- [How to add new AI Flags](tutorials/ai_logic.md)
+ - [What are Dynamic AI Functions?](tutorials/ai_dynamic_functions.md)
- [How to add new battle script commands/macros](tutorials/how_to_battle_script_command_macro.md)
- [How to add a new move](tutorials/how_to_new_move.md)
- [How to add a new trainer class]()
@@ -42,8 +43,15 @@
- [How to Apricorn Tree](tutorials/how_to_apricorn_tree.md)
- [How to Namebox](tutorials/how_to_namebox.md)
- [Vs. Seeker](tutorials/vs_seeker.md)
+ - [Teachable Learnsets Explanations](tutorials/teachable_learnsets.md)
+ - [Struct Pokemon Generation](tutorials/mon_generation.md)
+ - [How to use FRLG](tutorials/how_to_frlg.md)
+ - [How to delete vanilla maps](tutorials/how_to_delete_vanilla_maps.md)
- [Changelog](./CHANGELOG.md)
+ - [1.15.x]()
+ - [Version 1.15.0](changelogs/1.15.x/1.15.0.md)
- [1.14.x]()
+ - [Version 1.14.4](changelogs/1.14.x/1.14.4.md)
- [Version 1.14.3](changelogs/1.14.x/1.14.3.md)
- [Version 1.14.2](changelogs/1.14.x/1.14.2.md)
- [Version 1.14.1](changelogs/1.14.x/1.14.1.md)
diff --git a/docs/changelogs/1.14.x/1.14.4.md b/docs/changelogs/1.14.x/1.14.4.md
new file mode 100644
index 000000000000..8375d66a4dfb
--- /dev/null
+++ b/docs/changelogs/1.14.x/1.14.4.md
@@ -0,0 +1,120 @@
+```md
+## How to update
+- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`.
+- Once you have your remote set up, run the command `git pull RHH expansion/1.14.4
+`.
+```
+
+
+## 🧬 General 🧬
+### Changed
+* docs(dns): add nighttime palette user guide by @izrofid in [#9158](https://github.com/rh-hideout/pokeemerald-expansion/pull/9158)
+
+### Fixed
+* `sPlayerAvatarGfxToStateFlag`'s graphics id to `u16` by @estellarc in [#9101](https://github.com/rh-hideout/pokeemerald-expansion/pull/9101)
+* Fix migration script output from move anim documentation by @hedara90 in [#9140](https://github.com/rh-hideout/pokeemerald-expansion/pull/9140)
+* Show ability num instead of ability id whn picking ability with debug givemon by @FosterProgramming in [#9225](https://github.com/rh-hideout/pokeemerald-expansion/pull/9225)
+* Fix setting the wall clock crashing with OW_USE_FAKE_RTC set to FALSE and LTO=1 by @hedara90 in [#9299](https://github.com/rh-hideout/pokeemerald-expansion/pull/9299)
+
+## 🗺️ Overworld 🗺️
+### Fixed
+* NO_WHITEOUT now prevent forfeits from B_RUN_TRAINER_BATTLE by @pkmnsnfrn in [#9112](https://github.com/rh-hideout/pokeemerald-expansion/pull/9112)
+* Make sure grass effect palette ignore fog when time blended by @FosterProgramming in [#9235](https://github.com/rh-hideout/pokeemerald-expansion/pull/9235)
+* Fix batle dome streak thresholds by @FosterProgramming in [#9257](https://github.com/rh-hideout/pokeemerald-expansion/pull/9257)
+
+## 🐉 Pokémon 🐉
+### Fixed
+* Allow Power Construct Animation by @KnightGallade in [#9298](https://github.com/rh-hideout/pokeemerald-expansion/pull/9298)
+
+## ⚔️ Battle General ⚔️
+### Changed
+* Use direct config names instead of enum names by @AsparagusEduardo in [#8824](https://github.com/rh-hideout/pokeemerald-expansion/pull/8824)
+ - `GetConfig` and `WITH_CONFIG` now use the actual config define. Eg, `B_STURDY` instead of `CONFIG_STURDY`. However, in scripts, using `jumpifgenconfiglowerthan` in scripts would use the full name of `CONFIG_B_STURDY`.
+
+### Fixed
+* NO_WHITEOUT now prevent forfeits from B_RUN_TRAINER_BATTLE by @pkmnsnfrn in [#9112](https://github.com/rh-hideout/pokeemerald-expansion/pull/9112)
+* Fix Leppa Berry PP restore target under forced-consumption effects by @Cle-bit in [#9108](https://github.com/rh-hideout/pokeemerald-expansion/pull/9108)
+* Fix Instruct failing improperly when the instructed move isn't in the target's moveset by @Cle-bit in [#9113](https://github.com/rh-hideout/pokeemerald-expansion/pull/9113)
+* Fix Aroma Veil target-side check for ally-targeted limiting moves by @Cle-bit in [#9157](https://github.com/rh-hideout/pokeemerald-expansion/pull/9157)
+* Fix immunity ability status sync to avoid persisting Toxic counter when only volatile conditions are cured by @Cle-bit in [#9156](https://github.com/rh-hideout/pokeemerald-expansion/pull/9156)
+* Fix Instruct Missing Checks for Focus Punch, Beak Blast, Shell Trap, and Sky Drop by @Cle-bit in [#9152](https://github.com/rh-hideout/pokeemerald-expansion/pull/9152)
+* Fix Aqua Ring reuse failure check and add Aqua Ring/Ingrain tests by @Cle-bit in [#9174](https://github.com/rh-hideout/pokeemerald-expansion/pull/9174)
+* Fix Transform fail conditions with gen-specific checks by @Cle-bit in [#9070](https://github.com/rh-hideout/pokeemerald-expansion/pull/9070)
+* Fix Taunt to not block Me First in Gen 5+ by @Cle-bit in [#9069](https://github.com/rh-hideout/pokeemerald-expansion/pull/9069)
+* Fix Present heal miss-flag handling and enforce Telepathy blocking by @Cle-bit in [#9170](https://github.com/rh-hideout/pokeemerald-expansion/pull/9170)
+* Fix Commander cleanup after Volt Switch switch-in by @Cle-bit in [#9141](https://github.com/rh-hideout/pokeemerald-expansion/pull/9141)
+* Fixes Gulp Missile crash on targets that can be statused by @AlexOn1ine in [#9179](https://github.com/rh-hideout/pokeemerald-expansion/pull/9179)
+* Fix multi battle switch checks for Eject items by @Cle-bit in [#9190](https://github.com/rh-hideout/pokeemerald-expansion/pull/9190)
+* Fix incorrect player berry animation on opponent’s low-HP heal at battle start by @Cle-bit in [#9198](https://github.com/rh-hideout/pokeemerald-expansion/pull/9198)
+* Fixes Protective Pads preventing Poison Touch activation by @PhallenTree in [#9222](https://github.com/rh-hideout/pokeemerald-expansion/pull/9222)
+* Fix tera icon palettes by @grintoul1 in [#9208](https://github.com/rh-hideout/pokeemerald-expansion/pull/9208)
+* Running from trainer battles properly handles whiteouts by @pkmnsnfrn in [#9228](https://github.com/rh-hideout/pokeemerald-expansion/pull/9228)
+* Prevents `seteffectprimary` and `seteffectsecondary` from softlocking by @PhallenTree in [#9236](https://github.com/rh-hideout/pokeemerald-expansion/pull/9236)
+* Fixes Throat Chop timer being reset with every use of the move by @PhallenTree in [#9246](https://github.com/rh-hideout/pokeemerald-expansion/pull/9246)
+* Fix incorrect Adaptability interaction with non Tera type moves after Terastalization by @Cle-bit in [#9272](https://github.com/rh-hideout/pokeemerald-expansion/pull/9272)
+* Fix Ability Shield exemption when Neutralizing Gas ends by @Cle-bit in [#9273](https://github.com/rh-hideout/pokeemerald-expansion/pull/9273)
+* Fix Tickle to be blocked by Substitute in Gen 4+ by @Cle-bit in [#9288](https://github.com/rh-hideout/pokeemerald-expansion/pull/9288)
+* Fix Venom Drench bypassing Substitute by @Cle-bit in [#9289](https://github.com/rh-hideout/pokeemerald-expansion/pull/9289)
+* Fix Assist to account for temporarily changed moves in Gen 5+ by @Cle-bit in [#9287](https://github.com/rh-hideout/pokeemerald-expansion/pull/9287)
+* Fixes Minior not appearing in Meteor form when encountered in the wild by @luuma in [#9282](https://github.com/rh-hideout/pokeemerald-expansion/pull/9282)
+* Fix Eviolite to use original species after Transform by @Cle-bit in [#9285](https://github.com/rh-hideout/pokeemerald-expansion/pull/9285)
+* Fix Sucker Punch to succeed against Me First targets by @Cle-bit in [#9284](https://github.com/rh-hideout/pokeemerald-expansion/pull/9284)
+* Fixes plasma fists and several let's go and max move effects which should occur even when fainting a foe by @luuma in [#9262](https://github.com/rh-hideout/pokeemerald-expansion/pull/9262)
+* Fix Paradox stat selection under Wonder Room by @Cle-bit in [#9356](https://github.com/rh-hideout/pokeemerald-expansion/pull/9356)
+* Fix illegal switch due to hazards by @AlexOn1ine in [#9361](https://github.com/rh-hideout/pokeemerald-expansion/pull/9361)
+* Fix Trapping Persisting after KO in doubles by @ChrispyChris27 in [#9380](https://github.com/rh-hideout/pokeemerald-expansion/pull/9380)
+* Fix Baton Pass to clear Mean Look trapping on the target in Gen 5+ by @Cle-bit in [#9378](https://github.com/rh-hideout/pokeemerald-expansion/pull/9378)
+* Fix Meloetta not reverting forms on switch and remove deprecated Lunar Dance string ID by @Meister-anon in [#9379](https://github.com/rh-hideout/pokeemerald-expansion/pull/9379)
+* Corrects battler used in STRINGID_ATTACKERABILITYSTATRAISE by @grintoul1 in [#9383](https://github.com/rh-hideout/pokeemerald-expansion/pull/9383)
+
+## 🤹 Moves 🤹
+### Changed
+* fix(bttl-anim): remove unused battle selector to silence warning by @izrofid in [#9218](https://github.com/rh-hideout/pokeemerald-expansion/pull/9218)
+
+### Fixed
+* correct move flags/data by @amiosi in [#8858](https://github.com/rh-hideout/pokeemerald-expansion/pull/8858)
+
+## 🧶 Items 🧶
+### Fixed
+* Fix Rare Candy reviving fainted level 100 Pokémon by @Cle-bit in [#9117](https://github.com/rh-hideout/pokeemerald-expansion/pull/9117)
+
+## 🤖 Battle AI 🤖
+### Fixed
+* Add missing weather checks for AI sandstorm/hail damage helpers by @Cle-bit in [#9155](https://github.com/rh-hideout/pokeemerald-expansion/pull/9155)
+* Fix AI semi-invulnerable move handling and simplify switching logic by @Cle-bit in [#9180](https://github.com/rh-hideout/pokeemerald-expansion/pull/9180)
+* Fix AI Sheer Force checks to allow Order Up’s Commander stat boost by @Cle-bit in [#9250](https://github.com/rh-hideout/pokeemerald-expansion/pull/9250)
+
+## 🧹 Other Cleanup 🧹
+* fix(bttl-anim): remove unused battle selector to silence warning by @izrofid in [#9218](https://github.com/rh-hideout/pokeemerald-expansion/pull/9218)
+
+## 🧪 Test Runner 🧪
+### Changed
+* Adds Parabolic Charge spread damage healing test by @AlexOn1ine in [#9094](https://github.com/rh-hideout/pokeemerald-expansion/pull/9094)
+* Use direct config names instead of enum names by @AsparagusEduardo in [#8824](https://github.com/rh-hideout/pokeemerald-expansion/pull/8824)
+ - `GetConfig` and `WITH_CONFIG` now use the actual config define. Eg, `B_STURDY` instead of `CONFIG_STURDY`. However, in scripts, using `jumpifgenconfiglowerthan` in scripts would use the full name of `CONFIG_B_STURDY`.
+* Added Weight battle tests by @AsparagusEduardo in [#9202](https://github.com/rh-hideout/pokeemerald-expansion/pull/9202)
+* Add tests for Hadron Engine and Psyblade by @Cle-bit in [#9314](https://github.com/rh-hideout/pokeemerald-expansion/pull/9314)
+* Add tests for Future Sight interaction with Ally Switch by @Cle-bit in [#9300](https://github.com/rh-hideout/pokeemerald-expansion/pull/9300)
+
+### Fixed
+* Fix Aqua Ring reuse failure check and add Aqua Ring/Ingrain tests by @Cle-bit in [#9174](https://github.com/rh-hideout/pokeemerald-expansion/pull/9174)
+* Fixes Protective Pads preventing Poison Touch activation by @PhallenTree in [#9222](https://github.com/rh-hideout/pokeemerald-expansion/pull/9222)
+* Fix tera icon palettes by @grintoul1 in [#9208](https://github.com/rh-hideout/pokeemerald-expansion/pull/9208)
+* Fix Meloetta not reverting forms on switch and remove deprecated Lunar Dance string ID by @Meister-anon in [#9379](https://github.com/rh-hideout/pokeemerald-expansion/pull/9379)
+
+## 📚 Documentation 📚
+* docs(dns): add nighttime palette user guide by @izrofid in [#9158](https://github.com/rh-hideout/pokeemerald-expansion/pull/9158)
+
+## 👻 Sprites 👻
+### Fixed
+* Fix tera icon palettes by @grintoul1 in [#9208](https://github.com/rh-hideout/pokeemerald-expansion/pull/9208)
+
+## New Contributors
+* @luuma made their first contribution in [#9282](https://github.com/rh-hideout/pokeemerald-expansion/pull/9282)
+* @KnightGallade made their first contribution in [#9298](https://github.com/rh-hideout/pokeemerald-expansion/pull/9298)
+
+**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.14.3...expansion/1.14.4
+
+
+
+
diff --git a/docs/changelogs/1.15.x/1.15.0.md b/docs/changelogs/1.15.x/1.15.0.md
new file mode 100644
index 000000000000..20f76fc5bb2a
--- /dev/null
+++ b/docs/changelogs/1.15.x/1.15.0.md
@@ -0,0 +1,719 @@
+```md
+## How to update
+- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`.
+- Once you have your remote set up, run the command `git pull RHH expansion/1.15.0
+`.
+```
+
+## 🌋 *REFACTORS* 🌋
+📜 = Uses a migration script.
+* Switch-in Events Refactor by @AlexOn1ine in [#8128](https://github.com/rh-hideout/pokeemerald-expansion/pull/8128)
+* Updated Focus Punch failure check and moved to attackcanceler by @PhallenTree in [#8360](https://github.com/rh-hideout/pokeemerald-expansion/pull/8360)
+* Move crit calculation into the damage calc by @AlexOn1ine in [#8365](https://github.com/rh-hideout/pokeemerald-expansion/pull/8365)
+* Trainerbattle Type Differentiation by @u8-Salem in [#6424](https://github.com/rh-hideout/pokeemerald-expansion/pull/6424)
+ - for multi battles: `partnerId` is no longer set in `multi_*` macros but instead by `setmultitrainerbattle`
+* Make Glaive Rush a MOVE_EFFECT_GLAIVE_RUSH by @AlexOn1ine in [#8351](https://github.com/rh-hideout/pokeemerald-expansion/pull/8351)
+* Refactor Fury Cutter and Rollout by @AlexOn1ine in [#8375](https://github.com/rh-hideout/pokeemerald-expansion/pull/8375)
+* Refactor Multi Hit moves to use a flag instead of effect by @AlexOn1ine in [#8379](https://github.com/rh-hideout/pokeemerald-expansion/pull/8379)
+* Decouples BattlerHasAi from battle positions to instead be determined by battler Battle Controller by @grintoul1 in [#8247](https://github.com/rh-hideout/pokeemerald-expansion/pull/8247)
+* Allow Starting Statuses beyond 15 by @AsparagusEduardo in [#8485](https://github.com/rh-hideout/pokeemerald-expansion/pull/8485)
+ - You may now define if a Trainer's starting status is temporary or not, by adding "Temporary" at the end (eg. "Electric Terrain Temporary")
+ - `B_VAR_STARTING_STATUS` and `B_VAR_STARTING_STATUS_TIMER` have been replaced with `setstartingstatus` and the timer functionality has been removed in favor of defining temporary and permanent versions of each starting status. Eg.
+ ```
+ setvar B_VAR_STARTING_STATUS STARTING_STATUS_PSYCHIC_TERRAIN | STARTING_STATUS_RAINBOW_OPPONENT
+ setvar B_VAR_STARTING_STATUS_TIMER 5
+ ```
+ has been replaced with
+ ```
+ setstartingstatus STATUS_PSYCHIC_TERRAIN_TEMPORARY
+ setstartingstatus STARTING_STATUS_RAINBOW_OPPONENT
+ ```
+ They can be stacked on top of each other.
+* AI `ShouldPivot` Overhaul by @Pawkkie in [#8486](https://github.com/rh-hideout/pokeemerald-expansion/pull/8486)
+* Move disable struct members to battle mon volatiles by @AlexOn1ine in [#8540](https://github.com/rh-hideout/pokeemerald-expansion/pull/8540)
+* Refactor switchin candidates to use `battler` by @Pawkkie in [#8546](https://github.com/rh-hideout/pokeemerald-expansion/pull/8546)
+* Switchin calcs leverage saving / restoring `AiLogicData` by @Pawkkie in [#8556](https://github.com/rh-hideout/pokeemerald-expansion/pull/8556)
+* Move target type refactor by @AlexOn1ine in [#8513](https://github.com/rh-hideout/pokeemerald-expansion/pull/8513)
+* Counter/Mirror Coat/Metal Burst refactor by @PhallenTree in [#8604](https://github.com/rh-hideout/pokeemerald-expansion/pull/8604)
+ - `EFFECT_COUNTER`, `EFFECT_MIRROR_COAT` and `EFFECT_METAL_BURST` have been combined into `EFFECT_REFLECT_DAMAGE`
+ - These now use `BattleScript_EffectHit` and their damage is calculated in `DoFixedDamageMoveCalc`
+* Refactor Endeavor to use DoFixedDamageMoveCalc func by @AlexOn1ine in [#8618](https://github.com/rh-hideout/pokeemerald-expansion/pull/8618)
+* Move Explosion to attackcanceler and Terrain Boost effect by @AlexOn1ine in [#8612](https://github.com/rh-hideout/pokeemerald-expansion/pull/8612)
+* Refactoring the way teachable learnsets are generated by @FosterProgramming in [#8027](https://github.com/rh-hideout/pokeemerald-expansion/pull/8027)
+ - `src/data/pokemon/teachable_learnsets.h` has been removed from the repo
+ - If your config P_LEARNSET_HELPER_TEACHABLE is set to false, open your `.gitignore` file and remove the `src/data/pokemon/teachable_learnsets.h` line, commit your `.gitignore` and `src/data/pokemon/teachable_learnsets.h` files then continue like before.
+ - If your config P_LEARNSET_HELPER_TEACHABLE is set to true, it will be created again when you use `make`. Documentation about the way the file is generated can be found in `docs/tutorials/teachable_learnsets.md`. Also the file `src/data/pokemon/all_learnables.json` is now replacing the porymoves files as the proper way to edit teachables sets. To your old teachables sets, run `make clean-teachables` and the file will be recreated based on the porymoves files when you run `make`
+* Add Move End Faint Block by @PhallenTree in [#8673](https://github.com/rh-hideout/pokeemerald-expansion/pull/8673)
+* Further weather consolidation by @AlexOn1ine in [#8161](https://github.com/rh-hideout/pokeemerald-expansion/pull/8161)
+* enum TrainerPicID to replace defines for TRAINER_PIC_XXXX and TRAINER_BACK_PIC_XXXX by @grintoul1 in [#8789](https://github.com/rh-hideout/pokeemerald-expansion/pull/8789)
+ - Requires a `make clean` prior to make so that all trainer and battle partner front and back pic defines are refreshed by trainerproc
+* Refactor mon generation by @FosterProgramming in [#8204](https://github.com/rh-hideout/pokeemerald-expansion/pull/8204)
+ - Reworked the functions that generate Pokemon, it should not affect most users but please read `docs/tutorials/mon_generation.md` if you want to know more or have difficulties adapting custom code that used to rely on the changed functions
+ - Synchronize and Cute Charm update: both of these overworld abilities now better match their cartridge behavior in regards to which pokemon are affected by the effect (use the `OW_SYNCHRONIZE_NATURE` config to choose the version) and can be more easily customized by changing the data in `src/ow_abilities.c`
+ - OW_SYNCHRONIZE_NATURE now defaults to GEN_LATEST(gen 9) where Synchronize has no overworld effect
+* Consolidate battle anim particles by @fdeblasio in [#8797](https://github.com/rh-hideout/pokeemerald-expansion/pull/8797)
+* Refactor move relearner and small #8027 follow-up by @PCG06 in [#8675](https://github.com/rh-hideout/pokeemerald-expansion/pull/8675)
+* Refactor protect failure to match vanilla by @AlexOn1ine in [#8832](https://github.com/rh-hideout/pokeemerald-expansion/pull/8832)
+* Capture odds refactor and new catch rate modifiers by @FosterProgramming in [#8682](https://github.com/rh-hideout/pokeemerald-expansion/pull/8682)
+ - Added new configs for catch rate modifiers: B_INCAPACITATED_CATCH_BONUS, B_LOW_LEVEL_CATCH_BONUS, B_MISSING_BADGE_CATCH_MALUS
+ - B_MISSING_BADGE_CATCH_MALUS default config may reduce catch rate in your hack
+ - Add new CATCHING_CHANCE macro to the test engine that allow to record the catching chance to more easily test capture parameters
+* Add setpreattackadditionaleffect and use it for brick break / spectra… by @AlexOn1ine in [#8719](https://github.com/rh-hideout/pokeemerald-expansion/pull/8719)
+* Refactor move target failure by @AlexOn1ine in [#8696](https://github.com/rh-hideout/pokeemerald-expansion/pull/8696)
+* Refactor multi test system trainer party allocation and adds enum BattleTrainer by @grintoul1 in [#8908](https://github.com/rh-hideout/pokeemerald-expansion/pull/8908)
+* Cleanup healthbox printing by @hedara90 in [#8958](https://github.com/rh-hideout/pokeemerald-expansion/pull/8958)
+* Refactor Lilycove quiz and favor ladies by @fdeblasio in [#8929](https://github.com/rh-hideout/pokeemerald-expansion/pull/8929)
+* Move adjustdamage to the damage calc by @AlexOn1ine in [#8948](https://github.com/rh-hideout/pokeemerald-expansion/pull/8948)
+* Refactor OHKO Moves by @AlexOn1ine in [#8916](https://github.com/rh-hideout/pokeemerald-expansion/pull/8916)
+* Refactor chooseboxmon by @FosterProgramming in [#8491](https://github.com/rh-hideout/pokeemerald-expansion/pull/8491)
+ - WARNING: In Game trade have been modified and previous script might be broken, we recommend replacing you trade script by using the new macro
+ - Add a new macro for ingame trade: `ingame_trade tradeId:req wantTradeMsg:req, declineTradeJump:req, wrongMonJump:req, tradeCompleteMsg:req`
+ - Add a new macro for move tutor: `move_tutor moveId:req, wantTeachingMsg:req, monSelectMsg:req, declinedJmp:req, taughtJmp:req, flagId=0`. flagId is optional, if it is present the move tutor can only be used once (it checks if the flag is unset and sets the flag after teaching the move). If it is not present, the move tutor can be used as many times as you want
+ - Adds a new config `OW_CHOOSE_FROM_PC_AND_PARTY` inc `cofig/overworld.h` to select if you want npc (daycare, move tutors, trade npc, ...) to let you pick a pokemon from the storage system (pc boxes+party) or just the party (defaults to TRUE allowing to choose mon from pc boxes
+ - Adds a filter to show which mons are valid when picking a mon from PC
+* Even more battle environment updates by @fdeblasio in [#8835](https://github.com/rh-hideout/pokeemerald-expansion/pull/8835)
+* Adds CancelerSetTargets and improves Pre Attack Effects by @PhallenTree in [#9178](https://github.com/rh-hideout/pokeemerald-expansion/pull/9178)
+ - Setting targets for moves has been refactored:
+ - `gBattleStruct->battlerState[gBattlerAttacker]->targetsDone[target]` is set to `TRUE` if `target` isn't targeted by the move;
+ - Moves now properly check failures against all targets when applicable. If it fails for all targets, it plays the same battle script as before; if it fails for some but not all targets, it will say "It doesn't affect target!", similar to Synchronoise.
+ - Additional effects that occur before the move animation (like Brick Break, Spectral Thief), can now be applied to multiple targets and can have a chance to activate.
+* Sky Drop Fixes/Refactor by @AlexOn1ine in [#9185](https://github.com/rh-hideout/pokeemerald-expansion/pull/9185)
+
+## 🧬 General 🧬
+### Added
+* New debug menu actions: Give Egg and Set KO by @FosterProgramming in [#8330](https://github.com/rh-hideout/pokeemerald-expansion/pull/8330)
+ - New debug menu action Give -> Give Egg let you select a species and add an egg of that species to your party (even if that species is not supposed to have eggs)
+ - New debug menu action Party -> Inflict Status -> KO let you pick a pokemon in your party and sets its hp to 0
+* 📜 Enable 3-color text by @Gudf in [#8191](https://github.com/rh-hideout/pokeemerald-expansion/pull/8191)
+* Add trainers submenu for debug menu by @FosterProgramming in [#8399](https://github.com/rh-hideout/pokeemerald-expansion/pull/8399)
+* 📜 Sprite text printing improvements by @hedara90 in [#8345](https://github.com/rh-hideout/pokeemerald-expansion/pull/8345)
+ - Sprite printing must be set up with `SetupSpritesForTextPrinting(arrayOfSpriteIds, arrayOfSourceSprites, numSpritesX, numSpritesY)`
+ - Has migration script to handle changes to `IsTextPrinterActive`
+* Adding move animation backgrounds to the Pokemon Sprite Visualizer by @fdeblasio in [#8764](https://github.com/rh-hideout/pokeemerald-expansion/pull/8764)
+* Add config flag to skip save overwrite confirmation by @spindrift64 in [#8659](https://github.com/rh-hideout/pokeemerald-expansion/pull/8659)
+* Allow renaming and move relearning from box summary screen by @kittenchilly in [#8854](https://github.com/rh-hideout/pokeemerald-expansion/pull/8854)
+* Change randomweightedarray to use u16 weights instead of u8 by @FosterProgramming in [#8934](https://github.com/rh-hideout/pokeemerald-expansion/pull/8934)
+* Ease vanilla maps deletions by @FosterProgramming in [#9199](https://github.com/rh-hideout/pokeemerald-expansion/pull/9199)
+ - Added a new script that deletes all FRLG maps, just run `python dev_scripts/delete_frlg_maps.py`. It should take care of all the map constants but you will need to fix mention the to fuschia city entrance in the safari_zone.inc script. This does not save ROM space and is only useful to clean your repo
+
+### Changed
+* Add FRLG (Part 1) by @cawtds in [#7572](https://github.com/rh-hideout/pokeemerald-expansion/pull/7572)
+* Support NULLs in SpriteTemplate by @mrgriffin in [#8292](https://github.com/rh-hideout/pokeemerald-expansion/pull/8292)
+* Adjusted battle string IDs to match the order in `gBattleStringsTable` by @AsparagusEduardo in [#8446](https://github.com/rh-hideout/pokeemerald-expansion/pull/8446)
+* Allow Starting Statuses beyond 15 by @AsparagusEduardo in [#8485](https://github.com/rh-hideout/pokeemerald-expansion/pull/8485)
+ - You may now define if a Trainer's starting status is temporary or not, by adding "Temporary" at the end (eg. "Electric Terrain Temporary")
+ - `B_VAR_STARTING_STATUS` and `B_VAR_STARTING_STATUS_TIMER` have been replaced with `setstartingstatus` and the timer functionality has been removed in favor of defining temporary and permanent versions of each starting status. Eg.
+ ```
+ setvar B_VAR_STARTING_STATUS STARTING_STATUS_PSYCHIC_TERRAIN | STARTING_STATUS_RAINBOW_OPPONENT
+ setvar B_VAR_STARTING_STATUS_TIMER 5
+ ```
+ has been replaced with
+ ```
+ setstartingstatus STATUS_PSYCHIC_TERRAIN_TEMPORARY
+ setstartingstatus STARTING_STATUS_RAINBOW_OPPONENT
+ ```
+ They can be stacked on top of each other.
+* Remove vestigial handledeoxys code by @FosterProgramming in [#8509](https://github.com/rh-hideout/pokeemerald-expansion/pull/8509)
+* assertf: Formatted asserts by @mrgriffin in [#8196](https://github.com/rh-hideout/pokeemerald-expansion/pull/8196)
+* Battle Factory move style automation by @AsparagusEduardo in [#8368](https://github.com/rh-hideout/pokeemerald-expansion/pull/8368)
+* errorf by @mrgriffin in [#8580](https://github.com/rh-hideout/pokeemerald-expansion/pull/8580)
+* Improve make_scr_cmd_constants.py by @cawtds in [#8347](https://github.com/rh-hideout/pokeemerald-expansion/pull/8347)
+* Centralize message box and standard frame drawing by @estellarc in [#8190](https://github.com/rh-hideout/pokeemerald-expansion/pull/8190)
+* Refactoring the way teachable learnsets are generated by @FosterProgramming in [#8027](https://github.com/rh-hideout/pokeemerald-expansion/pull/8027)
+ - `src/data/pokemon/teachable_learnsets.h` has been removed from the repo
+ - If your config P_LEARNSET_HELPER_TEACHABLE is set to false, open your `.gitignore` file and remove the `src/data/pokemon/teachable_learnsets.h` line, commit your `.gitignore` and `src/data/pokemon/teachable_learnsets.h` files then continue like before.
+ - If your config P_LEARNSET_HELPER_TEACHABLE is set to true, it will be created again when you use `make`. Documentation about the way the file is generated can be found in `docs/tutorials/teachable_learnsets.md`. Also the file `src/data/pokemon/all_learnables.json` is now replacing the porymoves files as the proper way to edit teachables sets. To your old teachables sets, run `make clean-teachables` and the file will be recreated based on the porymoves files when you run `make`
+* Fix `update_text_color_defs.py` on Python < 3.12 by @Gudf in [#8549](https://github.com/rh-hideout/pokeemerald-expansion/pull/8549)
+* Clean up GenConfigTimeOfDay by @AlexOn1ine in [#8710](https://github.com/rh-hideout/pokeemerald-expansion/pull/8710)
+* Added a include/config option to change mega cry sounds by @lordraindance2 in [#7558](https://github.com/rh-hideout/pokeemerald-expansion/pull/7558)
+* Migrated some strings out of strings.c/strings.h by @fdeblasio in [#8270](https://github.com/rh-hideout/pokeemerald-expansion/pull/8270)
+* DMA micro optimization by @estellarc in [#8410](https://github.com/rh-hideout/pokeemerald-expansion/pull/8410)
+* Add a cleaner way to reset all_learnables.json by @FosterProgramming in [#8747](https://github.com/rh-hideout/pokeemerald-expansion/pull/8747)
+* Easy chat data refactor by @fdeblasio in [#8271](https://github.com/rh-hideout/pokeemerald-expansion/pull/8271)
+* enum TrainerPicID to replace defines for TRAINER_PIC_XXXX and TRAINER_BACK_PIC_XXXX by @grintoul1 in [#8789](https://github.com/rh-hideout/pokeemerald-expansion/pull/8789)
+ - Requires a `make clean` prior to make so that all trainer and battle partner front and back pic defines are refreshed by trainerproc
+* Small code deduplication in battle_ai_switch.c by @cawtds in [#8790](https://github.com/rh-hideout/pokeemerald-expansion/pull/8790)
+* Standardized use of macros in LoadPalette by @fdeblasio in [#8822](https://github.com/rh-hideout/pokeemerald-expansion/pull/8822)
+* cleanup GetMon Null Data Instances by @Meister-anon in [#8867](https://github.com/rh-hideout/pokeemerald-expansion/pull/8867)
+* Sprite Visualizer font update by @fdeblasio in [#8883](https://github.com/rh-hideout/pokeemerald-expansion/pull/8883)
+* Decoupled trainer gender from encounter music by @fdeblasio in [#8892](https://github.com/rh-hideout/pokeemerald-expansion/pull/8892)
+* More contest code consolidation by @fdeblasio in [#8889](https://github.com/rh-hideout/pokeemerald-expansion/pull/8889)
+* Refactor pokerus and add configs by @FosterProgramming in [#7731](https://github.com/rh-hideout/pokeemerald-expansion/pull/7731)
+* Standardized item indentation by @fdeblasio in [#8913](https://github.com/rh-hideout/pokeemerald-expansion/pull/8913)
+* Change HP bar color calculation from pixel-width to actual values by @Kasenn in [#8694](https://github.com/rh-hideout/pokeemerald-expansion/pull/8694)
+* Add sprite fill function taking a sprite as argument by @hedara90 in [#8940](https://github.com/rh-hideout/pokeemerald-expansion/pull/8940)
+* Cleanup healthbox printing by @hedara90 in [#8958](https://github.com/rh-hideout/pokeemerald-expansion/pull/8958)
+* Refactor Lilycove quiz and favor ladies by @fdeblasio in [#8929](https://github.com/rh-hideout/pokeemerald-expansion/pull/8929)
+* Poke Ball consolidation by @fdeblasio in [#8962](https://github.com/rh-hideout/pokeemerald-expansion/pull/8962)
+* More type checking across the repo by @Bassoonian in [#8988](https://github.com/rh-hideout/pokeemerald-expansion/pull/8988)
+* Add FRLG by @cawtds in [#7423](https://github.com/rh-hideout/pokeemerald-expansion/pull/7423)
+ - use `make firered` or `make leafgreen` to build FRLG
+ - FRLG is playable, but missing some features
+ - Fame Checker, Map Preview an graphical elements aren't added yet. Teachy TV, TM Case and Berry Pouch not in scope.
+* documentation on how to use frlg by @cawtds in [#9045](https://github.com/rh-hideout/pokeemerald-expansion/pull/9045)
+* Fix another FRLG style oversight by @Bassoonian in [#9046](https://github.com/rh-hideout/pokeemerald-expansion/pull/9046)
+* Fix FRLG comment oversight in ``script_cmd_table.inc`` by @Bassoonian in [#9043](https://github.com/rh-hideout/pokeemerald-expansion/pull/9043)
+* Remove aif2pcm by @hedara90 in [#9076](https://github.com/rh-hideout/pokeemerald-expansion/pull/9076)
+* Rename ow_synchronize.c by @FosterProgramming in [#9097](https://github.com/rh-hideout/pokeemerald-expansion/pull/9097)
+* Delete irrelevant battle type comments for expansion by @AlexOn1ine in [#9082](https://github.com/rh-hideout/pokeemerald-expansion/pull/9082)
+* Move SubtractClamped to util.c from battle_util.c by @AlexOn1ine in [#9120](https://github.com/rh-hideout/pokeemerald-expansion/pull/9120)
+* docs(dns): add nighttime palette user guide by @izrofid in [#9158](https://github.com/rh-hideout/pokeemerald-expansion/pull/9158)
+* Clean up ``reshow_battle_screen.c`` by @Bassoonian in [#9352](https://github.com/rh-hideout/pokeemerald-expansion/pull/9352)
+* Cleans up unused String IDs and EWRAM variables by @Bassoonian in [#9363](https://github.com/rh-hideout/pokeemerald-expansion/pull/9363)
+* Fix spacing for conditions by @Bassoonian in [#9369](https://github.com/rh-hideout/pokeemerald-expansion/pull/9369)
+* Regularise switch indentation by @Bassoonian in [#9368](https://github.com/rh-hideout/pokeemerald-expansion/pull/9368)
+* Updated Trainer Tower formatting by @fdeblasio in [#9209](https://github.com/rh-hideout/pokeemerald-expansion/pull/9209)
+* Fix space indentation in .s and .inc files by @Bassoonian in [#9371](https://github.com/rh-hideout/pokeemerald-expansion/pull/9371)
+
+### Fixed
+* Fix balls used for battle factory mons by @FosterProgramming in [#8480](https://github.com/rh-hideout/pokeemerald-expansion/pull/8480)
+ - Frontier mons can now be assigned to originate from a strange ball
+* Fix save text colors arg order by @Gudf in [#8514](https://github.com/rh-hideout/pokeemerald-expansion/pull/8514)
+* Fixed Wally Tutorial and added option to check from Debug Menu by @AsparagusEduardo in [#8502](https://github.com/rh-hideout/pokeemerald-expansion/pull/8502)
+* Assertf improvements and fixes by @hedara90 in [#8570](https://github.com/rh-hideout/pokeemerald-expansion/pull/8570)
+* 3-color text fixes by @Gudf in [#8672](https://github.com/rh-hideout/pokeemerald-expansion/pull/8672)
+* Fix Debug Menu accessing disabled species by @hedara90 in [#8683](https://github.com/rh-hideout/pokeemerald-expansion/pull/8683)
+* Stop early if species is disabled in HGSS dex by @hedara90 in [#8687](https://github.com/rh-hideout/pokeemerald-expansion/pull/8687)
+* Make Porygon not load-bearing by @hedara90 in [#8688](https://github.com/rh-hideout/pokeemerald-expansion/pull/8688)
+ - `SPECIES_NONE` now uses the cry of Porygon, and said cry is not disabled with `P_FAMILY_PORYGON`
+* Remove unused moveEffect variable in MoveEnd_MultihitMove to fix upcoming by @grintoul1 in [#8715](https://github.com/rh-hideout/pokeemerald-expansion/pull/8715)
+* Replaced undeclared variable in Cmd_tryswapitems; commented out Eject Button test conflicting with another Commander test by @grintoul1 in [#8805](https://github.com/rh-hideout/pokeemerald-expansion/pull/8805)
+* Fix struct TextPrinterTemplate on old GCC versions by @hedara90 in [#8825](https://github.com/rh-hideout/pokeemerald-expansion/pull/8825)
+* Fix missing deafult moves for trainer parties by @FosterProgramming in [#8829](https://github.com/rh-hideout/pokeemerald-expansion/pull/8829)
+* Rework teachable learnset makefile by @FosterProgramming in [#8803](https://github.com/rh-hideout/pokeemerald-expansion/pull/8803)
+* Fix auto-signpost textprinter by @hedara90 in [#8833](https://github.com/rh-hideout/pokeemerald-expansion/pull/8833)
+* Fix in-game trade not having moves (missing default moves again) by @FosterProgramming in [#8851](https://github.com/rh-hideout/pokeemerald-expansion/pull/8851)
+* Clear out text printer when closing dialogue windows by @hedara90 in [#8848](https://github.com/rh-hideout/pokeemerald-expansion/pull/8848)
+* Fix trailing commas in define by @FosterProgramming in [#8863](https://github.com/rh-hideout/pokeemerald-expansion/pull/8863)
+* Reduce area filled when printing HP by @hedara90 in [#8866](https://github.com/rh-hideout/pokeemerald-expansion/pull/8866)
+* Fix ability name printing for trainer mon ability assertf by @hedara90 in [#8877](https://github.com/rh-hideout/pokeemerald-expansion/pull/8877)
+* Add missing sprite fill functions by @hedara90 in [#8975](https://github.com/rh-hideout/pokeemerald-expansion/pull/8975)
+* fix: add `__attribute__((packed))` to `enum Direction` by @khbsd in [#8994](https://github.com/rh-hideout/pokeemerald-expansion/pull/8994)
+* Fix gender selecting task not waiting for input by @FosterProgramming in [#9001](https://github.com/rh-hideout/pokeemerald-expansion/pull/9001)
+* `sPlayerAvatarGfxToStateFlag`'s graphics id to `u16` by @estellarc in [#9101](https://github.com/rh-hideout/pokeemerald-expansion/pull/9101)
+* Fix statement after label issue in chooseboxmon by @FosterProgramming in [#9093](https://github.com/rh-hideout/pokeemerald-expansion/pull/9093)
+* Fix instant text option freezing the game by @hedara90 in [#9132](https://github.com/rh-hideout/pokeemerald-expansion/pull/9132)
+* Squirtle is not a fire type by @Pawkkie in [#9145](https://github.com/rh-hideout/pokeemerald-expansion/pull/9145)
+* Fix migration script output from move anim documentation by @hedara90 in [#9140](https://github.com/rh-hideout/pokeemerald-expansion/pull/9140)
+* Move tutors makefile by @FosterProgramming in [#9058](https://github.com/rh-hideout/pokeemerald-expansion/pull/9058)
+* fix(fanclub): use sText instead of non-existent gText by @izrofid in [#9163](https://github.com/rh-hideout/pokeemerald-expansion/pull/9163)
+* Fix HGSS National Dex List Count by @HashtagMarky in [#9189](https://github.com/rh-hideout/pokeemerald-expansion/pull/9189)
+* fix id range for object events and multi decrements/increments by @cawtds in [#9098](https://github.com/rh-hideout/pokeemerald-expansion/pull/9098)
+* Show ability num instead of ability id whn picking ability with debug givemon by @FosterProgramming in [#9225](https://github.com/rh-hideout/pokeemerald-expansion/pull/9225)
+* Fix sprite fill using wrong mask in some cases by @hedara90 in [#9205](https://github.com/rh-hideout/pokeemerald-expansion/pull/9205)
+ - Also fixes an issue where long mon names didn't use narrower fonts.
+* fix(build): fix debug builds failing by @izrofid in [#9219](https://github.com/rh-hideout/pokeemerald-expansion/pull/9219)
+* Fix battle tutorial crashing after reshow in frlg by @FosterProgramming in [#9243](https://github.com/rh-hideout/pokeemerald-expansion/pull/9243)
+* 📜 Make .party files use "enum Pokeball" instead of "enum Item" by @FosterProgramming in [#9159](https://github.com/rh-hideout/pokeemerald-expansion/pull/9159)
+ - Balls data in trainers.party and battle_partners.party now expect enum Pokeball instead of struct Item
+ - The "BALL_" prefix is automatically added just like "ITEM_" used to be be, it means "great ball" must become "great" or "love ball" must become "love"
+ - running the migration script `python3 migration_scripts/1.15/trainer_party_ball_type_change.py` should change your files to the proper structure. If you have ball items not present in expansion in your project, you may need to edit the item_to_ball array in `migration_scripts/1.15/trainer_party_ball_type_change.py` to run the script
+* Fix setting the wall clock crashing with OW_USE_FAKE_RTC set to FALSE and LTO=1 by @hedara90 in [#9299](https://github.com/rh-hideout/pokeemerald-expansion/pull/9299)
+* Update Makefile to remove every rom on clean by @FosterProgramming in [#9346](https://github.com/rh-hideout/pokeemerald-expansion/pull/9346)
+* Fix messed up palettes during battle intro by @hedara90 in [#9333](https://github.com/rh-hideout/pokeemerald-expansion/pull/9333)
+* Merge metatile labels files by @FosterProgramming in [#9351](https://github.com/rh-hideout/pokeemerald-expansion/pull/9351)
+* Adds a warning when trainer is invalid by @pkmnsnfrn in [#9195](https://github.com/rh-hideout/pokeemerald-expansion/pull/9195)
+* Fix mapjson error with layouts missing layout_version key by @FosterProgramming in [#9374](https://github.com/rh-hideout/pokeemerald-expansion/pull/9374)
+* Fix mapjson failing with long map/layout names by @FosterProgramming in [#9375](https://github.com/rh-hideout/pokeemerald-expansion/pull/9375)
+
+## 🗺️ Overworld 🗺️
+### Added
+* Add Chooseboxmon special by @Artrios in [#5428](https://github.com/rh-hideout/pokeemerald-expansion/pull/5428)
+* Add gym leader support for vs seeker and clean vs seeker code by @FosterProgramming in [#8172](https://github.com/rh-hideout/pokeemerald-expansion/pull/8172)
+ - Vs seeker now support gym leaders rematches with the same conditions as match call
+ - Vs seeker now allow rematches with all NPC types (TRAINER_TYPE_NONE and TRAINER_TYPE_ALL_DIRECTIONS) in addition to (TRAINER_TYPE_NORMAL and TRAINER_TYPE_BURIED)
+ - Vs seeker now uses question mark emote to represent NPCs who are not TRAINER_TYPE_NONE and do not have a trainer id in the first line of their script.
+
+### Changed
+* OW mon fixes by @purrfectdoodle in [#8444](https://github.com/rh-hideout/pokeemerald-expansion/pull/8444)
+* waitmovementall by @mrgriffin in [#8333](https://github.com/rh-hideout/pokeemerald-expansion/pull/8333)
+* Add OW_BERRY_COLORS and update gBerries to match by @pkmnsnfrn in [#8353](https://github.com/rh-hideout/pokeemerald-expansion/pull/8353)
+* Add Gen2 OW_TIMES_OF_DAY configuration. by @GraionDilach in [#8176](https://github.com/rh-hideout/pokeemerald-expansion/pull/8176)
+* Refactor exchange service corner by @fdeblasio in [#8840](https://github.com/rh-hideout/pokeemerald-expansion/pull/8840)
+
+### Fixed
+* Fix slateport battle tent battle type by @FosterProgramming in [#8475](https://github.com/rh-hideout/pokeemerald-expansion/pull/8475)
+* Refactor mon generation by @FosterProgramming in [#8204](https://github.com/rh-hideout/pokeemerald-expansion/pull/8204)
+ - Reworked the functions that generate Pokemon, it should not affect most users but please read `docs/tutorials/mon_generation.md` if you want to know more or have difficulties adapting custom code that used to rely on the changed functions
+ - Synchronize and Cute Charm update: both of these overworld abilities now better match their cartridge behavior in regards to which pokemon are affected by the effect (use the `OW_SYNCHRONIZE_NATURE` config to choose the version) and can be more easily customized by changing the data in `src/ow_abilities.c`
+ - OW_SYNCHRONIZE_NATURE now defaults to GEN_LATEST(gen 9) where Synchronize has no overworld effect
+* fix small mistake in ScriptGiveMonParameterized by @artsquirrelb in [#8820](https://github.com/rh-hideout/pokeemerald-expansion/pull/8820)
+* Another MOVE_DEFAULT bugfix by @FosterProgramming in [#8823](https://github.com/rh-hideout/pokeemerald-expansion/pull/8823)
+* Fix Daycare party select with `ChooseBoxMon` by @AsparagusEduardo in [#8845](https://github.com/rh-hideout/pokeemerald-expansion/pull/8845)
+* Remove assert for surpassing total ev cap by @FosterProgramming in [#8938](https://github.com/rh-hideout/pokeemerald-expansion/pull/8938)
+* Fix winning moves by @FosterProgramming in [#8978](https://github.com/rh-hideout/pokeemerald-expansion/pull/8978)
+* Fix checking for rare move in disabled species by @FosterProgramming in [#8977](https://github.com/rh-hideout/pokeemerald-expansion/pull/8977)
+* Fix checking for frontier banned disabled species by @FosterProgramming in [#8980](https://github.com/rh-hideout/pokeemerald-expansion/pull/8980)
+* Refactor chooseboxmon by @FosterProgramming in [#8491](https://github.com/rh-hideout/pokeemerald-expansion/pull/8491)
+ - WARNING: In Game trade have been modified and previous script might be broken, we recommend replacing you trade script by using the new macro
+ - Add a new macro for ingame trade: `ingame_trade tradeId:req wantTradeMsg:req, declineTradeJump:req, wrongMonJump:req, tradeCompleteMsg:req`
+ - Add a new macro for move tutor: `move_tutor moveId:req, wantTeachingMsg:req, monSelectMsg:req, declinedJmp:req, taughtJmp:req, flagId=0`. flagId is optional, if it is present the move tutor can only be used once (it checks if the flag is unset and sets the flag after teaching the move). If it is not present, the move tutor can be used as many times as you want
+ - Adds a new config `OW_CHOOSE_FROM_PC_AND_PARTY` inc `cofig/overworld.h` to select if you want npc (daycare, move tutors, trade npc, ...) to let you pick a pokemon from the storage system (pc boxes+party) or just the party (defaults to TRUE allowing to choose mon from pc boxes
+ - Adds a filter to show which mons are valid when picking a mon from PC
+* Fix return to field when selecting a move to forget by @FosterProgramming in [#9000](https://github.com/rh-hideout/pokeemerald-expansion/pull/9000)
+* Fixed Link Overworld by @AsparagusEduardo in [#9014](https://github.com/rh-hideout/pokeemerald-expansion/pull/9014)
+* Fix special var collision with battle frontier tutors by @FosterProgramming in [#9072](https://github.com/rh-hideout/pokeemerald-expansion/pull/9072)
+* NO_WHITEOUT now prevent forfeits from B_RUN_TRAINER_BATTLE by @pkmnsnfrn in [#9112](https://github.com/rh-hideout/pokeemerald-expansion/pull/9112)
+* Add wander around slower movement type by @FosterProgramming in [#9164](https://github.com/rh-hideout/pokeemerald-expansion/pull/9164)
+* Make sure grass effect palette ignore fog when time blended by @FosterProgramming in [#9235](https://github.com/rh-hideout/pokeemerald-expansion/pull/9235)
+* Fix batle dome streak thresholds by @FosterProgramming in [#9257](https://github.com/rh-hideout/pokeemerald-expansion/pull/9257)
+* Fix sanitizeTrainerId by @FosterProgramming in [#9244](https://github.com/rh-hideout/pokeemerald-expansion/pull/9244)
+* createmon:fix move order when all moves are default by @FosterProgramming in [#9261](https://github.com/rh-hideout/pokeemerald-expansion/pull/9261)
+* Fix firered TV loading emerald TV script by @FosterProgramming in [#9329](https://github.com/rh-hideout/pokeemerald-expansion/pull/9329)
+* Fix double actions on standard bike by @FosterProgramming in [#9344](https://github.com/rh-hideout/pokeemerald-expansion/pull/9344)
+* Fix ss anne disappearing early by @FosterProgramming in [#9334](https://github.com/rh-hideout/pokeemerald-expansion/pull/9334)
+* Fix frlg coinbox window by @FosterProgramming in [#9336](https://github.com/rh-hideout/pokeemerald-expansion/pull/9336)
+* Fix region text when looking at map in frlg by @FosterProgramming in [#9347](https://github.com/rh-hideout/pokeemerald-expansion/pull/9347)
+* Add original frlg safari zone menu and fix initial step counter by @FosterProgramming in [#9340](https://github.com/rh-hideout/pokeemerald-expansion/pull/9340)
+* Fix floor menu in frlg elevator showing wrong values by @FosterProgramming in [#9350](https://github.com/rh-hideout/pokeemerald-expansion/pull/9350)
+* Redraw money box after multi choice in bike shop script by @FosterProgramming in [#9331](https://github.com/rh-hideout/pokeemerald-expansion/pull/9331)
+* Fix special vars in frlg ingame trade by @FosterProgramming in [#9328](https://github.com/rh-hideout/pokeemerald-expansion/pull/9328)
+* Set var facing on all interactions by @FosterProgramming in [#9330](https://github.com/rh-hideout/pokeemerald-expansion/pull/9330)
+* 📜 createmon uses enum Pokeball instead of Item by @FosterProgramming in [#9281](https://github.com/rh-hideout/pokeemerald-expansion/pull/9281)
+ - Balls data in when using createmon and givemon now expect enum Pokeball instead of struct Item
+ - Running the migration script python3 migration_scripts/1.15/givemon_balls_typechange.py should update your script file automatically. If you have ball items not present in expansion in your project, you may need to edit the item_to_ball array in migration_scripts/1.15/trainer_party_ball_type_change.py to run the script
+* Add red and leaf icons to frlg map by @FosterProgramming in [#9357](https://github.com/rh-hideout/pokeemerald-expansion/pull/9357)
+* Make sure prevo moves are not duplicated in move relearner by @FosterProgramming in [#9377](https://github.com/rh-hideout/pokeemerald-expansion/pull/9377)
+* Movement follow player by @FosterProgramming in [#9365](https://github.com/rh-hideout/pokeemerald-expansion/pull/9365)
+* add missing tv sprite in frlg pokecenter by @FosterProgramming in [#9348](https://github.com/rh-hideout/pokeemerald-expansion/pull/9348)
+
+## 🐉 Pokémon 🐉
+### Added
+* Add support for species unique eggs by @hedara90 in [#8557](https://github.com/rh-hideout/pokeemerald-expansion/pull/8557)
+ - New species unique eggs must be added to `enum EggIds` and `src/data/pokemon/egg_data.h`
+
+### Changed
+* OW mon fixes by @purrfectdoodle in [#8444](https://github.com/rh-hideout/pokeemerald-expansion/pull/8444)
+* Simplified sprite visualizer's battle backgrounds by @fdeblasio in [#8775](https://github.com/rh-hideout/pokeemerald-expansion/pull/8775)
+* Convert ``IsMonBannedFromSkyBattles`` table to species flag by @Bassoonian in [#8793](https://github.com/rh-hideout/pokeemerald-expansion/pull/8793)
+ - If you previously changed the table in ``IsMonBannedFromSkyBattles``, please mark species as banned from sky battles by adding the ``isSkyBattleBanned`` to them in their ``gSpeciesInfo`` struct.
+* Refactor move relearner and small #8027 follow-up by @PCG06 in [#8675](https://github.com/rh-hideout/pokeemerald-expansion/pull/8675)
+* Add Legends Z-A: Mega Dimension content by @LinathanZel in [#8550](https://github.com/rh-hideout/pokeemerald-expansion/pull/8550)
+ - To retain compatibility with your new items and species, make sure to move the new additions behind your own additions.
+ - The save block will shift if you have enabled USE_DEXNAV_SEARCH_LEVELS (due to the new species) or if OW_SHOW_ITEM_DESCRIPTIONS is set to OW_ITEM_DESCRIPTIONS_FIRST_TIME (due to the new items).
+* Add Legends Z-A cries by @LinathanZel in [#8151](https://github.com/rh-hideout/pokeemerald-expansion/pull/8151)
+ - These cries result in a 2.26% increase in ROM space used.
+ - Toggling `P_MODIFIED_MEGA_CRIES` to `FALSE` saves about 3.74% ROM space.
+* Add missing cries for Cramorant-Gulping, Cramorant-Gorging, Oinkologne-Female, and Ursaluna-Bloodmoon by @LinathanZel in [#8911](https://github.com/rh-hideout/pokeemerald-expansion/pull/8911)
+* New White Stripe Basculin Sprites by @SabataLunar in [#8926](https://github.com/rh-hideout/pokeemerald-expansion/pull/8926)
+* Add Egg Moves to Pokémon introduced in Legends Arceus by @LinathanZel in [#8982](https://github.com/rh-hideout/pokeemerald-expansion/pull/8982)
+
+### Fixed
+* fix(code): stop GetSpeciesPreEvolution from checking disabled species by @khbsd in [#8598](https://github.com/rh-hideout/pokeemerald-expansion/pull/8598)
+ - this prevents species from showing up as pre-evolutions if their evolutions are disabled; if a feature you have relies on that make sure to adjust.
+* Fix file endings for White-Stripe Basculin palettes by @hedara90 in [#8956](https://github.com/rh-hideout/pokeemerald-expansion/pull/8956)
+* Allow Power Construct Animation by @KnightGallade in [#9298](https://github.com/rh-hideout/pokeemerald-expansion/pull/9298)
+* createmon:fix move order when all moves are default by @FosterProgramming in [#9261](https://github.com/rh-hideout/pokeemerald-expansion/pull/9261)
+
+## ⚔️ Battle General ⚔️
+### Added
+* Allow x items to be cross-used in double battles by @FosterProgramming in [#8280](https://github.com/rh-hideout/pokeemerald-expansion/pull/8280)
+ - Adds a new config `B_X_ITEMS_CROSSUSE` (true by default) that allows X items to be used on any allied battler in double battle
+* Support Gen 2's Sandstorm not reducing Solar Beam's power by @AsparagusEduardo in [#8422](https://github.com/rh-hideout/pokeemerald-expansion/pull/8422)
+ - Changed uses of `B_WEATHER_HAIL | B_WEATHER_SNOW` to `B_WEATHER_ICY_ANY`.
+* Adds smart target type by @AlexOn1ine in [#8639](https://github.com/rh-hideout/pokeemerald-expansion/pull/8639)
+* Adds assertf for incorrect usage of `end`s, `return`, `call` and selection script commands by @PhallenTree in [#9018](https://github.com/rh-hideout/pokeemerald-expansion/pull/9018)
+
+### Changed
+* Switch-in Events Refactor by @AlexOn1ine in [#8128](https://github.com/rh-hideout/pokeemerald-expansion/pull/8128)
+* Updated Focus Punch failure check and moved to attackcanceler by @PhallenTree in [#8360](https://github.com/rh-hideout/pokeemerald-expansion/pull/8360)
+* Move crit calculation into the damage calc by @AlexOn1ine in [#8365](https://github.com/rh-hideout/pokeemerald-expansion/pull/8365)
+* Trainerbattle Type Differentiation by @u8-Salem in [#6424](https://github.com/rh-hideout/pokeemerald-expansion/pull/6424)
+ - for multi battles: `partnerId` is no longer set in `multi_*` macros but instead by `setmultitrainerbattle`
+* Make Glaive Rush a MOVE_EFFECT_GLAIVE_RUSH by @AlexOn1ine in [#8351](https://github.com/rh-hideout/pokeemerald-expansion/pull/8351)
+* Removed Hold Effects that do nothing by @AsparagusEduardo in [#8420](https://github.com/rh-hideout/pokeemerald-expansion/pull/8420)
+ - Removed `HOLD_EFFECT_DRAGON_SCALE` and `HOLD_EFFECT_UPGRADE`.
+* Convert starting statuses to a bitmask by @AlexOn1ine in [#8233](https://github.com/rh-hideout/pokeemerald-expansion/pull/8233)
+* Refactor Multi Hit moves to use a flag instead of effect by @AlexOn1ine in [#8379](https://github.com/rh-hideout/pokeemerald-expansion/pull/8379)
+* Renames for struct BattleContext and DamageContext by @AlexOn1ine in [#8426](https://github.com/rh-hideout/pokeemerald-expansion/pull/8426)
+* Decouples BattlerHasAi from battle positions to instead be determined by battler Battle Controller by @grintoul1 in [#8247](https://github.com/rh-hideout/pokeemerald-expansion/pull/8247)
+* Streamline unable to use move flags by @AlexOn1ine in [#8415](https://github.com/rh-hideout/pokeemerald-expansion/pull/8415)
+* Add fieldStatuses argument to Ai_CalcDamage for switch in calc by @AlexOn1ine in [#8490](https://github.com/rh-hideout/pokeemerald-expansion/pull/8490)
+* Battle controller Ball throw cleanup by @AsparagusEduardo in [#8519](https://github.com/rh-hideout/pokeemerald-expansion/pull/8519)
+* Add starting-status hazard support by @moostoet in [#8302](https://github.com/rh-hideout/pokeemerald-expansion/pull/8302)
+ - `B_VAR_STARTING_STATUS` now supports spawning layered hazards (Spikes, Toxic Spikes, Sticky Web, Stealth Rock, Steelsurge) with correct messaging and effects.
+* Move disable struct members to battle mon volatiles by @AlexOn1ine in [#8540](https://github.com/rh-hideout/pokeemerald-expansion/pull/8540)
+* Move target type refactor by @AlexOn1ine in [#8513](https://github.com/rh-hideout/pokeemerald-expansion/pull/8513)
+* Counter/Mirror Coat/Metal Burst refactor by @PhallenTree in [#8604](https://github.com/rh-hideout/pokeemerald-expansion/pull/8604)
+ - `EFFECT_COUNTER`, `EFFECT_MIRROR_COAT` and `EFFECT_METAL_BURST` have been combined into `EFFECT_REFLECT_DAMAGE`
+ - These now use `BattleScript_EffectHit` and their damage is calculated in `DoFixedDamageMoveCalc`
+* Refactor Endeavor to use DoFixedDamageMoveCalc func by @AlexOn1ine in [#8618](https://github.com/rh-hideout/pokeemerald-expansion/pull/8618)
+* Move Explosion to attackcanceler and Terrain Boost effect by @AlexOn1ine in [#8612](https://github.com/rh-hideout/pokeemerald-expansion/pull/8612)
+* Stockpile / WishFutureKnock / Order up clean up by @AlexOn1ine in [#8528](https://github.com/rh-hideout/pokeemerald-expansion/pull/8528)
+* Add Move End Faint Block by @PhallenTree in [#8673](https://github.com/rh-hideout/pokeemerald-expansion/pull/8673)
+* Clean up for touchedProtectLike by @AlexOn1ine in [#8699](https://github.com/rh-hideout/pokeemerald-expansion/pull/8699)
+* Create battle_move_resolution.c by @AlexOn1ine in [#8703](https://github.com/rh-hideout/pokeemerald-expansion/pull/8703)
+* Trainer slides for multiple trainers and multibattles by @grintoul1 in [#7588](https://github.com/rh-hideout/pokeemerald-expansion/pull/7588)
+* Change Present edge case by @AlexOn1ine in [#8708](https://github.com/rh-hideout/pokeemerald-expansion/pull/8708)
+* Add error handling to BS_GetStatValue by @hedara90 in [#8734](https://github.com/rh-hideout/pokeemerald-expansion/pull/8734)
+* Fix Rage generational inaccuracies by @moostoet in [#8642](https://github.com/rh-hideout/pokeemerald-expansion/pull/8642)
+* Further weather consolidation by @AlexOn1ine in [#8161](https://github.com/rh-hideout/pokeemerald-expansion/pull/8161)
+* Add pre–Gen 4 handling for Hidden Power and Counter interaction by @izrofid in [#8741](https://github.com/rh-hideout/pokeemerald-expansion/pull/8741)
+* Clean up volatiles by @AlexOn1ine in [#8762](https://github.com/rh-hideout/pokeemerald-expansion/pull/8762)
+* Add handling for Trick/Switcheroo behavior when both battlers are choice-locked (pre–Gen 5) by @izrofid in [#8730](https://github.com/rh-hideout/pokeemerald-expansion/pull/8730)
+* Fixed GetCopycatMove's capitalization by @fdeblasio in [#8808](https://github.com/rh-hideout/pokeemerald-expansion/pull/8808)
+* Added Secret Power animations to gBattleEnvironmentInfo by @fdeblasio in [#8807](https://github.com/rh-hideout/pokeemerald-expansion/pull/8807)
+* More battle environment updates by @fdeblasio in [#8809](https://github.com/rh-hideout/pokeemerald-expansion/pull/8809)
+* Refactor protect failure to match vanilla by @AlexOn1ine in [#8832](https://github.com/rh-hideout/pokeemerald-expansion/pull/8832)
+* Adds type checking for battler positions by @Bassoonian in [#8792](https://github.com/rh-hideout/pokeemerald-expansion/pull/8792)
+* Add setpreattackadditionaleffect and use it for brick break / spectra… by @AlexOn1ine in [#8719](https://github.com/rh-hideout/pokeemerald-expansion/pull/8719)
+* Refactor move target failure by @AlexOn1ine in [#8696](https://github.com/rh-hideout/pokeemerald-expansion/pull/8696)
+* Battle file cleanup & documentation by @Bassoonian in [#8903](https://github.com/rh-hideout/pokeemerald-expansion/pull/8903)
+* Apply some cases of `STATUS1_ICY_ANY` by @AsparagusEduardo in [#8924](https://github.com/rh-hideout/pokeemerald-expansion/pull/8924)
+* Consolidated `HandleStatusIconUpdate` by @AsparagusEduardo in [#8925](https://github.com/rh-hideout/pokeemerald-expansion/pull/8925)
+* `GetBattleTrainer` -> `GetBattlerTrainer` by @AsparagusEduardo in [#8952](https://github.com/rh-hideout/pokeemerald-expansion/pull/8952)
+* Move adjustdamage to the damage calc by @AlexOn1ine in [#8948](https://github.com/rh-hideout/pokeemerald-expansion/pull/8948)
+* Refactor OHKO Moves by @AlexOn1ine in [#8916](https://github.com/rh-hideout/pokeemerald-expansion/pull/8916)
+* Move attack canceler to the move resolution file by @AlexOn1ine in [#8921](https://github.com/rh-hideout/pokeemerald-expansion/pull/8921)
+* Add even more type checking by @Bassoonian in [#8972](https://github.com/rh-hideout/pokeemerald-expansion/pull/8972)
+* Add missing copycatBanned to Mirror Coat by @fdeblasio in [#9016](https://github.com/rh-hideout/pokeemerald-expansion/pull/9016)
+* Move Target failure follow up by @AlexOn1ine in [#8986](https://github.com/rh-hideout/pokeemerald-expansion/pull/8986)
+* Even more battle environment updates by @fdeblasio in [#8835](https://github.com/rh-hideout/pokeemerald-expansion/pull/8835)
+* Form Change Improvements by @AsparagusEduardo in [#8850](https://github.com/rh-hideout/pokeemerald-expansion/pull/8850)
+* Clean up redundant item assignment after it was stolen by @AlexOn1ine in [#9044](https://github.com/rh-hideout/pokeemerald-expansion/pull/9044)
+* Use direct config names instead of enum names by @AsparagusEduardo in [#8824](https://github.com/rh-hideout/pokeemerald-expansion/pull/8824)
+ - `GetConfig` and `WITH_CONFIG` now use the actual config define. Eg, `B_STURDY` instead of `CONFIG_STURDY`. However, in scripts, using `jumpifgenconfiglowerthan` in scripts would use the full name of `CONFIG_B_STURDY`.
+* Adds CancelerSetTargets and improves Pre Attack Effects by @PhallenTree in [#9178](https://github.com/rh-hideout/pokeemerald-expansion/pull/9178)
+ - Setting targets for moves has been refactored:
+ - `gBattleStruct->battlerState[gBattlerAttacker]->targetsDone[target]` is set to `TRUE` if `target` isn't targeted by the move;
+ - Moves now properly check failures against all targets when applicable. If it fails for all targets, it plays the same battle script as before; if it fails for some but not all targets, it will say "It doesn't affect target!", similar to Synchronoise.
+ - Additional effects that occur before the move animation (like Brick Break, Spectral Thief), can now be applied to multiple targets and can have a chance to activate.
+* Sky Drop Fixes/Refactor by @AlexOn1ine in [#9185](https://github.com/rh-hideout/pokeemerald-expansion/pull/9185)
+* FRLG accuracy check clean up by @AlexOn1ine in [#9224](https://github.com/rh-hideout/pokeemerald-expansion/pull/9224)
+* Simplify defrosting/thawing and expand target thawing config by @PhallenTree in [#9271](https://github.com/rh-hideout/pokeemerald-expansion/pull/9271)
+* Move undoing Dynamax to before faint cry by @PhallenTree in [#9317](https://github.com/rh-hideout/pokeemerald-expansion/pull/9317)
+* Adjust the restriction for Pecharunt by @AlexOn1ine in [#9181](https://github.com/rh-hideout/pokeemerald-expansion/pull/9181)
+
+### Fixed
+* Refactor Fury Cutter and Rollout by @AlexOn1ine in [#8375](https://github.com/rh-hideout/pokeemerald-expansion/pull/8375)
+* Fix Snatch stealing snatched moves by @moostoet in [#8350](https://github.com/rh-hideout/pokeemerald-expansion/pull/8350)
+* Fix Air Balloon message happening when another battler switches in by @PhallenTree in [#8455](https://github.com/rh-hideout/pokeemerald-expansion/pull/8455)
+* Fix potential bug with CanBattlerGetOrLoseItem by @AlexOn1ine in [#8518](https://github.com/rh-hideout/pokeemerald-expansion/pull/8518)
+* Fix Red Card / Eject Button interaction by @AlexOn1ine in [#8780](https://github.com/rh-hideout/pokeemerald-expansion/pull/8780)
+* Fixes Chilly Reception displaying its message when called by another move by @PhallenTree in [#8795](https://github.com/rh-hideout/pokeemerald-expansion/pull/8795)
+* Ability Shield allows for ability activation when obtained and Trick cleanup by @PhallenTree in [#8784](https://github.com/rh-hideout/pokeemerald-expansion/pull/8784)
+* Update volatiles once again by @AlexOn1ine in [#8798](https://github.com/rh-hideout/pokeemerald-expansion/pull/8798)
+* Fix field abilities activating when an other mon switches in by @AlexOn1ine in [#8743](https://github.com/rh-hideout/pokeemerald-expansion/pull/8743)
+* Fix capture using strange ball by @FosterProgramming in [#8874](https://github.com/rh-hideout/pokeemerald-expansion/pull/8874)
+* Fix Gen 4 Taunt for upcoming by @amiosi in [#8878](https://github.com/rh-hideout/pokeemerald-expansion/pull/8878)
+* Fix wrong getter in GetSwitchinStatusDamage by @Bassoonian in [#8896](https://github.com/rh-hideout/pokeemerald-expansion/pull/8896)
+* Follow up for anim issue in doubles by @AlexOn1ine in [#8894](https://github.com/rh-hideout/pokeemerald-expansion/pull/8894)
+* Fix brackets in SetMoveEffect by @AlexOn1ine in [#8922](https://github.com/rh-hideout/pokeemerald-expansion/pull/8922)
+* Misc battle engine changes by @AlexOn1ine in [#8931](https://github.com/rh-hideout/pokeemerald-expansion/pull/8931)
+* Mold Breaker, Last Resort, Assume and Tantrum fixes by @AlexOn1ine in [#9047](https://github.com/rh-hideout/pokeemerald-expansion/pull/9047)
+* Fixes Fling Booster Energy being prevented by target Paradox mon by @PhallenTree in [#9050](https://github.com/rh-hideout/pokeemerald-expansion/pull/9050)
+* Fixes wild mon target choice in double battles by @izrofid in [#9075](https://github.com/rh-hideout/pokeemerald-expansion/pull/9075)
+* Fix Electroweb crash by correcting target sprite resolution by @Cle-bit in [#9091](https://github.com/rh-hideout/pokeemerald-expansion/pull/9091)
+* Clear Selection Scripts to prevents consequent fails by @PhallenTree in [#9095](https://github.com/rh-hideout/pokeemerald-expansion/pull/9095)
+* NO_WHITEOUT now prevent forfeits from B_RUN_TRAINER_BATTLE by @pkmnsnfrn in [#9112](https://github.com/rh-hideout/pokeemerald-expansion/pull/9112)
+* Fix Leppa Berry PP restore target under forced-consumption effects by @Cle-bit in [#9108](https://github.com/rh-hideout/pokeemerald-expansion/pull/9108)
+* fix(battle ui): standardize hp bar color logic for `GEN_5` and up by @khbsd in [#9083](https://github.com/rh-hideout/pokeemerald-expansion/pull/9083)
+* Battle Heap and Animation Test fixes by @hedara90 in [#9118](https://github.com/rh-hideout/pokeemerald-expansion/pull/9118)
+* Fix Instruct failing improperly when the instructed move isn't in the target's moveset by @Cle-bit in [#9113](https://github.com/rh-hideout/pokeemerald-expansion/pull/9113)
+* Fix ShouldSkipAccuracyCalcPastFirstHit wrong return val by @AlexOn1ine in [#9122](https://github.com/rh-hideout/pokeemerald-expansion/pull/9122)
+* Fixes Dancer activating on missed moves and Neutralizing Gas interaction by @PhallenTree in [#9129](https://github.com/rh-hideout/pokeemerald-expansion/pull/9129)
+* Strength Sap fixes by @AlexOn1ine in [#9130](https://github.com/rh-hideout/pokeemerald-expansion/pull/9130)
+* Fix Aroma Veil target-side check for ally-targeted limiting moves by @Cle-bit in [#9157](https://github.com/rh-hideout/pokeemerald-expansion/pull/9157)
+* Fix immunity ability status sync to avoid persisting Toxic counter when only volatile conditions are cured by @Cle-bit in [#9156](https://github.com/rh-hideout/pokeemerald-expansion/pull/9156)
+* Fix Pickpocket timing by @AlexOn1ine in [#9165](https://github.com/rh-hideout/pokeemerald-expansion/pull/9165)
+* Fix Instruct Missing Checks for Focus Punch, Beak Blast, Shell Trap, and Sky Drop by @Cle-bit in [#9152](https://github.com/rh-hideout/pokeemerald-expansion/pull/9152)
+* Fix Aqua Ring reuse failure check and add Aqua Ring/Ingrain tests by @Cle-bit in [#9174](https://github.com/rh-hideout/pokeemerald-expansion/pull/9174)
+* Fix Transform fail conditions with gen-specific checks by @Cle-bit in [#9070](https://github.com/rh-hideout/pokeemerald-expansion/pull/9070)
+* Fix Taunt to not block Me First in Gen 5+ by @Cle-bit in [#9069](https://github.com/rh-hideout/pokeemerald-expansion/pull/9069)
+* Fix Present heal miss-flag handling and enforce Telepathy blocking by @Cle-bit in [#9170](https://github.com/rh-hideout/pokeemerald-expansion/pull/9170)
+* Fix Commander cleanup after Volt Switch switch-in by @Cle-bit in [#9141](https://github.com/rh-hideout/pokeemerald-expansion/pull/9141)
+* Fixes Gulp Missile crash on targets that can be statused by @AlexOn1ine in [#9179](https://github.com/rh-hideout/pokeemerald-expansion/pull/9179)
+* Fix moves causing errors in Multiplayer due to recoil check in Battle TV by @hedara90 in [#9183](https://github.com/rh-hideout/pokeemerald-expansion/pull/9183)
+* Fix multi battle switch checks for Eject items by @Cle-bit in [#9190](https://github.com/rh-hideout/pokeemerald-expansion/pull/9190)
+* Fix incorrect player berry animation on opponent’s low-HP heal at battle start by @Cle-bit in [#9198](https://github.com/rh-hideout/pokeemerald-expansion/pull/9198)
+* Fix accuracy bypass by @cawtds in [#9201](https://github.com/rh-hideout/pokeemerald-expansion/pull/9201)
+* Fixes Protective Pads preventing Poison Touch activation by @PhallenTree in [#9222](https://github.com/rh-hideout/pokeemerald-expansion/pull/9222)
+* Fix tera icon palettes by @grintoul1 in [#9208](https://github.com/rh-hideout/pokeemerald-expansion/pull/9208)
+* Running from trainer battles properly handles whiteouts by @pkmnsnfrn in [#9228](https://github.com/rh-hideout/pokeemerald-expansion/pull/9228)
+* Prevents `seteffectprimary` and `seteffectsecondary` from softlocking by @PhallenTree in [#9236](https://github.com/rh-hideout/pokeemerald-expansion/pull/9236)
+* fix cram form change issue #9182 by @Meister-anon in [#9184](https://github.com/rh-hideout/pokeemerald-expansion/pull/9184)
+* Fixes Throat Chop timer being reset with every use of the move by @PhallenTree in [#9246](https://github.com/rh-hideout/pokeemerald-expansion/pull/9246)
+* Fix pressing left or up when choosing target potentially causing a softlock by @PhallenTree in [#9247](https://github.com/rh-hideout/pokeemerald-expansion/pull/9247)
+* Poltergeist Fix: Usable against Klutz targets and while Magic Room is in effect by @LinathanZel in [#9256](https://github.com/rh-hideout/pokeemerald-expansion/pull/9256)
+* Fixes Rapid Spin and target defrost not being blocked by Sheer Force by @PhallenTree in [#9252](https://github.com/rh-hideout/pokeemerald-expansion/pull/9252)
+* Fix incorrect Adaptability interaction with non Tera type moves after Terastalization by @Cle-bit in [#9272](https://github.com/rh-hideout/pokeemerald-expansion/pull/9272)
+* Fix Ability Shield exemption when Neutralizing Gas ends by @Cle-bit in [#9273](https://github.com/rh-hideout/pokeemerald-expansion/pull/9273)
+* Fix Tickle to be blocked by Substitute in Gen 4+ by @Cle-bit in [#9288](https://github.com/rh-hideout/pokeemerald-expansion/pull/9288)
+* Fix Venom Drench bypassing Substitute by @Cle-bit in [#9289](https://github.com/rh-hideout/pokeemerald-expansion/pull/9289)
+* Fix Assist to account for temporarily changed moves in Gen 5+ by @Cle-bit in [#9287](https://github.com/rh-hideout/pokeemerald-expansion/pull/9287)
+* Fixes Minior not appearing in Meteor form when encountered in the wild by @luuma in [#9282](https://github.com/rh-hideout/pokeemerald-expansion/pull/9282)
+* Fix Eviolite to use original species after Transform by @Cle-bit in [#9285](https://github.com/rh-hideout/pokeemerald-expansion/pull/9285)
+* Fixes present master merge regression by @AlexOn1ine in [#9301](https://github.com/rh-hideout/pokeemerald-expansion/pull/9301)
+* Fix Power Construct Z symbol color + Add Form Change Sounds by @LinathanZel in [#9326](https://github.com/rh-hideout/pokeemerald-expansion/pull/9326)
+* Fix Sucker Punch to succeed against Me First targets by @Cle-bit in [#9284](https://github.com/rh-hideout/pokeemerald-expansion/pull/9284)
+* Fix safari healthbox by @FosterProgramming in [#9341](https://github.com/rh-hideout/pokeemerald-expansion/pull/9341)
+* Fixes post-KO animation assertf trigger caused by OOB battler number by @grintoul1 in [#9343](https://github.com/rh-hideout/pokeemerald-expansion/pull/9343)
+* Temporary fix to sprite data corruption during multi-faint by @hedara90 in [#9332](https://github.com/rh-hideout/pokeemerald-expansion/pull/9332)
+* Zen Mode Fix: Removes start battle form change and adds switch-out form change by @LinathanZel in [#9304](https://github.com/rh-hideout/pokeemerald-expansion/pull/9304)
+* Fix trainer sprite no reshowing properly in safari battle by @FosterProgramming in [#9353](https://github.com/rh-hideout/pokeemerald-expansion/pull/9353)
+* Fixes plasma fists and several let's go and max move effects which should occur even when fainting a foe by @luuma in [#9262](https://github.com/rh-hideout/pokeemerald-expansion/pull/9262)
+* Fix Paradox stat selection under Wonder Room by @Cle-bit in [#9356](https://github.com/rh-hideout/pokeemerald-expansion/pull/9356)
+* Fix illegal switch due to hazards by @AlexOn1ine in [#9361](https://github.com/rh-hideout/pokeemerald-expansion/pull/9361)
+* Fix reshowing battle not loading gimmick palettes by @hedara90 in [#9391](https://github.com/rh-hideout/pokeemerald-expansion/pull/9391)
+
+## 🤹 Moves 🤹
+### Changed
+* Consolidate battle anim particles by @fdeblasio in [#8797](https://github.com/rh-hideout/pokeemerald-expansion/pull/8797)
+* Consolidated common steps for Brick Break, Psychic Fang, and Raging Bull's animations by @fdeblasio in [#9020](https://github.com/rh-hideout/pokeemerald-expansion/pull/9020)
+* Converted break_screen_animation from a macro to a function by @fdeblasio in [#9115](https://github.com/rh-hideout/pokeemerald-expansion/pull/9115)
+* fix(bttl-anim): remove unused battle selector to silence warning by @izrofid in [#9218](https://github.com/rh-hideout/pokeemerald-expansion/pull/9218)
+
+### Fixed
+* Fix Aqua Ring animation by @hedara90 in [#8707](https://github.com/rh-hideout/pokeemerald-expansion/pull/8707)
+* Fixed an issue where double targeting a Pokemon on a single mon party causes animation issues by @LinathanZel in [#8891](https://github.com/rh-hideout/pokeemerald-expansion/pull/8891)
+* Restore natural 0 battle TV score by @AsparagusEduardo in [#8901](https://github.com/rh-hideout/pokeemerald-expansion/pull/8901)
+* correct move flags/data by @amiosi in [#8858](https://github.com/rh-hideout/pokeemerald-expansion/pull/8858)
+
+## 🧶 Items 🧶
+### Added
+* Add gym leader support for vs seeker and clean vs seeker code by @FosterProgramming in [#8172](https://github.com/rh-hideout/pokeemerald-expansion/pull/8172)
+ - Vs seeker now support gym leaders rematches with the same conditions as match call
+ - Vs seeker now allow rematches with all NPC types (TRAINER_TYPE_NONE and TRAINER_TYPE_ALL_DIRECTIONS) in addition to (TRAINER_TYPE_NORMAL and TRAINER_TYPE_BURIED)
+ - Vs seeker now uses question mark emote to represent NPCs who are not TRAINER_TYPE_NONE and do not have a trainer id in the first line of their script.
+* Gen 3 Lax Incense by @amiosi in [#8864](https://github.com/rh-hideout/pokeemerald-expansion/pull/8864)
+
+### Changed
+* Add OW_BERRY_COLORS and update gBerries to match by @pkmnsnfrn in [#8353](https://github.com/rh-hideout/pokeemerald-expansion/pull/8353)
+* Updated Lemonade's description's formatting to match the rest of the healing items by @fdeblasio in [#8888](https://github.com/rh-hideout/pokeemerald-expansion/pull/8888)
+* Adds ``Item`` enum by @Bassoonian in [#8897](https://github.com/rh-hideout/pokeemerald-expansion/pull/8897)
+ - The struct ``Item`` was renamed to ``ItemInfo`` for consistency with the other structs.
+* Add all of the Z-A mega stone sprites by @kittenchilly in [#9143](https://github.com/rh-hideout/pokeemerald-expansion/pull/9143)
+
+### Fixed
+* Fix Rare Candy reviving fainted level 100 Pokémon by @Cle-bit in [#9117](https://github.com/rh-hideout/pokeemerald-expansion/pull/9117)
+
+## 🤖 Battle AI 🤖
+### Added
+* Add Smarter AI Resist Berry Handling by @Pawkkie in [#8376](https://github.com/rh-hideout/pokeemerald-expansion/pull/8376)
+* Improved behavior for AI X Items and Dire Hit; vanilla behavior moved to Force Setup First Turn by @surskitty in [#7851](https://github.com/rh-hideout/pokeemerald-expansion/pull/7851)
+* Add AI_FLAG_RANDOMIZE_SWITCHINS by @Pawkkie and @lhearachel, @ghoulslash, @u8-Salem, @mrgriffin, @FosterProgramming in [#6222](https://github.com/rh-hideout/pokeemerald-expansion/pull/6222)
+* AI will not stat boost if Yawn'd by @Pawkkie in [#8377](https://github.com/rh-hideout/pokeemerald-expansion/pull/8377)
+* Improve self-sacrifice AI by @Pawkkie in [#8427](https://github.com/rh-hideout/pokeemerald-expansion/pull/8427)
+* Adds TIE_BREAK_SCORE and TIE_BREAK_TARGET to test system to allow for forced or random move and target selection by @grintoul1 in [#8398](https://github.com/rh-hideout/pokeemerald-expansion/pull/8398)
+ - Due to how tests "crash" if the expected move is not what happens in the actual test, the move/target being expected must be the one selected in the **last** run of a test, else the crash causes an animation failure message.
+* Trapping switch AI can see Shed Shell by @Pawkkie in [#8388](https://github.com/rh-hideout/pokeemerald-expansion/pull/8388)
+* AI last chance / priority handling tweaks by @Pawkkie in [#8384](https://github.com/rh-hideout/pokeemerald-expansion/pull/8384)
+* feat (AI): AI hits to KO considers Endure effects, and self-damage setup move handling by @ghostyboyy97 in [#8482](https://github.com/rh-hideout/pokeemerald-expansion/pull/8482)
+ - The AI now has logic for selecting Clangorous Soul and Fillet Away
+ - The AI now has improved logic for selecting Belly Drum
+ - The AI overall is more aware of whether or not its item and ability allows it to endure a hit.
+* Switch AI sees terrain when calcing damage by @Pawkkie in [#8498](https://github.com/rh-hideout/pokeemerald-expansion/pull/8498)
+* Add AI switchin quality consideration configs by @Pawkkie in [#8508](https://github.com/rh-hideout/pokeemerald-expansion/pull/8508)
+* Improve AI Absorb Handling by @Pawkkie in [#8465](https://github.com/rh-hideout/pokeemerald-expansion/pull/8465)
+* ShouldSwitch 1v1 calcs handle Endure effects by @Pawkkie in [#8544](https://github.com/rh-hideout/pokeemerald-expansion/pull/8544)
+* Switchin calcs leverage saving / restoring `AiLogicData` by @Pawkkie in [#8556](https://github.com/rh-hideout/pokeemerald-expansion/pull/8556)
+* AI uses Z-moves to ensure a low-accuracy KO. by @surskitty in [#8584](https://github.com/rh-hideout/pokeemerald-expansion/pull/8584)
+* Cap AI scores for Quiver Dance, Victory Dance, and Shell Smash. by @surskitty in [#8585](https://github.com/rh-hideout/pokeemerald-expansion/pull/8585)
+* Ensure Palafin prioritizes safe Flip Turn for Zero To Hero in battle by @Cle-bit in [#8591](https://github.com/rh-hideout/pokeemerald-expansion/pull/8591)
+* Add Dynamic Switch AI Function by @Pawkkie in [#8629](https://github.com/rh-hideout/pokeemerald-expansion/pull/8629)
+* Adjust AI two-turn move scoring by @Pawkkie in [#8651](https://github.com/rh-hideout/pokeemerald-expansion/pull/8651)
+* Add AI_FLAG_RANDOMIZE_PARTY_INDICES by @Pawkkie in [#8717](https://github.com/rh-hideout/pokeemerald-expansion/pull/8717)
+* AI uses Tailwind with Wind Rider and Wind Power by @Cle-bit in [#8983](https://github.com/rh-hideout/pokeemerald-expansion/pull/8983)
+
+### Changed
+* Smarter AI handling for incoming heals / Revival Blessing by @moostoet in [#8325](https://github.com/rh-hideout/pokeemerald-expansion/pull/8325)
+ - AI now chooses Healing Wish/Wish/Lunar Dance/Z-Parting Shot/Z-Memento and Revival Blessing recipients intelligently, accounting for hazards, status cures, and matchup safety.
+* Decouples BattlerHasAi from battle positions to instead be determined by battler Battle Controller by @grintoul1 in [#8247](https://github.com/rh-hideout/pokeemerald-expansion/pull/8247)
+* Split `battle_ai_switch_items.c` in two by @Pawkkie in [#8414](https://github.com/rh-hideout/pokeemerald-expansion/pull/8414)
+ - Please see the PR description for guidance if you have modified anything in this file
+* Enables AI to score all moves that KO as best damage, and store multiple moves as best damaging move for additional checks by @grintoul1 in [#8425](https://github.com/rh-hideout/pokeemerald-expansion/pull/8425)
+* Rename `Ai_WhichMoveBetter` to `CompareMoveEffects` by @Pawkkie in [#8468](https://github.com/rh-hideout/pokeemerald-expansion/pull/8468)
+* AI `ShouldPivot` Overhaul by @Pawkkie in [#8486](https://github.com/rh-hideout/pokeemerald-expansion/pull/8486)
+* Fix switch AI caring about super effective Snore by @Pawkkie in [#8500](https://github.com/rh-hideout/pokeemerald-expansion/pull/8500)
+* Refactor switchin candidates to use `battler` by @Pawkkie in [#8546](https://github.com/rh-hideout/pokeemerald-expansion/pull/8546)
+* Consolidate `GetIndexMove` by @Pawkkie in [#8622](https://github.com/rh-hideout/pokeemerald-expansion/pull/8622)
+* Iterator cleanup in `battle_ai` files by @Pawkkie in [#8582](https://github.com/rh-hideout/pokeemerald-expansion/pull/8582)
+* Improve Trick/Bestow AI logic for Toxic/Flame Orb and Utility Umbrella by @Cle-bit in [#8729](https://github.com/rh-hideout/pokeemerald-expansion/pull/8729)
+* AI avoids Protect against Unseen Fist and protection‑ignoring moves by @Cle-bit in [#8939](https://github.com/rh-hideout/pokeemerald-expansion/pull/8939)
+* AI sees No Guard prevents having Semi Invulnerability. by @surskitty in [#8586](https://github.com/rh-hideout/pokeemerald-expansion/pull/8586)
+* Remove redundant Levitate check for Magnitute by @AlexOn1ine in [#9197](https://github.com/rh-hideout/pokeemerald-expansion/pull/9197)
+
+### Fixed
+* Fixes dmg rounding error for AI by @grintoul1 in [#8436](https://github.com/rh-hideout/pokeemerald-expansion/pull/8436)
+* Fixes uninitialised variable in IncreaseSleepScore and corrects Focus Punch check by @grintoul1 in [#8481](https://github.com/rh-hideout/pokeemerald-expansion/pull/8481)
+* fix (scoring): configure GetNoOfHitsToKOBattler to allow optional endure consideration by @ghostyboyy97 in [#8496](https://github.com/rh-hideout/pokeemerald-expansion/pull/8496)
+ - The AI will NOT consider if it can endure an extra hit for setup consideration to prevent AI abuse
+* Fix doubles moves bad / choice lock bad switch AI by @Pawkkie in [#9078](https://github.com/rh-hideout/pokeemerald-expansion/pull/9078)
+* Fix AI_FLAG_RANDOMIZE_SWITCHIN logic by @Pawkkie in [#9128](https://github.com/rh-hideout/pokeemerald-expansion/pull/9128)
+* Prevent Coaching score inflation in certain circumstances. by @surskitty in [#9154](https://github.com/rh-hideout/pokeemerald-expansion/pull/9154)
+* Add missing weather checks for AI sandstorm/hail damage helpers by @Cle-bit in [#9155](https://github.com/rh-hideout/pokeemerald-expansion/pull/9155)
+* Fix doubles switch looping by @Pawkkie in [#9167](https://github.com/rh-hideout/pokeemerald-expansion/pull/9167)
+* Fix AI semi-invulnerable move handling and simplify switching logic by @Cle-bit in [#9180](https://github.com/rh-hideout/pokeemerald-expansion/pull/9180)
+* Fix Toxic Spikes switchin typo by @Pawkkie in [#9242](https://github.com/rh-hideout/pokeemerald-expansion/pull/9242)
+* Fix AI Sheer Force checks to allow Order Up’s Commander stat boost by @Cle-bit in [#9250](https://github.com/rh-hideout/pokeemerald-expansion/pull/9250)
+
+## 🧹 Other Cleanup 🧹
+* Removed Hold Effects that do nothing by @AsparagusEduardo in [#8420](https://github.com/rh-hideout/pokeemerald-expansion/pull/8420)
+ - Removed `HOLD_EFFECT_DRAGON_SCALE` and `HOLD_EFFECT_UPGRADE`.
+* Support NULLs in SpriteTemplate by @mrgriffin in [#8292](https://github.com/rh-hideout/pokeemerald-expansion/pull/8292)
+* Renames for struct BattleContext and DamageContext by @AlexOn1ine in [#8426](https://github.com/rh-hideout/pokeemerald-expansion/pull/8426)
+* Adjusted battle string IDs to match the order in `gBattleStringsTable` by @AsparagusEduardo in [#8446](https://github.com/rh-hideout/pokeemerald-expansion/pull/8446)
+* Streamline unable to use move flags by @AlexOn1ine in [#8415](https://github.com/rh-hideout/pokeemerald-expansion/pull/8415)
+* Split `battle_ai_switch_items.c` in two by @Pawkkie in [#8414](https://github.com/rh-hideout/pokeemerald-expansion/pull/8414)
+ - Please see the PR description for guidance if you have modified anything in this file
+* Rename `Ai_WhichMoveBetter` to `CompareMoveEffects` by @Pawkkie in [#8468](https://github.com/rh-hideout/pokeemerald-expansion/pull/8468)
+* Simplify some code by using GetBattlerParty by @AsparagusEduardo in [#8488](https://github.com/rh-hideout/pokeemerald-expansion/pull/8488)
+* Remove vestigial handledeoxys code by @FosterProgramming in [#8509](https://github.com/rh-hideout/pokeemerald-expansion/pull/8509)
+* Battle controller Ball throw cleanup by @AsparagusEduardo in [#8519](https://github.com/rh-hideout/pokeemerald-expansion/pull/8519)
+* Removed more instances of hardcoded move IDs by @AsparagusEduardo in [#8539](https://github.com/rh-hideout/pokeemerald-expansion/pull/8539)
+* Fix switch AI caring about super effective Snore by @Pawkkie in [#8500](https://github.com/rh-hideout/pokeemerald-expansion/pull/8500)
+* Consolidate `GetIndexMove` by @Pawkkie in [#8622](https://github.com/rh-hideout/pokeemerald-expansion/pull/8622)
+* Stockpile / WishFutureKnock / Order up clean up by @AlexOn1ine in [#8528](https://github.com/rh-hideout/pokeemerald-expansion/pull/8528)
+* Iterator cleanup in `battle_ai` files by @Pawkkie in [#8582](https://github.com/rh-hideout/pokeemerald-expansion/pull/8582)
+* Improve make_scr_cmd_constants.py by @cawtds in [#8347](https://github.com/rh-hideout/pokeemerald-expansion/pull/8347)
+* Clean up for Wish struct, IsSpreadMove and all learnables file by @AlexOn1ine in [#8680](https://github.com/rh-hideout/pokeemerald-expansion/pull/8680)
+* Clean up for touchedProtectLike by @AlexOn1ine in [#8699](https://github.com/rh-hideout/pokeemerald-expansion/pull/8699)
+* Create battle_move_resolution.c by @AlexOn1ine in [#8703](https://github.com/rh-hideout/pokeemerald-expansion/pull/8703)
+* Change Present edge case by @AlexOn1ine in [#8708](https://github.com/rh-hideout/pokeemerald-expansion/pull/8708)
+* Migrated some strings out of strings.c/strings.h by @fdeblasio in [#8270](https://github.com/rh-hideout/pokeemerald-expansion/pull/8270)
+* Add a cleaner way to reset all_learnables.json by @FosterProgramming in [#8747](https://github.com/rh-hideout/pokeemerald-expansion/pull/8747)
+* Easy chat data refactor by @fdeblasio in [#8271](https://github.com/rh-hideout/pokeemerald-expansion/pull/8271)
+* Clean up volatiles by @AlexOn1ine in [#8762](https://github.com/rh-hideout/pokeemerald-expansion/pull/8762)
+* enum TrainerPicID to replace defines for TRAINER_PIC_XXXX and TRAINER_BACK_PIC_XXXX by @grintoul1 in [#8789](https://github.com/rh-hideout/pokeemerald-expansion/pull/8789)
+ - Requires a `make clean` prior to make so that all trainer and battle partner front and back pic defines are refreshed by trainerproc
+* Convert ``IsMonBannedFromSkyBattles`` table to species flag by @Bassoonian in [#8793](https://github.com/rh-hideout/pokeemerald-expansion/pull/8793)
+ - If you previously changed the table in ``IsMonBannedFromSkyBattles``, please mark species as banned from sky battles by adding the ``isSkyBattleBanned`` to them in their ``gSpeciesInfo`` struct.
+* Small code deduplication in battle_ai_switch.c by @cawtds in [#8790](https://github.com/rh-hideout/pokeemerald-expansion/pull/8790)
+* Fixed GetCopycatMove's capitalization by @fdeblasio in [#8808](https://github.com/rh-hideout/pokeemerald-expansion/pull/8808)
+* Added Secret Power animations to gBattleEnvironmentInfo by @fdeblasio in [#8807](https://github.com/rh-hideout/pokeemerald-expansion/pull/8807)
+* More battle environment updates by @fdeblasio in [#8809](https://github.com/rh-hideout/pokeemerald-expansion/pull/8809)
+* Standardized use of macros in LoadPalette by @fdeblasio in [#8822](https://github.com/rh-hideout/pokeemerald-expansion/pull/8822)
+* Improve `IsBattlerSpritePresent`'s alive check by @PhallenTree in [#8847](https://github.com/rh-hideout/pokeemerald-expansion/pull/8847)
+* OCD PR: Test summary order by @AsparagusEduardo in [#8853](https://github.com/rh-hideout/pokeemerald-expansion/pull/8853)
+* Remove hacky spaces from `src/data/battle_environment.h` by @estellarc in [#8828](https://github.com/rh-hideout/pokeemerald-expansion/pull/8828)
+* Refactor exchange service corner by @fdeblasio in [#8840](https://github.com/rh-hideout/pokeemerald-expansion/pull/8840)
+* cleanup GetMon Null Data Instances by @Meister-anon in [#8867](https://github.com/rh-hideout/pokeemerald-expansion/pull/8867)
+* Sprite Visualizer font update by @fdeblasio in [#8883](https://github.com/rh-hideout/pokeemerald-expansion/pull/8883)
+* Updated Lemonade's description's formatting to match the rest of the healing items by @fdeblasio in [#8888](https://github.com/rh-hideout/pokeemerald-expansion/pull/8888)
+* Decoupled trainer gender from encounter music by @fdeblasio in [#8892](https://github.com/rh-hideout/pokeemerald-expansion/pull/8892)
+* More contest code consolidation by @fdeblasio in [#8889](https://github.com/rh-hideout/pokeemerald-expansion/pull/8889)
+* Battle file cleanup & documentation by @Bassoonian in [#8903](https://github.com/rh-hideout/pokeemerald-expansion/pull/8903)
+* Standardized item indentation by @fdeblasio in [#8913](https://github.com/rh-hideout/pokeemerald-expansion/pull/8913)
+* Apply some cases of `STATUS1_ICY_ANY` by @AsparagusEduardo in [#8924](https://github.com/rh-hideout/pokeemerald-expansion/pull/8924)
+* Consolidated `HandleStatusIconUpdate` by @AsparagusEduardo in [#8925](https://github.com/rh-hideout/pokeemerald-expansion/pull/8925)
+* `GetBattleTrainer` -> `GetBattlerTrainer` by @AsparagusEduardo in [#8952](https://github.com/rh-hideout/pokeemerald-expansion/pull/8952)
+* Poke Ball consolidation by @fdeblasio in [#8962](https://github.com/rh-hideout/pokeemerald-expansion/pull/8962)
+* Move attack canceler to the move resolution file by @AlexOn1ine in [#8921](https://github.com/rh-hideout/pokeemerald-expansion/pull/8921)
+* Add even more type checking by @Bassoonian in [#8972](https://github.com/rh-hideout/pokeemerald-expansion/pull/8972)
+* More type checking across the repo by @Bassoonian in [#8988](https://github.com/rh-hideout/pokeemerald-expansion/pull/8988)
+* Properly capitalized the comments of new move animations by @fdeblasio in [#9002](https://github.com/rh-hideout/pokeemerald-expansion/pull/9002)
+* Add missing copycatBanned to Mirror Coat by @fdeblasio in [#9016](https://github.com/rh-hideout/pokeemerald-expansion/pull/9016)
+* Added `enum BattlerId` type checks by @AsparagusEduardo in [#8954](https://github.com/rh-hideout/pokeemerald-expansion/pull/8954)
+* Move Target failure follow up by @AlexOn1ine in [#8986](https://github.com/rh-hideout/pokeemerald-expansion/pull/8986)
+* Consolidated common steps for Brick Break, Psychic Fang, and Raging Bull's animations by @fdeblasio in [#9020](https://github.com/rh-hideout/pokeemerald-expansion/pull/9020)
+* Fix another FRLG style oversight by @Bassoonian in [#9046](https://github.com/rh-hideout/pokeemerald-expansion/pull/9046)
+* Fix FRLG comment oversight in ``script_cmd_table.inc`` by @Bassoonian in [#9043](https://github.com/rh-hideout/pokeemerald-expansion/pull/9043)
+* Clean up redundant item assignment after it was stolen by @AlexOn1ine in [#9044](https://github.com/rh-hideout/pokeemerald-expansion/pull/9044)
+* Remove aif2pcm by @hedara90 in [#9076](https://github.com/rh-hideout/pokeemerald-expansion/pull/9076)
+* Remove trainers_frlg.h from repo for gitignore by @grintoul1 in [#9081](https://github.com/rh-hideout/pokeemerald-expansion/pull/9081)
+* Rename ow_synchronize.c by @FosterProgramming in [#9097](https://github.com/rh-hideout/pokeemerald-expansion/pull/9097)
+* Delete irrelevant battle type comments for expansion by @AlexOn1ine in [#9082](https://github.com/rh-hideout/pokeemerald-expansion/pull/9082)
+* Move SubtractClamped to util.c from battle_util.c by @AlexOn1ine in [#9120](https://github.com/rh-hideout/pokeemerald-expansion/pull/9120)
+* Converted break_screen_animation from a macro to a function by @fdeblasio in [#9115](https://github.com/rh-hideout/pokeemerald-expansion/pull/9115)
+* Remove redundant Levitate check for Magnitute by @AlexOn1ine in [#9197](https://github.com/rh-hideout/pokeemerald-expansion/pull/9197)
+* Add defines to Trainer Tower by @fdeblasio in [#9187](https://github.com/rh-hideout/pokeemerald-expansion/pull/9187)
+* Re-enable disabled test by @Pawkkie in [#9200](https://github.com/rh-hideout/pokeemerald-expansion/pull/9200)
+* fix(bttl-anim): remove unused battle selector to silence warning by @izrofid in [#9218](https://github.com/rh-hideout/pokeemerald-expansion/pull/9218)
+* FRLG accuracy check clean up by @AlexOn1ine in [#9224](https://github.com/rh-hideout/pokeemerald-expansion/pull/9224)
+* Simplify defrosting/thawing and expand target thawing config by @PhallenTree in [#9271](https://github.com/rh-hideout/pokeemerald-expansion/pull/9271)
+* Move undoing Dynamax to before faint cry by @PhallenTree in [#9317](https://github.com/rh-hideout/pokeemerald-expansion/pull/9317)
+* Adjust the restriction for Pecharunt by @AlexOn1ine in [#9181](https://github.com/rh-hideout/pokeemerald-expansion/pull/9181)
+* Clean up ``reshow_battle_screen.c`` by @Bassoonian in [#9352](https://github.com/rh-hideout/pokeemerald-expansion/pull/9352)
+* Fix tabs in C/H files by @Bassoonian in [#9364](https://github.com/rh-hideout/pokeemerald-expansion/pull/9364)
+* Cleans up unused String IDs and EWRAM variables by @Bassoonian in [#9363](https://github.com/rh-hideout/pokeemerald-expansion/pull/9363)
+* Fix spacing for conditions by @Bassoonian in [#9369](https://github.com/rh-hideout/pokeemerald-expansion/pull/9369)
+* Regularise switch indentation by @Bassoonian in [#9368](https://github.com/rh-hideout/pokeemerald-expansion/pull/9368)
+* Updated Trainer Tower formatting by @fdeblasio in [#9209](https://github.com/rh-hideout/pokeemerald-expansion/pull/9209)
+* Fix space indentation in .s and .inc files by @Bassoonian in [#9371](https://github.com/rh-hideout/pokeemerald-expansion/pull/9371)
+
+## 🧪 Test Runner 🧪
+### Added
+* Adds TIE_BREAK_SCORE and TIE_BREAK_TARGET to test system to allow for forced or random move and target selection by @grintoul1 in [#8398](https://github.com/rh-hideout/pokeemerald-expansion/pull/8398)
+ - Due to how tests "crash" if the expected move is not what happens in the actual test, the move/target being expected must be the one selected in the **last** run of a test, else the crash causes an animation failure message.
+* Adds EXPECT_FAIL macro to test system to allow for testing of conditions correctly triggering failures by @grintoul1 in [#8553](https://github.com/rh-hideout/pokeemerald-expansion/pull/8553)
+* Capture odds refactor and new catch rate modifiers by @FosterProgramming in [#8682](https://github.com/rh-hideout/pokeemerald-expansion/pull/8682)
+ - Added new configs for catch rate modifiers: B_INCAPACITATED_CATCH_BONUS, B_LOW_LEVEL_CATCH_BONUS, B_MISSING_BADGE_CATCH_MALUS
+ - B_MISSING_BADGE_CATCH_MALUS default config may reduce catch rate in your hack
+ - Add new CATCHING_CHANCE macro to the test engine that allow to record the catching chance to more easily test capture parameters
+
+### Changed
+* Fix setup for some moves in animation tests by @hedara90 in [#8492](https://github.com/rh-hideout/pokeemerald-expansion/pull/8492)
+* Add missing behavior when using focus punch while surviving an OHKO move by @FosterProgramming in [#8484](https://github.com/rh-hideout/pokeemerald-expansion/pull/8484)
+* assertf: Formatted asserts by @mrgriffin in [#8196](https://github.com/rh-hideout/pokeemerald-expansion/pull/8196)
+* Improve Trick/Bestow AI logic for Toxic/Flame Orb and Utility Umbrella by @Cle-bit in [#8729](https://github.com/rh-hideout/pokeemerald-expansion/pull/8729)
+* Add handling for Trick/Switcheroo behavior when both battlers are choice-locked (pre–Gen 5) by @izrofid in [#8730](https://github.com/rh-hideout/pokeemerald-expansion/pull/8730)
+* OCD PR: Test summary order by @AsparagusEduardo in [#8853](https://github.com/rh-hideout/pokeemerald-expansion/pull/8853)
+* Refactor pokerus and add configs by @FosterProgramming in [#7731](https://github.com/rh-hideout/pokeemerald-expansion/pull/7731)
+* AI avoids Protect against Unseen Fist and protection‑ignoring moves by @Cle-bit in [#8939](https://github.com/rh-hideout/pokeemerald-expansion/pull/8939)
+* Adds Parabolic Charge spread damage healing test by @AlexOn1ine in [#9094](https://github.com/rh-hideout/pokeemerald-expansion/pull/9094)
+* Use direct config names instead of enum names by @AsparagusEduardo in [#8824](https://github.com/rh-hideout/pokeemerald-expansion/pull/8824)
+ - `GetConfig` and `WITH_CONFIG` now use the actual config define. Eg, `B_STURDY` instead of `CONFIG_STURDY`. However, in scripts, using `jumpifgenconfiglowerthan` in scripts would use the full name of `CONFIG_B_STURDY`.
+* Re-enable disabled test by @Pawkkie in [#9200](https://github.com/rh-hideout/pokeemerald-expansion/pull/9200)
+* Added Weight battle tests by @AsparagusEduardo in [#9202](https://github.com/rh-hideout/pokeemerald-expansion/pull/9202)
+* Add tests for Hadron Engine and Psyblade by @Cle-bit in [#9314](https://github.com/rh-hideout/pokeemerald-expansion/pull/9314)
+* Add tests for Future Sight interaction with Ally Switch by @Cle-bit in [#9300](https://github.com/rh-hideout/pokeemerald-expansion/pull/9300)
+
+### Fixed
+* Tie Break failsafe correction by @grintoul1 in [#8596](https://github.com/rh-hideout/pokeemerald-expansion/pull/8596)
+* Fix Red Card / Eject Button interaction by @AlexOn1ine in [#8780](https://github.com/rh-hideout/pokeemerald-expansion/pull/8780)
+* Replaced undeclared variable in Cmd_tryswapitems; commented out Eject Button test conflicting with another Commander test by @grintoul1 in [#8805](https://github.com/rh-hideout/pokeemerald-expansion/pull/8805)
+* Fix field abilities activating when an other mon switches in by @AlexOn1ine in [#8743](https://github.com/rh-hideout/pokeemerald-expansion/pull/8743)
+* Refactor multi test system trainer party allocation and adds enum BattleTrainer by @grintoul1 in [#8908](https://github.com/rh-hideout/pokeemerald-expansion/pull/8908)
+* Fix Aqua Ring reuse failure check and add Aqua Ring/Ingrain tests by @Cle-bit in [#9174](https://github.com/rh-hideout/pokeemerald-expansion/pull/9174)
+* Fixes Protective Pads preventing Poison Touch activation by @PhallenTree in [#9222](https://github.com/rh-hideout/pokeemerald-expansion/pull/9222)
+* Fix tera icon palettes by @grintoul1 in [#9208](https://github.com/rh-hideout/pokeemerald-expansion/pull/9208)
+* Adds a warning when trainer is invalid by @pkmnsnfrn in [#9195](https://github.com/rh-hideout/pokeemerald-expansion/pull/9195)
+
+## 📚 Documentation 📚
+* Add AI_FLAG_KNOW_OPPONENT_PARTY to ai_flags.md by @Pawkkie in [#8366](https://github.com/rh-hideout/pokeemerald-expansion/pull/8366)
+* Add .isRestricted and .isSubLegendary by @jtebbe in [#8501](https://github.com/rh-hideout/pokeemerald-expansion/pull/8501)
+* Require braces on bodies with multiline conditions by @mrgriffin in [#8566](https://github.com/rh-hideout/pokeemerald-expansion/pull/8566)
+* Clean up for Wish struct, IsSpreadMove and all learnables file by @AlexOn1ine in [#8680](https://github.com/rh-hideout/pokeemerald-expansion/pull/8680)
+* Move enum by @Bassoonian in [#8739](https://github.com/rh-hideout/pokeemerald-expansion/pull/8739)
+* Extra enum typechecking by @Bassoonian in [#8786](https://github.com/rh-hideout/pokeemerald-expansion/pull/8786)
+* Adds type checking for battler positions by @Bassoonian in [#8792](https://github.com/rh-hideout/pokeemerald-expansion/pull/8792)
+* Updated Lemonade's description's formatting to match the rest of the healing items by @fdeblasio in [#8888](https://github.com/rh-hideout/pokeemerald-expansion/pull/8888)
+* Battle file cleanup & documentation by @Bassoonian in [#8903](https://github.com/rh-hideout/pokeemerald-expansion/pull/8903)
+* Adds ``Item`` enum by @Bassoonian in [#8897](https://github.com/rh-hideout/pokeemerald-expansion/pull/8897)
+ - The struct ``Item`` was renamed to ``ItemInfo`` for consistency with the other structs.
+* Add even more type checking by @Bassoonian in [#8972](https://github.com/rh-hideout/pokeemerald-expansion/pull/8972)
+* More type checking across the repo by @Bassoonian in [#8988](https://github.com/rh-hideout/pokeemerald-expansion/pull/8988)
+* Properly capitalized the comments of new move animations by @fdeblasio in [#9002](https://github.com/rh-hideout/pokeemerald-expansion/pull/9002)
+* Added `enum BattlerId` type checks by @AsparagusEduardo in [#8954](https://github.com/rh-hideout/pokeemerald-expansion/pull/8954)
+* documentation on how to use frlg by @cawtds in [#9045](https://github.com/rh-hideout/pokeemerald-expansion/pull/9045)
+* Remove trainers_frlg.h from repo for gitignore by @grintoul1 in [#9081](https://github.com/rh-hideout/pokeemerald-expansion/pull/9081)
+* docs(dns): add nighttime palette user guide by @izrofid in [#9158](https://github.com/rh-hideout/pokeemerald-expansion/pull/9158)
+* Add defines to Trainer Tower by @fdeblasio in [#9187](https://github.com/rh-hideout/pokeemerald-expansion/pull/9187)
+* Update new mon teachable learnset tutorial by @FosterProgramming in [#9302](https://github.com/rh-hideout/pokeemerald-expansion/pull/9302)
+
+## 👻 Sprites 👻
+### Added
+* Z-A Mega sprites from PokeCommunity by @kittenchilly in [#8945](https://github.com/rh-hideout/pokeemerald-expansion/pull/8945)
+
+### Changed
+* Add Gba-style Substitute by @amiosi in [#8655](https://github.com/rh-hideout/pokeemerald-expansion/pull/8655)
+
+### Fixed
+* Fixes Manaphy egg data blocking compiler with Manaphy disabled by @grintoul1 in [#8671](https://github.com/rh-hideout/pokeemerald-expansion/pull/8671)
+* Fix tera icon palettes by @grintoul1 in [#9208](https://github.com/rh-hideout/pokeemerald-expansion/pull/9208)
+* Fixes post-KO animation assertf trigger caused by OOB battler number by @grintoul1 in [#9343](https://github.com/rh-hideout/pokeemerald-expansion/pull/9343)
+
+## New Contributors
+* @Artrios made their first contribution in [#5428](https://github.com/rh-hideout/pokeemerald-expansion/pull/5428)
+* @Gudf made their first contribution in [#8191](https://github.com/rh-hideout/pokeemerald-expansion/pull/8191)
+* @jtebbe made their first contribution in [#8501](https://github.com/rh-hideout/pokeemerald-expansion/pull/8501)
+* @Kasenn made their first contribution in [#8694](https://github.com/rh-hideout/pokeemerald-expansion/pull/8694)
+* @SabataLunar made their first contribution in [#8926](https://github.com/rh-hideout/pokeemerald-expansion/pull/8926)
+* @luuma made their first contribution in [#9282](https://github.com/rh-hideout/pokeemerald-expansion/pull/9282)
+* @KnightGallade made their first contribution in [#9298](https://github.com/rh-hideout/pokeemerald-expansion/pull/9298)
+
+**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.14.3...expansion/1.15.0
+
+
+
+
diff --git a/docs/tutorials/ai_dynamic_functions.md b/docs/tutorials/ai_dynamic_functions.md
new file mode 100644
index 000000000000..6b07b28766bf
--- /dev/null
+++ b/docs/tutorials/ai_dynamic_functions.md
@@ -0,0 +1,27 @@
+# What are Dynamic AI Functions?
+Dynamic AI functions enable AI behaviour to be controlled on a per-battle basis by being set directly ahead of a particular battle when scripting. They allow for unique move scoring or switching decisions that are not applied at scale to multiple trainers or the entire AI as a whole.
+
+As such they're really useful for one-shot battle setups like boss fights or totem Pokemon or narrative tie-ins like switch happy Jugglers that would benefit from specialized AI that only applies during those specific fights.
+
+There are currently two different types of dynamic AI functions, one that affects move scoring and one that affects switching.
+
+# How do I use the dynamic move scoring function?
+There are a few steps involved:
+- Be sure to set `AI_FLAG_DYNAMIC_FUNC` on the trainer you'll be using your unique behaviour for
+- Write your custom AI logic. Our example for this is `AI_TagBattlePreferFoe`, and you should match its arguments and return structure in your own custom function.
+- In the script the triggers the battle, add a call to `setdynamicaifunc` specifying your function, as in:
+```
+setdynamicaifunc AI_TagBattlePreferFoe
+multi_2_vs_2 TRAINER_SIRIUS_NOVA_HYPERION_TAG, Text_NovaInsurgence_Arrival_Hyperion_Loss, TRAINER_SIRIUS_NOVA_DEIMOS_RECRUIT_TAG, Text_NovaInsurgence_Arrival_DeimosRecruit_Loss, TRAINER_SIRIUS_WHARF_TRITON_PARTNER, TRAINER_PIC_BACK_TRITON
+```
+That's it! The scoring function will be used in the battle immediately following it, and automatically cleared at the end of the battle. You can then use `setdynamicaifunc` with the same or a different AI scoring function as you see fit.
+
+# How do I use the dynamic switching function?
+There are a few steps involved:
+- Write your custom AI logic. Our example for this is `ShouldSwitchDynFuncExample`, and you should match its arguments and return structure in your own custom function.
+- In the script that triggers the battle, add a call to `setdynamicswitchaifunc` specifying your function, as in:
+```
+setdynamicswitchaifunc ShouldSwitchDynFuncExample
+trainerbattle_single TRAINER_TIANA, Route102_Text_TianaIntro, Route102_Text_TianaDefeated
+```
+That's it! The switching function will be used in the battle immediately following it, and automatically cleared at the end of the battle. You can then use `setdynamicswitchaifunc` with the same or a different AI scoring function as you see fit.
diff --git a/docs/tutorials/ai_flags.md b/docs/tutorials/ai_flags.md
index 5f58ef1ff62d..b373a3f07855 100644
--- a/docs/tutorials/ai_flags.md
+++ b/docs/tutorials/ai_flags.md
@@ -147,6 +147,9 @@ Marks the last two Pokémon in the party as Ace Pokémon, with the same behaviou
## `AI_FLAG_OMNISCIENT`
AI has full knowledge of player moves, abilities, and hold items, and can use this knowledge when making decisions.
+## `AI_FLAG_KNOW_OPPONENT_PARTY`
+AI has full knowledge of the species in the player's party, as well as their fainted status; no other omniscient knowledge is included. Functions similarly to a team preview.
+
## `AI_FLAG_ASSUME_STAB`
A significantly more restricted version of `AI_FLAG_OMNISCIENT`, the AI only knows the player's STAB moves, as their existence would be reasonable to assume in almost any case.
@@ -201,3 +204,9 @@ AI will predict what move the player is going to use based on what move it would
## `AI_FLAG_PP_STALL_PREVENTION`
This flag aims to prevent the player from PP stalling the AI by switching between immunities. The AI mon's move scores will slowly decay for absorbed moves over time, eventually making its moves unpredictable. More detailed control for this behaviour can be customized in the `ai.h` config file.
+
+## `AI_FLAG_RANDOMIZE_SWITCHIN`
+AI will randomly choose between eligible switchin candidates rather than always picking the last one in the party. For example, if the AI has two mons that can revenge kill the player's mon after a KO, by default the AI will only track the most recent eligible candidate, and will always send in the last one in party order as a result. With this flag, it will instead track all of the eligible mons, and randomly choose between them when deciding which to send out.
+
+## `AI_FLAG_RANDOMIZE_PARTY_INDICES`
+AI will randomize the order of the mons in their party before battle starts. This means that lead choice is randommized, but so is the last mon for things like Illusion or the Ace flag, so be mindful when using it.
diff --git a/docs/tutorials/ai_logic.md b/docs/tutorials/ai_logic.md
index b910d469461b..1c1d01054948 100644
--- a/docs/tutorials/ai_logic.md
+++ b/docs/tutorials/ai_logic.md
@@ -10,17 +10,17 @@ Open `include/constants/battle_ai.h`. We have many unused flags, but you can add
## 2. Make your new function
-Open `src/battle_ai_main.c`. Search for the array `static s16 (*const sBattleAiFuncTable[])(u8, u8, u16, s16)`. We want to add our new function to this table. Since we have defined our flag as `(1 << 16)`, find the 16th entry in the table (identifiable by the initializer, `[16]`), and replace it with:
+Open `src/battle_ai_main.c`. Search for the array `static s16 (*const sBattleAiFuncTable[])(u8, u8, enum Move, s16)`. We want to add our new function to this table. Since we have defined our flag as `(1 << 16)`, find the 16th entry in the table (identifiable by the initializer, `[16]`), and replace it with:
`[16] = AI_Support, // AI_FLAG_SUPPORT`
-Define your function above the table as `static s16 AI_Support(u8 battlerAtk, u8 battlerDef, u16 move, s16 score);`
+Define your function above the table as `static s16 AI_Support(u8 battlerAtk, u8 battlerDef, enum Move move, s16 score);`
## Make your function do something
at the bottom of the file, add:
```c
-static s16 AI_Support(u8 battlerAtk, u8 battlerDef, u16 move, s16 score)
+static s16 AI_Support(u8 battlerAtk, u8 battlerDef, enum Move move, s16 score)
{
// Add your logic here!
}
diff --git a/docs/tutorials/how_to_delete_vanilla_maps.md b/docs/tutorials/how_to_delete_vanilla_maps.md
new file mode 100644
index 000000000000..ba59aa4ee674
--- /dev/null
+++ b/docs/tutorials/how_to_delete_vanilla_maps.md
@@ -0,0 +1,36 @@
+# Deleting all FRLG maps
+
+A command was added to delete all FRLG maps at once. This doesn't save space in the ROM because the maps are not compiled in the ROM if you are compiling in "emerald mode". This solely exists for users that want to clean up their repo. The command is
+
+```shell
+python dev_scripts/delete_frlg_maps.py
+```
+It will take care of all the map constants in the c files but you will need to fix mention the to fuschia city entrance in the `safari_zone.inc` script.
+
+### Disclaimer: The following is a work-in-progess and the processes described here are not fully tested and will likely break your game! Use at your own risk.
+
+# Deleting vanilla maps
+
+Separately, if you want to delete a singular map, you will need to remove 4 things:
+- the map folder in `data/maps/`
+- the map folder in `data/layouts`
+- the include of the mapscript in `data/event_scripts.s`
+- the name of the map in `data/maps/map_groups.json`
+
+After deleting the layout folder, you will need to run
+```shell
+touch data/layouts/layouts.json
+```
+in order for some things to update properly during compilation
+
+Because vanilla maps are referenced all over the C code, deleting references to them can prevent the project to compile. To avoid this, mapjson will check if vanilla maps are missing and create dummy values for them.
+
+**NOTE**:
+- `mapjson` will _not_ function correctly unless all four of the aforementioned are edited.
+- `mapjson` will also modify `heal_locations.json` if one of the deleted map contained a heal_location.
+- when creating connections between maps, `mapjson` will check if the connected map exist and will not add a connection for a missing map.
+
+## Known issues
+
+- Some maps may still be referenced in ways that cause compilation issues. Usually, it will be scripts that directly reference the old map names.
+- If you try to enter a map that used to be connected to a deleted map, the game will freeze.
diff --git a/docs/tutorials/how_to_frlg.md b/docs/tutorials/how_to_frlg.md
new file mode 100644
index 000000000000..6cb7f41bfb4f
--- /dev/null
+++ b/docs/tutorials/how_to_frlg.md
@@ -0,0 +1,46 @@
+# How to use FireRed/LeafGreen
+
+## How to compile
+```make firered -j