Merge branch 'rh-hideout-master'

This commit is contained in:
RoamerX 2025-12-18 12:08:23 +08:00
commit a9cb28667c
3342 changed files with 70700 additions and 34061 deletions

View File

@ -478,6 +478,33 @@
"doc",
"data"
]
},
{
"login": "shachar700",
"name": "shachar700",
"avatar_url": "https://avatars.githubusercontent.com/u/48739719?v=4",
"profile": "https://github.com/shachar700",
"contributions": [
"code"
]
},
{
"login": "purrfectdoodle",
"name": "Eva",
"avatar_url": "https://avatars.githubusercontent.com/u/105788407?v=4",
"profile": "http://purrfectdoodle.com",
"contributions": [
"design"
]
},
{
"login": "amiosi",
"name": "amiosi",
"avatar_url": "https://avatars.githubusercontent.com/u/44352097?v=4",
"profile": "https://github.com/amiosi",
"contributions": [
"data"
]
}
],
"contributorsPerLine": 7,

3
.gitattributes vendored
View File

@ -18,6 +18,9 @@ Makefile text eol=lf
*.md text eol=lf
*.ps1 text eol=crlf
*.yml text eol=lf
*.party text eol=lf
*.cfg text eol=lf
*.ld text eol=lf
*.png binary
*.bin binary

View File

@ -43,17 +43,16 @@ body:
label: Version
description: What version of pokeemerald-expansion are you using?
options:
- 1.13.3 (Latest release)
- 1.14.1 (Latest release)
- master (default, unreleased bugfixes)
- upcoming (Edge)
- 1.14.0
- 1.13.4
- 1.13.3
- 1.13.2
- 1.13.1
- 1.13.0
- 1.12.3
- 1.12.2
- 1.12.1
- 1.12.0
- pre-1.12.0
- pre-1.13.0
validations:
required: true
- type: input

View File

@ -43,17 +43,16 @@ body:
label: Version
description: What version of pokeemerald-expansion are you using?
options:
- 1.13.3 (Latest release)
- 1.14.1 (Latest release)
- master (default, unreleased bugfixes)
- upcoming (Edge)
- 1.14.0
- 1.13.4
- 1.13.3
- 1.13.2
- 1.13.1
- 1.13.0
- 1.12.3
- 1.12.2
- 1.12.1
- 1.12.0
- pre-1.12.0
- pre-1.13.0
validations:
required: true
- type: input

View File

@ -43,17 +43,16 @@ body:
label: Version
description: What version of pokeemerald-expansion are you using?
options:
- 1.13.3 (Latest release)
- 1.14.1 (Latest release)
- master (default, unreleased bugfixes)
- upcoming (Edge)
- 1.14.0
- 1.13.4
- 1.13.3
- 1.13.2
- 1.13.1
- 1.13.0
- 1.12.3
- 1.12.2
- 1.12.1
- 1.12.0
- pre-1.12.0
- pre-1.13.0
validations:
required: true
- type: input

64
.github/docs_validate/inclusive_summary.py vendored Executable file
View File

@ -0,0 +1,64 @@
#!/usr/bin/python3
"""
Checks that all documentation pages that should be mentioned in
`docs/SUMMARY.md` are mentioned the file
"""
import glob
import re
import os
from pathlib import Path
errorLines = []
if not os.path.exists("Makefile"):
errorLines.append("Please run this script from your root folder.")
summaryFile = Path("docs/SUMMARY.md")
if not errorLines:
if not summaryFile.is_file():
errorLines.append("docs/SUMMARY.md missing")
summaryContents = []
if not errorLines:
with open(summaryFile, 'r', encoding='UTF-8') as file:
entry_pattern = re.compile(r" *\- \[[^\]]*\]\(([^\)]*)\)\n")
lineNo = 0
while line:=file.readline():
lineNo = lineNo + 1
if line == "# Summary\n" or line == "\n":
pass
elif match:=entry_pattern.match(line):
if "" != match.group(1):
summaryContents.append(Path(match.group(1)))
else:
if not errorLines:
errorLines.append("## Unexpected lines in docs/SUMMARY.md")
errorLines.append(f"- {lineNo}: {line.strip()}")
if not errorLines:
for pathName in glob.glob("**/*.md", root_dir="docs", recursive=True):
path = Path(pathName)
if path == Path("SUMMARY.md"):
pass
elif path == Path("changelogs/template.md"):
pass
elif path in summaryContents:
pass
else:
if not errorLines:
errorLines.append("## `docs/**/*.md` files present but not mentioned in `docs/SUMMARY.md`")
errorLines.append("- " + str(path))
if errorLines:
for line in errorLines:
print(line)
if 'GITHUB_STEP_SUMMARY' in os.environ:
with open(os.environ['GITHUB_STEP_SUMMARY'], 'w', encoding='UTF-8') as file:
for line in errorLines:
file.write(line)
file.write('\n')
quit(1)

View File

@ -43,6 +43,18 @@ jobs:
TEST: 1
run: |
make -j${nproc} check
docs_validate:
if: github.actor != 'allcontributors[bot]'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Check that SUMMARY.md includes markdown doc files
run: |
.github/docs_validate/inclusive_summary.py
allcontributors:
if: github.actor == 'allcontributors[bot]'
runs-on: ubuntu-latest

View File

@ -17,7 +17,7 @@ jobs:
fetch-depth: 0
- name: Install latest mdbook
run: |
tag="v0.5.0-beta.1"
tag="v0.5.1"
url="https://github.com/rust-lang/mdbook/releases/download/${tag}/mdbook-${tag}-x86_64-unknown-linux-gnu.tar.gz"
mkdir mdbook
curl -sSL $url | tar -xz --directory=./mdbook

View File

@ -78,6 +78,11 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
<td align="center" valign="top" width="14.28%"><a href="https://github.com/cawtds"><img src="https://avatars.githubusercontent.com/u/38510667?v=4?s=100" width="100px;" alt="cawtds"/><br /><sub><b>cawtds</b></sub></a><br /><a href="https://github.com/rh-hideout/pokeemerald-expansion/commits?author=cawtds" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/fdeblasio"><img src="https://avatars.githubusercontent.com/u/35279583?v=4?s=100" width="100px;" alt="Frank DeBlasio"/><br /><sub><b>Frank DeBlasio</b></sub></a><br /><a href="https://github.com/rh-hideout/pokeemerald-expansion/commits?author=fdeblasio" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://vriska.dev"><img src="https://avatars.githubusercontent.com/u/8355305?v=4?s=100" width="100px;" alt="leo60228"/><br /><sub><b>leo60228</b></sub></a><br /><a href="https://github.com/rh-hideout/pokeemerald-expansion/commits?author=leo60228" title="Documentation">📖</a> <a href="#data-leo60228" title="Data">🔣</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/shachar700"><img src="https://avatars.githubusercontent.com/u/48739719?v=4?s=100" width="100px;" alt="shachar700"/><br /><sub><b>shachar700</b></sub></a><br /><a href="https://github.com/rh-hideout/pokeemerald-expansion/commits?author=shachar700" title="Code">💻</a></td>
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="http://purrfectdoodle.com"><img src="https://avatars.githubusercontent.com/u/105788407?v=4?s=100" width="100px;" alt="Eva"/><br /><sub><b>Eva</b></sub></a><br /><a href="#design-purrfectdoodle" title="Design">🎨</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/amiosi"><img src="https://avatars.githubusercontent.com/u/44352097?v=4?s=100" width="100px;" alt="amiosi"/><br /><sub><b>amiosi</b></sub></a><br /><a href="#data-amiosi" title="Data">🔣</a></td>
</tr>
</tbody>
<tfoot>

View File

@ -32,6 +32,7 @@ Distributions with instructions:
- [Debian](docs/install/linux/DEBIAN.md)
- [Arch Linux](docs/install/linux/ARCH_LINUX.md)
- [NixOS](docs/install/linux/NIXOS.md)
- [Fedora](docs/install/linux/FEDORA.md)
Other distributions have to infer what to do from [general instructions](docs/install/linux/OTHERS.md).

View File

@ -1,12 +1,32 @@
GAME_VERSION ?= EMERALD
TITLE ?= POKEMON EMER
GAME_CODE ?= BPEE
BUILD_NAME ?= emerald
MAP_VERSION ?= emerald
ifeq (firered,$(MAKECMDGOALS))
GAME_VERSION := FIRERED
TITLE := POKEMON FIRE
GAME_CODE := BPRE
BUILD_NAME := firered
MAP_VERSION := firered
else
ifeq (leafgreen,$(MAKECMDGOALS))
GAME_VERSION := LEAFGREEN
TITLE := POKEMON LEAF
GAME_CODE := BPGE
BUILD_NAME := leafgreen
MAP_VERSION := firered
endif
endif
# GBA rom header
TITLE := POKEMON EMER
GAME_CODE := BPEE
MAKER_CODE := 01
REVISION := 0
KEEP_TEMPS ?= 0
# `File name`.gba
FILE_NAME := pokeemerald
FILE_NAME := poke$(BUILD_NAME)
BUILD_DIR := build
# Compares the ROM to a checksum of the original - only makes sense using when non-modern
@ -21,6 +41,9 @@ UNUSED_ERROR ?= 0
DEBUG ?= 0
# Adds -flto flag, which increases link time but results in a more efficient binary (especially in audio processing)
LTO ?= 0
# Makes an optimized build for release, also enabling NDEBUG macro and disabling other debugging features
# Enables LTO by default, but can be changed in the config.mk file
RELEASE ?= 0
ifeq (compare,$(MAKECMDGOALS))
COMPARE := 1
@ -31,6 +54,11 @@ endif
ifeq (debug,$(MAKECMDGOALS))
DEBUG := 1
endif
ifneq (,$(filter release tidyrelease,$(MAKECMDGOALS)))
RELEASE := 1
endif
include config.mk
# Default make rule
all: rom
@ -63,10 +91,15 @@ endif
CPP := $(PREFIX)cpp
ifeq ($(RELEASE),1)
FILE_NAME := $(FILE_NAME)-release
endif
ROM_NAME := $(FILE_NAME).gba
OBJ_DIR_NAME := $(BUILD_DIR)/modern
OBJ_DIR_NAME_TEST := $(BUILD_DIR)/modern-test
OBJ_DIR_NAME_DEBUG := $(BUILD_DIR)/modern-debug
OBJ_DIR_NAME := $(BUILD_DIR)/$(BUILD_NAME)
OBJ_DIR_NAME_TEST := $(BUILD_DIR)/$(BUILD_NAME)-test
OBJ_DIR_NAME_DEBUG := $(BUILD_DIR)/$(BUILD_NAME)-debug
OBJ_DIR_NAME_RELEASE := $(BUILD_DIR)/$(BUILD_NAME)-release
ELF_NAME := $(ROM_NAME:.gba=.elf)
MAP_NAME := $(ROM_NAME:.gba=.map)
@ -86,6 +119,9 @@ endif
ifeq ($(DEBUG),1)
OBJ_DIR := $(OBJ_DIR_NAME_DEBUG)
endif
ifeq ($(RELEASE),1)
OBJ_DIR := $(OBJ_DIR_NAME_RELEASE)
endif
ELF := $(ROM:.gba=.elf)
MAP := $(ROM:.gba=.map)
SYM := $(ROM:.gba=.sym)
@ -110,7 +146,7 @@ TEST_BUILDDIR = $(OBJ_DIR)/$(TEST_SUBDIR)
SHELL := bash -o pipefail
# Set flags for tools
ASFLAGS := -mcpu=arm7tdmi -march=armv4t -meabi=5 --defsym MODERN=1
ASFLAGS := -mcpu=arm7tdmi -march=armv4t -meabi=5 --defsym MODERN=1 --defsym $(GAME_VERSION)=1
INCLUDE_DIRS := include
INCLUDE_CPP_ARGS := $(INCLUDE_DIRS:%=-iquote %)
@ -121,7 +157,13 @@ O_LEVEL ?= g
else
O_LEVEL ?= 2
endif
CPPFLAGS := $(INCLUDE_CPP_ARGS) -Wno-trigraphs -DMODERN=1 -DTESTING=$(TEST) -std=gnu17
CPPFLAGS := $(INCLUDE_CPP_ARGS) -Wno-trigraphs -DMODERN=1 -DTESTING=$(TEST) -D$(GAME_VERSION) -std=gnu17
ifeq ($(RELEASE),1)
override CPPFLAGS += -DRELEASE
ifeq ($(USE_LTO_ON_RELEASE),1)
LTO := 1
endif
endif
ARMCC := $(PREFIX)gcc
PATH_ARMCC := PATH="$(PATH)" $(ARMCC)
CC1 := $(shell $(PATH_ARMCC) --print-prog-name=cc1) -quiet
@ -166,7 +208,7 @@ include make_tools.mk
SMOLTM := $(TOOLS_DIR)/compresSmol/compresSmolTilemap$(EXE)
SMOL := $(TOOLS_DIR)/compresSmol/compresSmol$(EXE)
GFX := $(TOOLS_DIR)/gbagfx/gbagfx$(EXE)
AIF := $(TOOLS_DIR)/aif2pcm/aif2pcm$(EXE)
WAV2AGB := $(TOOLS_DIR)/wav2agb/wav2agb$(EXE)
MID := $(TOOLS_DIR)/mid2agb/mid2agb$(EXE)
SCANINC := $(TOOLS_DIR)/scaninc/scaninc$(EXE)
PREPROC := $(TOOLS_DIR)/preproc/preproc$(EXE)
@ -201,7 +243,7 @@ MISC_TOOL_DIR := $(TOOLS_DIR)/misc
AUTO_GEN_TARGETS += $(INCLUDE_DIRS)/constants/script_commands.h
$(DATA_SRC_SUBDIR)/wild_encounters.h: $(DATA_SRC_SUBDIR)/wild_encounters.json $(WILD_ENCOUNTERS_TOOL_DIR)/wild_encounters_to_header.py $(INCLUDE_DIRS)/config/overworld.h $(INCLUDE_DIRS)/config/dexnav.h
python3 $(WILD_ENCOUNTERS_TOOL_DIR)/wild_encounters_to_header.py > $@
python3 $(WILD_ENCOUNTERS_TOOL_DIR)/wild_encounters_to_header.py
$(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
@ -222,8 +264,8 @@ MAKEFLAGS += --no-print-directory
# Delete files that weren't built properly
.DELETE_ON_ERROR:
RULES_NO_SCAN += libagbsyscall clean clean-assets tidy tidymodern tidycheck generated clean-generated
.PHONY: all rom agbcc modern compare check debug
RULES_NO_SCAN += libagbsyscall clean clean-assets tidy tidymodern tidycheck tidyrelease generated clean-generated
.PHONY: all rom agbcc modern compare check debug release
.PHONY: $(RULES_NO_SCAN)
infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
@ -250,7 +292,7 @@ ifeq ($(SETUP_PREREQS),1)
$(error Errors occurred while building tools. See error messages above for more details)
endif
# Oh and also generate mapjson sources before we use `SCANINC`.
$(foreach line, $(shell $(MAKE) generated | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
$(foreach line, $(shell $(MAKE) MAP_VERSION=$(MAP_VERSION) generated | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
ifneq ($(.SHELLSTATUS),0)
$(error Errors occurred while generating map-related sources. See error messages above for more details)
endif
@ -294,6 +336,7 @@ $(shell mkdir -p $(SUBDIRS))
modern: all
compare: all
debug: all
release: all
# Uncomment the next line, and then comment the 4 lines after it to reenable agbcc.
#agbcc: all
agbcc:
@ -344,7 +387,7 @@ clean-assets:
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.smol' -o -iname '*.fastSmol' -o -iname '*.smolTM' -o -iname '*.rl' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
find $(DATA_ASM_SUBDIR)/maps \( -iname 'connections.inc' -o -iname 'events.inc' -o -iname 'header.inc' \) -exec rm {} +
tidy: tidymodern tidycheck tidydebug
tidy: tidymodern tidycheck tidydebug tidyrelease
tidymodern:
rm -f $(ROM_NAME) $(ELF_NAME) $(MAP_NAME)
@ -357,6 +400,14 @@ tidycheck:
tidydebug:
rm -rf $(DEBUG_OBJ_DIR_NAME)
tidyrelease:
ifeq ($(RELEASE),1)
rm -f $(ROM_NAME) $(ELF_NAME) $(MAP_NAME)
else # Manually remove the release files on clean/tidy
rm -f $(FILE_NAME)-release.gba $(FILE_NAME)-release.elf $(FILE_NAME)-release.map
endif
rm -rf $(OBJ_DIR_NAME_RELEASE)
# Other rules
include graphics_file_rules.mk
include map_data_rules.mk
@ -374,7 +425,7 @@ generated: $(AUTO_GEN_TARGETS)
%.s: ;
%.png: ;
%.pal: ;
%.aif: ;
%.wav: ;
%.1bpp: %.png ; $(GFX) $< $@
%.4bpp: %.png ; $(GFX) $< $@
@ -453,7 +504,7 @@ ifneq ($(NODEP),1)
endif
$(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.s
$(PREPROC) $< charmap.txt | $(CPP) $(INCLUDE_SCANINC_ARGS) - | $(PREPROC) -ie $< charmap.txt | $(AS) $(ASFLAGS) -o $@
$(PREPROC) $< charmap.txt | $(CPP) $(CPPFLAGS) $(INCLUDE_SCANINC_ARGS) - | $(PREPROC) -ie $< charmap.txt | $(AS) $(ASFLAGS) -o $@
$(C_BUILDDIR)/%.d: $(C_SUBDIR)/%.s
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I "" $<
@ -463,7 +514,7 @@ ifneq ($(NODEP),1)
endif
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s
$(PREPROC) $< charmap.txt | $(CPP) $(INCLUDE_SCANINC_ARGS) - | $(PREPROC) -ie $< charmap.txt | $(AS) $(ASFLAGS) -o $@
$(PREPROC) $< charmap.txt | $(CPP) $(CPPFLAGS) $(INCLUDE_SCANINC_ARGS) - | $(PREPROC) -ie $< charmap.txt | $(AS) $(ASFLAGS) -o $@
$(DATA_ASM_BUILDDIR)/%.d: $(DATA_ASM_SUBDIR)/%.s
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I "" $<
@ -522,6 +573,9 @@ $(ROM): $(ELF)
$(OBJCOPY) -O binary $< $@
$(FIX) $@ -p --silent
emerald: all
firered: all
leafgreen: all
# Symbol file (`make syms`)
$(SYM): $(ELF)
$(OBJDUMP) -t $< | sort -u | grep -E "^0[2389]" | $(PERL) -p -e 's/^(\w{8}) (\w).{6} \S+\t(\w{8}) (\S+)$$/\1 \2 \3 \4/g' > $@

View File

@ -17,7 +17,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.13.3 https://github.com/rh-hideout/pokeemerald-expansion/
Based off RHH's pokeemerald-expansion 1.14.1 https://github.com/rh-hideout/pokeemerald-expansion/
```
Please consider [crediting all contributors](CREDITS.md) involved in the project!

View File

@ -9,11 +9,11 @@
.2byte \move
.endm
.macro attackstring
.macro printattackstring
.byte 0x2
.endm
.macro ppreduce
.macro unused_0x3
.byte 0x3
.endm
@ -45,14 +45,16 @@
.byte 0xa
.endm
.macro healthbarupdate battler:req
.macro healthbarupdate battler:req updateState:req
.byte 0xb
.byte \battler
.byte \updateState
.endm
.macro datahpupdate battler:req
.macro datahpupdate battler:req updateState:req
.byte 0xc
.byte \battler
.byte \updateState
.endm
.macro critmessage
@ -363,9 +365,8 @@
.byte 0x3a
.endm
.macro absorbhealthbarupdate battler:req
.macro isdmgblockedbydisguise
.byte 0x3b
.byte \battler
.endm
.macro return
@ -678,10 +679,8 @@
.byte 0x75
.endm
.macro various battler:req, id:req
.macro unused_0x78
.byte 0x76
.byte \battler
.byte \id
.endm
.macro setprotectlike
@ -701,10 +700,10 @@
.4byte \jumpInstr
.endm
.macro tryhealhalfhealth failInstr:req, battler:req
.macro tryhealhalfhealth battler:req, failInstr:req
.byte 0x7b
.4byte \failInstr
.byte \battler
.4byte \failInstr
.endm
.macro trymirrormove
@ -729,14 +728,12 @@
.byte \mode
.endm
.macro trysetrest failInstr:req
.macro trysetrest
.byte 0x81
.4byte \failInstr
.endm
.macro jumpifnotfirstturn jumpInstr:req
.macro unused_0x82
.byte 0x82
.4byte \jumpInstr
.endm
.macro unused_0x83
@ -753,9 +750,8 @@
.byte \id
.endm
.macro stockpiletobasedamage failInstr:req
.macro stockpiletobasedamage
.byte 0x86
.4byte \failInstr
.endm
.macro stockpiletohpheal failInstr:req
@ -767,7 +763,7 @@
callnative BS_RemoveStockpileCounters
.endm
.macro setdrainedhp
.macro unused_0x88
.byte 0x88
.endm
@ -882,7 +878,7 @@
.4byte \failInstr
.endm
.macro metronome
.macro setcalledmove
.byte 0x9e
.endm
@ -943,7 +939,7 @@
.4byte \failInstr
.endm
.macro trysetdestinybondtohappen
.macro unused_0xab
.byte 0xab
.endm
@ -1019,8 +1015,10 @@
.4byte \jumpInstr
.endm
.macro tryrestorehpberry
.macro tryactivateitem battler:req, flag:req
.byte 0xbb
.byte \battler
.byte \flag
.endm
.macro halvehp failInstr:req
@ -1050,9 +1048,8 @@
.byte 0xc2
.endm
.macro trysetfutureattack failInstr:req
.macro setfutureattack
.byte 0xc3
.4byte \failInstr
.endm
.macro trydobeatup endInstr:req, failInstr:req
@ -1102,7 +1099,7 @@
.byte 0xca
.endm
.macro setcharge battler:req
.macro unused_0xcb battler:req
.byte 0xcb
.byte \battler
.endm
@ -1229,10 +1226,8 @@
.4byte \jumpInstr
.endm
.macro jumpifnotcurrentmoveargtype battler:req, failInstr:req
.macro unused_0xE4
.byte 0xe4
.byte \battler
.4byte \failInstr
.endm
.macro pickup
@ -1302,7 +1297,7 @@
.byte 0xf3
.endm
.macro subattackerhpbydmg
.macro unused_0xf4
.byte 0xf4
.endm
@ -1348,7 +1343,7 @@
.byte \trigger
.endm
.macro tryworryseed failInstr:req
.macro tryoverwriteability failInstr:req
.byte 0xfe
.4byte \failInstr
.endm
@ -1383,17 +1378,6 @@
.4byte \failInstr
.endm
.macro jumpifcantfling battler:req, jumpInstr:req
callnative BS_JumpIfCantFling
.byte \battler
.4byte \jumpInstr
.endm
.macro itemstatchangeeffects battler:req
callnative BS_RunStatChangeItems
.byte \battler
.endm
.macro allyswitchswapbattlers
callnative BS_AllySwitchSwapBattler
.endm
@ -1421,9 +1405,10 @@
.4byte \restoreBattlerInstr
.endm
.macro itemcurestatus jumpInstr:req
.macro itemcurestatus jumpInstr:req, restoreBattlerInstr:req
callnative BS_ItemCureStatus
.4byte \jumpInstr
.4byte \restoreBattlerInstr
.endm
.macro itemincreasestat
@ -1443,26 +1428,17 @@
.4byte \failInstr
.endm
.macro setglaiverush
callnative BS_SetGlaiveRush
.endm
.macro setpledge jumpInstr:req
callnative BS_SetPledge
.4byte \jumpInstr
.endm
.macro setpledgestatus battler:req sidestatus:req
.macro setpledgestatus battler:req, sidestatus:req
callnative BS_SetPledgeStatus
.byte \battler
.4byte \sidestatus
.endm
.macro trycopycat failInstr:req
callnative BS_TryCopycat
.4byte \failInstr
.endm
.macro setzeffect
callnative BS_SetZEffect
.endm
@ -1645,14 +1621,6 @@
.4byte \failInstr
.endm
.macro tryupdaterecoiltracker
callnative BS_TryUpdateRecoilTracker
.endm
.macro tryupdateleaderscresttracker
callnative BS_TryUpdateLeadersCrestTracker
.endm
.macro trytidyup clear:req, jumpInstr:req
callnative BS_TryTidyUp
.byte \clear
@ -1765,10 +1733,6 @@
callnative BS_WaitFanfare
.endm
.macro setbeakblast
callnative BS_SetBeakBlast
.endm
.macro cantarshotwork failInstr:req
callnative BS_CanTarShotWork
.4byte \failInstr
@ -1792,6 +1756,10 @@
.2byte \flags
.endm
.macro clearspecialstatuses
callnative BS_ClearSpecialStatuses
.endm
.macro clearmoveresultflags flags:req
callnative BS_ClearMoveResultFlags
.2byte \flags
@ -1803,8 +1771,8 @@
.4byte \failInstr
.endm
.macro jumpifcriticalhit failInstr:req
callnative BS_JumpIfCriticalHit
.macro jumpifnotcriticalhit failInstr:req
callnative BS_JumpIfNotCriticalHit
.4byte \failInstr
.endm
@ -1814,11 +1782,8 @@
.4byte \jumpInstr
.endm
.macro jumpiflastuseditemholdeffect holdEffect:req, secondaryId:req, jumpInstr:req
callnative BS_JumpIfLastUsedItemHoldEffect
.byte \holdEffect
.2byte \secondaryId
.4byte \jumpInstr
.macro tryflingholdeffect
callnative BS_TryFlingHoldEffect
.endm
.macro swapsidestatuses
@ -1924,8 +1889,8 @@
1:
.endm
.macro jumpifabilitycantbesuppressed battler:req, jumpInstr:req
callnative BS_JumpIfAbilityCantBeSuppressed
.macro jumpifabilitycantbereactivated battler:req, jumpInstr:req
callnative BS_JumpIfAbilityCantBeReactivated
.byte \battler
.4byte \jumpInstr
.endm
@ -2181,16 +2146,6 @@
.4byte \failInstr
.endm
.macro suckerpunchcheck failInstr:req
callnative BS_SuckerPunchCheck
.4byte \failInstr
.endm
.macro setsimplebeam failInstr:req
callnative BS_SetSimpleBeam
.4byte \failInstr
.endm
.macro tryentrainment failInstr:req
callnative BS_TryEntrainment
.4byte \failInstr
@ -2204,11 +2159,6 @@
callnative BS_InvertStatStages
.endm
.macro trymefirst failInstr:req
callnative BS_TryMeFirst
.4byte \failInstr
.endm
.macro tryelectrify failInstr:req
callnative BS_TryElectrify
.4byte \failInstr
@ -2225,11 +2175,6 @@
.byte \case_
.endm
.macro trylastresort failInstr:req
callnative BS_TryLastResort
.4byte \failInstr
.endm
.macro tryautotomize failInstr:req
callnative BS_TryAutotomize
.4byte \failInstr
@ -2418,20 +2363,11 @@
.4byte \failInstr
.endm
.macro checkpoltergeist failInstr:req
callnative BS_CheckPoltergeist
.macro setpoltergeistmessage failInstr:req
callnative BS_SetPoltergeistMessage
.4byte \failInstr
.endm
.macro trynoretreat failInstr:req
callnative BS_TryNoRetreat
.4byte \failInstr
.endm
.macro curecertainstatuses
callnative BS_CureCertainStatuses
.endm
.macro tryresetnegativestatstages
callnative BS_TryResetNegativeStatStages
.endm

View File

@ -2332,6 +2332,11 @@
callnative ScriptSetDoubleBattleFlag, requests_effects=1
.endm
@ Stop using the ORAS dowsing machine.
.macro stoporasdowsing
callnative EndORASDowsing
.endm
@ ============================ @
@ FAKE RTC MACROS
@ Will only function if OW_USE_FAKE_RTC is true. If it has any additional requirements, it will be listed accordingly.
@ -2674,8 +2679,34 @@
.2byte \battlePartner
.endm
@ Manually buffer a string as the speaker's name for namebox.
@ The next shown message/msgbox will include a namebox, if the provided string is not NULL.
@ An SP_NAME_* constant can also be used, it'll take the name from gSpeakerNamesTable instead.
.macro setspeaker name:req
callnative SetSpeaker
.4byte \name
.endm
@ VS Seeker
.macro vsseeker_rematchid rematchId:req
callnative NativeVsSeekerRematchId, requests_effects=1
.2byte \rematchId
.endm
@ Sets the move relearner state
.macro setmoverelearnerstate state:req
callnative ScrCmd_setmoverelearnerstate, requests_effects=1
.2byte \state
.endm
@ Retrieves the move relearner state and stores it in the specified var
.macro getmoverelearnerstate varId:req
callnative ScrCmd_getmoverelearnerstate, requests_effects=1
.4byte \varId
.endm
@ Execute script if bag has TMs and/or HMs
.macro istmrelearneractive destination:req
callnative ScrCmd_istmrelearneractive, requests_effects=1
.4byte \destination
.endm

View File

@ -20,16 +20,17 @@ $(MID_BUILDDIR)/%.o: $(MID_ASM_DIR)/%.s
$(AS) $(ASFLAGS) -I sound -o $@ $<
# Compressed cries
$(CRY_BIN_DIR)/%.bin: $(CRY_SUBDIR)/%.aif
$(AIF) $< $@ --compress
$(CRY_BIN_DIR)/%.bin: $(CRY_SUBDIR)/%.wav
# NOTE: If using ipatix's High Quality Audio Mixer, remove "--no-pad" below.
$(WAV2AGB) -b -c -l 1 --no-pad $< $@
# Uncompressed cries
$(CRY_BIN_DIR)/uncomp_%.bin: $(CRY_SUBDIR)/uncomp_%.aif
$(AIF) $< $@
# Uncompressed sounds
$(SOUND_BIN_DIR)/%.bin: sound/%.aif
$(AIF) $< $@
$(SOUND_BIN_DIR)/%.bin: sound/%.wav
$(WAV2AGB) -b $< $@
# For each line in midi.cfg, we do some trickery to convert it into a make rule for the `.mid` file described on the line
# Data following the colon in said file corresponds to arguments passed into mid2agb

View File

@ -456,6 +456,13 @@ JPN = FC 15
ENG = FC 16
PAUSE_MUSIC = FC 17
RESUME_MUSIC = FC 18
SPEAKER = FC 19
@ Speaker names, the order must be matching with include/constants/speaker_names.h
NAME_NONE = 00
NAME_MOM = 01
NAME_PLAYER = 02
NAME_COUNT = 03
@ fonts

2
config.mk Normal file
View File

@ -0,0 +1,2 @@
# Enable LTO when making a release build. Disable by setting to 0.
USE_LTO_ON_RELEASE ?= 1

View File

@ -3361,6 +3361,7 @@ gBattleAnimMove_AquaJet::
visible ANIM_ATTACKER
clearmonbg ANIM_DEF_PARTNER
blendoff
setarg 7, 0x1000
end
gBattleAnimMove_AttackOrder::
@ -31083,6 +31084,17 @@ gBattleAnimStatus_Nightmare::
clearmonbg ANIM_DEF_PARTNER
end
gBattleAnimStatus_Frostbite::
playsewithpan SE_M_ICY_WIND, 0
loadspritegfx ANIM_TAG_ICE_CRYSTALS
monbg ANIM_DEF_PARTNER
splitbgprio ANIM_TARGET
call IceCrystalEffectShort
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, 5, 7, 0, RGB(0, 20, 31)
waitforvisualfinish
clearmonbg ANIM_DEF_PARTNER
end
gBattleAnimGeneral_StatsChange::
createvisualtask AnimTask_StatsChange, 5
waitforvisualfinish
@ -32122,6 +32134,16 @@ gBattleAnimGeneral_Swamp::
blendoff
end
gBattleAnimGeneral_SwapToSubstitute::
createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, FALSE
waitforvisualfinish
end
gBattleAnimGeneral_SwapFromSubstitute::
createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, TRUE
waitforvisualfinish
end
SnatchMoveTrySwapFromSubstitute:
createvisualtask AnimTask_IsAttackerBehindSubstitute, 2
jumprettrue SnatchMoveSwapSubstituteForMon

File diff suppressed because it is too large Load Diff

View File

@ -49,9 +49,8 @@ BattleScript_UseItemMessage:
BattleScript_ItemRestoreHPRet:
clearmoveresultflags MOVE_RESULT_NO_EFFECT
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
healthbarupdate BS_SCRIPTING
datahpupdate BS_SCRIPTING
healthbarupdate BS_SCRIPTING, PASSIVE_HP_UPDATE
datahpupdate BS_SCRIPTING, PASSIVE_HP_UPDATE
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
waitmessage B_WAIT_TIME_LONG
return
@ -75,6 +74,10 @@ BattleScript_ItemRestoreHP_Party::
return
BattleScript_ItemRestoreHP_SendOutRevivedBattler:
switchhandleorder BS_SCRIPTING, 0
getswitchedmondata BS_SCRIPTING
switchindataupdate BS_SCRIPTING
trytoclearprimalweather
switchinanim BS_SCRIPTING, FALSE, FALSE
waitstate
switchineffects BS_SCRIPTING
@ -83,13 +86,18 @@ BattleScript_ItemRestoreHP_SendOutRevivedBattler:
BattleScript_ItemCureStatus::
call BattleScript_UseItemMessage
BattleScript_ItemCureStatusAfterItemMsg:
itemcurestatus BattleScript_ItemCureStatusEnd
updatestatusicon BS_SCRIPTING
itemcurestatus BattleScript_ItemCureStatusEnd, BattleScript_CureStatus_Battler
printstring STRINGID_ITEMCUREDSPECIESSTATUS
waitmessage B_WAIT_TIME_LONG
BattleScript_ItemCureStatusEnd:
end
BattleScript_CureStatus_Battler::
updatestatusicon BS_SCRIPTING
printstring STRINGID_ITEMCUREDSPECIESSTATUS
waitmessage B_WAIT_TIME_LONG
end
BattleScript_ItemHealAndCureStatus::
call BattleScript_UseItemMessage
itemrestorehp BattleScript_ItemCureStatusAfterItemMsg, BattleScript_ItemHealAndCureStatus_Battler

View File

@ -3,6 +3,7 @@
#include "config/item.h"
#include "constants/global.h"
#include "constants/apprentice.h"
#include "constants/apricorn_tree.h"
#include "constants/battle.h"
#include "constants/battle_arena.h"
#include "constants/battle_dome.h"
@ -43,6 +44,7 @@
#include "constants/maps.h"
#include "constants/mauville_old_man.h"
#include "constants/metatile_labels.h"
#include "constants/move_relearner.h"
#include "constants/moves.h"
#include "constants/party_menu.h"
#include "constants/pokedex.h"
@ -62,6 +64,7 @@
#include "constants/union_room.h"
#include "constants/vars.h"
#include "constants/weather.h"
#include "constants/speaker_names.h"
.include "asm/macros.inc"
.include "asm/macros/event.inc"
.include "constants/constants.inc"
@ -71,6 +74,7 @@
.set ALLOCATE_SCRIPT_CMD_TABLE, 1
.include "data/script_cmd_table.inc"
.align 2
gSpecialVars::
.4byte gSpecialVar_0x8000
.4byte gSpecialVar_0x8001
@ -695,6 +699,7 @@ EventScript_SetBrineyLocation_Route109::
.include "data/scripts/obtain_item.inc"
.include "data/scripts/record_mix.inc"
.include "data/scripts/pc.inc"
.include "data/scripts/move_relearner.inc"
@ scripts/notices.inc? signs.inc? See comment about text/notices.inc
Common_EventScript_ShowPokemartSign::
@ -880,6 +885,7 @@ Common_EventScript_PlayerHandedOverTheItem::
.include "data/text/pkmn_center_nurse.inc"
.include "data/text/mart_clerk.inc"
.include "data/text/obtain_item.inc"
.include "data/text/move_relearner.inc"
@ The below and surf.inc could be split into some text/notices.inc
gText_PokemartSign::
@ -1109,9 +1115,6 @@ EventScript_VsSeekerChargingDone::
.include "data/scripts/cable_club.inc"
.include "data/text/cable_club.inc"
.include "data/scripts/contest_hall.inc"
.include "data/text/contest_strings.inc"
.include "data/text/contest_link.inc"
.include "data/text/contest_painting.inc"
.include "data/scripts/tv.inc"
.include "data/text/tv.inc"
.include "data/scripts/interview.inc"
@ -1155,3 +1158,5 @@ EventScript_VsSeekerChargingDone::
.include "data/text/save.inc"
.include "data/text/birch_speech.inc"
.include "data/scripts/dexnav.inc"
.include "data/scripts/battle_frontier.inc"
.include "data/scripts/apricorn_tree.inc"

View File

@ -83,6 +83,7 @@ gFieldEffectScriptPointers::
.4byte gFieldEffectScript_Defog @ FLDEFF_DEFOG
.4byte gFieldEffectScript_UseRockClimb @ FLDEFF_USE_ROCK_CLIMB
.4byte gFieldEffectScript_RockClimbDust @ FLDEFF_ROCK_CLIMB_DUST
.4byte gFieldEffectScript_ORASDowse @ FLDEFF_ORAS_DOWSE
gFieldEffectScript_ExclamationMarkIcon1::
field_eff_callnative FldEff_ExclamationMarkIcon
@ -386,6 +387,7 @@ gFieldEffectScript_CaveDust::
gFieldEffectScript_Defog::
field_eff_callnative FldEff_Defog
field_eff_end
gFieldEffectScript_UseRockClimb:: @ 82DBC3F
field_eff_callnative FldEff_UseRockClimb
field_eff_end
@ -394,3 +396,7 @@ gFieldEffectScript_RockClimbDust:: @ 82DBB28
field_eff_loadfadedpal_callnative gSpritePalette_BigDust, FldEff_RockClimbDust
field_eff_end
gFieldEffectScript_ORASDowse::
field_eff_callnative FldEff_ORASDowsing
field_eff_end

View File

@ -13,6 +13,7 @@
#include "constants/trainer_types.h"
#include "constants/berry.h"
#include "constants/species.h"
#include "constants/apricorn_tree.h"
.include "asm/macros.inc"
.include "constants/constants.inc"

View File

@ -182,10 +182,14 @@ BattleFrontier_BattleArenaLobby_EventScript_NotEnoughValidMons::
BattleFrontier_BattleArenaLobby_EventScript_NotEnoughValidMonsLv50::
msgbox BattleFrontier_BattleArenaLobby_Text_NotEnoughValidMonsLv50, MSGBOX_DEFAULT
call BattleFrontier_ShowCaughtBannedSpecies
msgbox BattleFrontier_BattleArenaLobby_Text_NotEnoughValidMonsEnd, MSGBOX_DEFAULT
goto BattleFrontier_BattleArenaLobby_EventScript_EndCancelChallenge
BattleFrontier_BattleArenaLobby_EventScript_NotEnoughValidMonsLvOpen::
msgbox BattleFrontier_BattleArenaLobby_Text_NotEnoughValidMonsLvOpen, MSGBOX_DEFAULT
call BattleFrontier_ShowCaughtBannedSpecies
msgbox BattleFrontier_BattleArenaLobby_Text_NotEnoughValidMonsEnd, MSGBOX_DEFAULT
goto BattleFrontier_BattleArenaLobby_EventScript_EndCancelChallenge
BattleFrontier_BattleArenaLobby_EventScript_CancelChallengeSaveFailed::
@ -375,10 +379,13 @@ BattleFrontier_BattleArenaLobby_Text_SelectThreeMons:
.string "好的,\n请选择参加的3只宝可梦。$"
BattleFrontier_BattleArenaLobby_Text_NotEnoughValidMonsLvOpen:
.string "尊敬的挑战者!\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}无法参加对战!\p请在准备就绪之后\n再来参加吧!$"
.string "尊敬的挑战者!\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}。$"
BattleFrontier_BattleArenaLobby_Text_NotEnoughValidMonsEnd:
.string "无法参加对战!\p请在准备就绪之后\n再来参加吧!$"
BattleFrontier_BattleArenaLobby_Text_NotEnoughValidMonsLv50:
.string "尊敬的挑战者!\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只等级50以内的\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}无法参加对战!\p请在准备就绪之后\n再来参加吧!$"
.string "尊敬的挑战者!\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只等级50以内的\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}$"
BattleFrontier_BattleArenaLobby_Text_GuideYouToArena:
.string "现在我将带您前往对战竞技场。$"

View File

@ -210,10 +210,14 @@ BattleFrontier_BattleDomeLobby_EventScript_NotEnoughValidMons::
BattleFrontier_BattleDomeLobby_EventScript_NotEnoughValidMonsLv50::
msgbox BattleFrontier_BattleDomeLobby_Text_NotEnoughValidMonsLv50, MSGBOX_DEFAULT
call BattleFrontier_ShowCaughtBannedSpecies
msgbox BattleFrontier_BattleDomeLobby_Text_NotEnoughValidMonsEnd, MSGBOX_DEFAULT
goto BattleFrontier_BattleDomeLobby_EventScript_EndCancelChallenge
BattleFrontier_BattleDomeLobby_EventScript_NotEnoughValidMonsLvOpen::
msgbox BattleFrontier_BattleDomeLobby_Text_NotEnoughValidMonsLvOpen, MSGBOX_DEFAULT
call BattleFrontier_ShowCaughtBannedSpecies
msgbox BattleFrontier_BattleDomeLobby_Text_NotEnoughValidMonsEnd, MSGBOX_DEFAULT
goto BattleFrontier_BattleDomeLobby_EventScript_EndCancelChallenge
BattleFrontier_BattleDomeLobby_EventScript_CancelChallengeSaveFailed::
@ -455,10 +459,13 @@ BattleFrontier_BattleDomeLobby_Text_SelectThreeMons:
.string "请挑选参加的\n3只宝可梦。$"
BattleFrontier_BattleDomeLobby_Text_NotEnoughValidMonsLvOpen:
.string "很抱歉!\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只不同种类的\n宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}无法参加对战!\p请在准备就绪之后\n再来参加吧!$"
.string "很抱歉!\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只不同种类的\n宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}$"
BattleFrontier_BattleDomeLobby_Text_NotEnoughValidMonsEnd:
.string "请在准备就绪之后,\n再来参加吧!$"
BattleFrontier_BattleDomeLobby_Text_NotEnoughValidMonsLv50:
.string "很抱歉!\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只等级50以内的\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}无法参加对战!\p请在准备就绪之后\n再来参加吧!$"
.string "很抱歉!\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只等级50以内的\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}$"
BattleFrontier_BattleDomeLobby_Text_ShowYouToBattleDome:
.string "现在我将带您前往\n对战巨蛋。$"

View File

@ -202,10 +202,14 @@ BattleFrontier_BattlePalaceLobby_EventScript_NotEnoughValidMons::
BattleFrontier_BattlePalaceLobby_EventScript_NotEnoughValidMonsLv50::
msgbox BattleFrontier_BattlePalaceLobby_Text_NotEnoughValidMonsLv50, MSGBOX_DEFAULT
call BattleFrontier_ShowCaughtBannedSpecies
msgbox BattleFrontier_BattlePalaceLobby_Text_NotEnoughValidMonsEnd, MSGBOX_DEFAULT
goto BattleFrontier_BattlePalaceLobby_EventScript_EndCancelChallenge
BattleFrontier_BattlePalaceLobby_EventScript_NotEnoughValidMonsLvOpen::
msgbox BattleFrontier_BattlePalaceLobby_Text_NotEnoughValidMonsLvOpen, MSGBOX_DEFAULT
call BattleFrontier_ShowCaughtBannedSpecies
msgbox BattleFrontier_BattlePalaceLobby_Text_NotEnoughValidMonsEnd, MSGBOX_DEFAULT
goto BattleFrontier_BattlePalaceLobby_EventScript_EndCancelChallenge
BattleFrontier_BattlePalaceLobby_EventScript_CancelChallengeSaveFailed::
@ -390,10 +394,13 @@ BattleFrontier_BattlePalaceLobby_Text_WhichChallenge:
.string "对战厅有2种\nLv. 50级和自由等级\l您要挑战哪种$"
BattleFrontier_BattlePalaceLobby_Text_NotEnoughValidMonsLv50:
.string "哎……\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只等级50以内的\n不同种类的宝可梦,\p并且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}无法参加对战!\p请在准备就绪之后\n再来参加吧。$"
.string "哎……\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只等级50以内的\n不同种类的宝可梦,\p并且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}$"
BattleFrontier_BattlePalaceLobby_Text_NotEnoughValidMonsEnd:
.string "请在准备就绪之后,\n再来参加吧。$"
BattleFrontier_BattlePalaceLobby_Text_NotEnoughValidMonsLvOpen:
.string "哎……\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只\n不同种类的宝可梦,\p并且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}无法参加对战!\p请在准备就绪之后\n再来参加吧。$"
.string "哎……\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只\n不同种类的宝可梦,\p并且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}$"
BattleFrontier_BattlePalaceLobby_Text_NowSelectThreeMons:
.string "好的。那么请选择要参加的\n3只宝可梦。$"

View File

@ -172,10 +172,14 @@ BattleFrontier_BattlePikeLobby_EventScript_NotEnoughValidMons::
BattleFrontier_BattlePikeLobby_EventScript_NotEnoughValidMonsLv50::
msgbox BattleFrontier_BattlePikeLobby_Text_NotEnoughValidMonsLv50, MSGBOX_DEFAULT
call BattleFrontier_ShowCaughtBannedSpecies
msgbox BattleFrontier_BattlePikeLobby_Text_NotEnoughValidMonsEnd, MSGBOX_DEFAULT
goto BattleFrontier_BattlePikeLobby_EventScript_EndCancelChallenge
BattleFrontier_BattlePikeLobby_EventScript_NotEnoughValidMonsLvOpen::
msgbox BattleFrontier_BattlePikeLobby_Text_NotEnoughValidMonsLvOpen, MSGBOX_DEFAULT
call BattleFrontier_ShowCaughtBannedSpecies
msgbox BattleFrontier_BattlePikeLobby_Text_NotEnoughValidMonsEnd, MSGBOX_DEFAULT
goto BattleFrontier_BattlePikeLobby_EventScript_EndCancelChallenge
BattleFrontier_BattlePikeLobby_EventScript_CancelChallengeSaveFailed::
@ -285,10 +289,13 @@ BattleFrontier_BattlePikeLobby_Text_WhichChallengeMode:
.string "您有2个选择\nLv. 50级和自由等级。\l要挑战哪个$"
BattleFrontier_BattlePikeLobby_Text_NotEnoughValidMonsLv50:
.string "冒昧打扰,但……\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只等级50以内的\n不同种类的宝可梦,\p并且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}无法参加对战!\p请在准备就绪之后\n再来参加吧……$"
.string "冒昧打扰,但……\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只等级50以内的\n不同种类的宝可梦,\p并且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}$"
BattleFrontier_BattlePikeLobby_Text_NotEnoughValidMonsEnd:
.string "请在准备就绪之后,\n再来参加吧……$"
BattleFrontier_BattlePikeLobby_Text_NotEnoughValidMonsLvOpen:
.string "冒昧打扰,但……\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只\n不同种类的宝可梦,\p并且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}无法参加对战!\p请在准备就绪之后\n再来参加吧……$"
.string "冒昧打扰,但……\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只\n不同种类的宝可梦,\p并且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}$"
BattleFrontier_BattlePikeLobby_Text_PleaseChooseThreeMons:
.string "请选择要参加挑战的\n3只宝可梦……$"

View File

@ -184,10 +184,14 @@ BattleFrontier_BattlePyramidLobby_EventScript_NotEnoughValidMons::
BattleFrontier_BattlePyramidLobby_EventScript_NotEnoughValidMonsLv50::
msgbox BattleFrontier_BattlePyramidLobby_Text_NotEnoughValidMonsLv50, MSGBOX_DEFAULT
call BattleFrontier_ShowCaughtBannedSpecies
msgbox BattleFrontier_BattlePyramidLobby_Text_NotEnoughValidMonsEnd, MSGBOX_DEFAULT
goto BattleFrontier_BattlePyramidLobby_EventScript_EndCancelChallenge
BattleFrontier_BattlePyramidLobby_EventScript_NotEnoughValidMonsLvOpen::
msgbox BattleFrontier_BattlePyramidLobby_Text_NotEnoughValidMonsLvOpen, MSGBOX_DEFAULT
call BattleFrontier_ShowCaughtBannedSpecies
msgbox BattleFrontier_BattlePyramidLobby_Text_NotEnoughValidMonsEnd, MSGBOX_DEFAULT
goto BattleFrontier_BattlePyramidLobby_EventScript_EndCancelChallenge
BattleFrontier_BattlePyramidLobby_EventScript_CancelChallengeSaveFailed::
@ -544,10 +548,13 @@ BattleFrontier_BattlePyramidLobby_Text_SelectThreeMons:
.string "好的,请选择要参加挑战的\n3只宝可梦。$"
BattleFrontier_BattlePyramidLobby_Text_NotEnoughValidMonsLvOpen:
.string "探险家啊,有点小问题!\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只\n不同种类的宝可梦,\p并且记得要取下它们携带的道具\n才可参加对战。\p此外{STR_VAR_1}无法参加对战\p准备就绪后\n请告诉我一声。$"
.string "探险家啊,有点小问题!\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只\n不同种类的宝可梦,\p并且记得要取下它们携带的道具\n才可参加对战。\p此外{STR_VAR_1}$"
BattleFrontier_BattlePyramidLobby_Text_NotEnoughValidMonsLv50:
.string "探险家啊,有点小问题!\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只等级50以内的\n不同种类的宝可梦,\p并且记得要取下它们携带的道具\n才可参加对战。\p此外{STR_VAR_1}无法参加对战!\p准备就绪后\n请告诉我一声。$"
.string "探险家啊,有点小问题!\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只等级50以内的\n不同种类的宝可梦,\p并且记得要取下它们携带的道具\n才可参加对战。\p此外{STR_VAR_1}$"
BattleFrontier_BattlePyramidLobby_Text_NotEnoughValidMonsEnd:
.string "准备就绪后,\n请告诉我一声。$"
BattleFrontier_BattlePyramidLobby_Text_OkayToSaveBeforeChallenge:
.string "进入对战金字塔之前\n要先写入记录,可以吗?$"

View File

@ -543,16 +543,22 @@ BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLv50::
case FRONTIER_MODE_SINGLES, BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLv50Singles
case FRONTIER_MODE_DOUBLES, BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLv50Doubles
msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLv50Multis, MSGBOX_DEFAULT
call BattleFrontier_ShowCaughtBannedSpecies
msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsEnd, MSGBOX_DEFAULT
goto BattleFrontier_BattleTowerLobby_EventScript_EndCancelChallenge
end
BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLv50Singles::
msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLv50Singles, MSGBOX_DEFAULT
call BattleFrontier_ShowCaughtBannedSpecies
msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsEnd, MSGBOX_DEFAULT
goto BattleFrontier_BattleTowerLobby_EventScript_EndCancelChallenge
end
BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLv50Doubles::
msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLv50Doubles, MSGBOX_DEFAULT
call BattleFrontier_ShowCaughtBannedSpecies
msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsEnd, MSGBOX_DEFAULT
goto BattleFrontier_BattleTowerLobby_EventScript_EndCancelChallenge
end
@ -561,16 +567,22 @@ BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLvOpen::
case FRONTIER_MODE_SINGLES, BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLvOpenSingles
case FRONTIER_MODE_DOUBLES, BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLvOpenDoubles
msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLvOpenMultis, MSGBOX_DEFAULT
call BattleFrontier_ShowCaughtBannedSpecies
msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsEnd, MSGBOX_DEFAULT
goto BattleFrontier_BattleTowerLobby_EventScript_EndCancelChallenge
end
BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLvOpenSingles::
msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLvOpenSingles, MSGBOX_DEFAULT
call BattleFrontier_ShowCaughtBannedSpecies
msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsEnd, MSGBOX_DEFAULT
goto BattleFrontier_BattleTowerLobby_EventScript_EndCancelChallenge
end
BattleFrontier_BattleTowerLobby_EventScript_NotEnoughValidMonsLvOpenDoubles::
msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLvOpenDoubles, MSGBOX_DEFAULT
call BattleFrontier_ShowCaughtBannedSpecies
msgbox BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsEnd, MSGBOX_DEFAULT
goto BattleFrontier_BattleTowerLobby_EventScript_EndCancelChallenge
end
@ -1019,29 +1031,32 @@ BattleFrontier_BattleTowerLobby_Text_RecordLastMatch:
@ Unused
BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLv50:
.string "这位客人!\p您符合条件的宝可梦不足{STR_VAR_2}只。\p需要有{STR_VAR_2}只不同的等级50以内的\n宝可梦才可以参加比赛,\p同时这些宝可梦携带的道具\n也需要各不相同。\p蛋{STR_VAR_1}不能参加。\p准备好之后再来吧。$"
.string "这位客人!\p您符合条件的宝可梦不足{STR_VAR_2}只。\p需要有{STR_VAR_2}只不同的等级50以内的\n宝可梦才可以参加比赛,\p同时这些宝可梦携带的道具\n也需要各不相同。\p蛋{STR_VAR_1}。$"
BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsEnd:
.string "准备好之后再来吧。$"
@ Unused
BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLvOpen:
.string "这位客人!\p您符合条件的宝可梦不足{STR_VAR_2}只。\p需要有{STR_VAR_2}只不同的宝可梦\n才可以参加比赛,\p同时这些宝可梦携带的道具\n也需要各不相同。\p蛋{STR_VAR_1}不能参加。\p准备好之后再来吧$"
.string "这位客人!\p您符合条件的宝可梦不足{STR_VAR_2}只。\p需要有{STR_VAR_2}只不同的宝可梦\n才可以参加比赛,\p同时这些宝可梦携带的道具\n也需要各不相同。\p蛋{STR_VAR_1}$"
BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLv50Singles:
.string "这位客人!\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只等级50以内的\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}无法参加对战!\p请在准备就绪之后\n再来参加吧$"
.string "这位客人!\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只等级50以内的\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}$"
BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLvOpenSingles:
.string "这位客人!\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}无法参加对战!\p请在准备就绪之后\n再来参加吧$"
.string "这位客人!\p您能够参加对战的\n宝可梦不满3只。\p您需要准备3只\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}$"
BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLv50Doubles:
.string "这位客人!\p您能够参加对战的\n宝可梦不满4只。\p您需要准备4只等级50以内的\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}无法参加对战!\p请在准备就绪之后\n再来参加吧$"
.string "这位客人!\p您能够参加对战的\n宝可梦不满4只。\p您需要准备4只等级50以内的\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}$"
BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLvOpenDoubles:
.string "这位客人!\p您能够参加对战的\n宝可梦不满4只。\p您需要准备4只\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}无法参加对战!\p请在准备就绪之后\n再来参加吧$"
.string "这位客人!\p您能够参加对战的\n宝可梦不满4只。\p您需要准备4只\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}$"
BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLv50Multis:
.string "这位客人!\p您能够参加对战的\n宝可梦不满2只。\p您需要准备2只等级50以内的\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}无法参加对战!\p请在准备就绪之后\n再来参加吧$"
.string "这位客人!\p您能够参加对战的\n宝可梦不满2只。\p您需要准备2只等级50以内的\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}$"
BattleFrontier_BattleTowerLobby_Text_NotEnoughValidMonsLvOpenMultis:
.string "这位客人!\p您能够参加对战的\n宝可梦不满2只。\p您需要准备2只\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}无法参加对战!\p请在准备就绪之后\n再来参加吧$"
.string "这位客人!\p您能够参加对战的\n宝可梦不满2只。\p您需要准备2只\n不同种类的宝可梦,\p且让它们分别携带不同道具\n才可参加对战。\p此外{STR_VAR_1}$"
BattleFrontier_BattleTowerLobby_Text_WelcomSingleBattle:
.string "训练家的才能\n将在此接受考验!\p欢迎来到对战塔\p我是您的单打对战间向导。$"

View File

@ -22,6 +22,7 @@ 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
waitstate
goto_if_eq VAR_0x8004, PARTY_NOTHING_CHOSEN, FallarborTown_MoveRelearnersHouse_EventScript_ComeBackWithHeartScale

View File

@ -620,72 +620,5 @@
],
"gMapGroup_IndoorRoute124": [
"Route124_DivingTreasureHuntersHouse"
],
"connections_include_order": [
"LittlerootTown",
"OldaleTown",
"DewfordTown",
"LavaridgeTown",
"FallarborTown",
"VerdanturfTown",
"PacifidlogTown",
"PetalburgCity",
"SlateportCity",
"MauvilleCity",
"RustboroCity",
"FortreeCity",
"LilycoveCity",
"MossdeepCity",
"SootopolisCity",
"EverGrandeCity",
"Route101",
"Route102",
"Route103",
"Route104",
"Route105",
"Route106",
"Route107",
"Route108",
"Route109",
"Route110",
"Route111",
"Route112",
"Route113",
"Route114",
"Route115",
"Route116",
"Route117",
"Route118",
"Route119",
"Route120",
"Route121",
"Route122",
"Route123",
"Route124",
"Route125",
"Route126",
"Route127",
"Route128",
"Route129",
"Route130",
"Route131",
"Route132",
"Route133",
"Route134",
"Underwater_Route105",
"Underwater_Route124",
"Underwater_Route125",
"Underwater_Route126",
"Underwater_Route127",
"Underwater_Route128",
"Underwater_Route129",
"SafariZone_Northwest",
"SafariZone_North",
"SafariZone_Southwest",
"SafariZone_South",
"SafariZone_Northeast",
"SafariZone_Southeast",
"BattleFrontier_OutsideWest",
"BattleFrontier_OutsideEast"
]
}

View File

@ -0,0 +1,89 @@
ApricornTreeScript::
lock
faceplayer
message ApricornTree_Text_Intro
waitmessage
special ObjectEventInteractionGetApricornTreeData
goto_if_gt VAR_0x8005, 0, ApricornTree_EventScript_WantToPick
message ApricornTree_Text_Empty
waitmessage
waitbuttonpress
release
end
ApricornTree_EventScript_WantToPick::
buffernumberstring STR_VAR_2, VAR_0x8005
msgbox ApricornTree_Text_WantToPick, MSGBOX_YESNO
goto_if_eq VAR_RESULT, YES, ApricornTree_EventScript_PickApricorn
goto_if_eq VAR_RESULT, NO, ApricornTree_EventScript_CancelPickingApricorn
.set APRICORN_NORMAL_BAG_FULL, 0
.set APRICORN_NORMAL_SPACE_IN_BAG, 1
ApricornTree_EventScript_PickApricorn::
special ObjectEventInteractionPickApricornTree
call EventScript_BufferPocketNameAndTryFanfare
goto_if_eq VAR_0x8006, APRICORN_NORMAL_BAG_FULL, ApricornTree_EventScript_PocketFull
message ApricornTree_Text_PickedTheApricorn
.if OW_SHOW_ITEM_DESCRIPTIONS != OW_ITEM_DESCRIPTIONS_OFF
copyvar VAR_0x8006 VAR_0x8004
.endif
delay 10
.if OW_SHOW_ITEM_DESCRIPTIONS != OW_ITEM_DESCRIPTIONS_OFF
showberrydescription
.endif
playfanfare MUS_OBTAIN_BERRY
waitmessage
waitfanfare
waitbuttonpress
message ApricornTree_Text_PutAwayApricorn
waitmessage
waitbuttonpress
.if OW_SHOW_ITEM_DESCRIPTIONS != OW_ITEM_DESCRIPTIONS_OFF
hideitemdescription
.endif
release
end
ApricornTree_EventScript_PocketFull::
message ApricornTree_Text_PocketFull
waitmessage
waitbuttonpress
release
end
ApricornTree_EventScript_CancelPickingApricorn::
message ApricornTree_Text_ApricornLeftUnpicked
waitmessage
waitbuttonpress
release
end
ApricornTree_Text_Intro:
.string "It's an Apricorn Tree!$"
ApricornTree_Text_Empty:
.string "There are no Apricorns…$"
ApricornTree_Text_WantToPick:
.string "…It's {STR_VAR_2} {STR_VAR_1}!\p"
.string "Do you want to pick the\n"
.string "{STR_VAR_1}?$"
ApricornTree_Text_PickedTheApricorn:
.string "{PLAYER} obtained\n"
.string "{STR_VAR_2} {STR_VAR_1}.$"
ApricornTree_Text_PutAwayApricorn:
.string "{PLAYER} put away the\n"
.string "{STR_VAR_1} in\l"
.string "the BAG's {STR_VAR_3} POCKET.$"
ApricornTree_Text_PocketFull:
.string "The BAG's {STR_VAR_3} POCKET is full.\p"
.string "{PLAYER} gave up on the\p"
.string "{STR_VAR_1}…$"
ApricornTree_Text_ApricornLeftUnpicked:
.string "{PLAYER} gave up on the\p"
.string "{STR_VAR_1}…$"

View File

@ -0,0 +1,13 @@
BattleFrontier_ShowCaughtBannedSpecies::
goto_if_eq VAR_0x8005, 0, BattleFrontier_ShowCaughtBannedSpeciesEnd
msgbox BattleFrontier_DoYouWantToSeeTheListOfCaughtBannedSpecies, MSGBOX_YESNO
goto_if_eq VAR_RESULT, NO, BattleFrontier_ShowCaughtBannedSpeciesEnd
callnative ShowBattleFrontierCaughtBannedSpecies
waitstate
BattleFrontier_ShowCaughtBannedSpeciesEnd:
return
BattleFrontier_DoYouWantToSeeTheListOfCaughtBannedSpecies:
.string "要查看无法参加的\n"
.string "宝可梦名单吗?$"

View File

@ -87,6 +87,15 @@ Debug_FlagsNotSetBattleConfigMessage_Text:
.string "请在这里定义一个可用标志:\l"
.string "'include/config/battle.h'$"
Debug_VarsNotSetBattleConfigMessage::
message Debug_VarsNotSetBattleConfigMessage_Text
goto Debug_MessageEnd
Debug_VarsNotSetBattleConfigMessage_Text:
.string "Feature unavailable!\n"
.string "Please define a usable var in:\l"
.string "'include/config/battle.h'!$"
Debug_BoxFilledMessage::
message Debug_BoxFilledMessage_Text
goto Debug_MessageEnd
@ -387,7 +396,29 @@ Debug_EventScript_SetHiddenNature::
dynmultistack 0, 0, TRUE, 7, FALSE, 0, NULL
switch VAR_RESULT
case MULTI_B_PRESSED, Debug_EventScript_InflictStatus1_Close
special SetHiddenNature
special SetHiddenNature
releaseall
end
Debug_EventScript_SetAbility::
special ChoosePartyMon
waitstate
callnative DebugNative_GetAbilityNames
dynmultipush gStringVar1, 0
dynmultipush gStringVar2, 1
dynmultipush gStringVar3, 2
dynmultistack 0, 0, FALSE, 3 FALSE, 0, NULL
switch VAR_RESULT
case MULTI_B_PRESSED, Debug_EventScript_SetAbilityClose
special SetAbility
Debug_EventScript_SetAbilityClose:
releaseall
end
Debug_EventScript_SetFriendship::
special ChoosePartyMon
waitstate
callnative DebugNative_Party_SetFriendship
releaseall
end

View File

@ -0,0 +1,105 @@
Common_EventScript_MoveRelearner::
lockall
faceplayer
message MoveRelearner_Text_WouldLearnNewMoves
waitmessage
goto Common_EventScript_MoveRelearnerDynMultiChoice
end
Common_EventScript_MoveRelearnerDynMultiChoice::
dynmultipush MoveRelearner_Text_LevelUpMoves, 0
.if P_ENABLE_MOVE_RELEARNERS == TRUE
dynmultipush MoveRelearner_Text_EggMoves, 1
dynmultipush MoveRelearner_Text_TMMoves, 2
dynmultipush MoveRelearner_Text_TutormoveMoves, 3
.else
call_if_set P_FLAG_EGG_MOVES, MoveRelearner_EventScript_PushEggMoves
istmrelearneractive MoveRelearner_EventScript_PushTMMoves
call_if_set P_FLAG_TUTOR_MOVES, MoveRelearner_EventScript_PushTutorMoves
.endif @ P_ENABLE_MOVE_RELEARNERS
dynmultipush MoveRelearner_Text_SeeYa, 4
dynmultistack 0, 0, FALSE, 5, 0, 0, DYN_MULTICHOICE_CB_NONE
closemessage
switch VAR_RESULT
case 0, MoveRelearner_EventScript_TeachLevelUpMoves
case 1, MoveRelearner_EventScript_TeachEggMoves
case 2, MoveRelearner_EventScript_TeachTMMoves
case 3, MoveRelearner_EventScript_TeachTutorMoves
case 4, MoveRelearner_EventScript_PleaseComeAgain
MoveRelearner_EventScript_PleaseComeAgain:
msgbox MoveRelearner_Text_ThankYouComeAgain, MSGBOX_DEFAULT
releaseall
end
MoveRelearner_EventScript_PushEggMoves:
dynmultipush MoveRelearner_Text_EggMoves, 1
return
MoveRelearner_EventScript_PushTMMoves:
dynmultipush MoveRelearner_Text_TMMoves, 2
return
MoveRelearner_EventScript_PushTutorMoves:
dynmultipush MoveRelearner_Text_TutormoveMoves, 3
return
MoveRelearner_EventScript_TeachLevelUpMoves:
setmoverelearnerstate MOVE_RELEARNER_LEVEL_UP_MOVES
bufferstring STR_VAR_3, MoveRelearner_Text_LevelUpMoveLWR
goto MoveRelearner_EventScript_TeachMove
end
MoveRelearner_EventScript_TeachEggMoves:
setmoverelearnerstate MOVE_RELEARNER_EGG_MOVES
bufferstring STR_VAR_3, MoveRelearner_Text_EggMoveLWR
goto MoveRelearner_EventScript_TeachMove
end
MoveRelearner_EventScript_TeachTMMoves:
setmoverelearnerstate MOVE_RELEARNER_TM_MOVES
bufferstring STR_VAR_3, MoveRelearner_Text_TMMoveLWR
goto MoveRelearner_EventScript_TeachMove
end
MoveRelearner_EventScript_TeachTutorMoves:
setmoverelearnerstate MOVE_RELEARNER_TUTOR_MOVES
bufferstring STR_VAR_3, MoveRelearner_Text_TutorMoveLWR
goto MoveRelearner_EventScript_TeachMove
end
MoveRelearner_EventScript_TeachMove::
getpartysize
goto_if_eq VAR_RESULT, 0, MoveRelearner_EventScript_NoPkmn
msgbox MoveRelearner_Text_ChoosePkmn, MSGBOX_DEFAULT
special ChooseMonForMoveRelearner
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
msgbox MoveRelearner_Text_WhichXmoveShouldTeach, MSGBOX_DEFAULT
special TeachMoveRelearnerMove
waitstate
goto MoveRelearner_EventScript_AnythingElse
end
MoveRelearner_EventScript_NoPkmn:
msgbox MoveRelearner_Text_HaveNoPkmn, MSGBOX_AUTOCLOSE
releaseall
end
MoveRelearner_EventScript_CantTeachMoveToEgg:
msgbox MoveRelearner_Text_CantTeachMoveToEgg, MSGBOX_AUTOCLOSE
goto MoveRelearner_EventScript_AnythingElse
end
MoveRelearner_EventScript_CantTeachMoveToPkmn:
msgbox MoveRelearner_Text_CantTeachMoveToPkmn, MSGBOX_AUTOCLOSE
goto MoveRelearner_EventScript_AnythingElse
end
MoveRelearner_EventScript_AnythingElse::
message MoveRelearner_Text_AnythingElse
waitmessage
goto Common_EventScript_MoveRelearnerDynMultiChoice
end

View File

@ -205,6 +205,7 @@ EventScript_FoundHiddenItem::
end
EventScript_PutHiddenItemInPocket::
callnative Script_ClearDowsingColor
delay 10
showitemdescription
waitmessage
@ -215,6 +216,7 @@ EventScript_PutHiddenItemInPocket::
hideitemdescription
special TryPutTreasureInvestigatorsOnAir
special SetHiddenItemFlag
callnative Script_UpdateDowseState
releaseall
end

View File

@ -1,5 +1,8 @@
.section .rodata
.include "asm/macros.inc"
.include "constants/constants.inc"
.include "asm/macros/m4a.inc"
.include "asm/macros/music_voice.inc"
.include "include/config/general.h"

View File

@ -564,3 +564,6 @@ gSpecials::
def_special EnterCode
def_special GetCodeFeedback
def_special SetHiddenNature
def_special SetAbility
def_special ObjectEventInteractionGetApricornTreeData
def_special ObjectEventInteractionPickApricornTree

View File

@ -1,34 +0,0 @@
@ With the exception of Link standby, none of the below texts are used
gTest_MissedTurn::
.string "错过回合$"
gText_LinkStandby4::
.string "正在等待连接!$"
gText_WinnerIsPlayersMonCongrats::
.string "冠军是{STR_VAR_1}的{STR_VAR_2}\n恭喜!$"
gText_WinnerIsPlayersMon::
.string "冠军是{STR_VAR_1}的{STR_VAR_2}{0xFC 9}$"
gText_PrimaryJudgingNumX::
.string "第1轮评审No.{STR_VAR_1}{0xFC 9}$"
gText_SecondaryJudgingNumX::
.string "第2轮评审No.{STR_VAR_1}{0xFC 9}$"
gText_SetEventNumX::
.string "自定赛No.{STR_VAR_1}{0xFC 9}$"
gText_MoveUsedMostOften::
.string "最常用的招式:\n{STR_VAR_1}{0xFC 9}$"
gText_MostImpressiveMon::
.string "最出色的宝可梦:\n{STR_VAR_1}的{STR_VAR_2}{0xFC 9}$"
gText_SetEventNumX2::
.string "自定赛No.{STR_VAR_1}{0xFC 9}$"
gText_LinkTVProgramWillNotBeMadeTrainerLost::
.string "无法制作连接电视节目,\n因为训练家已断开连接。{0xFC 9}$"

View File

@ -1,81 +0,0 @@
gContestHallPaintingCaption::
.string "{STR_VAR_1}\n{STR_VAR_2}的{STR_VAR_3}$"
@ Unused
gContestPaintingContest::
.string "比赛$"
gContestRankNormal::
.string "普通级$"
gContestRankSuper::
.string "超级级$"
gContestRankHyper::
.string "专家级$"
gContestRankMaster::
.string "大师级$"
gContestLink::
.string "连接$"
gContestCoolness::
.string "帅气$"
gContestBeauty::
.string "美丽$"
gContestCuteness::
.string "可爱$"
gContestSmartness::
.string "聪明$"
gContestToughness::
.string "强壮$"
gContestPaintingCool1::
.string "挡不住的帅气——\n无可估量的{STR_VAR_1}$"
gContestPaintingCool2::
.string "嗨那边的!\n好漂亮的宝可梦啊{STR_VAR_1}$"
gContestPaintingCool3::
.string "这真是让人惊奇的\n{STR_VAR_1}居然那么神奇$"
gContestPaintingBeauty1::
.string "{STR_VAR_1}是本世纪\n最后的维纳斯。$"
gContestPaintingBeauty2::
.string "{STR_VAR_1}耀眼\n而闪亮的微笑$"
gContestPaintingBeauty3::
.string "宝可梦中心的超级偶像——\n无与伦比的{STR_VAR_1}$"
gContestPaintingCute1::
.string "可爱的{STR_VAR_1}$"
gContestPaintingCute2::
.string "美丽的{STR_VAR_1}的\n胜利肖像$"
gContestPaintingCute3::
.string "让我们看看\n那个漂亮的宝可梦{STR_VAR_1}$"
gContestPaintingSmart1::
.string "智慧的艺术大师——\n聪明的宝可梦{STR_VAR_1}$"
gContestPaintingSmart2::
.string "{STR_VAR_1}——被选中的宝可梦\n宝可梦中的宝可梦$"
gContestPaintingSmart3::
.string "优秀的{STR_VAR_1}的\n高贵瞬间$"
gContestPaintingTough1::
.string "肌肉发达的\n{STR_VAR_1}$"
gContestPaintingTough2::
.string "强壮,无比强壮\n{STR_VAR_1}$"
gContestPaintingTough3::
.string "极为强悍的\n易激动的宝可梦{STR_VAR_1}$"

View File

@ -1,464 +0,0 @@
gText_AppealNumWhichMoveWillBePlayed::
.string "{STR_VAR_1}回合的表演!\n"
.string "要使用哪个招式呢?$"
@{STR_VAR_1}かいめのアピール!
@どのわざをつかう?
gText_AppealNumButItCantParticipate::
.string "{STR_VAR_1}回合的表演!\n"
.string "但是无法参加!$"
@{STR_VAR_1}かいめのアピール!
@しかしさんかできない!
gText_MonAppealedWithMove::
.string "{STR_VAR_1}使用了\n"
.string "{STR_VAR_2}进行表演!$"
@{STR_VAR_1}
@{STR_VAR_2}でアピール!
gText_MonWasWatchingOthers::
.string "{STR_VAR_1}在观察\n"
.string "其他的宝可梦!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}
@みんなを みていた!
gText_AllOutOfAppealTime::
.string "表演时间结束!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@アピールタイム しゅうりょう!
@ Appeal result texts
gText_BecameMoreConsciousOfOtherMons::
.string "它变得比平时\n"
.string "更加担心其他宝可梦了!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@ほかの ポケモンが いつもより
@きに なって きた!
gText_MonCantMakeAnAppealAfterThis::
.string "{STR_VAR_1}此后\n"
.string "都无法再次进行表演了!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}は このあと
@アピール できなく なった!
gText_SettledDownJustLittleBit::
.string "它稍微有些\n"
.string "冷静下来了!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@ちょっと だけ
@きもちが おちついた!
gText_BecameObliviousToOtherMons::
.string "它变得完全\n"
.string "不关注其他宝可梦了!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@ほかの ポケモンが ぜんぜん
@きに ならなく なった!
gText_BecameLessAwareOfOtherMons::
.string "它变得不那么\n"
.string "关注其他宝可梦了。{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@ほかの ポケモンが あまり
@きに ならなく なった!
gText_StoppedCaringAboutOtherMons::
.string "它不再那么\n"
.string "留意其他宝可梦了!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@ほかの ポケモンを あまり
@きに しないように なった!
gText_TriedToStartleOtherMons::
.string "它试图惊吓\n"
.string "其他宝可梦!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@ほかの ポケモンを
@びっくり させようと した!
gText_TriedToDazzleOthers::
.string "它试图让\n"
.string "其他宝可梦眼花缭乱!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@みんなの めを
@くらませようと した!
gText_JudgeLookedAwayFromMon::
.string "评委的目光\n"
.string "{STR_VAR_1}身上移开了!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@しんさいんは {STR_VAR_1}から
@めを そらして しまった!
gText_TriedToUnnerveNextMon::
.string "它试图让下一只\n"
.string "表演的宝可梦紧张!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@つぎに まっている ポケモンを
@きんちょう させようと した!
gText_MonBecameNervous::
.string "{STR_VAR_1}\n"
.string "紧张了起来!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}
@きんちょう してしまった!
gText_AppealTriedToUnnerveWaitingMons::
.string "它试图让所有\n"
.string "之后表演的宝可梦紧张!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@アピールが まだの ポケモンを
@きんちょう させようと した!
gText_TauntedMonsDoingWell::
.string "它嘲笑了\n"
.string "气势良好的宝可梦!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@ちょうしが いい ポケモンを
@からかってみた!
gText_MonRegainedItsForm::
.string "{STR_VAR_1}的气势\n"
.string "回到了本来的样子!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}の ちょうしが
@もとに もどって しまった!
gText_TriedToJamMonDoingWell::
.string "它试图干扰那些\n"
.string "表演引人注目的宝可梦!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@ちょうしが いい ポケモンの
@じゃまを しようと した!
gText_StandoutMonHustledEvenMore::
.string "本来就引人注目的\n"
.string "{STR_VAR_1}更加鼓足干劲了!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@めだっている {STR_VAR_1}
@さらに はりきった!
gText_LargelyUnnoticedMonWorkedHard::
.string "原本不太引人注目的\n"
.string "{STR_VAR_1}加油努力了起来!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@めだっていない {STR_VAR_1}
@がんばりまくった!
gText_WorkedAsMuchAsMonBefore::
.string "它鼓足了不会输给\n"
.string "前面所有宝可梦程度的干劲!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@まえの ポケモンたちに
@まけないくらい はりきった!
gText_MonsAppealDidNotGoWell::
.string "{STR_VAR_1}的表演\n"
.string "没能成功奏效!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}は アピールを
@うまく みせられなかった!
gText_WorkedAsMuchAsPrecedingMon::
.string "和前面的宝可梦\n"
.string "一样地鼓足了干劲!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@まえの ポケモンと
@おなじくらい はりきった!
gText_MonsAppealDidNotGoWell2::
.string "{STR_VAR_1}的表演\n"
.string "没能成功奏效!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}は アピールを
@うまく みせられなかった!
gText_MonsAppealDidNotGoWell3::
.string "{STR_VAR_1}的表演\n"
.string "没能成功奏效!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}は アピールを
@うまく みせられなかった!
gText_MonsAppealWentSlightlyWell::
.string "{STR_VAR_1}的表演\n"
.string "做得还算可以!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}の アピールは
@すこし うまく いった!
gText_MonsAppealWentPrettyWell::
.string "{STR_VAR_1}的表演\n"
.string "做得不错!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}の アピールは
@まあまあ うまく いった!
gText_MonsAppealWentExcellently::
.string "{STR_VAR_1}的表演\n"
.string "做得非常出色!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}の アピールは
@とても うまく いった!
gText_MonsAppealWasDud::
.string "{STR_VAR_1}的表演\n"
.string "完全失败了!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}の アピールは
@しっぱい して しまった!
gText_MonsAppealDidNotWorkVeryWell::
.string "{STR_VAR_1}的表演\n"
.string "做得不怎么好!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}の アピールは
@あまり うまく いかなかった!
gText_MonsAppealWentSlightlyWell2::
.string "{STR_VAR_1}的表演\n"
.string "做得还算可以!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}の アピールは
@すこし うまく いった!
gText_MonsAppealWentPrettyWell2::
.string "{STR_VAR_1}的表演\n"
.string "做得不错!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}の アピールは
@まあまあ うまく いった!
gText_MonsAppealWentVeryWell::
.string "{STR_VAR_1}的表演\n"
.string "做得很好!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}の アピールは
@かなり うまく いった!
gText_MonsAppealWentExcellently2::
.string "{STR_VAR_1}的表演\n"
.string "做得非常出色!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}の アピールは
@とても うまく いった!
gText_SameTypeAsOneBeforeGood::
.string "因为和前面的宝可梦\n"
.string "类别一致而受到喜欢!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@まえの ポケモンと
@おなじタイプで きにいられた!
gText_NotSameTypeAsOneBeforeGood::
.string "因为和前面的宝可梦\n"
.string "类别不同而受到喜欢!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@まえの ポケモンと
@ちがうタイプで きにいられた!
gText_StoodOutMuchMoreThanMonBefore::
.string "比起前面的宝可梦\n"
.string "要出彩得多!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@まえの ポケモンより
@だいぶ めだった!
gText_DidntDoAsWellAsMonBefore::
.string "比起前面的宝可梦\n"
.string "完成得不算太好!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@まえの ポケモンより
@うまく できなかった!
gText_MonsConditionRoseAboveUsual::
.string "{STR_VAR_1}的气势\n"
.string "比平时有所提升!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}の ちょうしが
@いつもより あがった!
gText_MonsHotStatusMadeGreatAppeal::
.string "{STR_VAR_1}气势不错,\n"
.string "表演变得棒极了!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}は ちょうしが よくて
@ぜっこうの アピールに なった!
gText_MovedUpInLineForNextAppeal::
.string "它想要在下回合的表演里\n"
.string "更早出场而走到了前面!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@つぎの アピールを はやく
@しようと まえに でた!
gText_MovedBackInLineForNextAppeal::
.string "它想要在下回合的表演里\n"
.string "更晚出场而后退了一步!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@つぎの アピールを おそく
@しようと 1ぽ さがった!
gText_ScrambledUpOrderForNextTurn::
.string "下个回合的表演顺序\n"
.string "变得奇怪了起来!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@つぎの ターンの じゅんばん
@おかしく した!
gText_JudgeLookedAtMonExpectantly::
.string "评委满怀期待地\n"
.string "看着{STR_VAR_1}{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@しんさいんが きたいして
@{STR_VAR_1} みつめた!
gText_AppealComboWentOverWell::
.string "前后演出的招式组合\n"
.string "得到了大家的喜爱!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@アピールの くみあわせが
@きに いって もらえた!
gText_AppealComboWentOverVeryWell::
.string "前后演出的招式组合\n"
.string "很受大家喜欢!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@アピールの くみあわせが
@かなり きに いられた!
gText_AppealComboWentOverExcellently::
.string "前后演出的招式组合\n"
.string "特别受大家喜欢!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@アピールの くみあわせが
@ものすごく きに いられた!
gText_MonManagedToAvertGaze::
.string "{STR_VAR_1}成功地\n"
.string "移开了视线!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}は なんとか
@めを そらした!
gText_MonManagedToAvoidSeeingIt::
.string "{STR_VAR_1}成功地\n"
.string "避开了视线!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}
@そっちを みずに すんだ!
gText_MonIsntFazedByThatSortOfThing::
.string "{STR_VAR_1}没有受\n"
.string "这种程度的事情影响!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}
@このくらいは へいきだった!
gText_MonBecameALittleDistracted::
.string "{STR_VAR_1}变得\n"
.string "稍稍有点分心了!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}は ちょっと
@きを とられて しまった!
gText_TriedToStartleOtherPokemon::
.string "它试图惊吓\n"
.string "其他宝可梦!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@ほかの ポケモンを
@びっくり させようと した!
gText_MonLookedDownOutOfDistraction::
.string "{STR_VAR_1}因为分心\n"
.string "低下了头!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}は きをとられて
@したを むいて しまった!(小)
gText_MonTurnedBackOutOfDistraction::
.string "{STR_VAR_1}因为分心\n"
.string "转过了身!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}は きを とられて
@ふりかえって しまった!(中)
gText_MonCouldntHelpUtteringCry::
.string "{STR_VAR_1}忍不住地\n"
.string "叫出了声!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}は おもわず
@こえを あげて しまった!(大)
gText_MonCouldntHelpLeapingUp::
.string "{STR_VAR_1}忍不住地\n"
.string "跳了起来!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}は おもわず
@とびあがって しまった!(特大)
gText_MonTrippedOutOfDistraction::
.string "{STR_VAR_1}因为分心\n"
.string "摔在了地上四脚朝天!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}は きを とられて
@ひっくり かえって しまった!(?)
gText_MonWasTooNervousToMove::
.string "{STR_VAR_1}因为紧张\n"
.string "无法使用招式表演了!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}は きんちょうして
@アピールが できなかった!
gText_ButItMessedUp2::
.string "但它搞砸了!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@でも しっぱい してしまった!
gText_ButItFailedToMakeTargetNervous::
.string "但是它没能让\n"
.string "目标宝可梦紧张!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@でも きんちょう
@させられなかった!
gText_ButItFailedToMakeAnyoneNervous::
.string "但是它没能让\n"
.string "任何宝可梦紧张!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@でも だれも
@きんちょう しなかった!
gText_ButItWasIgnored::
.string "但它被无视了……{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@でも むし されて しまった……
gText_CouldntImproveItsCondition::
.string "但是它并没能\n"
.string "提升自己的气势……{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@でも ちょうしは
@あがらなかった……
gText_BadConditionResultedInWeakAppeal::
.string "它因为气势不行\n"
.string "表演得一点也不好……{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@ちょうしが よく なくて
@あまり うまく できなかった……
gText_MonWasUnaffected::
.string "{STR_VAR_1}\n"
.string "完全不为所动!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}
@へいき だった!
gText_RepeatedAppeal::
.string "{STR_VAR_1}因为\n"
.string "重复表演,让大家失望了。{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}は おなじアピールを
@つづけて がっかり された!
gText_MonsXWentOverGreat::
.string "{STR_VAR_1}的{STR_VAR_3}表演\n"
.string "受到了大家的热烈欢迎!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}の {STR_VAR_3}
@まわりに とても うけた!
gText_MonsXDidntGoOverWell::
.string "{STR_VAR_1}的{STR_VAR_3}表演\n"
.string "在这里不受欢迎……{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}の {STR_VAR_3}
@ここでは うけなかった…
gText_MonsXGotTheCrowdGoing::
.string "{STR_VAR_1}的{STR_VAR_3}表演\n"
.string "让整个会场沸腾了!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}の {STR_VAR_3}
@まわりが もりあがった!
gText_MonCantAppealNextTurn::
.string "{STR_VAR_1}无法参加\n"
.string "下一次的表演了!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}は つぎの アピールに
@さんか できなくなった!
gText_AttractedCrowdsAttention::
.string "吸引了\n"
.string "观众们的注意!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@かんきゃくの
@ちゅうもくを あつめた!
gText_CrowdContinuesToWatchMon::
.string "观众们一直\n"
.string "持续关注着{STR_VAR_3}{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@かんきゃくは
@{STR_VAR_3}を みつづけている!
gText_MonsMoveIsIgnored::
.string "{STR_VAR_1}的{STR_VAR_2}\n"
.string "被完全无视了……{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
@{STR_VAR_1}の {STR_VAR_2}
@めを むけられなかった……
gText_Contest_Shyness::
.string "扑通扑通$"
@ドキドキ
gText_Contest_Anxiety::
.string "慌慌张张$"
@モジモジ
gText_Contest_Laziness::
.string "懒懒洋洋$"
@テレテレ
gText_Contest_Hesitancy::
.string "犹犹豫豫$"
@オロオロ
@ビクビク
gText_Contest_Fear::
.string "战战栗栗$"

View File

@ -0,0 +1,55 @@
MoveRelearner_Text_WouldLearnNewMoves:
.string "Hi, I'm the Move Relearner.\n"
.string "Would you like to learn new moves?$"
MoveRelearner_Text_LevelUpMoves:
.string "Level Up Moves$"
MoveRelearner_Text_EggMoves:
.string "Egg Moves$"
MoveRelearner_Text_TMMoves:
.string "TM Moves$"
MoveRelearner_Text_TutormoveMoves:
.string "Tutor Moves$"
MoveRelearner_Text_SeeYa:
.string "See ya!$"
MoveRelearner_Text_AnythingElse:
.string "Is there anything else I may do for you?$"
MoveRelearner_Text_ChoosePkmn:
.string "Please choose your Pokémon.$"
MoveRelearner_Text_HaveNoPkmn:
.string "You have no Pokémon.$"
MoveRelearner_Text_CantTeachMoveToEgg:
.string "Sorry…\n"
.string "But an Egg can't learn moves.$"
MoveRelearner_Text_CantTeachMoveToPkmn:
.string "Sorry…\p"
.string "It doesn't appear as if I have any move\n"
.string "I can teach that Pokémon.$"
MoveRelearner_Text_LevelUpMoveLWR::
.string "level up move$"
MoveRelearner_Text_EggMoveLWR::
.string "egg move$"
MoveRelearner_Text_TMMoveLWR::
.string "TM move$"
MoveRelearner_Text_TutorMoveLWR::
.string "tutor move$"
MoveRelearner_Text_WhichXmoveShouldTeach:
.string "Which {STR_VAR_3} should I teach?$"
MoveRelearner_Text_ThankYouComeAgain:
.string "Thank you for using our services.\n"
.string "Please come again!$"

1
docs/FEATURES.md Normal file
View File

@ -0,0 +1 @@
{{#include ../FEATURES.md}}

View File

@ -1,12 +1,14 @@
# Summary
- [README](./README.md)
- [FEATURES](./FEATURES.md)
- [Installation](./INSTALL.md)
- [Setting up WSL1 (Legacy Portion)](./legacy_WSL1_INSTALL.md)
- [ChromeOS](./install/chromeos/CHROME_OS.md)
- [Linux]()
- [ARCH_LINUX](./install/linux/ARCH_LINUX.md)
- [DEBIAN](./install/linux/DEBIAN.md)
- [FEDORA](./install/linux/FEDORA.md)
- [NIXOS](./install/linux/NIXOS.md)
- [OTHERS](./install/linux/OTHERS.md)
- [UBUNTU](./install/linux/UBUNTU.md)
@ -37,9 +39,15 @@
- [How to use Follower NPCs](tutorials/how_to_follower_npc.md)
- [Time-Based Encounters](tutorials/how_to_time_of_day_encounters.md)
- [How to use Trainer Party Pools](tutorials/how_to_trainer_party_pool.md)
- [How to Apricorn Tree](tutorials/how_to_apricorn_tree.md)
- [How to Namebox](tutorials/how_to_namebox.md)
- [Vs. Seeker](tutorials/vs_seeker.md)
- [Changelog](./CHANGELOG.md)
- [1.14.x]()
- [Version 1.14.1](changelogs/1.14.x/1.14.1.md)
- [Version 1.14.0](changelogs/1.14.x/1.14.0.md)
- [1.13.x]()
- [Version 1.13.4](changelogs/1.13.x/1.13.4.md)
- [Version 1.13.3](changelogs/1.13.x/1.13.3.md)
- [Version 1.13.2](changelogs/1.13.x/1.13.2.md)
- [Version 1.13.1](changelogs/1.13.x/1.13.1.md)

View File

@ -121,7 +121,7 @@
- Added option to disable object event shadows
- Added option to turn DNS on or off, `OW_ENABLE_DNS`
- Added option to for vanilla shadow behaviour, `OW_OBJECT_VANILLA_SHADOWS`
- Scripts containing consecutive `removeobject <object> and `addobject <object>` needs a `delay 1` between the commands.
- Scripts containing consecutive `removeobject <object>` and `addobject <object>` needs a `delay 1` between the commands.
```diff
removeobject MY_OBJECT
+ delay 1

View File

@ -0,0 +1,213 @@
```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.13.4
`.
```
## 🧬 General 🧬
### Changed
* 1.13.3 release by @hedara90 in [#8109](https://github.com/rh-hideout/pokeemerald-expansion/pull/8109)
* Adds an auto-generated include file of script commands by @FosterProgramming in [#8156](https://github.com/rh-hideout/pokeemerald-expansion/pull/8156)
* Adjust label workflow to only run if PR is approved by @hedara90 in [#8183](https://github.com/rh-hideout/pokeemerald-expansion/pull/8183)
* Add include/constants/script_commands.h to gitignore by @AlexOn1ine in [#8169](https://github.com/rh-hideout/pokeemerald-expansion/pull/8169)
* add fdeblasio as a contributor for code by @allcontributors[bot] in [#8200](https://github.com/rh-hideout/pokeemerald-expansion/pull/8200)
* Adjust Canceler naming to contain only one l by @AlexOn1ine in [#8258](https://github.com/rh-hideout/pokeemerald-expansion/pull/8258)
* Pret merge (16th of November, 2025) by @AlexOn1ine in [#8262](https://github.com/rh-hideout/pokeemerald-expansion/pull/8262)
* *.party: text with lfs by @mrgriffin in [#8320](https://github.com/rh-hideout/pokeemerald-expansion/pull/8320)
* Fedora install instructions by @estellarc in [#8355](https://github.com/rh-hideout/pokeemerald-expansion/pull/8355)
* Indent unintented if statement by @hedara90 in [#8367](https://github.com/rh-hideout/pokeemerald-expansion/pull/8367)
### Fixed
* Update mdbook to v0.5.0-beta.1 by @rayrobdod in [#8133](https://github.com/rh-hideout/pokeemerald-expansion/pull/8133)
* Fix wild_encounters script not closing arrays properly by @FosterProgramming in [#8123](https://github.com/rh-hideout/pokeemerald-expansion/pull/8123)
* Fix missing FREE_MATCH_CALL by @FosterProgramming in [#8171](https://github.com/rh-hideout/pokeemerald-expansion/pull/8171)
* Fix scroll prompt sometimes being off-screen with automatic line breaks by @hedara90 in [#8182](https://github.com/rh-hideout/pokeemerald-expansion/pull/8182)
* Fix gcc11 again by @AsparagusEduardo in [#8188](https://github.com/rh-hideout/pokeemerald-expansion/pull/8188)
* Fixed decompression error reporter OOB window creation by @hedara90 in [#8199](https://github.com/rh-hideout/pokeemerald-expansion/pull/8199)
* Fix error when compiling with P_FUSION_FORMS disabled by @cawtds in [#8298](https://github.com/rh-hideout/pokeemerald-expansion/pull/8298)
* Fix compile on gcc11 by @AlexOn1ine in [#8300](https://github.com/rh-hideout/pokeemerald-expansion/pull/8300)
* Fix debug battle flag never being cleared by @FosterProgramming in [#8357](https://github.com/rh-hideout/pokeemerald-expansion/pull/8357)
## 🗺️ Overworld 🗺️
### Changed
* Add additional comment explaing map name popup transparency side-effects by @FosterProgramming in [#8117](https://github.com/rh-hideout/pokeemerald-expansion/pull/8117)
### Fixed
* Fix berry blender not computing flavor correctly by @FosterProgramming in [#8113](https://github.com/rh-hideout/pokeemerald-expansion/pull/8113)
* Allow vs seekers to work with script not starting with trainerbattle by @FosterProgramming in [#8062](https://github.com/rh-hideout/pokeemerald-expansion/pull/8062)
- VS seeker now work with trainers who don't start with trainer_battle. You can use `vsseeker_rematchid TRAINER_ID` to indicate that this NPC is a battling trainer and the game will fetch the appropriate rematch if necessary. ` vsseeker_rematchid` work like a `cant_see_if_trainerflag_set` with additional functionality to handle vs seeker.
All NPCs who don't start with either `vsseeker_rematchid` or `trainerbattle` will show as "X"/unmatchable by the vs seeker, so non-rematchable trainer who do not start with `trainerbattle may "lie" and not show an excalmation mark showing they haven't been fought yet. This can be fixed by including a `vsseeker_rematchid` for them too.
* Fix grade in summary screen not accounting for 26 IV by @FosterProgramming in [#8157](https://github.com/rh-hideout/pokeemerald-expansion/pull/8157)
* Fix match call regression by @FosterProgramming in [#8227](https://github.com/rh-hideout/pokeemerald-expansion/pull/8227)
* Fix mew sprite not appearing correctly by @FosterProgramming in [#8235](https://github.com/rh-hideout/pokeemerald-expansion/pull/8235)
* Fix wrong palette for types sprites in hgss dex after catching mon by @FosterProgramming in [#8153](https://github.com/rh-hideout/pokeemerald-expansion/pull/8153)
* Fix mirage tower ceiling crumble color by @FosterProgramming in [#8081](https://github.com/rh-hideout/pokeemerald-expansion/pull/8081)
* Fix light flickering when different types of light sprite are present by @FosterProgramming in [#8043](https://github.com/rh-hideout/pokeemerald-expansion/pull/8043)
- Light intensity of neon signs was reduced to avoid conflicts with other light sources
- Fix flickering when both neon signs and light ball are present on screen
* Bug Fix: NPC Followers not working on slow sideways stairs by @Bivurnum in [#8257](https://github.com/rh-hideout/pokeemerald-expansion/pull/8257)
* Fix not enough memory being allocated when moves load background in contests by @FosterProgramming in [#8284](https://github.com/rh-hideout/pokeemerald-expansion/pull/8284)
* Make MON_DATA_NICKNAME10 return a 10 character string by @FosterProgramming in [#8291](https://github.com/rh-hideout/pokeemerald-expansion/pull/8291)
- Fix bug where interviews would print bad data in their string
* Fix game freeze when trainers try to walk on sideway stairs by @FosterProgramming in [#8316](https://github.com/rh-hideout/pokeemerald-expansion/pull/8316)
* Fix tossing items applying to the wrong stack by @FosterProgramming in [#8282](https://github.com/rh-hideout/pokeemerald-expansion/pull/8282)
* Prevent moves to be changed when choosing half party by @FosterProgramming in [#8336](https://github.com/rh-hideout/pokeemerald-expansion/pull/8336)
## 🐉 Pokémon 🐉
### Changed
* Fix Kyurem typo in swap move tables by @Bassoonian in [#8139](https://github.com/rh-hideout/pokeemerald-expansion/pull/8139)
* Fix typo in Voltorb-Hisui pokedex entry by @PhallenTree in [#8143](https://github.com/rh-hideout/pokeemerald-expansion/pull/8143)
* Fix some followers sprites by @estellarc in [#8208](https://github.com/rh-hideout/pokeemerald-expansion/pull/8208)
## ⚔️ Battle General ⚔️
### Changed
* Clean up redundant todo by @AlexOn1ine in [#8094](https://github.com/rh-hideout/pokeemerald-expansion/pull/8094)
* Powder Move blocking cleanup by @PhallenTree in [#8194](https://github.com/rh-hideout/pokeemerald-expansion/pull/8194)
* Restored encourageEncore flag to non-volatile status effects by @AsparagusEduardo in [#8387](https://github.com/rh-hideout/pokeemerald-expansion/pull/8387)
### Fixed
* Allow to send active mon to PC when capturing a Pokemon by @FosterProgramming in [#8111](https://github.com/rh-hideout/pokeemerald-expansion/pull/8111)
* Fix transform not loading the correct sprites when facing shiny or unown by @FosterProgramming in [#8146](https://github.com/rh-hideout/pokeemerald-expansion/pull/8146)
* Fixes Receiver not immediately activating copied abilities by @PhallenTree in [#8162](https://github.com/rh-hideout/pokeemerald-expansion/pull/8162)
* Fix destiny knot behavior and add tests by @FosterProgramming in [#8174](https://github.com/rh-hideout/pokeemerald-expansion/pull/8174)
* Fix recharge moves + add recharge move tests by @FosterProgramming in [#8181](https://github.com/rh-hideout/pokeemerald-expansion/pull/8181)
* Fixes Magician for spread moves by @AlexOn1ine in [#8170](https://github.com/rh-hideout/pokeemerald-expansion/pull/8170)
* Fix tera tint not applying on activation by @FosterProgramming in [#8135](https://github.com/rh-hideout/pokeemerald-expansion/pull/8135)
* Fixes wrongly assigned count for Semi Invulnerable state by @AlexOn1ine in [#8175](https://github.com/rh-hideout/pokeemerald-expansion/pull/8175)
* Fixes Drain Punch / Parental Bond / Scale Shot interaction by @AlexOn1ine in [#8198](https://github.com/rh-hideout/pokeemerald-expansion/pull/8198)
* Fix wrong ditto sprite on capture by @FosterProgramming in [#8226](https://github.com/rh-hideout/pokeemerald-expansion/pull/8226)
* Fixed an issue related to same turn Encore targeting by @LinathanZel in [#8230](https://github.com/rh-hideout/pokeemerald-expansion/pull/8230)
* Fixes Shell Trap not activating on contact but no damage by @AlexOn1ine in [#8243](https://github.com/rh-hideout/pokeemerald-expansion/pull/8243)
* Fix Magic Coat reflecting hazard moves incorrectly when used by a partner by @moostoet in [#8272](https://github.com/rh-hideout/pokeemerald-expansion/pull/8272)
- Magic Coat now properly reflects hazard moves from either slot in double battles.
* Shell Trap tests and Fix for Encore interaction by @AlexOn1ine in [#8268](https://github.com/rh-hideout/pokeemerald-expansion/pull/8268)
* Fix max mushroom unable to be selected when one stat is maxed by @FosterProgramming in [#8287](https://github.com/rh-hideout/pokeemerald-expansion/pull/8287)
* Block selecting x items when contrary pokemon are at minimum stages by @FosterProgramming in [#8288](https://github.com/rh-hideout/pokeemerald-expansion/pull/8288)
* Fix Fur Coat affecting confusion self-damage by @moostoet in [#8267](https://github.com/rh-hideout/pokeemerald-expansion/pull/8267)
- Fix confusion self-damage ignoring defense/attack abilities such as Fur Coat.
* Fixes End Turn Speed Order by @AlexOn1ine in [#8289](https://github.com/rh-hideout/pokeemerald-expansion/pull/8289)
* Make switchout abilities trigger after a pokemon has returned to its ball by @FosterProgramming in [#8304](https://github.com/rh-hideout/pokeemerald-expansion/pull/8304)
* Fix Shed Shell allowing fleeing/teleporting and Smoke Ball failing to guarantee escape by @moostoet in [#8286](https://github.com/rh-hideout/pokeemerald-expansion/pull/8286)
* Fix bug where defiant/competitive would pass their stat change to the next target by @FosterProgramming in [#8312](https://github.com/rh-hideout/pokeemerald-expansion/pull/8312)
* Fix max move message against semi invulnerable target by @FosterProgramming in [#8313](https://github.com/rh-hideout/pokeemerald-expansion/pull/8313)
* Fixes Neutralizing Gas displaying message when exiting with multiple users by @PhallenTree in [#8318](https://github.com/rh-hideout/pokeemerald-expansion/pull/8318)
* Fix Kings Rock not being ignored by flinch moves by @AlexOn1ine in [#8327](https://github.com/rh-hideout/pokeemerald-expansion/pull/8327)
* Fix Protosynthesis stat boosts ignoring speed drops by @moostoet in [#8277](https://github.com/rh-hideout/pokeemerald-expansion/pull/8277)
- Protosynthesis and Quark Drive now recalculate their boosted stat when Speed is lowered or Neutralizing Gas temporarily disables the ability.
* Fix switch-in abilities not triggering on revive by @FosterProgramming in [#8293](https://github.com/rh-hideout/pokeemerald-expansion/pull/8293)
* More Neutralizing Gas cleanup by @PhallenTree in [#8335](https://github.com/rh-hideout/pokeemerald-expansion/pull/8335)
* Fix cure status item effect not working properly in doubles by @FosterProgramming in [#8339](https://github.com/rh-hideout/pokeemerald-expansion/pull/8339)
* Fix infinite confusion (berserk gene) not being cured by cure_status bag items by @FosterProgramming in [#8343](https://github.com/rh-hideout/pokeemerald-expansion/pull/8343)
* Fix `B_PHYSICAL_SPECIAL_SPLIT` when set to Gen 4 by @AsparagusEduardo in [#8348](https://github.com/rh-hideout/pokeemerald-expansion/pull/8348)
* Refactor Beat Up handling for Gen 3/4 defaults, fix crit check, and expand test coverage by @moostoet in [#8307](https://github.com/rh-hideout/pokeemerald-expansion/pull/8307)
- BUGFIX: Beat Up (`GEN =< 5`) now no longer doubles its damage on every non-critical hit
- Beat Up now precomputes eligible party members/strikers for consistent multi-hit resolution and expanded tests covering both pre-Gen5 and Gen5+ rules
* Fix substitute graphic not disappearing after using a pivor move by @FosterProgramming in [#8340](https://github.com/rh-hideout/pokeemerald-expansion/pull/8340)
* Fixes Beak Blast burning after Beak Blast was already used by @PhallenTree in [#8361](https://github.com/rh-hideout/pokeemerald-expansion/pull/8361)
* Fix Roar not being recorded for LastUsedMove by @AlexOn1ine in [#8362](https://github.com/rh-hideout/pokeemerald-expansion/pull/8362)
* Fixes Neutralizing Gas / Mold Breaker / Dragon Darts interaction by @AlexOn1ine in [#8389](https://github.com/rh-hideout/pokeemerald-expansion/pull/8389)
* Fixes battle tv overwriting damage values by @AlexOn1ine in [#8378](https://github.com/rh-hideout/pokeemerald-expansion/pull/8378)
* Fix ball cycling not working properly when the same ball take multiple bag slots by @FosterProgramming in [#8163](https://github.com/rh-hideout/pokeemerald-expansion/pull/8163)
- Two new defines added to items.h `FIRST_BALL_INDEX` and `LAST_BALL_INDEX`
- We now assume the indexes of all regular ball usable in wild battle have consecutive indexes and some features (throw ball shortcut in battle) might break if not true
## 🤹 Moves 🤹
### Changed
* Fixed Uproar's description and spacing by @fdeblasio in [#8187](https://github.com/rh-hideout/pokeemerald-expansion/pull/8187)
* Clean usage of gMovesInfo by @AsparagusEduardo in [#8234](https://github.com/rh-hideout/pokeemerald-expansion/pull/8234)
- Also, fixed an OOB in `HasMoveThatChangesKOThreshold`
* Make tailwind anim mirror based on side by @FosterProgramming in [#8249](https://github.com/rh-hideout/pokeemerald-expansion/pull/8249)
* Make rainbow effect anim change based on side by @FosterProgramming in [#8269](https://github.com/rh-hideout/pokeemerald-expansion/pull/8269)
- Art assets by [SonikkuA-DatH](https://github.com/SonikkuA-DatH)
* Update Lash Out description to clarify its effect by @PhallenTree in [#8372](https://github.com/rh-hideout/pokeemerald-expansion/pull/8372)
### Fixed
* Fix some move animations leaking VRAM and freeing already freed tags by @hedara90 in [#7977](https://github.com/rh-hideout/pokeemerald-expansion/pull/7977)
## 🧶 Items 🧶
### Fixed
* Allow vs seekers to work with script not starting with trainerbattle by @FosterProgramming in [#8062](https://github.com/rh-hideout/pokeemerald-expansion/pull/8062)
- VS seeker now work with trainers who don't start with trainer_battle. You can use `vsseeker_rematchid TRAINER_ID` to indicate that this NPC is a battling trainer and the game will fetch the appropriate rematch if necessary. ` vsseeker_rematchid` work like a `cant_see_if_trainerflag_set` with additional functionality to handle vs seeker.
All NPCs who don't start with either `vsseeker_rematchid` or `trainerbattle` will show as "X"/unmatchable by the vs seeker, so non-rematchable trainer who do not start with `trainerbattle may "lie" and not show an excalmation mark showing they haven't been fought yet. This can be fixed by including a `vsseeker_rematchid` for them too.
## 🤖 Battle AI 🤖
### Fixed
* fix (AI scoring): shield dust considerations, IsMoveEffectInMinus self effect edge case, hitsToKO zero-case consideration by @ghostyboyy97 in [#8126](https://github.com/rh-hideout/pokeemerald-expansion/pull/8126)
- The AI now sees Shield Dust on the player's Pokemon correctly
- The AI now sees self-targeted positive effect boosts correctly
* fix (contrary): Contrary stat down handling in MoveEffectInPlus by @ghostyboyy97 in [#8165](https://github.com/rh-hideout/pokeemerald-expansion/pull/8165)
- When comparing positive move effects in damaging move comparison, the AI will correctly see moves like Leaf Storm as beneficial if their Pokemon has Contrary.
* Added check for parental bond killing through sturdy by @MaximeGr00 in [#8206](https://github.com/rh-hideout/pokeemerald-expansion/pull/8206)
AI now accounts for Parental Bond when checking if a move can ko the player through sturdy/focus sash.
* Fix AI_FLAG_DOUBLE_ACE_POKEMON sending duplicate Pokémon in doubles by @moostoet in [#8279](https://github.com/rh-hideout/pokeemerald-expansion/pull/8279)
- Fixed AI_FLAG_DOUBLE_ACE_POKEMON trainers resending the same Pokémon after a KO instead of their two Ace Pokémon in double battles.
* Fix switchin KO threshold logic by @Pawkkie in [#8370](https://github.com/rh-hideout/pokeemerald-expansion/pull/8370)
## 🧹 Other Cleanup 🧹
* Clean up redundant todo by @AlexOn1ine in [#8094](https://github.com/rh-hideout/pokeemerald-expansion/pull/8094)
* Fix Kyurem typo in swap move tables by @Bassoonian in [#8139](https://github.com/rh-hideout/pokeemerald-expansion/pull/8139)
* Fix typo in Voltorb-Hisui pokedex entry by @PhallenTree in [#8143](https://github.com/rh-hideout/pokeemerald-expansion/pull/8143)
* Fixed Uproar's description and spacing by @fdeblasio in [#8187](https://github.com/rh-hideout/pokeemerald-expansion/pull/8187)
* Add include/constants/script_commands.h to gitignore by @AlexOn1ine in [#8169](https://github.com/rh-hideout/pokeemerald-expansion/pull/8169)
* Powder Move blocking cleanup by @PhallenTree in [#8194](https://github.com/rh-hideout/pokeemerald-expansion/pull/8194)
* Clean usage of gMovesInfo by @AsparagusEduardo in [#8234](https://github.com/rh-hideout/pokeemerald-expansion/pull/8234)
- Also, fixed an OOB in `HasMoveThatChangesKOThreshold`
* Adjust Canceler naming to contain only one l by @AlexOn1ine in [#8258](https://github.com/rh-hideout/pokeemerald-expansion/pull/8258)
* Fix wrongly renamed logs by @AlexOn1ine in [#8264](https://github.com/rh-hideout/pokeemerald-expansion/pull/8264)
* Tests for Max Moves already exist by @AlexOn1ine in [#8314](https://github.com/rh-hideout/pokeemerald-expansion/pull/8314)
* Use MAP_OFFSET by @estellarc in [#8328](https://github.com/rh-hideout/pokeemerald-expansion/pull/8328)
* Fixed broken friendship from items in battle test and added new test for opposite case by @pkmnsnfrn in [#7872](https://github.com/rh-hideout/pokeemerald-expansion/pull/7872)
* Indent unintented if statement by @hedara90 in [#8367](https://github.com/rh-hideout/pokeemerald-expansion/pull/8367)
* Update Lash Out description to clarify its effect by @PhallenTree in [#8372](https://github.com/rh-hideout/pokeemerald-expansion/pull/8372)
* Restored encourageEncore flag to non-volatile status effects by @AsparagusEduardo in [#8387](https://github.com/rh-hideout/pokeemerald-expansion/pull/8387)
## 🧪 Test Runner 🧪
### Added
* Prevent EXPECT functions from casting negative numbers into unsigned by @FosterProgramming in [#7866](https://github.com/rh-hideout/pokeemerald-expansion/pull/7866)
### Changed
* Added Soundproof and Bulletproof tests by @AsparagusEduardo in [#8189](https://github.com/rh-hideout/pokeemerald-expansion/pull/8189)
* Wrote some missing tests by @AsparagusEduardo in [#8203](https://github.com/rh-hideout/pokeemerald-expansion/pull/8203)
* A couple more tests by @AsparagusEduardo in [#8209](https://github.com/rh-hideout/pokeemerald-expansion/pull/8209)
* Fixed some failing tests with GEN_LATEST = GEN_5 by @AsparagusEduardo in [#8241](https://github.com/rh-hideout/pokeemerald-expansion/pull/8241)
* Add test for mold breaker/ice scales interaction by @FosterProgramming in [#8240](https://github.com/rh-hideout/pokeemerald-expansion/pull/8240)
* Yet more tests by @AsparagusEduardo in [#8228](https://github.com/rh-hideout/pokeemerald-expansion/pull/8228)
- Added tests for:
- Dark Aura
- Fairy Aura
- Flare Boost
- Toxic Boost
- Added test names for Flying Press.
* Slightly increase headless test speed by modifying animations by @AsparagusEduardo in [#8299](https://github.com/rh-hideout/pokeemerald-expansion/pull/8299)
* Make `gTestRunnerHeadless` into a constant outside of tests by @hedara90 in [#8306](https://github.com/rh-hideout/pokeemerald-expansion/pull/8306)
* Tests for Max Moves already exist by @AlexOn1ine in [#8314](https://github.com/rh-hideout/pokeemerald-expansion/pull/8314)
* Finished fixing tests when setting `GEN_LATEST` to `GEN_5` by @AsparagusEduardo in [#8263](https://github.com/rh-hideout/pokeemerald-expansion/pull/8263)
* Wrote missing Fling tests by @AsparagusEduardo in [#8383](https://github.com/rh-hideout/pokeemerald-expansion/pull/8383)
### Fixed
* Fixes difficulty not being restored after tests by @grintoul1 in [#8129](https://github.com/rh-hideout/pokeemerald-expansion/pull/8129)
* Reset saveblock data between test runs by @hedara90 in [#8145](https://github.com/rh-hideout/pokeemerald-expansion/pull/8145)
* Fix ohko moves ai tests by @FosterProgramming in [#8309](https://github.com/rh-hideout/pokeemerald-expansion/pull/8309)
* Fixed broken friendship from items in battle test and added new test for opposite case by @pkmnsnfrn in [#7872](https://github.com/rh-hideout/pokeemerald-expansion/pull/7872)
* Add tests to verify aromatherapy is not affected by heal bell config by @FosterProgramming in [#8344](https://github.com/rh-hideout/pokeemerald-expansion/pull/8344)
* Pre gen 5 encored move now signals the test engine a move is happening by @FosterProgramming in [#8338](https://github.com/rh-hideout/pokeemerald-expansion/pull/8338)
* Refactor Beat Up handling for Gen 3/4 defaults, fix crit check, and expand test coverage by @moostoet in [#8307](https://github.com/rh-hideout/pokeemerald-expansion/pull/8307)
- BUGFIX: Beat Up (`GEN =< 5`) now no longer doubles its damage on every non-critical hit
- Beat Up now precomputes eligible party members/strikers for consistent multi-hit resolution and expanded tests covering both pre-Gen5 and Gen5+ rules
* Fix known failing AI trace test by @FosterProgramming in [#8337](https://github.com/rh-hideout/pokeemerald-expansion/pull/8337)
## 📚 Documentation 📚
* Lock mdbook to v0.4.35 to fix docs not building by @grintoul1 in [#8130](https://github.com/rh-hideout/pokeemerald-expansion/pull/8130)
* Add additional comment explaing map name popup transparency side-effects by @FosterProgramming in [#8117](https://github.com/rh-hideout/pokeemerald-expansion/pull/8117)
* Fix wrongly renamed logs by @AlexOn1ine in [#8264](https://github.com/rh-hideout/pokeemerald-expansion/pull/8264)
* Use MAP_OFFSET by @estellarc in [#8328](https://github.com/rh-hideout/pokeemerald-expansion/pull/8328)
* Fedora install instructions by @estellarc in [#8355](https://github.com/rh-hideout/pokeemerald-expansion/pull/8355)
**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.13.3...expansion/1.13.4
<!--Last PR: 8391-->
<!--Used to keep track of the last PR merged in case new ones come in before the changelog is done.-->

View File

@ -0,0 +1,534 @@
```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.0
`.
```
## 🌋 *REFACTORS* 🌋
📜 = Uses a migration script.
* Refactors Attackstring and PP deduction by @AlexOn1ine in [#7402](https://github.com/rh-hideout/pokeemerald-expansion/pull/7402)
* Attackcanceller fixes and improvements by @AlexOn1ine in [#7698](https://github.com/rh-hideout/pokeemerald-expansion/pull/7698)
* Fixes activation order for a couple abilities by @AlexOn1ine in [#7732](https://github.com/rh-hideout/pokeemerald-expansion/pull/7732)
* feat: change defines in `constants/abilities.h` to an enum by @khbsd in [#7006](https://github.com/rh-hideout/pokeemerald-expansion/pull/7006)
* Item battle effect refactor by @AlexOn1ine in [#7857](https://github.com/rh-hideout/pokeemerald-expansion/pull/7857)
* Optimize GetWhichBattlerFasterOrTies by @AlexOn1ine in [#7953](https://github.com/rh-hideout/pokeemerald-expansion/pull/7953)
* Decouple passive hp updates from move damage updates by @AlexOn1ine in [#7942](https://github.com/rh-hideout/pokeemerald-expansion/pull/7942)
* Make movelist calculations happen during compilation instead of runtime by @FosterProgramming in [#7967](https://github.com/rh-hideout/pokeemerald-expansion/pull/7967)
- tmIlliterate flag in speciesInfo changed to teachingType. The options are `DEFAULT_LEARNING`, `TM_ILLITERATE` and `ALL_TEACHABLES`. The first two options match the tmIlliterate = false and tmIlliterate = true while the third one allow a pokemon to learn all teachables similarly to Mew
- Reduce EWRAM usage of HGSS dex
- Fix pokemon.c needing to be recompiled everytime a .inc file was changed
- P_TUTOR_MOVES_ARRAY has been removed (now always true when HGSS dex is enabled)
- Mew move teaching exception and univeral moves are now coded in the JSON file `src/data/pokemon/special_movesets.json` under the name signatureTeachables and universalMoves
* Grudge, Destiny Bond and FaintBattler refactor by @AlexOn1ine in [#8072](https://github.com/rh-hideout/pokeemerald-expansion/pull/8072)
* Increase number of additional move effects by @AlexOn1ine in [#8149](https://github.com/rh-hideout/pokeemerald-expansion/pull/8149)
* 📜 update: time-based encounters system tuneup and @cawtds' header script by @khbsd in [#8158](https://github.com/rh-hideout/pokeemerald-expansion/pull/8158)
* Refactor random functions to be runner specific by @FosterProgramming in [#7816](https://github.com/rh-hideout/pokeemerald-expansion/pull/7816)
## 🧬 General 🧬
### Added
* Battle debug menu: highlight chosen action and change separator by @grintoul1 in [#7709](https://github.com/rh-hideout/pokeemerald-expansion/pull/7709)
* Implement `field_name_box` by @mudskipper13 in [#7697](https://github.com/rh-hideout/pokeemerald-expansion/pull/7697)
* Add new actions to Debug Menu by @FosterProgramming in [#7837](https://github.com/rh-hideout/pokeemerald-expansion/pull/7837)
- Adds an action to change a Pokemon ability in the party side of the Debug Menu
- Adds an action to set the friendship of a Pokemon in the party side of the Debug Menu
* Display TM/HM's move name in the debug menu by @estellarc in [#7994](https://github.com/rh-hideout/pokeemerald-expansion/pull/7994)
### Changed
* Text rendering optimizations by @mrgriffin in [#7497](https://github.com/rh-hideout/pokeemerald-expansion/pull/7497)
* Battle debug menu now checks correct parties depending on battler party by @grintoul1 in [#7652](https://github.com/rh-hideout/pokeemerald-expansion/pull/7652)
* Add make release target by @jschoeny in [#7296](https://github.com/rh-hideout/pokeemerald-expansion/pull/7296)
- Most of what's above. But most importantly, that normal `make` will have all the debug stuff enabled and so releases should be done with `make release`.
* Add pool rules for Mega Stones and Z-Crystals by @hedara90 in [#7720](https://github.com/rh-hideout/pokeemerald-expansion/pull/7720)
* `field_name_box` smol followup by @mudskipper13 in [#7762](https://github.com/rh-hideout/pokeemerald-expansion/pull/7762)
* Added COMPOUND_STRINGs to region_map_entries.h by @fdeblasio in [#7669](https://github.com/rh-hideout/pokeemerald-expansion/pull/7669)
* Improve ability/heldEffect access for IsBattlerGrounded func by @AlexOn1ine in [#7753](https://github.com/rh-hideout/pokeemerald-expansion/pull/7753)
* Removed `SAVE_TYPE_ERROR_SCREEN` config by @AsparagusEduardo in [#7836](https://github.com/rh-hideout/pokeemerald-expansion/pull/7836)
* Give the Coin Case when coins are maxed by @estellarc in [#7973](https://github.com/rh-hideout/pokeemerald-expansion/pull/7973)
* Revert HGSS dex and movelist changes by @FosterProgramming in [#8016](https://github.com/rh-hideout/pokeemerald-expansion/pull/8016)
* Converts some defines to enums and name unnamed enums by @Bassoonian in [#8019](https://github.com/rh-hideout/pokeemerald-expansion/pull/8019)
* Some more documentation and cleanup by @Bassoonian in [#8020](https://github.com/rh-hideout/pokeemerald-expansion/pull/8020)
* Even more enums and documentation by @Bassoonian in [#8029](https://github.com/rh-hideout/pokeemerald-expansion/pull/8029)
* Add type enum by @Bassoonian in [#8054](https://github.com/rh-hideout/pokeemerald-expansion/pull/8054)
* Minor clean up in menu.c by @estellarc in [#8060](https://github.com/rh-hideout/pokeemerald-expansion/pull/8060)
* Adds an auto-generated include file of script commands by @FosterProgramming in [#8156](https://github.com/rh-hideout/pokeemerald-expansion/pull/8156)
* Master to upcoming merge 20251107 by @grintoul1 in [#8167](https://github.com/rh-hideout/pokeemerald-expansion/pull/8167)
* porymap default settings by @FosterProgramming in [#8038](https://github.com/rh-hideout/pokeemerald-expansion/pull/8038)
- WARNING: A change was made for new projects map files to match poymap output. This change might break people's projects with existing versions of those files. The files affected are ` data/maps/map_groups.json`, `src/data/heal_locations.json`, `src/data/region_map/region_map_sections.json` and `src/data/wild_encounters.json`
If you have an issue with one of those files during the merging process, you should run this command
`git checkout HEAD -- <filename>`
which will reset the file to the version before you initiated the merge
* Adjust label workflow to only run if PR is approved by @hedara90 in [#8183](https://github.com/rh-hideout/pokeemerald-expansion/pull/8183)
* Add include/constants/script_commands.h to gitignore by @AlexOn1ine in [#8169](https://github.com/rh-hideout/pokeemerald-expansion/pull/8169)
* Converted landmarks to COMPOUND_STRINGs by @fdeblasio in [#8205](https://github.com/rh-hideout/pokeemerald-expansion/pull/8205)
* Added contest config and cleaned up contest category variables by @fdeblasio in [#8178](https://github.com/rh-hideout/pokeemerald-expansion/pull/8178)
* Moves name box configs into a new file by @AlexOn1ine in [#8250](https://github.com/rh-hideout/pokeemerald-expansion/pull/8250)
* Converted options text into COMPOUND_STRINGs by @fdeblasio in [#8248](https://github.com/rh-hideout/pokeemerald-expansion/pull/8248)
* Adjust Canceler naming to contain only one l by @AlexOn1ine in [#8258](https://github.com/rh-hideout/pokeemerald-expansion/pull/8258)
* Pret merge (16th of November, 2025) by @AlexOn1ine in [#8262](https://github.com/rh-hideout/pokeemerald-expansion/pull/8262)
* Fixed bKGD for last_used_ball_r_cycle.png by @montmoguri in [#8261](https://github.com/rh-hideout/pokeemerald-expansion/pull/8261)
* Small bg drawing optimization by @estellarc in [#8259](https://github.com/rh-hideout/pokeemerald-expansion/pull/8259)
* Added missing 'coolness' string by @fdeblasio in [#8274](https://github.com/rh-hideout/pokeemerald-expansion/pull/8274)
* *.party: text with lfs by @mrgriffin in [#8320](https://github.com/rh-hideout/pokeemerald-expansion/pull/8320)
* Fedora install instructions by @estellarc in [#8355](https://github.com/rh-hideout/pokeemerald-expansion/pull/8355)
* Indent unintented if statement by @hedara90 in [#8367](https://github.com/rh-hideout/pokeemerald-expansion/pull/8367)
### Fixed
* Added brackets where needed by @hedara90 in [#7781](https://github.com/rh-hideout/pokeemerald-expansion/pull/7781)
* Fix shiny stars being freed before shiny animation was played by @FosterProgramming in [#7917](https://github.com/rh-hideout/pokeemerald-expansion/pull/7917)
- Fixes shiny sparks in battle not appearing properly in rare circumstances (more common with various speedup options)
* Make movelist calculations happen during compilation instead of runtime by @FosterProgramming in [#7967](https://github.com/rh-hideout/pokeemerald-expansion/pull/7967)
- tmIlliterate flag in speciesInfo changed to teachingType. The options are `DEFAULT_LEARNING`, `TM_ILLITERATE` and `ALL_TEACHABLES`. The first two options match the tmIlliterate = false and tmIlliterate = true while the third one allow a pokemon to learn all teachables similarly to Mew
- Reduce EWRAM usage of HGSS dex
- Fix pokemon.c needing to be recompiled everytime a .inc file was changed
- P_TUTOR_MOVES_ARRAY has been removed (now always true when HGSS dex is enabled)
- Mew move teaching exception and univeral moves are now coded in the JSON file `src/data/pokemon/special_movesets.json` under the name signatureTeachables and universalMoves
* Fix unhandled config in hgss dex by @FosterProgramming in [#7999](https://github.com/rh-hideout/pokeemerald-expansion/pull/7999)
* Fixes compilation error due to #8002 by @AlexOn1ine in [#8050](https://github.com/rh-hideout/pokeemerald-expansion/pull/8050)
* Fix compile issue in gcc 11 by @AsparagusEduardo in [#8095](https://github.com/rh-hideout/pokeemerald-expansion/pull/8095)
* Update mdbook to v0.5.0-beta.1 by @rayrobdod in [#8133](https://github.com/rh-hideout/pokeemerald-expansion/pull/8133)
* Fix build failing with NOOPT=1 due to discarding static data. by @Ultimate-Bob in [#8053](https://github.com/rh-hideout/pokeemerald-expansion/pull/8053)
* Fix wild_encounters script not closing arrays properly by @FosterProgramming in [#8123](https://github.com/rh-hideout/pokeemerald-expansion/pull/8123)
* Fix missing FREE_MATCH_CALL by @FosterProgramming in [#8171](https://github.com/rh-hideout/pokeemerald-expansion/pull/8171)
* Again fixed compiling in GCC11 by @AsparagusEduardo in [#8184](https://github.com/rh-hideout/pokeemerald-expansion/pull/8184)
* Fix scroll prompt sometimes being off-screen with automatic line breaks by @hedara90 in [#8182](https://github.com/rh-hideout/pokeemerald-expansion/pull/8182)
* Fix gcc11 again by @AsparagusEduardo in [#8188](https://github.com/rh-hideout/pokeemerald-expansion/pull/8188)
* Fixed decompression error reporter OOB window creation by @hedara90 in [#8199](https://github.com/rh-hideout/pokeemerald-expansion/pull/8199)
* Fix error when compiling with P_FUSION_FORMS disabled by @cawtds in [#8298](https://github.com/rh-hideout/pokeemerald-expansion/pull/8298)
* Fix compile on gcc11 by @AlexOn1ine in [#8300](https://github.com/rh-hideout/pokeemerald-expansion/pull/8300)
* Fix debug battle flag never being cleared by @FosterProgramming in [#8357](https://github.com/rh-hideout/pokeemerald-expansion/pull/8357)
## 🗺️ Overworld 🗺️
### Added
* New Feature: ORAS Dowsing by @Bivurnum in [#7211](https://github.com/rh-hideout/pokeemerald-expansion/pull/7211)
- Added ORAS Dowsing Machine mechanics.
* feat: adds stevebeller's instant text and MandL27's faster text printing by @khbsd in [#8063](https://github.com/rh-hideout/pokeemerald-expansion/pull/8063)
* Implement GSC berry/apricorn tree functionality. by @GraionDilach in [#7777](https://github.com/rh-hideout/pokeemerald-expansion/pull/7777)
- Implement GSC berry/apricorn tree functionality.
### Changed
* Trainers trigger in local id order by @grintoul1 in [#7424](https://github.com/rh-hideout/pokeemerald-expansion/pull/7424)
* Added regional form evolution condition by @AsparagusEduardo in [#6990](https://github.com/rh-hideout/pokeemerald-expansion/pull/6990)
* Update fishing odds to match official games by @FosterProgramming in [#7574](https://github.com/rh-hideout/pokeemerald-expansion/pull/7574)
- (BREAKING!) Fishing config has been moved to a new file. If you did not use default config fishing, make sure to reapply your config settings in the new file.
- (WARNING!) If you wrote custom code that calls one the following function, you may need to include `fishing.h` to get access to them(their functionaly was not affected):
- `StartFishing`previously defined in `field_player_avatar.h`
- `CalculateChainFishingShinyRolls` previously_defined in `wild_encounter.h`
- Adds a new config option to increase fish bite chance in morning and evening to match XY
- Modifies the way fishing "proximity boost" is calculated to match XY
- Fix Sticky Hold / Suction Cups bug which were increasing odds the wrong way
* Add additional comment explaing map name popup transparency side-effects by @FosterProgramming in [#8117](https://github.com/rh-hideout/pokeemerald-expansion/pull/8117)
* update: time-based encounters system tuneup and @cawtds' header script by @khbsd in [#8158](https://github.com/rh-hideout/pokeemerald-expansion/pull/8158)
* Sets instant text speed flag to false by default by @khbsd in [#8179](https://github.com/rh-hideout/pokeemerald-expansion/pull/8179)
* Follower NPCs no longer move if the player would be forced back onto the same tile. by @Bivurnum in [#8260](https://github.com/rh-hideout/pokeemerald-expansion/pull/8260)
- Follower NPCs no longer move if the player would be forced back onto the same tile
### Fixed
* CheckForTrainersWantingBattle trainerObjects array now initialized to zero and loop now starts at zero by @grintoul1 in [#7765](https://github.com/rh-hideout/pokeemerald-expansion/pull/7765)
* Bugfix `setspeaker` Namebox not beign drawn correctly by @estellarc in [#7771](https://github.com/rh-hideout/pokeemerald-expansion/pull/7771)
* Banned species list by @FosterProgramming in [#8003](https://github.com/rh-hideout/pokeemerald-expansion/pull/8003)
- Add a window displaying caught banned species list in the Battle Frontier instead of the string detailing all the is
* Fix namebox bug when reloading the map mid-script by @FosterProgramming in [#8073](https://github.com/rh-hideout/pokeemerald-expansion/pull/8073)
* Fix copyvar instead of setvar causing issue with LTO by @FosterProgramming in [#8097](https://github.com/rh-hideout/pokeemerald-expansion/pull/8097)
* Fix berry blender not computing flavor correctly by @FosterProgramming in [#8113](https://github.com/rh-hideout/pokeemerald-expansion/pull/8113)
* Allow vs seekers to work with script not starting with trainerbattle by @FosterProgramming in [#8062](https://github.com/rh-hideout/pokeemerald-expansion/pull/8062)
- VS seeker now work with trainers who don't start with trainer_battle. You can use `vsseeker_rematchid TRAINER_ID` to indicate that this NPC is a battling trainer and the game will fetch the appropriate rematch if necessary. ` vsseeker_rematchid` work like a `cant_see_if_trainerflag_set` with additional functionality to handle vs seeker.
- All NPCs who don't start with either `vsseeker_rematchid` or `trainerbattle` will show as "X"/unmatchable by the vs seeker, so non-rematchable trainer who do not start with `trainerbattle may "lie" and not show an excalmation mark showing they haven't been fought yet. This can be fixed by including a `vsseeker_rematchid` for them too.
* Fix grade in summary screen not accounting for 26 IV by @FosterProgramming in [#8157](https://github.com/rh-hideout/pokeemerald-expansion/pull/8157)
* Fix match call regression by @FosterProgramming in [#8227](https://github.com/rh-hideout/pokeemerald-expansion/pull/8227)
* Fix mew sprite not appearing correctly by @FosterProgramming in [#8235](https://github.com/rh-hideout/pokeemerald-expansion/pull/8235)
* Fix wrong palette for types sprites in hgss dex after catching mon by @FosterProgramming in [#8153](https://github.com/rh-hideout/pokeemerald-expansion/pull/8153)
* Fix Apricorns with OW_SHOW_ITEM_DESCRIPTIONS not off by @hedara90 in [#8253](https://github.com/rh-hideout/pokeemerald-expansion/pull/8253)
* Fix mirage tower ceiling crumble color by @FosterProgramming in [#8081](https://github.com/rh-hideout/pokeemerald-expansion/pull/8081)
* Fix light flickering when different types of light sprite are present by @FosterProgramming in [#8043](https://github.com/rh-hideout/pokeemerald-expansion/pull/8043)
- Light intensity of neon signs was reduced to avoid conflicts with other light sources
- Fix flickering when both neon signs and light ball are present on screen
* Bug Fix: NPC Followers not working on slow sideways stairs by @Bivurnum in [#8257](https://github.com/rh-hideout/pokeemerald-expansion/pull/8257)
- Fixed NPC followers on slow sideways stairs
* Fix not enough memory being allocated when moves load background in contests by @FosterProgramming in [#8284](https://github.com/rh-hideout/pokeemerald-expansion/pull/8284)
* Make MON_DATA_NICKNAME10 return a 10 character string by @FosterProgramming in [#8291](https://github.com/rh-hideout/pokeemerald-expansion/pull/8291)
- Fix bug where interviews would print bad data in their string
* Fix game freeze when trainers try to walk on sideway stairs by @FosterProgramming in [#8316](https://github.com/rh-hideout/pokeemerald-expansion/pull/8316)
* Fix tossing items applying to the wrong stack by @FosterProgramming in [#8282](https://github.com/rh-hideout/pokeemerald-expansion/pull/8282)
* Prevent moves to be changed when choosing half party by @FosterProgramming in [#8336](https://github.com/rh-hideout/pokeemerald-expansion/pull/8336)
## 🐉 Pokémon 🐉
### Added
* Add Legends Z-A content by @Bassoonian in [#7935](https://github.com/rh-hideout/pokeemerald-expansion/pull/7935)
* 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).
* Move Relearners for TMs, Tutors and Egg moves by @PCG06 in [#8040](https://github.com/rh-hideout/pokeemerald-expansion/pull/8040)
- Increased the size of `MAX_RELEARNER_MOVES` to 60 to prevent crashes when viewing Mew.
### Changed
* Nickit & Thievul visual revamp by @purrfectdoodle in [#7689](https://github.com/rh-hideout/pokeemerald-expansion/pull/7689)
* Fix Kyurem typo in swap move tables by @Bassoonian in [#8139](https://github.com/rh-hideout/pokeemerald-expansion/pull/8139)
* Fix typo in Voltorb-Hisui pokedex entry by @PhallenTree in [#8143](https://github.com/rh-hideout/pokeemerald-expansion/pull/8143)
* Fix some followers sprites by @estellarc in [#8208](https://github.com/rh-hideout/pokeemerald-expansion/pull/8208)
### Fixed
* Fix gba sprites trying load non existent female versions by @FosterProgramming in [#7996](https://github.com/rh-hideout/pokeemerald-expansion/pull/7996)
- Fixes issues with pokemon getting gender differences in later gens when using gen3 sprite config
* GetEggSpecies: Only enabled species by @mrgriffin in [#8221](https://github.com/rh-hideout/pokeemerald-expansion/pull/8221)
* Fix compiling using `make debug` by @PCG06 in [#8380](https://github.com/rh-hideout/pokeemerald-expansion/pull/8380)
## ⚔️ Battle General ⚔️
### Added
* Config for capture to appear critical if the pokemon is already caught by @FosterProgramming in [#7730](https://github.com/rh-hideout/pokeemerald-expansion/pull/7730)
### Changed
* Separates FRB and FRZ animations by @grintoul1 in [#7611](https://github.com/rh-hideout/pokeemerald-expansion/pull/7611)
* Update multiple battle messages by @AsparagusEduardo in [#7529](https://github.com/rh-hideout/pokeemerald-expansion/pull/7529)
- Removed unused messages
- Changed ability "X prevents Y" to "It doesn't affect X..."
- Eg. `"The opposing Snorlax's Immunity prevents poisoning!"`
- Removed `B_ABILITY_POP_UP`. Revert commit `b501fe7354bcd957396465c621ae7af5959ac5b0` to undo this.
* Refactors Attackstring and PP deduction by @AlexOn1ine in [#7402](https://github.com/rh-hideout/pokeemerald-expansion/pull/7402)
* Remove Uproar attack battle script by @AlexOn1ine in [#7715](https://github.com/rh-hideout/pokeemerald-expansion/pull/7715)
* Fix up end turn scripts plus small documentation by @AlexOn1ine in [#7758](https://github.com/rh-hideout/pokeemerald-expansion/pull/7758)
* Remove redundant function call by @AlexOn1ine in [#7752](https://github.com/rh-hideout/pokeemerald-expansion/pull/7752)
* Minor White Herb and Neutralizing Gas clean up by @AlexOn1ine in [#7754](https://github.com/rh-hideout/pokeemerald-expansion/pull/7754)
* Minor clean up for Lightning Rod / Storm Drain by @AlexOn1ine in [#7778](https://github.com/rh-hideout/pokeemerald-expansion/pull/7778)
* Improve ability/heldEffect access for IsBattlerGrounded func by @AlexOn1ine in [#7753](https://github.com/rh-hideout/pokeemerald-expansion/pull/7753)
* Add func GetChosenMoveFromPosition by @AlexOn1ine in [#7810](https://github.com/rh-hideout/pokeemerald-expansion/pull/7810)
* GetBattlerHoldEffect clean up by @AlexOn1ine in [#7819](https://github.com/rh-hideout/pokeemerald-expansion/pull/7819)
* Remove unused gBattleStruct fields by @Bassoonian in [#7822](https://github.com/rh-hideout/pokeemerald-expansion/pull/7822)
* feat: change defines in `constants/abilities.h` to an enum by @khbsd in [#7006](https://github.com/rh-hideout/pokeemerald-expansion/pull/7006)
* Streamline tryheal macros by @Bassoonian in [#7830](https://github.com/rh-hideout/pokeemerald-expansion/pull/7830)
* No bag use flag changed to a varable by @FosterProgramming in [#7780](https://github.com/rh-hideout/pokeemerald-expansion/pull/7780)
- IMPORTANT: The config flag B_FLAG_NO_BAG_USE has been removed
- A config var B_VAR_NO_BAG_USE has been added to replace it. It allows you to choose between:
bag available in battle, bag available in wild battle only, and unavailable bag
* Remove two unused bits from battle structs by @Bassoonian in [#7835](https://github.com/rh-hideout/pokeemerald-expansion/pull/7835)
* Removes a few redundant hitmarkers by @AlexOn1ine in [#7915](https://github.com/rh-hideout/pokeemerald-expansion/pull/7915)
* Remove EffectHitSetTerrain script to use moveeffect by @AlexOn1ine in [#7938](https://github.com/rh-hideout/pokeemerald-expansion/pull/7938)
* Clean up follow up for AtkCanceller refactor by @AlexOn1ine in [#7951](https://github.com/rh-hideout/pokeemerald-expansion/pull/7951)
* Optimize GetWhichBattlerFasterOrTies by @AlexOn1ine in [#7953](https://github.com/rh-hideout/pokeemerald-expansion/pull/7953)
* Decouple passive hp updates from move damage updates by @AlexOn1ine in [#7942](https://github.com/rh-hideout/pokeemerald-expansion/pull/7942)
* Remove appearedInBattle bitfield & redundant use of sentOut partyState by @Nopinou in [#8011](https://github.com/rh-hideout/pokeemerald-expansion/pull/8011)
* Volatile cleared in a redundant spot by @AlexOn1ine in [#8015](https://github.com/rh-hideout/pokeemerald-expansion/pull/8015)
* Moved usedHeldItem to Party State struct by @AlexOn1ine in [#8006](https://github.com/rh-hideout/pokeemerald-expansion/pull/8006)
* Remove usage of gBattlerTarget for MirrorHerb/Opportunist by @AlexOn1ine in [#8033](https://github.com/rh-hideout/pokeemerald-expansion/pull/8033)
* Fixed test "Revival Blessing cannot revive a partner's party member" by @grintoul1 in [#8031](https://github.com/rh-hideout/pokeemerald-expansion/pull/8031)
* Decouple (Overworld) Statuses from ability function by @AlexOn1ine in [#8002](https://github.com/rh-hideout/pokeemerald-expansion/pull/8002)
* Combine Simple Beam and Worry Seed into one effect by @AlexOn1ine in [#8039](https://github.com/rh-hideout/pokeemerald-expansion/pull/8039)
* Clean up for item hold effect refactor by @AlexOn1ine in [#8014](https://github.com/rh-hideout/pokeemerald-expansion/pull/8014)
* Grudge, Destiny Bond and FaintBattler refactor by @AlexOn1ine in [#8072](https://github.com/rh-hideout/pokeemerald-expansion/pull/8072)
* Parametrized Ice Face's weather form change by @AsparagusEduardo in [#8115](https://github.com/rh-hideout/pokeemerald-expansion/pull/8115)
* Clean up redundant todo by @AlexOn1ine in [#8094](https://github.com/rh-hideout/pokeemerald-expansion/pull/8094)
* Deprecate various macro by @AlexOn1ine in [#8092](https://github.com/rh-hideout/pokeemerald-expansion/pull/8092)
* Fixes hacky SetMoveEffect script calls by @AlexOn1ine in [#7987](https://github.com/rh-hideout/pokeemerald-expansion/pull/7987)
* Create BattleStruct sub struct for event states by @AlexOn1ine in [#8131](https://github.com/rh-hideout/pokeemerald-expansion/pull/8131)
* Attackstring hitmarker clean up by @AlexOn1ine in [#8136](https://github.com/rh-hideout/pokeemerald-expansion/pull/8136)
* Clean up ability effect hitmarker by @AlexOn1ine in [#8138](https://github.com/rh-hideout/pokeemerald-expansion/pull/8138)
* Increase number of additional move effects by @AlexOn1ine in [#8149](https://github.com/rh-hideout/pokeemerald-expansion/pull/8149)
* Remove redundant Future Sight flag by @AlexOn1ine in [#8185](https://github.com/rh-hideout/pokeemerald-expansion/pull/8185)
* Powder Move blocking cleanup by @PhallenTree in [#8194](https://github.com/rh-hideout/pokeemerald-expansion/pull/8194)
* Micro clean up in BattleStruct by @AlexOn1ine in [#8177](https://github.com/rh-hideout/pokeemerald-expansion/pull/8177)
* HandleAction_UseMove minor cleanup by @mrgriffin in [#8214](https://github.com/rh-hideout/pokeemerald-expansion/pull/8214)
* Revert gBattleTurnCounter change by @AlexOn1ine in [#8197](https://github.com/rh-hideout/pokeemerald-expansion/pull/8197)
* Canceller -> Canceler rename by @AlexOn1ine in [#8294](https://github.com/rh-hideout/pokeemerald-expansion/pull/8294)
* Remove leftover scrtipt redirection by @AlexOn1ine in [#8317](https://github.com/rh-hideout/pokeemerald-expansion/pull/8317)
* Expand usage of FaintedActions enum in HandleFaintedMonActions by @PhallenTree in [#8346](https://github.com/rh-hideout/pokeemerald-expansion/pull/8346)
* Move end clear bits clean up by @AlexOn1ine in [#8354](https://github.com/rh-hideout/pokeemerald-expansion/pull/8354)
* Restored encourageEncore flag to non-volatile status effects by @AsparagusEduardo in [#8387](https://github.com/rh-hideout/pokeemerald-expansion/pull/8387)
### Fixed
* Fixes Weak Armor and items not displaying stat change attributes by @PhallenTree in [#7701](https://github.com/rh-hideout/pokeemerald-expansion/pull/7701)
* Refactors ruin ability checks into a field effect by @AlexOn1ine in [#7711](https://github.com/rh-hideout/pokeemerald-expansion/pull/7711)
* Attackcanceller fixes and improvements by @AlexOn1ine in [#7698](https://github.com/rh-hideout/pokeemerald-expansion/pull/7698)
* Fix Critical Capture RNG and Catching Charm boost by @kittenchilly in [#7534](https://github.com/rh-hideout/pokeemerald-expansion/pull/7534)
* Fixes activation order for a couple abilities by @AlexOn1ine in [#7732](https://github.com/rh-hideout/pokeemerald-expansion/pull/7732)
* More White Herb fixes/clean up by @AlexOn1ine in [#7826](https://github.com/rh-hideout/pokeemerald-expansion/pull/7826)
* Missing IsBattlerAlive checks in Opportunist/Mirror Herb by @AlexOn1ine in [#7829](https://github.com/rh-hideout/pokeemerald-expansion/pull/7829)
* Item battle effect refactor by @AlexOn1ine in [#7857](https://github.com/rh-hideout/pokeemerald-expansion/pull/7857)
* Fix Fling Mental Herb message by @AlexOn1ine in [#7984](https://github.com/rh-hideout/pokeemerald-expansion/pull/7984)
* Fixes Ruin field statuses negation conditions + upcoming cleanup by @PhallenTree in [#8042](https://github.com/rh-hideout/pokeemerald-expansion/pull/8042)
* Fix nature power string and add support for evnvironment in tests by @FosterProgramming in [#8068](https://github.com/rh-hideout/pokeemerald-expansion/pull/8068)
- Add option to choose an environment when setting up a battle test
* Corrects battler position checks in battle_message.c by @grintoul1 in [#8070](https://github.com/rh-hideout/pokeemerald-expansion/pull/8070)
* Emergency Exit on hazards activation + fix end of turn activation by @PhallenTree in [#8075](https://github.com/rh-hideout/pokeemerald-expansion/pull/8075)
* Improve sBattleIntroSlideFuncs bounds check by @hedara90 in [#8084](https://github.com/rh-hideout/pokeemerald-expansion/pull/8084)
* Fixes Sticky Barb never getting transferred to attacker + tests by @PhallenTree in [#8108](https://github.com/rh-hideout/pokeemerald-expansion/pull/8108)
* Fixes flung items sometimes being blocked by Unnerve by @PhallenTree in [#8114](https://github.com/rh-hideout/pokeemerald-expansion/pull/8114)
* Adjust faint battler script by @AlexOn1ine in [#8137](https://github.com/rh-hideout/pokeemerald-expansion/pull/8137)
* Allow to send active mon to PC when capturing a Pokemon by @FosterProgramming in [#8111](https://github.com/rh-hideout/pokeemerald-expansion/pull/8111)
* Fix transform not loading the correct sprites when facing shiny or unown by @FosterProgramming in [#8146](https://github.com/rh-hideout/pokeemerald-expansion/pull/8146)
* Fixes Receiver not immediately activating copied abilities by @PhallenTree in [#8162](https://github.com/rh-hideout/pokeemerald-expansion/pull/8162)
* Fix destiny knot behavior and add tests by @FosterProgramming in [#8174](https://github.com/rh-hideout/pokeemerald-expansion/pull/8174)
* Fix recharge moves + add recharge move tests by @FosterProgramming in [#8181](https://github.com/rh-hideout/pokeemerald-expansion/pull/8181)
* Fixes Magician for spread moves by @AlexOn1ine in [#8170](https://github.com/rh-hideout/pokeemerald-expansion/pull/8170)
* Fix tera tint not applying on activation by @FosterProgramming in [#8135](https://github.com/rh-hideout/pokeemerald-expansion/pull/8135)
* Fixes wrongly assigned count for Semi Invulnerable state by @AlexOn1ine in [#8175](https://github.com/rh-hideout/pokeemerald-expansion/pull/8175)
* Fixes Drain Punch / Parental Bond / Scale Shot interaction by @AlexOn1ine in [#8198](https://github.com/rh-hideout/pokeemerald-expansion/pull/8198)
* Avoid illegal GetBattlerAtPosition by @mrgriffin in [#8225](https://github.com/rh-hideout/pokeemerald-expansion/pull/8225)
* DamageContext: chosenMove by @mrgriffin in [#8224](https://github.com/rh-hideout/pokeemerald-expansion/pull/8224)
* AccuracyCheck: Avoid calling GetMoveEffect with NO_ACC_CALC_CHECK_LOC… by @mrgriffin in [#8222](https://github.com/rh-hideout/pokeemerald-expansion/pull/8222)
* moveend: Handle MOVE_UNAVAILABLE in MOVEEND_THIRD_MOVE_BLOCK by @mrgriffin in [#8215](https://github.com/rh-hideout/pokeemerald-expansion/pull/8215)
* Fix wrong ditto sprite on capture by @FosterProgramming in [#8226](https://github.com/rh-hideout/pokeemerald-expansion/pull/8226)
* SpriteCB_EnemyShadow: Avoid use-after-free by @mrgriffin in [#8220](https://github.com/rh-hideout/pokeemerald-expansion/pull/8220)
* trysethelpinghand avoid illegal target by @mrgriffin in [#8218](https://github.com/rh-hideout/pokeemerald-expansion/pull/8218)
* Fixed an issue related to same turn Encore targeting by @LinathanZel in [#8230](https://github.com/rh-hideout/pokeemerald-expansion/pull/8230)
* Avoid illegal move retargeting in singles by @mrgriffin in [#8217](https://github.com/rh-hideout/pokeemerald-expansion/pull/8217)
* Fixes Shell Trap not activating on contact but no damage by @AlexOn1ine in [#8243](https://github.com/rh-hideout/pokeemerald-expansion/pull/8243)
* Fix Magic Coat reflecting hazard moves incorrectly when used by a partner by @moostoet in [#8272](https://github.com/rh-hideout/pokeemerald-expansion/pull/8272)
- Magic Coat now properly reflects hazard moves from either slot in double battles.
* Shell Trap tests and Fix for Encore interaction by @AlexOn1ine in [#8268](https://github.com/rh-hideout/pokeemerald-expansion/pull/8268)
* Fix max mushroom unable to be selected when one stat is maxed by @FosterProgramming in [#8287](https://github.com/rh-hideout/pokeemerald-expansion/pull/8287)
* Block selecting x items when contrary pokemon are at minimum stages by @FosterProgramming in [#8288](https://github.com/rh-hideout/pokeemerald-expansion/pull/8288)
* Fix Fur Coat affecting confusion self-damage by @moostoet in [#8267](https://github.com/rh-hideout/pokeemerald-expansion/pull/8267)
- Fix confusion self-damage ignoring defense/attack abilities such as Fur Coat.
* Fixes End Turn Speed Order by @AlexOn1ine in [#8289](https://github.com/rh-hideout/pokeemerald-expansion/pull/8289)
* Make switchout abilities trigger after a pokemon has returned to its ball by @FosterProgramming in [#8304](https://github.com/rh-hideout/pokeemerald-expansion/pull/8304)
* Fix Shed Shell allowing fleeing/teleporting and Smoke Ball failing to guarantee escape by @moostoet in [#8286](https://github.com/rh-hideout/pokeemerald-expansion/pull/8286)
* Fix bug where defiant/competitive would pass their stat change to the next target by @FosterProgramming in [#8312](https://github.com/rh-hideout/pokeemerald-expansion/pull/8312)
* Fix max move message against semi invulnerable target by @FosterProgramming in [#8313](https://github.com/rh-hideout/pokeemerald-expansion/pull/8313)
* Fixes Neutralizing Gas displaying message when exiting with multiple users by @PhallenTree in [#8318](https://github.com/rh-hideout/pokeemerald-expansion/pull/8318)
* Fix Kings Rock not being ignored by flinch moves by @AlexOn1ine in [#8327](https://github.com/rh-hideout/pokeemerald-expansion/pull/8327)
* Fix Upper Hand failure still activating Protean by @AlexOn1ine in [#8329](https://github.com/rh-hideout/pokeemerald-expansion/pull/8329)
* Fix Protosynthesis stat boosts ignoring speed drops by @moostoet in [#8277](https://github.com/rh-hideout/pokeemerald-expansion/pull/8277)
- Protosynthesis and Quark Drive now recalculate their boosted stat when Speed is lowered or Neutralizing Gas temporarily disables the ability.
* Fix switch-in abilities not triggering on revive by @FosterProgramming in [#8293](https://github.com/rh-hideout/pokeemerald-expansion/pull/8293)
* More Neutralizing Gas cleanup by @PhallenTree in [#8335](https://github.com/rh-hideout/pokeemerald-expansion/pull/8335)
* Clear Destiny Bond/Grudge bits when not activated by @PhallenTree in [#8334](https://github.com/rh-hideout/pokeemerald-expansion/pull/8334)
* Fix cure status item effect not working properly in doubles by @FosterProgramming in [#8339](https://github.com/rh-hideout/pokeemerald-expansion/pull/8339)
* Fix infinite confusion (berserk gene) not being cured by cure_status bag items by @FosterProgramming in [#8343](https://github.com/rh-hideout/pokeemerald-expansion/pull/8343)
* Fix `B_PHYSICAL_SPECIAL_SPLIT` when set to Gen 4 by @AsparagusEduardo in [#8348](https://github.com/rh-hideout/pokeemerald-expansion/pull/8348)
* Refactor Beat Up handling for Gen 3/4 defaults, fix crit check, and expand test coverage by @moostoet in [#8307](https://github.com/rh-hideout/pokeemerald-expansion/pull/8307)
- BUGFIX: Beat Up (`GEN =< 5`) now no longer doubles its damage on every non-critical hit
- Beat Up now precomputes eligible party members/strikers for consistent multi-hit resolution and expanded tests covering both pre-Gen5 and Gen5+ rules
* Fix substitute graphic not disappearing after using a pivor move by @FosterProgramming in [#8340](https://github.com/rh-hideout/pokeemerald-expansion/pull/8340)
* Fixes Beak Blast burning after Beak Blast was already used by @PhallenTree in [#8361](https://github.com/rh-hideout/pokeemerald-expansion/pull/8361)
* Fix Roar not being recorded for LastUsedMove by @AlexOn1ine in [#8362](https://github.com/rh-hideout/pokeemerald-expansion/pull/8362)
* Fixes Neutralizing Gas / Mold Breaker / Dragon Darts interaction by @AlexOn1ine in [#8389](https://github.com/rh-hideout/pokeemerald-expansion/pull/8389)
* Fixes battle tv overwriting damage values by @AlexOn1ine in [#8378](https://github.com/rh-hideout/pokeemerald-expansion/pull/8378)
* Fix ball cycling not working properly when the same ball take multiple bag slots by @FosterProgramming in [#8163](https://github.com/rh-hideout/pokeemerald-expansion/pull/8163)
- Two new defines added to items.h `FIRST_BALL_INDEX` and `LAST_BALL_INDEX`
- We now assume the indexes of all regular ball usable in wild battle have consecutive indexes and some features (throw ball shortcut in battle) might break if not true
* Prevent double Dynamax for single-trainer 2v1 multi battles by @moostoet in [#8323](https://github.com/rh-hideout/pokeemerald-expansion/pull/8323)
- Fixed AI 2v1 multibattles incorrectly allowing both opponent leads to Dynamax in the same turn.
## 🤹 Moves 🤹
### Changed
* Separates FRB and FRZ animations by @grintoul1 in [#7611](https://github.com/rh-hideout/pokeemerald-expansion/pull/7611)
* Fixed test "Revival Blessing cannot revive a partner's party member" by @grintoul1 in [#8031](https://github.com/rh-hideout/pokeemerald-expansion/pull/8031)
* Fixed Uproar's description and spacing by @fdeblasio in [#8187](https://github.com/rh-hideout/pokeemerald-expansion/pull/8187)
* Clean usage of gMovesInfo by @AsparagusEduardo in [#8234](https://github.com/rh-hideout/pokeemerald-expansion/pull/8234)
- Also, fixed an OOB in `HasMoveThatChangesKOThreshold`
* Added Gen 6 contest combos by @fdeblasio in [#8251](https://github.com/rh-hideout/pokeemerald-expansion/pull/8251)
* Make tailwind anim mirror based on side by @FosterProgramming in [#8249](https://github.com/rh-hideout/pokeemerald-expansion/pull/8249)
* Make rainbow effect anim change based on side by @FosterProgramming in [#8269](https://github.com/rh-hideout/pokeemerald-expansion/pull/8269)
- Art assets by [SonikkuA-DatH](https://github.com/SonikkuA-DatH)
* Update Lash Out description to clarify its effect by @PhallenTree in [#8372](https://github.com/rh-hideout/pokeemerald-expansion/pull/8372)
### Fixed
* Fix some move animations leaking VRAM and freeing already freed tags by @hedara90 in [#7977](https://github.com/rh-hideout/pokeemerald-expansion/pull/7977)
## 🎭 Abilities 🎭
### Changed
* followup: AbilityBattleEffects return type is incorrect by @khbsd in [#7827](https://github.com/rh-hideout/pokeemerald-expansion/pull/7827)
## 🧶 Items 🧶
### Fixed
* Allow vs seekers to work with script not starting with trainerbattle by @FosterProgramming in [#8062](https://github.com/rh-hideout/pokeemerald-expansion/pull/8062)
- VS seeker now work with trainers who don't start with trainer_battle. You can use `vsseeker_rematchid TRAINER_ID` to indicate that this NPC is a battling trainer and the game will fetch the appropriate rematch if necessary. ` vsseeker_rematchid` work like a `cant_see_if_trainerflag_set` with additional functionality to handle vs seeker.
- All NPCs who don't start with either `vsseeker_rematchid` or `trainerbattle` will show as "X"/unmatchable by the vs seeker, so non-rematchable trainer who do not start with `trainerbattle may "lie" and not show an excalmation mark showing they haven't been fought yet. This can be fixed by including a `vsseeker_rematchid` for them too.
* Removed extra period in Pokéshi Doll description by @montmoguri in [#8252](https://github.com/rh-hideout/pokeemerald-expansion/pull/8252)
## 🤖 Battle AI 🤖
### Added
* Improved move additional effect handling; now accounts for Shield Dust. by @surskitty in [#7650](https://github.com/rh-hideout/pokeemerald-expansion/pull/7650)
* Adjusted AI handling for Gravity; AI for weather/field status additional effects. by @surskitty in [#7651](https://github.com/rh-hideout/pokeemerald-expansion/pull/7651)
* Improved AI for status curing; trainer items, Purify, Smelling Salts, Sparkling Aria by @surskitty in [#7853](https://github.com/rh-hideout/pokeemerald-expansion/pull/7853)
### Changed
* AI uses Magnetic Flux. by @surskitty in [#7642](https://github.com/rh-hideout/pokeemerald-expansion/pull/7642)
* AI uses Flower Shield. by @surskitty in [#7640](https://github.com/rh-hideout/pokeemerald-expansion/pull/7640)
* AI uses Life Dew. by @surskitty in [#7643](https://github.com/rh-hideout/pokeemerald-expansion/pull/7643)
* AI uses Gear Up. by @surskitty in [#7641](https://github.com/rh-hideout/pokeemerald-expansion/pull/7641)
* Correcting test AI won't use status moves if partner chose Helping Hand by @surskitty in [#7649](https://github.com/rh-hideout/pokeemerald-expansion/pull/7649)
* IncreaseStatUpScore adjustments for Simple, +3 moves, Acupressure, max move effects by @surskitty in [#7662](https://github.com/rh-hideout/pokeemerald-expansion/pull/7662)
* AI handling for Coaching. by @surskitty in [#7661](https://github.com/rh-hideout/pokeemerald-expansion/pull/7661)
* Simplifying calls to IsBattlerTrapped; treats being unable to switch as trappedness by @surskitty in [#7671](https://github.com/rh-hideout/pokeemerald-expansion/pull/7671)
* AI Tests: Gimmick Support by @mrgriffin in [#7694](https://github.com/rh-hideout/pokeemerald-expansion/pull/7694)
* AI can use Z-status moves by @surskitty in [#7666](https://github.com/rh-hideout/pokeemerald-expansion/pull/7666)
* Move some checks out of IncreaseStatUpScore to ShouldRaiseAnyStat by @surskitty in [#7722](https://github.com/rh-hideout/pokeemerald-expansion/pull/7722)
* Moving additional effects out of AI_CalcMoveEffectScore and into AI_CalcMoveAdditionalEffectScore by @surskitty in [#7727](https://github.com/rh-hideout/pokeemerald-expansion/pull/7727)
* AI sees dynamic moves and Nature Power as correct types for weather, terrain by @surskitty in [#7759](https://github.com/rh-hideout/pokeemerald-expansion/pull/7759)
* Fix abusable two-turn-move switch behaviour by @Pawkkie in [#7770](https://github.com/rh-hideout/pokeemerald-expansion/pull/7770)
* Z Status move handling: Conversion, Detect, Nature Power, Transform by @surskitty in [#7721](https://github.com/rh-hideout/pokeemerald-expansion/pull/7721)
* Use stored values for ai switch-in effectiveness checks by @AlexOn1ine in [#7794](https://github.com/rh-hideout/pokeemerald-expansion/pull/7794)
* Changing all HasBattlerSideAbility to AI_IsAbilityOnSide. by @surskitty in [#7927](https://github.com/rh-hideout/pokeemerald-expansion/pull/7927)
* Weather/Terrain AI touch-ups. by @surskitty in [#7933](https://github.com/rh-hideout/pokeemerald-expansion/pull/7933)
* Improving the checks for the AI to avoid Encore; adding RISK_ENCORE_CHANCE config. by @surskitty in [#7929](https://github.com/rh-hideout/pokeemerald-expansion/pull/7929)
* Fixes CanUseLastResort and resolves 3 KNOWN_FAILING Last Resort tests by @grintoul1 in [#8032](https://github.com/rh-hideout/pokeemerald-expansion/pull/8032)
* Add AI flag AI_FLAG_KNOW_OPPONENT_PARTY to know all species in party by @moostoet in [#8290](https://github.com/rh-hideout/pokeemerald-expansion/pull/8290)
### Fixed
* Score adjustments towards guaranteed stat drops. by @surskitty in [#7670](https://github.com/rh-hideout/pokeemerald-expansion/pull/7670)
* AI uses Extreme Evoboost. by @surskitty in [#7706](https://github.com/rh-hideout/pokeemerald-expansion/pull/7706)
* Fixes AI scoring when Priority moves are blocked by @PhallenTree in [#7745](https://github.com/rh-hideout/pokeemerald-expansion/pull/7745)
* fix (AI scoring): shield dust considerations, IsMoveEffectInMinus self effect edge case, hitsToKO zero-case consideration by @ghostyboyy97 in [#8126](https://github.com/rh-hideout/pokeemerald-expansion/pull/8126)
- The AI now sees Shield Dust on the player's Pokemon correctly
- The AI now sees self-targeted positive effect boosts correctly
* fix (contrary): Contrary stat down handling in MoveEffectInPlus by @ghostyboyy97 in [#8165](https://github.com/rh-hideout/pokeemerald-expansion/pull/8165)
- When comparing positive move effects in damaging move comparison, the AI will correctly see moves like Leaf Storm as beneficial if their Pokemon has Contrary.
* Added check for parental bond killing through sturdy by @MaximeGr00 in [#8206](https://github.com/rh-hideout/pokeemerald-expansion/pull/8206)
- AI now accounts for Parental Bond when checking if a move can ko the player through sturdy/focus sash.
* AI: Handle MOVE_UNAVAILABLE in last used moves by @mrgriffin in [#8219](https://github.com/rh-hideout/pokeemerald-expansion/pull/8219)
* Fix AI_FLAG_DOUBLE_ACE_POKEMON sending duplicate Pokémon in doubles by @moostoet in [#8279](https://github.com/rh-hideout/pokeemerald-expansion/pull/8279)
- Fixed AI_FLAG_DOUBLE_ACE_POKEMON trainers resending the same Pokémon after a KO instead of their two Ace Pokémon in double battles.
* Rework switch AI and add more tests for ace pokemon flags by @FosterProgramming in [#8321](https://github.com/rh-hideout/pokeemerald-expansion/pull/8321)
- All remaining issues with the AI flags Ace Pokemon and Double Ace pokemon should be fixed
- The smart switching AI should be less likely to switch a pokemon about to die if it doesn't have a pokemon with a good matchup to replace it
* Fix switchin KO threshold logic by @Pawkkie in [#8370](https://github.com/rh-hideout/pokeemerald-expansion/pull/8370)
## 🧹 Other Cleanup 🧹
* Update multiple battle messages by @AsparagusEduardo in [#7529](https://github.com/rh-hideout/pokeemerald-expansion/pull/7529)
- Removed unused messages
- Changed ability "X prevents Y" to "It doesn't affect X..."
- Eg. `"The opposing Snorlax's Immunity prevents poisoning!"`
- Removed `B_ABILITY_POP_UP`. Revert commit `b501fe7354bcd957396465c621ae7af5959ac5b0` to undo this.
* Battle debug menu now checks correct parties depending on battler party by @grintoul1 in [#7652](https://github.com/rh-hideout/pokeemerald-expansion/pull/7652)
* Correcting test AI won't use status moves if partner chose Helping Hand by @surskitty in [#7649](https://github.com/rh-hideout/pokeemerald-expansion/pull/7649)
* Remove Uproar attack battle script by @AlexOn1ine in [#7715](https://github.com/rh-hideout/pokeemerald-expansion/pull/7715)
* Fix up end turn scripts plus small documentation by @AlexOn1ine in [#7758](https://github.com/rh-hideout/pokeemerald-expansion/pull/7758)
* `field_name_box` smol followup by @mudskipper13 in [#7762](https://github.com/rh-hideout/pokeemerald-expansion/pull/7762)
* Remove redundant function call by @AlexOn1ine in [#7752](https://github.com/rh-hideout/pokeemerald-expansion/pull/7752)
* Minor White Herb and Neutralizing Gas clean up by @AlexOn1ine in [#7754](https://github.com/rh-hideout/pokeemerald-expansion/pull/7754)
* Minor clean up for Lightning Rod / Storm Drain by @AlexOn1ine in [#7778](https://github.com/rh-hideout/pokeemerald-expansion/pull/7778)
* Add func GetChosenMoveFromPosition by @AlexOn1ine in [#7810](https://github.com/rh-hideout/pokeemerald-expansion/pull/7810)
* GetBattlerHoldEffect clean up by @AlexOn1ine in [#7819](https://github.com/rh-hideout/pokeemerald-expansion/pull/7819)
* Remove unused gBattleStruct fields by @Bassoonian in [#7822](https://github.com/rh-hideout/pokeemerald-expansion/pull/7822)
* followup: AbilityBattleEffects return type is incorrect by @khbsd in [#7827](https://github.com/rh-hideout/pokeemerald-expansion/pull/7827)
* Streamline tryheal macros by @Bassoonian in [#7830](https://github.com/rh-hideout/pokeemerald-expansion/pull/7830)
* Remove two unused bits from battle structs by @Bassoonian in [#7835](https://github.com/rh-hideout/pokeemerald-expansion/pull/7835)
* Removes a few redundant hitmarkers by @AlexOn1ine in [#7915](https://github.com/rh-hideout/pokeemerald-expansion/pull/7915)
* Remove EffectHitSetTerrain script to use moveeffect by @AlexOn1ine in [#7938](https://github.com/rh-hideout/pokeemerald-expansion/pull/7938)
* Clean up follow up for AtkCanceller refactor by @AlexOn1ine in [#7951](https://github.com/rh-hideout/pokeemerald-expansion/pull/7951)
* Remove appearedInBattle bitfield & redundant use of sentOut partyState by @Nopinou in [#8011](https://github.com/rh-hideout/pokeemerald-expansion/pull/8011)
* Some more documentation and cleanup by @Bassoonian in [#8020](https://github.com/rh-hideout/pokeemerald-expansion/pull/8020)
* Volatile cleared in a redundant spot by @AlexOn1ine in [#8015](https://github.com/rh-hideout/pokeemerald-expansion/pull/8015)
* Moved usedHeldItem to Party State struct by @AlexOn1ine in [#8006](https://github.com/rh-hideout/pokeemerald-expansion/pull/8006)
* Remove usage of gBattlerTarget for MirrorHerb/Opportunist by @AlexOn1ine in [#8033](https://github.com/rh-hideout/pokeemerald-expansion/pull/8033)
* Even more enums and documentation by @Bassoonian in [#8029](https://github.com/rh-hideout/pokeemerald-expansion/pull/8029)
* Decouple (Overworld) Statuses from ability function by @AlexOn1ine in [#8002](https://github.com/rh-hideout/pokeemerald-expansion/pull/8002)
* Fixes Ruin field statuses negation conditions + upcoming cleanup by @PhallenTree in [#8042](https://github.com/rh-hideout/pokeemerald-expansion/pull/8042)
* Minor clean up in menu.c by @estellarc in [#8060](https://github.com/rh-hideout/pokeemerald-expansion/pull/8060)
* Clean up for item hold effect refactor by @AlexOn1ine in [#8014](https://github.com/rh-hideout/pokeemerald-expansion/pull/8014)
* Parametrized Ice Face's weather form change by @AsparagusEduardo in [#8115](https://github.com/rh-hideout/pokeemerald-expansion/pull/8115)
* Clean up redundant todo by @AlexOn1ine in [#8094](https://github.com/rh-hideout/pokeemerald-expansion/pull/8094)
* Deprecate various macro by @AlexOn1ine in [#8092](https://github.com/rh-hideout/pokeemerald-expansion/pull/8092)
* Fixes hacky SetMoveEffect script calls by @AlexOn1ine in [#7987](https://github.com/rh-hideout/pokeemerald-expansion/pull/7987)
* Create BattleStruct sub struct for event states by @AlexOn1ine in [#8131](https://github.com/rh-hideout/pokeemerald-expansion/pull/8131)
* Attackstring hitmarker clean up by @AlexOn1ine in [#8136](https://github.com/rh-hideout/pokeemerald-expansion/pull/8136)
* Clean up ability effect hitmarker by @AlexOn1ine in [#8138](https://github.com/rh-hideout/pokeemerald-expansion/pull/8138)
* Fix Kyurem typo in swap move tables by @Bassoonian in [#8139](https://github.com/rh-hideout/pokeemerald-expansion/pull/8139)
* Fix typo in Voltorb-Hisui pokedex entry by @PhallenTree in [#8143](https://github.com/rh-hideout/pokeemerald-expansion/pull/8143)
* porymap default settings by @FosterProgramming in [#8038](https://github.com/rh-hideout/pokeemerald-expansion/pull/8038)
- WARNING: A change was made for new projects map files to match poymap output. This change might break people's projects with existing versions of those files. The files affected are ` data/maps/map_groups.json`, `src/data/heal_locations.json`, `src/data/region_map/region_map_sections.json` and `src/data/wild_encounters.json`
If you have an issue with one of those files during the merging process, you should run this command
`git checkout HEAD -- <filename>`
which will reset the file to the version before you initiated the merge
* Sets instant text speed flag to false by default by @khbsd in [#8179](https://github.com/rh-hideout/pokeemerald-expansion/pull/8179)
* Remove redundant Future Sight flag by @AlexOn1ine in [#8185](https://github.com/rh-hideout/pokeemerald-expansion/pull/8185)
* Fix incorrect comments by @AlexOn1ine in [#8193](https://github.com/rh-hideout/pokeemerald-expansion/pull/8193)
* Fixed Uproar's description and spacing by @fdeblasio in [#8187](https://github.com/rh-hideout/pokeemerald-expansion/pull/8187)
* Add include/constants/script_commands.h to gitignore by @AlexOn1ine in [#8169](https://github.com/rh-hideout/pokeemerald-expansion/pull/8169)
* Powder Move blocking cleanup by @PhallenTree in [#8194](https://github.com/rh-hideout/pokeemerald-expansion/pull/8194)
* Converted landmarks to COMPOUND_STRINGs by @fdeblasio in [#8205](https://github.com/rh-hideout/pokeemerald-expansion/pull/8205)
* Micro clean up in BattleStruct by @AlexOn1ine in [#8177](https://github.com/rh-hideout/pokeemerald-expansion/pull/8177)
* Clean usage of gMovesInfo by @AsparagusEduardo in [#8234](https://github.com/rh-hideout/pokeemerald-expansion/pull/8234)
- Also, fixed an OOB in `HasMoveThatChangesKOThreshold`
* HandleAction_UseMove minor cleanup by @mrgriffin in [#8214](https://github.com/rh-hideout/pokeemerald-expansion/pull/8214)
* Revert gBattleTurnCounter change by @AlexOn1ine in [#8197](https://github.com/rh-hideout/pokeemerald-expansion/pull/8197)
* Added contest config and cleaned up contest category variables by @fdeblasio in [#8178](https://github.com/rh-hideout/pokeemerald-expansion/pull/8178)
* Adjust Canceler naming to contain only one l by @AlexOn1ine in [#8258](https://github.com/rh-hideout/pokeemerald-expansion/pull/8258)
* Fix wrongly renamed logs by @AlexOn1ine in [#8264](https://github.com/rh-hideout/pokeemerald-expansion/pull/8264)
* Test type enum indentation by @AsparagusEduardo in [#8273](https://github.com/rh-hideout/pokeemerald-expansion/pull/8273)
* Added missing 'coolness' string by @fdeblasio in [#8274](https://github.com/rh-hideout/pokeemerald-expansion/pull/8274)
* Canceller -> Canceler rename by @AlexOn1ine in [#8294](https://github.com/rh-hideout/pokeemerald-expansion/pull/8294)
* Tests for Max Moves already exist by @AlexOn1ine in [#8314](https://github.com/rh-hideout/pokeemerald-expansion/pull/8314)
* Documentation clean up for MoveCanceler by @AlexOn1ine in [#8297](https://github.com/rh-hideout/pokeemerald-expansion/pull/8297)
* Use MAP_OFFSET by @estellarc in [#8328](https://github.com/rh-hideout/pokeemerald-expansion/pull/8328)
* Remove leftover scrtipt redirection by @AlexOn1ine in [#8317](https://github.com/rh-hideout/pokeemerald-expansion/pull/8317)
* Fixed broken friendship from items in battle test and added new test for opposite case by @pkmnsnfrn in [#7872](https://github.com/rh-hideout/pokeemerald-expansion/pull/7872)
* Expand usage of FaintedActions enum in HandleFaintedMonActions by @PhallenTree in [#8346](https://github.com/rh-hideout/pokeemerald-expansion/pull/8346)
* Move end clear bits clean up by @AlexOn1ine in [#8354](https://github.com/rh-hideout/pokeemerald-expansion/pull/8354)
* Indent unintented if statement by @hedara90 in [#8367](https://github.com/rh-hideout/pokeemerald-expansion/pull/8367)
* Update Lash Out description to clarify its effect by @PhallenTree in [#8372](https://github.com/rh-hideout/pokeemerald-expansion/pull/8372)
* Slight Protect moveend cleanup by @AsparagusEduardo in [#8385](https://github.com/rh-hideout/pokeemerald-expansion/pull/8385)
* Restored encourageEncore flag to non-volatile status effects by @AsparagusEduardo in [#8387](https://github.com/rh-hideout/pokeemerald-expansion/pull/8387)
## 🧪 Test Runner 🧪
### Added
* Multibattle testing system by @grintoul1 in [#7257](https://github.com/rh-hideout/pokeemerald-expansion/pull/7257)
* Prevent EXPECT functions from casting negative numbers into unsigned by @FosterProgramming in [#7866](https://github.com/rh-hideout/pokeemerald-expansion/pull/7866)
### Changed
* AI Tests: Gimmick Support by @mrgriffin in [#7694](https://github.com/rh-hideout/pokeemerald-expansion/pull/7694)
* Some tests for future Dynamax AI behavior. by @surskitty in [#7707](https://github.com/rh-hideout/pokeemerald-expansion/pull/7707)
* Add some missing move animations to the move animation tests by @FosterProgramming in [#7507](https://github.com/rh-hideout/pokeemerald-expansion/pull/7507)
* Fixes CanUseLastResort and resolves 3 KNOWN_FAILING Last Resort tests by @grintoul1 in [#8032](https://github.com/rh-hideout/pokeemerald-expansion/pull/8032)
* Fixed test "Revival Blessing cannot revive a partner's party member" by @grintoul1 in [#8031](https://github.com/rh-hideout/pokeemerald-expansion/pull/8031)
* Added Soundproof and Bulletproof tests by @AsparagusEduardo in [#8189](https://github.com/rh-hideout/pokeemerald-expansion/pull/8189)
* Wrote some missing tests by @AsparagusEduardo in [#8203](https://github.com/rh-hideout/pokeemerald-expansion/pull/8203)
* Refactor random functions to be runner specific by @FosterProgramming in [#7816](https://github.com/rh-hideout/pokeemerald-expansion/pull/7816)
* A couple more tests by @AsparagusEduardo in [#8209](https://github.com/rh-hideout/pokeemerald-expansion/pull/8209)
* Fixed some failing tests with GEN_LATEST = GEN_5 by @AsparagusEduardo in [#8241](https://github.com/rh-hideout/pokeemerald-expansion/pull/8241)
* Add test for mold breaker/ice scales interaction by @FosterProgramming in [#8240](https://github.com/rh-hideout/pokeemerald-expansion/pull/8240)
* Yet more tests by @AsparagusEduardo in [#8228](https://github.com/rh-hideout/pokeemerald-expansion/pull/8228)
- Added tests for:
- Dark Aura
- Fairy Aura
- Flare Boost
- Toxic Boost
- Added test names for Flying Press.
* Test type enum indentation by @AsparagusEduardo in [#8273](https://github.com/rh-hideout/pokeemerald-expansion/pull/8273)
* Slightly increase headless test speed by modifying animations by @AsparagusEduardo in [#8299](https://github.com/rh-hideout/pokeemerald-expansion/pull/8299)
* Make `gTestRunnerHeadless` into a constant outside of tests by @hedara90 in [#8306](https://github.com/rh-hideout/pokeemerald-expansion/pull/8306)
* Tests for Max Moves already exist by @AlexOn1ine in [#8314](https://github.com/rh-hideout/pokeemerald-expansion/pull/8314)
* Finished fixing tests when setting `GEN_LATEST` to `GEN_5` by @AsparagusEduardo in [#8263](https://github.com/rh-hideout/pokeemerald-expansion/pull/8263)
* Wrote missing Fling tests by @AsparagusEduardo in [#8383](https://github.com/rh-hideout/pokeemerald-expansion/pull/8383)
### Fixed
* Corrects ONE_VS_TWO_BATTLE_TEST to use BATTLE_TEST_ARGS_ONE_VS_TWO by @grintoul1 in [#8061](https://github.com/rh-hideout/pokeemerald-expansion/pull/8061)
* Fixes difficulty not being restored after tests by @grintoul1 in [#8129](https://github.com/rh-hideout/pokeemerald-expansion/pull/8129)
* Reset saveblock data between test runs by @hedara90 in [#8145](https://github.com/rh-hideout/pokeemerald-expansion/pull/8145)
* Sheer force test fix by @grintoul1 in [#8142](https://github.com/rh-hideout/pokeemerald-expansion/pull/8142)
* Test only enabled species by @mrgriffin in [#8216](https://github.com/rh-hideout/pokeemerald-expansion/pull/8216)
* Fix ohko moves ai tests by @FosterProgramming in [#8309](https://github.com/rh-hideout/pokeemerald-expansion/pull/8309)
* Fixed broken friendship from items in battle test and added new test for opposite case by @pkmnsnfrn in [#7872](https://github.com/rh-hideout/pokeemerald-expansion/pull/7872)
* Add tests to verify aromatherapy is not affected by heal bell config by @FosterProgramming in [#8344](https://github.com/rh-hideout/pokeemerald-expansion/pull/8344)
* Pre gen 5 encored move now signals the test engine a move is happening by @FosterProgramming in [#8338](https://github.com/rh-hideout/pokeemerald-expansion/pull/8338)
* Refactor Beat Up handling for Gen 3/4 defaults, fix crit check, and expand test coverage by @moostoet in [#8307](https://github.com/rh-hideout/pokeemerald-expansion/pull/8307)
- BUGFIX: Beat Up (`GEN =< 5`) now no longer doubles its damage on every non-critical hit
- Beat Up now precomputes eligible party members/strikers for consistent multi-hit resolution and expanded tests covering both pre-Gen5 and Gen5+ rules
* Fix player and partner trainer sprite palettes to 8 and 9, preventing unwanted palette changes by @grintoul1 in [#8127](https://github.com/rh-hideout/pokeemerald-expansion/pull/8127)
* Fix known failing AI trace test by @FosterProgramming in [#8337](https://github.com/rh-hideout/pokeemerald-expansion/pull/8337)
## 📚 Documentation 📚
* Converts some defines to enums and name unnamed enums by @Bassoonian in [#8019](https://github.com/rh-hideout/pokeemerald-expansion/pull/8019)
* Some more documentation and cleanup by @Bassoonian in [#8020](https://github.com/rh-hideout/pokeemerald-expansion/pull/8020)
* Even more enums and documentation by @Bassoonian in [#8029](https://github.com/rh-hideout/pokeemerald-expansion/pull/8029)
* Add type enum by @Bassoonian in [#8054](https://github.com/rh-hideout/pokeemerald-expansion/pull/8054)
* Revert reversion by @AlexOn1ine in [#8112](https://github.com/rh-hideout/pokeemerald-expansion/pull/8112)
* Lock mdbook to v0.4.35 to fix docs not building by @grintoul1 in [#8130](https://github.com/rh-hideout/pokeemerald-expansion/pull/8130)
* Add additional comment explaing map name popup transparency side-effects by @FosterProgramming in [#8117](https://github.com/rh-hideout/pokeemerald-expansion/pull/8117)
* Fix incorrect comments by @AlexOn1ine in [#8193](https://github.com/rh-hideout/pokeemerald-expansion/pull/8193)
* Moves name box configs into a new file by @AlexOn1ine in [#8250](https://github.com/rh-hideout/pokeemerald-expansion/pull/8250)
* Fix wrongly renamed logs by @AlexOn1ine in [#8264](https://github.com/rh-hideout/pokeemerald-expansion/pull/8264)
* Documentation clean up for MoveCanceler by @AlexOn1ine in [#8297](https://github.com/rh-hideout/pokeemerald-expansion/pull/8297)
* Use MAP_OFFSET by @estellarc in [#8328](https://github.com/rh-hideout/pokeemerald-expansion/pull/8328)
* Fedora install instructions by @estellarc in [#8355](https://github.com/rh-hideout/pokeemerald-expansion/pull/8355)
## New Contributors
* @purrfectdoodle made their first contribution in [#7689](https://github.com/rh-hideout/pokeemerald-expansion/pull/7689)
* @montmoguri made their first contribution in [#8252](https://github.com/rh-hideout/pokeemerald-expansion/pull/8252)
**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.13.3...expansion/1.14.0
<!--Last PR: 8392-->
<!--Used to keep track of the last PR merged in case new ones come in before the changelog is done.-->

View File

@ -0,0 +1,22 @@
```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.1
`.
```
## 🧬 General 🧬
### Changed
* Pret merge, (1st of December, 2025) by @hedara90 in [#8402](https://github.com/rh-hideout/pokeemerald-expansion/pull/8402)
- This changes all the audio samples from `.aif` to `.wav`, `.aif` support is removed.
- There's a migration script to convert from `.bin` to `.wav` in `migration_scripts/1.14/bin_to_wav.py`.
- Run the migration script with `python migration_scripts/1.14/bin_to_wav.py path/to/folder/with/bin/samples`
**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.14.0...expansion/1.14.1
<!--Last PR: 8402-->
<!--Used to keep track of the last PR merged in case new ones come in before the changelog is done.-->

View File

@ -0,0 +1,6 @@
# Fedora instructions
## Installing dependencies
Open a terminal and run the following command from the command line:
```console
sudo dnf install gcc g++ arm-none-eabi-binutils-cs arm-none-eabi-gcc-cs arm-none-eabi-newlib git libpng-devel python3
```

View File

@ -0,0 +1,58 @@
# How to interact with Apricorn Trees
![apricorn-tree](/docs/tutorials/img/apricorn_tree/apricorn-tree.gif)
### Adding a new apricorn tree
To add a new tree, first increase the tree count and expand the tree list in `include/constants/apricorn_tree.h`.
Note that each tree will take a bit in the savegame's `SaveBlock3` struct so increasing `APRICORN_TREE_COUNT` **breaks the savegame**.
Due to this, pokeemerald-expansion doesn't have any trees set up by default to prevent breaking downstream savegames.
The trees support random yields and properly use plural case on plural yields.
```diff
#define APRICORN_TREE_NONE 0
-#define APRICORN_TREE_COUNT 0
+#define APRICORN_TREE_ROUTE101_RED_TREE 1
+
+#define APRICORN_TREE_COUNT 32
```
Then list its data in `src/data/apricorns.h`.
```diff
const struct ApricornTree gApricornTrees[APRICORN_TREE_COUNT] =
{
[APRICORN_TREE_NONE] =
{
.minimum = 1,
.maximum = 1,
.apricornType = APRICORN_RED,
},
+ [APRICORN_TREE_ROUTE101_RED_TREE] =
+ {
+ .minimum = 1,
+ .maximum = 1,
+ .apricornType = APRICORN_RED,
+ },
};
```
Finally, just place your new tree using Porymap.
Similarly to berries, the Sight Radius / Berry Tree ID field is used for the tree's ID.
![apricorn-tree-porymap](/docs/tutorials/img/apricorn_tree/apricorn-tree-porymap.png)
### Add a new apricorn type
After you created your new item, simply expand the `ApricornType` enum in `include/constants/apricorn_tree.h`.
```diff
enum ApricornType
{
[...]
APRICORN_BERRY_MARANGA = ITEM_MARANGA_BERRY,
+ APRICORN_BROWN = ITEM_BROWN_APRICORN,
};
```

View File

@ -0,0 +1,100 @@
# How to Use Namebox
_New implementation made by mudskipper13, originally made by Tustin2121._
## Overview
![Npc Trainers](/docs/tutorials/img/namebox/npc_trainers.gif)
![Pokenav](/docs/tutorials/img/namebox/pokenav.gif)
![Messagebox](/docs/tutorials/img/namebox/msgbox.gif)
This is a broad and self-contained implementation of Tustin2121's namebox feature branch [here](https://github.com/tustin2121/pokeemerald/tree/feature/namebox), which includes the following:
- Cleaner implementation of namebox onto both the field message box _and_ the field PokéNav textbox.
- New configs:
- `OW_NAME_BOX_USE_DYNAMIC_WIDTH` lets the namebox use dynamic window width depending on the speaker's string length.
- When disabled and/or the speaker name is too long, `OW_NAME_BOX_DEFAULT_WIDTH` will be used as the maximum width.
- `OW_NAME_BOX_NPC_TRAINER` lets any approaching NPC trainers shows a namebox in their dialogue automagically.
- `OW_NAME_BOX_DEFAULT_WIDTH` and `OW_NAME_BOX_DEFAULT_HEIGHT` sets the default width and height.
- `OW_NAME_BOX_FOREGROUND_COLOR` and `OW_NAME_BOX_SHADOW_COLOR` sets the default text colors, the background color is handled by the engine.
- `OW_FLAG_SUPPRESS_NAME_BOX` lets you enable/disable the namebox globally, assign a flag from [`include/constants/flags.h`](/include/constants/flags.h) onto this config to be able to use it.
- Added a Speaker Name table, frequently-used names can be stored into `gSpeakerNamesTable` in [`src/data/speaker_names.h`](/src/data/speaker_names.h) and they can accessed by using a `SP_NAME_*` constant defined in [`include/constants/speaker_names.h`](/include/constants/speaker_names.h).
- Added a new scripting macro `setspeaker ([textPointer]/[SP_NAME_*])`.
- Besides a text pointer, it is possible to use the Speaker Name table to set the textPointer with the `gSpeakerNamesTable` array instead.
- Feed it either `NULL` or `SP_NAME_NONE` will remove the namebox instead.
- `release`, `releaseall`, and `closemessage` will automatically remove the namebox, together with the messagebox.
- Added a new text control code/inline text `{SPEAKER NAME_*}`.
- Unlike the `setspeaker` macro, you can only use the `SP_NAME_*` constants for this. It is partly due to the text engine's limitation itself.
- You'll need to add the constants into `charmap.txt` to be able to use them for the same reason as above.
- Feed it `SP_NAME_NONE` to remove the namebox manually.
- Similarly, `release`, `releaseall`, and `closemessage` will automatically remove the namebox, together with the message box.
## Usage
### `setspeaker`
#### Using a text pointer
First, define your speaker's string.
```
Speaker_Jeremy:
.string "Jeremy$"
```
And then in your script, add the `setspeaker` with the speaker's name earlier.
```
...
setspeaker Speaker_Jeremy
...
```
If you are using poryscript, you can also include the string right there with the `setspeaker` aka inline.
```
...
setspeaker("Jeremy")
...
```
#### Using a `SP_NAME_*` constant
Add the `setspeaker` with your constant.
```
setspeaker SP_NAME_JEREMY
```
For instruction on how to add a new Speaker Name, continue [here](#adding-a-new-speaker-name).
### `SPEAKER` inline
The usage is identical to using `setspeaker` with `SP_NAME_*` constant, but instead it's within your _text_ script and uses the constant you added to `charmap.txt`.
```
"{SPEAKER NAME_JEREMY}Yo wassup!"
```
For instruction on how to add a new Speaker Name, continue [here](#adding-a-new-speaker-name).
### Adding a new Speaker Name
1. Add a new constant to [`include/constants/speaker_names.h`](/include/constants/speaker_names.h) just after `SP_NAME_NONE` _and_ before `SP_NAME_COUNT`.
```diff
enum SpeakerNames {
SP_NAME_NONE = 0,
SP_NAME_MOM,
SP_NAME_PLAYER,
+ SP_NAME_JEREMY,
SP_NAME_COUNT
};
```
2. Add an entry to `gSpeakerNamesTable` in [`src/data/speaker_names.h`](/src/data/speaker_names.h) with your newly added constant as the array index.
```diff
const u8 *const gSpeakerNamesTable[SP_NAME_COUNT] =
{
[SP_NAME_MOM] = COMPOUND_STRING("MOM"),
[SP_NAME_PLAYER] = COMPOUND_STRING("{PLAYER}"),
+ [SP_NAME_JEREMY] = COMPOUND_STRING("JEREMY"),
};
```
3. In order for this constant to be usable for `{SPEAKER}` inline, you'll need to add your constant onto [`charmap.txt`](/charmap.txt). **Do note that the order here MUST match with the one in [`include/constants/speaker_names.h`](/include/constants/speaker_names.h)!**
```diff
@ Speaker names, the order must be matching with include/constants/speaker_names.h
NAME_NONE = 00
NAME_MOM = 01
NAME_PLAYER = 02
-NAME_COUNT = 03
+NAME_JEREMY = 03
+NAME_COUNT = 04
```

View File

@ -93,14 +93,21 @@ Contains more fundamental functions that control the flow of the battle. Functio
### data/battle_scripts_1.s
Each move's effect is governed by a script defined here. For a simple example, let's look at the script for Fake Out/First Impression:
TODO: New Script
```
BattleScript_EffectFirstTurnOnly::
BattleScript_EffectTaunt::
attackcanceler
jumpifnotfirstturn BattleScript_FailedFromAtkString
goto BattleScript_EffectHit
jumpifability BS_TARGET_SIDE, ABILITY_AROMA_VEIL, BattleScript_AromaVeilProtects
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
settaunt BattleScript_ButItFailed
attackanimation
waitanimation
printstring STRINGID_PKMNFELLFORTAUNT
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
```
`attackcanceler` is a command that covers all the cases that could cause a move to fail before it's even attempted (e.g. paralysis). And as we can tell from the commands, if it's not the first turn, we go to `BattleScript_FailedFromAtkString` which evidently causes us to print the `attackstring` ("POKEMON used MOVE") then fail ("But it failed!"). Otherwise, we go to the generic "hit" effect which is the same script for moves that just deal damage and nothing else.
`attackcanceler` is a command that covers all cases that could cause a move to fail before it's even attempted (e.g. paralysis). The next command is a jump command. A jump command can check anything and usually comes with a jump instruction. Usually it jumps to a place from where the move should pick up because of certain conditions. The next one is an accuracy check. Accuracy checks happen after all prior move failure checks happened. The next set of commands are unique to a certain move, they are mostly the same for damaging moves but can widely differ for status moves. Lastly there is `BattleScript_MoveEnd` which the move after a succesful hit. An ability activation or specific move effect like Burn, Freeze, Absorb etc.
This is the most advanced part of the ROM. There are dozens upon dozens of commands and hundreds of scripts so this guide would go on forever if I were to go into more detail. To learn how these scripts work, it's best to look at a few examples of moves you know.

View File

@ -164,17 +164,17 @@ ASSUMPTIONS
```
### `SINGLE_BATTLE_TEST`
`SINGLE_BATTLE_TEST(name, results...)` and `DOUBLE_BATTLE_TEST(name, results...)`
Define single- and double- battles. The names should start with the name of the mechanic being tested so that it is easier to run all the related tests. `results` contains variable declarations to be placed into the `results` array which is available in tests using `PARAMETRIZE` commands.
The main differences for doubles are:
`SINGLE_BATTLE_TEST(name, results...)`, `DOUBLE_BATTLE_TEST(name, results...)`, `MULTI_BATTLE_TEST(name, results...)`, `TWO_VS_ONE_BATTLE_TEST(name, results...)`, and `ONE_VS_TWO_BATTLE_TEST(name, results...)`
Define single-, double-, 2v2-multi-, 2v1-multi-, and 1v2- battles. The names should start with the name of the mechanic being tested so that it is easier to run all the related tests. `results` contains variable declarations to be placed into the `results` array which is available in tests using `PARAMETRIZE` commands.
The main differences for doubles, 2v2, 2v1, and 1v2 are:
- Move targets sometimes need to be explicit.
- Instead of `player` and `opponent` there is `playerLeft`, `playerRight`, `opponentLeft`, and `opponentRight`.
### `AI_SINGLE_BATTLE_TEST`
`AI_SINGLE_BATTLE_TEST(name, results...)` and `AI_DOUBLE_BATTLE_TEST(name, results...)`
`AI_SINGLE_BATTLE_TEST(name, results...)`, `AI_DOUBLE_BATTLE_TEST(name, results...)`, `AI_MULTI_BATTLE_TEST(name, results...)`, `AI_TWO_VS_ONE_BATTLE_TEST(name, results...)`, and `AI_ONE_VS_TWO_BATTLE_TEST(name, results...)`
Define battles where opponent mons are controlled by AI, the same that runs
when battling regular Trainers. The flags for AI should be specified by the `AI_FLAGS` command.
The rules remain the same as with the `SINGLE` and `DOUBLE` battle tests with some differences:
The rules remain the same as with the `SINGLE`, `DOUBLE`, `MULTI`, `TWO_VS_ONE`, and `ONE_VS_TWO` battle tests with some differences:
- opponent's action is specified by the `EXPECT_MOVE` / `EXPECT_SEND_OUT` / `EXPECT_SWITCH` commands
- we don't control what opponent actually does, instead we make sure the opponent does what we expect it to do
- we still control the player's action the same way
@ -268,7 +268,7 @@ GIVEN {
```
### `PLAYER` and `OPPONENT`
`PLAYER(species)` and `OPPONENT(species`
`PLAYER(species)` and `OPPONENT(species)`
Adds the species to the player's or opponent's party respectively.
The Pokémon can be further customized with the following functions:
- `Gender(MON_MALE | MON_FEMALE)`
@ -285,11 +285,29 @@ For example to create a level 42 Wobbuffet that is poisoned:
**Note if Speed is specified for any Pokémon then it must be specified for all Pokémon.**
**Note if Moves is specified then MOVE will not automatically add moves to the moveset.**
### `MULTI_PLAYER`, `MULTI_PARTNER`, `MULTI_OPPONENT_A`, and `MULTI_OPPONENT_B`
For tests using `MULTI_BATTLE_TEST`, `AI_MULTI_BATTLE_TEST`, `TWO_VS_ONE_BATTLE_TEST`, `AI_TWO_VS_ONE_BATTLE_TEST`, `ONE_VS_TWO_BATTLE_TEST`, and `AI_ONE_VS_TWO_BATTLE_TEST`, the below must be used instead of `PLAYER(species)` and `OPPONENT(species)`.
`MULTI_PLAYER(species)`, `MULTI_PARTNER(species)`, `MULTI_OPPONENT_A(species)`, and `MULTI_OPPONENT_B(species)`
Adds the species to the player's, player partner's, opponent A's, or opponent B's party, respectively.
Pokemon can be customised as per the guidance for `PLAYER(species)` and `OPPONENT(species)`.
The functions assign the Pokémon to the party of the trainer at `B_POSITION_PLAYER_LEFT`, `B_POSITION_PLAYER_RIGHT`, `B_POSITION_OPPONENT_LEFT`, and `B_POSITION_OPPONENT_RIGHT`, respectively.
`MULTI_PLAYER(species)` and `MULTI_OPPONENT_A(species)` set Pokémon starting at party index 0, while `MULTI_PARTNER(species)` and `MULTI_OPPONENT_B(species)` set Pokémon starting at party index 3.
For `ONE_VS_TWO` tests, `MULTI_PLAYER(species)` must be used for all player-side Pokémon, and for `TWO_VS_ONE` tests, `MULTI_OPPONENT_A(species)` must be used for all opponent-side Pokémon.
All `MULTI_PLAYER(species)` Pokémon must be set before any `MULTI_PARTNER(species)` Pokémon, and all `MULTI_OPPONENT_A(species)` must be set before any `MULTI_OPPONENT_B(species)` Pokémon, else Pokémon will be set in the incorrect parties in the test.
**Note where a side in a test has two trainers, the test setup manages the assigning of correct multi-party orders, therefore when using functions such as SEND_OUT, Player and Opponent A Pokémon may be referenced using indexes 0, 1, and 2, and Player's Partner and Opponent B Pokémon may be referenced using indexes 3, 4, and 5.**
### `AI_FLAGS`
`AI_FLAGS(flags)`
Specifies which AI flags are run during the test. Has use only for AI tests.
Specifies which AI flags are run for all battlers during the test. Has use only for AI tests.
The most common combination is `AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT)` which is the general 'smart' AI.
### `BATTLER_AI_FLAGS`
`BATTLER_AI_FLAGS(battler, flags)`
Specifies additional AI flags to be applied to specific battlers (battler 0/1/2/3). Has use only for AI tests.
Must be used strictly after `AI_FLAGS(flags)`, which overwrites all existing flags.
Example: `BATTLER_AI_FLAGS(3, AI_FLAG_RISKY)` used after `AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT)`
will set `AI_FLAG_RISKY` to only `battler3` (Opponent B), in addition to the flags set by `AI_FLAGS`.
### `WHEN`
```
...
@ -446,6 +464,20 @@ If the expected status icon is parametrized the corresponding `STATUS1` constant
STATUS_ICON(player, status1);
```
### `SUB_HIT`
`SUB_HIT(battler, captureDamage: | subBreak:)`
Causes the test to fail the test to fail if a Substitute for the specified battler doesn't take damage.
If `captureDamage` is used, the damage the substitute takes is written to the supplied pointer.
```
u16 damage;
...
SUB_HIT(player, captureDamage: &damage);
```
If `subBreak` is set to `TRUE`, the test will fail unless the substitute breaks. And if set to `FALSE`, the test will fail unless the substitute survives.
```
SUB_HIT(player, subBreak: TRUE);
```
### `NOT`
`NOT sceneCommand`
Causes the test to fail if the `SCENE` command succeeds before the following command succeeds.

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 540 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 784 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 247 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
115 197 164
0 0 0
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 255 255
255 0 255

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
197 197 148
90 82 82
205 189 189
230 222 222
246 246 238
0 0 0
255 255 255
222 222 246
0 0 0
0 0 0
0 0 0
0 0 0
148 148 148
74 82 74
255 255 255
24 24 24

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
197 197 148
57 65 90
98 115 189
115 139 213
148 180 205
0 0 0
205 238 246
180 197 222
139 205 222
131 180 197
82 98 131
197 197 197
148 139 148
90 90 82
255 255 255
24 24 24

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
197 197 148
57 65 90
98 115 189
115 139 213
148 180 205
0 0 0
205 238 246
180 197 222
139 205 222
131 180 197
82 98 131
197 197 197
148 139 148
90 90 82
255 255 255
24 24 24

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
197 197 148
98 90 90
205 164 189
230 197 222
255 222 255
0 0 0
255 246 65
230 180 32
0 0 0
0 0 0
0 0 0
0 0 0
148 148 148
74 82 74
255 255 255
24 24 24

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 688 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
197 197 148
41 82 57
123 82 189
139 115 213
148 180 205
0 0 0
197 180 255
156 156 197
139 205 172
115 164 139
98 74 115
189 230 230
82 115 106
74 82 74
255 255 255
24 24 24

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
197 197 148
41 82 57
123 82 189
139 115 213
148 180 205
0 0 0
197 180 255
156 156 197
139 205 172
115 164 139
98 74 115
189 230 230
82 115 106
74 82 74
255 255 255
24 24 24

Binary file not shown.

After

Width:  |  Height:  |  Size: 559 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
197 197 148
98 49 41
205 90 74
238 123 74
255 156 65
0 0 0
255 246 106
230 213 106
255 156 98
213 131 74
148 90 65
213 205 230
0 0 0
90 90 82
255 255 255
24 24 24

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
197 197 148
98 49 41
205 90 74
238 123 74
255 156 65
0 0 0
255 246 106
230 213 106
255 156 98
213 131 74
148 90 65
213 205 230
0 0 0
90 90 82
255 255 255
24 24 24

Binary file not shown.

After

Width:  |  Height:  |  Size: 664 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 997 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
205 205 255
115 74 49
213 106 106
255 131 74
255 172 131
115 213 172
82 172 123
57 98 90
0 0 0
156 156 131
106 8 156
0 98 230
115 115 106
197 197 213
255 255 255
24 24 24

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
205 205 255
106 90 24
197 189 65
255 222 74
255 246 139
115 213 172
82 172 123
57 98 90
0 0 0
156 156 131
106 8 156
0 98 230
115 115 106
197 197 213
255 255 255
24 24 24

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
205 205 255
115 74 49
213 106 106
255 131 74
255 172 131
115 213 172
82 172 123
57 98 90
0 0 0
156 156 131
106 8 156
0 98 230
115 115 106
197 197 213
255 255 255
24 24 24

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
205 205 255
106 90 24
197 189 65
255 222 74
255 246 139
115 213 172
82 172 123
57 98 90
0 0 0
156 156 131
106 8 156
0 98 230
115 115 106
197 197 213
255 255 255
24 24 24

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 945 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
205 205 255
115 74 49
213 106 106
255 131 74
255 172 131
115 213 172
131 164 156
57 98 90
82 74 65
156 156 131
139 8 205
222 106 230
123 115 82
197 197 213
255 255 255
24 24 24

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
205 205 255
106 90 24
197 189 65
255 222 57
255 246 139
115 213 172
82 172 123
57 98 90
82 74 65
156 156 131
106 8 156
0 98 230
115 115 106
197 197 213
255 255 255
24 24 24

Binary file not shown.

Before

Width:  |  Height:  |  Size: 668 B

After

Width:  |  Height:  |  Size: 667 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 670 B

After

Width:  |  Height:  |  Size: 668 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 663 B

After

Width:  |  Height:  |  Size: 665 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 666 B

After

Width:  |  Height:  |  Size: 658 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 669 B

After

Width:  |  Height:  |  Size: 668 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 759 B

After

Width:  |  Height:  |  Size: 749 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 916 B

After

Width:  |  Height:  |  Size: 821 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 759 B

After

Width:  |  Height:  |  Size: 749 B

Some files were not shown because too many files have changed in this diff Show More