Merge branch '_RHH/upcoming' into _RHH/pr/master/1.10.0

This commit is contained in:
Eduardo Quezada 2024-12-01 14:28:12 -03:00
commit 7010080465
4527 changed files with 51051 additions and 22647 deletions

View File

@ -15,19 +15,12 @@ jobs:
GAME_VERSION: EMERALD
GAME_REVISION: 0
GAME_LANGUAGE: ENGLISH
MODERN: 0
COMPARE: 0
UNUSED_ERROR: 1
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Checkout agbcc
uses: actions/checkout@v2
with:
path: agbcc
repository: pret/agbcc
- name: Install binutils
run: |
sudo apt update
@ -36,27 +29,13 @@ jobs:
# gcc-arm-none-eabi is only needed for the modern build
# as an alternative to dkP
- name: Install agbcc
run: |
./build.sh
./install.sh ../
working-directory: agbcc
- name: Agbcc
- name: ROM
env:
MODERN: 0
COMPARE: 0
run: make -j${nproc} -O all
- name: Modern
env:
MODERN: 1
COMPARE: 0
run: make -j${nproc} -O all
- name: Test
env:
MODERN: 1
TEST: 1
run: |
make -j${nproc} check

1
.gitignore vendored
View File

@ -39,6 +39,5 @@ prefabs.json
*.sym
*.js
/pokeemerald-*.png
/pokeemerald_agbcc-*.png
src/data/map_group_count.h
tools/trainerproc/trainerproc

View File

@ -596,58 +596,6 @@ To build **pokeemerald.elf** with debug symbols under a modern toolchain:
```bash
make DINFO=1
```
Note that this is not necessary for a non-modern (agbcc) build since those are built with debug symbols by default.
### agbcc
<details>
<summary><i>Deprecated; installing agbcc is optional since 1.7.0</i>.</summary>
1. Install agbcc into pokeemerald-expansion. The commands to run depend on certain conditions. **You should only follow one of the listed instructions**:
- If agbcc has **not been built before** in the folder where you chose to store pokeemerald Expansion, run the following commands to build and install it into pokeemerald-expansion:
```bash
git clone https://github.com/pret/agbcc
cd agbcc
./build.sh
./install.sh ../pokeemerald-expansion
```
- **Otherwise**, if agbcc has been built before (e.g. if the git clone above fails), but was **last built on a different terminal** than the one currently used (only relevant to Windows, e.g. switching from msys2 to WSL1), then run the following commands to build and install it into pokeemerald-expansion:
```bash
cd agbcc
git clean -fX
./build.sh
./install.sh ../pokeemerald-expansion
```
- **Otherwise**, if agbcc has been built before on the same terminal, run the following commands to install agbcc into pokeemerald-expansion:
```bash
cd agbcc
./install.sh ../pokeemerald-expansion
```
<details>
<summary><i>Note...</i></summary>
> If building agbcc or pokeemerald results in an error, try deleting the agbcc folder and re-installing agbcc as if it has not been built before.
</details>
2. Once agbcc is installed, change directory back to the base directory where pokeemerald-expansion and agbcc are stored:
```bash
cd ..
```
3. To compile with agbcc:
```bash
make agbcc
```
</details>
# Useful additional tools

156
Makefile
View File

@ -5,12 +5,10 @@ MAKER_CODE := 01
REVISION := 0
KEEP_TEMPS ?= 0
# `File name`.gba ('_agbcc' will be appended to the non-modern builds)
# `File name`.gba
FILE_NAME := pokeemerald
BUILD_DIR := build
# Builds the ROM using a modern compiler
MODERN ?= 1
# Compares the ROM to a checksum of the original - only makes sense using when non-modern
COMPARE ?= 0
# Executes the Test Runner System that checks that all mechanics work as expected
@ -19,16 +17,18 @@ TEST ?= 0
ANALYZE ?= 0
# Count unused warnings as errors. Used by RH-Hideout's repo
UNUSED_ERROR ?= 0
# Adds -Og and -g flags, which optimize the build for debugging and include debug info respectively
DEBUG ?= 0
ifeq (agbcc,$(MAKECMDGOALS))
MODERN := 0
endif
ifeq (compare,$(MAKECMDGOALS))
COMPARE := 1
endif
ifeq (check,$(MAKECMDGOALS))
TEST := 1
endif
ifeq (debug,$(MAKECMDGOALS))
DEBUG := 1
endif
# Default make rule
all: rom
@ -58,52 +58,27 @@ ifeq ($(OS),Windows_NT)
EXE := .exe
endif
# use arm-none-eabi-cpp for macOS
# as macOS's default compiler is clang
# and clang's preprocessor will warn on \u
# when preprocessing asm files, expecting a unicode literal
# we can't unconditionally use arm-none-eabi-cpp
# as installations which install binutils-arm-none-eabi
# don't come with it
ifneq ($(MODERN),1)
ifeq ($(shell uname -s),Darwin)
CPP := $(PREFIX)cpp
else
CPP := $(CC) -E
endif
else
CPP := $(PREFIX)cpp
endif
CPP := $(PREFIX)cpp
ROM_NAME := $(FILE_NAME)_agbcc.gba
OBJ_DIR_NAME := $(BUILD_DIR)/emerald
OBJ_DIR_NAME_TEST := $(BUILD_DIR)/test
MODERN_ROM_NAME := $(FILE_NAME).gba
MODERN_OBJ_DIR_NAME := $(BUILD_DIR)/modern
MODERN_OBJ_DIR_NAME_TEST := $(BUILD_DIR)/modern-test
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
ELF_NAME := $(ROM_NAME:.gba=.elf)
MAP_NAME := $(ROM_NAME:.gba=.map)
MODERN_ELF_NAME := $(MODERN_ROM_NAME:.gba=.elf)
MODERN_MAP_NAME := $(MODERN_ROM_NAME:.gba=.map)
TESTELF = $(MODERN_ROM_NAME:.gba=-test.elf)
HEADLESSELF = $(MODERN_ROM_NAME:.gba=-test-headless.elf)
TESTELF = $(ROM_NAME:.gba=-test.elf)
HEADLESSELF = $(ROM_NAME:.gba=-test-headless.elf)
# Pick our active variables
ifeq ($(MODERN),0)
ROM := $(ROM_NAME)
ifeq ($(TEST), 0)
OBJ_DIR := $(OBJ_DIR_NAME)
else
OBJ_DIR := $(OBJ_DIR_NAME_TEST)
endif
ROM := $(ROM_NAME)
ifeq ($(TEST), 0)
OBJ_DIR := $(OBJ_DIR_NAME)
else
ROM := $(MODERN_ROM_NAME)
ifeq ($(TEST), 0)
OBJ_DIR := $(MODERN_OBJ_DIR_NAME)
else
OBJ_DIR := $(MODERN_OBJ_DIR_NAME_TEST)
endif
OBJ_DIR := $(OBJ_DIR_NAME_TEST)
endif
ifeq ($(DEBUG),1)
OBJ_DIR := $(OBJ_DIR_NAME_DEBUG)
endif
ifeq ($(TESTELF),$(MAKECMDGOALS))
TEST := 1
@ -131,41 +106,45 @@ TEST_BUILDDIR = $(OBJ_DIR)/$(TEST_SUBDIR)
SHELL := bash -o pipefail
# Set flags for tools
ASFLAGS := -mcpu=arm7tdmi --defsym MODERN=$(MODERN)
ASFLAGS := -mcpu=arm7tdmi --defsym MODERN=1
INCLUDE_DIRS := include
INCLUDE_CPP_ARGS := $(INCLUDE_DIRS:%=-iquote %)
INCLUDE_SCANINC_ARGS := $(INCLUDE_DIRS:%=-I %)
O_LEVEL ?= 2
CPPFLAGS := $(INCLUDE_CPP_ARGS) -Wno-trigraphs -DMODERN=$(MODERN) -DTESTING=$(TEST)
ifeq ($(MODERN),0)
CPPFLAGS += -I tools/agbcc/include -I tools/agbcc -nostdinc -undef
CC1 := tools/agbcc/bin/agbcc$(EXE)
override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O$(O_LEVEL) -fhex-asm -g
LIBPATH := -L ../../tools/agbcc/lib
LIB := $(LIBPATH) -lgcc -lc -L../../libagbsyscall -lagbsyscall
ifeq ($(DEBUG),1)
O_LEVEL ?= g
else
# Note: The makefile must be set up to not call these if modern == 0
MODERNCC := $(PREFIX)gcc
PATH_MODERNCC := PATH="$(PATH)" $(MODERNCC)
CC1 := $(shell $(PATH_MODERNCC) --print-prog-name=cc1) -quiet
override CFLAGS += -mthumb -mthumb-interwork -O$(O_LEVEL) -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -std=gnu17 -Werror -Wall -Wno-strict-aliasing -Wno-attribute-alias -Woverride-init
ifeq ($(ANALYZE),1)
override CFLAGS += -fanalyzer
endif
# Only throw an error for unused elements if its RH-Hideout's repo
ifeq ($(UNUSED_ERROR),0)
ifneq ($(GITHUB_REPOSITORY_OWNER),rh-hideout)
override CFLAGS += -Wno-error=unused-variable -Wno-error=unused-const-variable -Wno-error=unused-parameter -Wno-error=unused-function -Wno-error=unused-but-set-parameter -Wno-error=unused-but-set-variable -Wno-error=unused-value -Wno-error=unused-local-typedefs
endif
endif
LIBPATH := -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libnosys.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libc.a))"
LIB := $(LIBPATH) -lc -lnosys -lgcc -L../../libagbsyscall -lagbsyscall
O_LEVEL ?= 2
endif
CPPFLAGS := $(INCLUDE_CPP_ARGS) -Wno-trigraphs -DMODERN=1 -DTESTING=$(TEST)
ARMCC := $(PREFIX)gcc
PATH_ARMCC := PATH="$(PATH)" $(ARMCC)
CC1 := $(shell $(PATH_ARMCC) --print-prog-name=cc1) -quiet
override CFLAGS += -mthumb -mthumb-interwork -O$(O_LEVEL) -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -std=gnu17 -Werror -Wall -Wno-strict-aliasing -Wno-attribute-alias -Woverride-init
ifeq ($(ANALYZE),1)
override CFLAGS += -fanalyzer
endif
# Only throw an error for unused elements if its RH-Hideout's repo
ifeq ($(UNUSED_ERROR),0)
ifneq ($(GITHUB_REPOSITORY_OWNER),rh-hideout)
override CFLAGS += -Wno-error=unused-variable -Wno-error=unused-const-variable -Wno-error=unused-parameter -Wno-error=unused-function -Wno-error=unused-but-set-parameter -Wno-error=unused-but-set-variable -Wno-error=unused-value -Wno-error=unused-local-typedefs
endif
endif
LIBPATH := -L "$(dir $(shell $(PATH_ARMCC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(PATH_ARMCC) -mthumb -print-file-name=libnosys.a))" -L "$(dir $(shell $(PATH_ARMCC) -mthumb -print-file-name=libc.a))"
LIB := $(LIBPATH) -lc -lnosys -lgcc -L../../libagbsyscall -lagbsyscall
# Enable debug info if set
ifeq ($(DINFO),1)
override CFLAGS += -g
else
ifeq ($(DEBUG),1)
override CFLAGS += -g
endif
endif
ifeq ($(NOOPT),1)
override CFLAGS := $(filter-out -O1 -Og -O2,$(CFLAGS))
override CFLAGS += -O0
endif
# Variable filled out in other make files
@ -198,8 +177,8 @@ MAKEFLAGS += --no-print-directory
# Delete files that weren't built properly
.DELETE_ON_ERROR:
RULES_NO_SCAN += libagbsyscall clean clean-assets tidy tidymodern tidynonmodern tidycheck generated clean-generated $(TESTELF)
.PHONY: all rom agbcc modern compare check
RULES_NO_SCAN += libagbsyscall clean clean-assets tidy tidymodern tidycheck generated clean-generated $(TESTELF)
.PHONY: all rom agbcc modern compare check debug
.PHONY: $(RULES_NO_SCAN)
infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
@ -269,6 +248,7 @@ $(shell mkdir -p $(SUBDIRS))
# Pretend rules that are actually flags defer to `make all`
modern: all
compare: all
debug: all
# Uncomment the next line, and then comment the 4 lines after it to reenable agbcc.
#agbcc: all
agbcc:
@ -317,21 +297,19 @@ clean-assets:
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -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: tidynonmodern tidymodern tidycheck
tidy: tidymodern tidycheck tidydebug
tidynonmodern:
tidymodern:
rm -f $(ROM_NAME) $(ELF_NAME) $(MAP_NAME)
rm -rf $(OBJ_DIR_NAME)
tidymodern:
rm -f $(MODERN_ROM_NAME) $(MODERN_ELF_NAME) $(MODERN_MAP_NAME)
rm -rf $(MODERN_OBJ_DIR_NAME)
tidycheck:
rm -f $(TESTELF) $(HEADLESSELF)
rm -rf $(MODERN_OBJ_DIR_NAME_TEST)
rm -rf $(OBJ_DIR_NAME_TEST)
tidydebug:
rm -rf $(DEBUG_OBJ_DIR_NAME)
# Other rules
include graphics_file_rules.mk
include map_data_rules.mk
@ -366,24 +344,11 @@ ifeq ($(COMPETITIVE_PARTY_SYNTAX),1)
%.h: %.party ; $(CPP) $(CPPFLAGS) -traditional-cpp - < $< | $(TRAINERPROC) -o $@ -i $< -
endif
ifeq ($(MODERN),0)
$(C_BUILDDIR)/libc.o: CC1 := $(TOOLS_DIR)/agbcc/bin/old_agbcc$(EXE)
$(C_BUILDDIR)/libc.o: CFLAGS := -O2
$(C_BUILDDIR)/siirtc.o: CFLAGS := -mthumb-interwork
$(C_BUILDDIR)/agb_flash.o: CFLAGS := -O -mthumb-interwork
$(C_BUILDDIR)/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork
$(C_BUILDDIR)/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork
$(C_BUILDDIR)/m4a.o: CC1 := tools/agbcc/bin/old_agbcc$(EXE)
$(C_BUILDDIR)/record_mixing.o: CFLAGS += -ffreestanding
$(C_BUILDDIR)/librfu_intr.o: CC1 := $(TOOLS_DIR)/agbcc/bin/agbcc_arm$(EXE)
$(C_BUILDDIR)/librfu_intr.o: CFLAGS := -O2 -mthumb-interwork -quiet
else
$(C_BUILDDIR)/librfu_intr.o: CFLAGS := -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast
$(C_BUILDDIR)/berry_crush.o: override CFLAGS += -Wno-address-of-packed-member
$(C_BUILDDIR)/pokedex_plus_hgss.o: CFLAGS := -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -Wno-pointer-to-int-cast -std=gnu17 -Werror -Wall -Wno-strict-aliasing -Wno-attribute-alias -Woverride-init
# Annoyingly we can't turn this on just for src/data/trainers.h
$(C_BUILDDIR)/data.o: CFLAGS += -fno-show-column -fno-diagnostics-show-caret
endif
# Dependency rules (for the *.c & *.s sources to .o files)
# Have to be explicit or else missing files won't be reported.
@ -464,18 +429,13 @@ $(DATA_SRC_SUBDIR)/pokemon/teachable_learnsets.h: $(DATA_ASM_BUILDDIR)/event_scr
python3 $(TOOLS_DIR)/learnset_helpers/teachable.py
# Linker script
ifeq ($(MODERN),0)
LD_SCRIPT := ld_script.ld
LD_SCRIPT_DEPS := $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld
else
LD_SCRIPT := ld_script_modern.ld
LD_SCRIPT_DEPS :=
endif
# Final rules
libagbsyscall:
@$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) MODERN=$(MODERN)
@$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) MODERN=1
# Elf from object files
LDFLAGS = -Map ../../$(MAP)

View File

@ -1349,7 +1349,6 @@
.4byte \func
.endm
@ callnative macros
.macro savetarget
callnative BS_SaveTarget
.endm
@ -1677,6 +1676,48 @@
.4byte \failInstr
.endm
.macro jumpifteainvulnerable battler:req, jumpInstr:req
callnative BS_TeatimeInvul
.byte \battler
.4byte \jumpInstr
.endm
.macro jumpifteanoberry failInstr:req
callnative BS_TeatimeTargets
.4byte \failInstr
.endm
.macro trywindriderpower battler:req, failInstr:req
callnative BS_TryWindRiderPower
.byte \battler
.4byte \failInstr
.endm
.macro activateweatherchangeabilities battler:req
callnative BS_ActivateWeatherChangeAbilities
.byte \battler
.endm
.macro activateterrainchangeabilities battler:req
callnative BS_ActivateTerrainChangeAbilities
.byte \battler
.endm
@ Stores Healing Wish effect.
.macro storehealingwish battler:req
callnative BS_StoreHealingWish
.byte \battler
.endm
.macro hitswitchtargetfailed
callnative BS_HitSwitchTargetFailed
.endm
.macro tryrevivalblessing, failInstr:req
callnative BS_TryRevivalBlessing
.4byte \failInstr
.endm
.macro jumpifblockedbysoundproof battler:req, failInstr:req
callnative BS_JumpIfBlockedBySoundproof
.byte \battler
@ -1692,16 +1733,37 @@
callnative BS_SetMagicCoatTarget
.endm
.macro jumpifcommanderactive jumpInstr:req
callnative BS_JumpIfCommanderActive
.4byte \jumpInstr
.endm
.macro checkpokeflute
callnative BS_CheckPokeFlute
.endm
.macro waitfanfare
callnative BS_WaitFanfare
.endm
.macro setbeakblast
callnative BS_SetBeakBlast
.endm
.macro cantarshotwork failInstr:req
callnative BS_CanTarShotWork
.4byte \failInstr
.endm
.macro removeterrain
callnative BS_RemoveTerrain
.endm
@ various command changed to more readable macros
.macro cancelmultiturnmoves battler:req
various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES
.endm
@ Stores Healing Wish effect.
.macro storehealingwish battler:req
various \battler, VARIOUS_STORE_HEALING_WISH
.endm
.macro getifcantrunfrombattle battler:req
various \battler, VARIOUS_IS_RUNNING_IMPOSSIBLE
.endm
@ -2167,10 +2229,6 @@
.4byte \failInstr
.endm
.macro removeterrain
various BS_ATTACKER, VARIOUS_REMOVE_TERRAIN
.endm
.macro trytoclearprimalweather
various BS_ATTACKER, VARIOUS_TRY_TO_CLEAR_PRIMAL_WEATHER
.endm
@ -2219,11 +2277,6 @@
.4byte \failInstr
.endm
.macro cantarshotwork battler:req, failInstr:req
various \battler, VARIOUS_CAN_TAR_SHOT_WORK
.4byte \failInstr
.endm
.macro checkpoltergeist battler:req, failInstr:req
various \battler, VARIOUS_CHECK_POLTERGEIST
.4byte \failInstr
@ -2234,16 +2287,6 @@
.4byte \failInstr
.endm
.macro jumpifteanoberry jumpInstr:req
various BS_ATTACKER, VARIOUS_TEATIME_TARGETS
.4byte \jumpInstr
.endm
.macro jumpifteainvulnerable battler:req, jumpInstr:req
various \battler, VARIOUS_TEATIME_INVUL
.4byte \jumpInstr
.endm
.macro curecertainstatuses battler:req
various \battler, VARIOUS_CURE_CERTAIN_STATUSES
.endm
@ -2275,10 +2318,6 @@
various \battler, VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM
.endm
.macro setbeakblast battler:req
various \battler, VARIOUS_SET_BEAK_BLAST
.endm
.macro swapsidestatuses
various BS_ATTACKER, VARIOUS_SWAP_SIDE_STATUSES
.endm
@ -2288,19 +2327,6 @@
.byte \stat
.endm
.macro trywindriderpower battler:req, failInstr:req
various \battler, VARIOUS_TRY_WIND_RIDER_POWER
.4byte \failInstr
.endm
.macro activateweatherchangeabilities battler:req
various \battler, VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES
.endm
.macro activateterrainchangeabilities battler:req
various \battler, VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES
.endm
@ helpful macros
.macro setstatchanger stat:req, stages:req, down:req
setbyte sSTATCHANGER, \stat | \stages << 3 | \down << 7
@ -2495,15 +2521,6 @@
waitmessage B_WAIT_TIME_LONG
.endm
.macro hitswitchtargetfailed
various 0, VARIOUS_HIT_SWITCH_TARGET_FAILED
.endm
.macro tryrevivalblessing, jumpInstr:req
various 0, VARIOUS_TRY_REVIVAL_BLESSING
.4byte \jumpInstr
.endm
@ Will jump to script pointer if the specified battler has or has not fainted.
.macro jumpiffainted battler:req, value:req, ptr:req
getbattlerfainted \battler

View File

@ -1798,7 +1798,7 @@
.4byte \text
.endm
@ Equivalent to fadescreen but copies gPlttBufferUnfaded to gPaletteDecompressionBuffer on the fade out
@ Equivalent to fadescreen but copies gPlttBufferUnfaded to gDecompressionBuffer on the fade out
@ and the reverse on the fade in, in effect saving gPlttBufferUnfaded to restore it.
.macro fadescreenswapbuffers mode:req
.byte 0xdc
@ -2321,3 +2321,112 @@
.macro togglefakertc
callnative Script_ToggleFakeRtc
.endm
@ ============================ @
@ ITEM DESCRIPTION HEADER MACROS
@ Used with OW_SHOW_ITEM_DESCRIPTIONS config
.macro showitemdescription
callnative ScriptShowItemDescription
.byte 0
.endm
.macro showberrydescription
callnative ScriptShowItemDescription
.byte 1
.endm
.macro hideitemdescription
callnative ScriptHideItemDescription
.endm
@ Remove all of specified item from the player's bag and return the number of removed items to VAR_RESULT
.macro removeallitem itemId:req
callnative ScrCmd_removeallitem
.2byte \itemId
.endm
@ Stores the position of the given object in destX and destY. Mode CURRENT_POSITION will take the object's current position. Mode TEMPLATE_POSITION will take the object's template position.
.macro getobjectxy localId:req, posType:req, destX:req, destY:req
callnative ScrCmd_getobjectxy
.2byte \localId
.2byte \posType
.2byte \destX
.2byte \destY
.endm
.macro getobjecttemplatexy localId:req, posType = TEMPLATE_POSITION, destX:req, destY:req
callnative ScrCmd_getobjectxy
.2byte \localId
.2byte \posType
.2byte \destX
.2byte \destY
.endm
.macro getobjectcurrentxy localId:req, posType = CURRENT_POSITION, destX:req, destY:req
callnative ScrCmd_getobjectxy
.2byte \localId
.2byte \posType
.2byte \destX
.2byte \destY
.endm
@ Return TRUE to dest if there is an object at the position x and y.
.macro checkobjectat x:req, y:req, dest = VAR_RESULT
callnative ScrCmd_checkobjectat
.2byte \x
.2byte \y
.2byte \dest
.endm
@ Returns the state of the Pokedex Seen Flag to VAR_RESULT for the Pokemon with speciesId
.macro getseenmon species:req
callnative Scrcmd_getsetpokedexflag
.2byte \species
.2byte FLAG_GET_SEEN
.endm
@ Returns the state of the Pokedex Caught Flag to VAR_RESULT for the Pokemon with speciesId
.macro getcaughtmon species:req
callnative Scrcmd_getsetpokedexflag
.2byte \species
.2byte FLAG_GET_CAUGHT
.endm
@ Sets the Pokedex Seen Flag for the Pokemon with speciesId
.macro setseenmon species:req
callnative Scrcmd_getsetpokedexflag
.2byte \species
.2byte FLAG_SET_SEEN
.endm
@ Sets the Pokedex Caught Flag for the Pokemon with speciesId
.macro setcaughtmon species:req
callnative Scrcmd_getsetpokedexflag
.2byte \species
.2byte FLAG_SET_CAUGHT
.endm
@ Check if the Player has speciesId in their party. OPEN_PARTY_SCREEN will have the player select a mon from their party. NO_PARTY_SCREEN will automatically check every mon in the player's party.
.macro checkspecies speciesId:req, mode=NO_PARTY_SCREEN
.if \mode == OPEN_PARTY_SCREEN
special ChoosePartyMon
waitstate
callnative Scrcmd_checkspecies_choose
.2byte \speciesId
.else
callnative Scrcmd_checkspecies
.2byte \speciesId
.endif
.endm
.macro checkspecies_choose speciesId:req
checkspecies \speciesId, OPEN_PARTY_SCREEN
.endm
@ Gets the facing direction of a given event object and stores it in the variable dest.
.macro getobjectfacingdirection localId:req, dest:req
callnative Scrcmd_getobjectfacingdirection
.2byte \localId
.2byte \dest
.endm

View File

@ -45,6 +45,7 @@ SUPER_ER = 2C
LV = 34
'=' = 35
';' = 36
V_D_ARROW = 38
'¿' = 51
'¡' = 52
PK = 53
@ -369,7 +370,7 @@ B_ATK_NAME_WITH_PREFIX = FD 0F
B_DEF_NAME_WITH_PREFIX = FD 10
B_EFF_NAME_WITH_PREFIX = FD 11 @ EFF = short for gEffectBattler
@ FD 12 - preiously gActiveBattler with prefix
B_SCR_ACTIVE_NAME_WITH_PREFIX = FD 13
B_SCR_NAME_WITH_PREFIX = FD 13
B_CURRENT_MOVE = FD 14
B_LAST_MOVE = FD 15
B_LAST_ITEM = FD 16
@ -412,6 +413,14 @@ B_DEF_TEAM1 = FD 3A
B_DEF_TEAM2 = FD 3B
@ FD 3C - preiously gActiveBattler
@ FD 3D - preiously gActiveBattler without Illusion Check
B_ATK_NAME_WITH_PREFIX2 = FD 3E
B_DEF_NAME_WITH_PREFIX2 = FD 3F
B_EFF_NAME_WITH_PREFIX2 = FD 40
B_SCR_NAME_WITH_PREFIX2 = FD 41
B_TRAINER1_NAME_WITH_CLASS = FD 42
B_TRAINER2_NAME_WITH_CLASS = FD 43
B_PARTNER_NAME_WITH_CLASS = FD 44
B_ATK_TRAINER_NAME_WITH_CLASS = FD 45
@ indicates the end of a town/city name (before " TOWN" or " CITY")
NAME_END = FC 00

File diff suppressed because it is too large Load Diff

View File

@ -579,7 +579,7 @@ BattleScript_Teatimerod:
statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_TeatimeBuffer
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TeatimeBuffer
printfromtable gStatUpStringIds
waitmessage 0x40
waitmessage B_WAIT_TIME_LONG
moveendto MOVEEND_NEXT_TARGET
jumpifnexttargetvalid BattleScript_TeatimeLoop
moveendcase MOVEEND_CLEAR_BITS
@ -591,7 +591,7 @@ BattleScript_Teatimemotor:
statbuffchange STAT_CHANGE_ALLOW_PTR, BattleScript_TeatimeBuffer
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TeatimeBuffer
printfromtable gStatUpStringIds
waitmessage 0x40
waitmessage B_WAIT_TIME_LONG
moveendto MOVEEND_NEXT_TARGET
jumpifnexttargetvalid BattleScript_TeatimeLoop
moveendcase MOVEEND_CLEAR_BITS
@ -670,7 +670,7 @@ BattleScript_EffectCourtChange::
goto BattleScript_MoveEnd
BattleScript_BeakBlastSetUp::
setbeakblast BS_ATTACKER
setbeakblast
flushtextbox
playanimation BS_ATTACKER, B_ANIM_BEAK_BLAST_SETUP, NULL
printstring STRINGID_HEATUPBEAK
@ -891,7 +891,7 @@ BattleScript_EffectTarShot::
attackcanceler
jumpifsubstituteblocks BattleScript_FailedFromAtkString
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
cantarshotwork BS_TARGET, BattleScript_FailedFromAtkString
cantarshotwork BattleScript_FailedFromAtkString
attackstring
ppreduce
setstatchanger STAT_SPEED, 1, TRUE
@ -3011,30 +3011,17 @@ BattleScript_CantMakeAsleep::
orhalfword gMoveResultFlags, MOVE_RESULT_FAILED
goto BattleScript_MoveEnd
BattleScript_EffectAbsorb::
call BattleScript_EffectHit_Ret
jumpifstatus3 BS_ATTACKER, STATUS3_HEAL_BLOCK, BattleScript_AbsorbHealBlock
setdrainedhp
manipulatedamage DMG_BIG_ROOT
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_IGNORE_DISGUISE
jumpifability BS_TARGET, ABILITY_LIQUID_OOZE, BattleScript_AbsorbLiquidOoze
setbyte cMULTISTRING_CHOOSER, B_MSG_ABSORB
goto BattleScript_AbsorbUpdateHp
BattleScript_AbsorbLiquidOoze::
BattleScript_EffectAbsorbLiquidOoze::
call BattleScript_AbilityPopUpTarget
manipulatedamage DMG_CHANGE_SIGN
setbyte cMULTISTRING_CHOOSER, B_MSG_ABSORB_OOZE
BattleScript_AbsorbUpdateHp::
goto BattleScript_EffectAbsorb
BattleScript_EffectAbsorb::
healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
jumpifmovehadnoeffect BattleScript_AbsorbTryFainting
printfromtable gAbsorbDrainStringIds
waitmessage B_WAIT_TIME_LONG
BattleScript_AbsorbTryFainting::
tryfaintmon BS_ATTACKER
BattleScript_AbsorbHealBlock::
tryfaintmon BS_TARGET
goto BattleScript_MoveEnd
return
BattleScript_EffectExplosion::
attackcanceler
@ -3093,7 +3080,7 @@ BattleScript_DreamEaterWorked:
healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
jumpifmovehadnoeffect BattleScript_DreamEaterTryFaintEnd
printstring STRINGID_PKMNDREAMEATEN
printstring STRINGID_PKMNENERGYDRAINED
waitmessage B_WAIT_TIME_LONG
BattleScript_DreamEaterTryFaintEnd:
tryfaintmon BS_TARGET
@ -3276,6 +3263,7 @@ BattleScript_EffectRoar::
attackstring
ppreduce
jumpifroarfails BattleScript_ButItFailed
jumpifcommanderactive BattleScript_ButItFailed
jumpifability BS_TARGET, ABILITY_GUARD_DOG, BattleScript_ButItFailed
jumpifability BS_TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut
jumpifstatus3 BS_TARGET, STATUS3_ROOTED, BattleScript_PrintMonIsRooted
@ -4702,6 +4690,9 @@ BattleScript_ButItFailed::
resultmessage
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
BattleScript_RestoreAttackerButItFailed:
restoreattacker
goto BattleScript_ButItFailed
BattleScript_NotAffected::
pause B_WAIT_TIME_SHORT
@ -5956,7 +5947,7 @@ BattleScript_OverworldWeatherStarts::
end3
BattleScript_OverworldTerrain::
printfromtable gTerrainStringIds
printfromtable gTerrainStartsStringIds
waitmessage B_WAIT_TIME_LONG
playanimation BS_BATTLER_0, B_ANIM_RESTORE_BG
call BattleScript_ActivateTerrainEffects
@ -6038,33 +6029,34 @@ BattleScript_SafeguardEnds::
waitmessage B_WAIT_TIME_LONG
end2
BattleScript_LeechSeedTurnDrain::
playanimation BS_ATTACKER, B_ANIM_LEECH_SEED_DRAIN, sB_ANIM_ARG1
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
copyword gBattleMoveDamage, gHpDealt
jumpifability BS_ATTACKER, ABILITY_LIQUID_OOZE, BattleScript_LeechSeedTurnPrintLiquidOoze
setbyte cMULTISTRING_CHOOSER, B_MSG_LEECH_SEED_DRAIN
jumpifstatus3 BS_TARGET, STATUS3_HEAL_BLOCK, BattleScript_LeechSeedHealBlock
manipulatedamage DMG_BIG_ROOT
goto BattleScript_LeechSeedTurnPrintAndUpdateHp
BattleScript_LeechSeedTurnPrintLiquidOoze::
BattleScript_LeechSeedTurnDrainLiquidOoze::
call BattleScript_LeechSeedTurnDrain
manipulatedamage DMG_CHANGE_SIGN
copybyte gBattlerAbility, gBattlerAttacker
call BattleScript_AbilityPopUp
setbyte cMULTISTRING_CHOOSER, B_MSG_LEECH_SEED_OOZE
BattleScript_LeechSeedTurnPrintAndUpdateHp::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
goto BattleScript_LeechSeedTurnDrainGainHp
BattleScript_LeechSeedTurnDrainHealBlock::
call BattleScript_LeechSeedTurnDrain
end2
BattleScript_LeechSeedTurnDrainRecovery::
call BattleScript_LeechSeedTurnDrain
BattleScript_LeechSeedTurnDrainGainHp:
manipulatedamage DMG_BIG_ROOT
healthbarupdate BS_TARGET
datahpupdate BS_TARGET
printfromtable gLeechSeedStringIds
waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_ATTACKER
tryfaintmon BS_TARGET
end2
BattleScript_LeechSeedHealBlock:
setword gBattleMoveDamage, 0
goto BattleScript_LeechSeedTurnPrintAndUpdateHp
BattleScript_LeechSeedTurnDrain:
playanimation BS_ATTACKER, B_ANIM_LEECH_SEED_DRAIN, sB_ANIM_ARG1
healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
tryfaintmon BS_ATTACKER
return
BattleScript_BideStoringEnergy::
printstring STRINGID_PKMNSTORINGENERGY
@ -6436,12 +6428,14 @@ BattleScript_SeedSowerActivates::
return
BattleScript_AngerShellActivates::
saveattacker
copybyte gBattlerAttacker, gBattlerTarget
call BattleScript_AbilityPopUp
jumpifstat BS_TARGET, CMP_LESS_THAN, STAT_ATK, MAX_STAT_STAGE, BattleScript_AngerShellTryDef
jumpifstat BS_TARGET, CMP_LESS_THAN, STAT_SPATK, MAX_STAT_STAGE, BattleScript_AngerShellTryDef
jumpifstat BS_TARGET, CMP_LESS_THAN, STAT_SPEED, MAX_STAT_STAGE, BattleScript_AngerShellTryDef
jumpifstat BS_TARGET, CMP_GREATER_THAN, STAT_DEF, MIN_STAT_STAGE, BattleScript_AngerShellTryDef
jumpifstat BS_TARGET, CMP_EQUAL, STAT_SPDEF, MIN_STAT_STAGE, BattleScript_ButItFailed
jumpifstat BS_TARGET, CMP_EQUAL, STAT_SPDEF, MIN_STAT_STAGE, BattleScript_RestoreAttackerButItFailed
BattleScript_AngerShellTryDef::
setbyte sSTAT_ANIM_PLAYED, FALSE
modifybattlerstatstage BS_ATTACKER, STAT_DEF, DECREASE, 1, BattleScript_AngerShellTrySpDef, ANIM_ON
@ -6455,6 +6449,7 @@ BattleScript_AngerShellTrySpAtk:
BattleScript_AngerShellTrySpeed:
modifybattlerstatstage BS_ATTACKER, STAT_SPEED, INCREASE, 1, BattleScript_AngerShellRet, ANIM_ON
BattleScript_AngerShellRet:
restoreattacker
return
BattleScript_WindPowerActivates::
@ -6979,26 +6974,17 @@ BattleScript_WishMegaEvolution::
goto BattleScript_MegaEvolutionAfterString
BattleScript_PrimalReversion::
call BattleScript_PrimalReversionRet
end3
BattleScript_PrimalReversionRestoreAttacker::
call BattleScript_PrimalReversionRet
copybyte gBattlerAttacker, sSAVED_BATTLER
end3
BattleScript_PrimalReversionRet::
flushtextbox
setbyte gIsCriticalHit, 0
handleprimalreversion BS_ATTACKER, 0
handleprimalreversion BS_ATTACKER, 1
playanimation BS_ATTACKER, B_ANIM_PRIMAL_REVERSION
handleprimalreversion BS_SCRIPTING, 0
handleprimalreversion BS_SCRIPTING, 1
playanimation BS_SCRIPTING, B_ANIM_PRIMAL_REVERSION
waitanimation
handleprimalreversion BS_ATTACKER, 2
handleprimalreversion BS_SCRIPTING, 2
printstring STRINGID_PKMNREVERTEDTOPRIMAL
waitmessage B_WAIT_TIME_LONG
switchinabilities BS_ATTACKER
return
switchinabilities BS_SCRIPTING
end3
BattleScript_UltraBurst::
flushtextbox
@ -8036,11 +8022,52 @@ BattleScript_CostarActivates::
BattleScript_ZeroToHeroActivates::
pause B_WAIT_TIME_SHORT
call BattleScript_AbilityPopUp
call BattleScript_AbilityPopUpScripting
printstring STRINGID_ZEROTOHEROTRANSFORMATION
waitmessage B_WAIT_TIME_LONG
end3
BattleScript_CommanderActivates::
pause B_WAIT_TIME_SHORT
call BattleScript_AbilityPopUpScripting
printstring STRINGID_COMMANDERACTIVATES
waitmessage B_WAIT_TIME_LONG
BattleScript_CommanderAtkIncrease:
setbyte sSTAT_ANIM_PLAYED, FALSE
playstatchangeanimation BS_ATTACKER, BIT_ATK | BIT_DEF | BIT_SPATK | BIT_SPDEF | BIT_SPEED, STAT_CHANGE_BY_TWO
setstatchanger STAT_ATK, 2, FALSE
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_CommanderDefIncrease
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_CommanderDefIncrease
printfromtable gStatUpStringIds
waitmessage B_WAIT_TIME_LONG
BattleScript_CommanderDefIncrease:
setstatchanger STAT_DEF, 2, FALSE
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_CommanderSpAtkIncrease
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_CommanderSpAtkIncrease
printfromtable gStatUpStringIds
waitmessage B_WAIT_TIME_LONG
BattleScript_CommanderSpAtkIncrease:
setstatchanger STAT_SPATK, 2, FALSE
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_CommanderSpDefIncrease
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_CommanderSpDefIncrease
printfromtable gStatUpStringIds
waitmessage B_WAIT_TIME_LONG
BattleScript_CommanderSpDefIncrease:
setstatchanger STAT_SPDEF, 2, FALSE
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_CommanderSpeedIncrease
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_CommanderSpeedIncrease
printfromtable gStatUpStringIds
waitmessage B_WAIT_TIME_LONG
BattleScript_CommanderSpeedIncrease:
setstatchanger STAT_SPEED, 2, FALSE
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_CommanderEnd
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_CommanderEnd
printfromtable gStatUpStringIds
waitmessage B_WAIT_TIME_LONG
BattleScript_CommanderEnd:
restoreattacker
end3
BattleScript_HospitalityActivates::
pause B_WAIT_TIME_SHORT
call BattleScript_AbilityPopUp
@ -9042,8 +9069,6 @@ BattleScript_BerryConfuseHealEnd2_Anim:
orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
healthbarupdate BS_SCRIPTING
datahpupdate BS_SCRIPTING
printstring STRINGID_FORXCOMMAYZ
waitmessage B_WAIT_TIME_LONG
seteffectprimary MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER
removeitem BS_SCRIPTING
end2
@ -9060,8 +9085,6 @@ BattleScript_BerryConfuseHealRet_Anim:
orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
healthbarupdate BS_SCRIPTING
datahpupdate BS_SCRIPTING
printstring STRINGID_FORXCOMMAYZ
waitmessage B_WAIT_TIME_LONG
seteffectprimary MOVE_EFFECT_CONFUSION | MOVE_EFFECT_CERTAIN
removeitem BS_TARGET
return
@ -9558,6 +9581,14 @@ BattleScript_StickyBarbTransfer::
removeitem BS_TARGET
return
BattleScript_RedCardActivationNoSwitch::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_REDCARDACTIVATE
waitmessage B_WAIT_TIME_LONG
removeitem BS_SCRIPTING
restoretarget
return
BattleScript_RedCardActivates::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_REDCARDACTIVATE

View File

@ -25,6 +25,7 @@ gBattlescriptsForUsingItem::
.4byte BattleScript_ItemRestoreHP @ EFFECT_ITEM_REVIVE
.4byte BattleScript_ItemRestorePP @ EFFECT_ITEM_RESTORE_PP
.4byte BattleScript_ItemIncreaseAllStats @ EFFECT_ITEM_INCREASE_ALL_STATS
.4byte BattleScript_UsePokeFlute @ EFFECT_ITEM_USE_POKE_FLUTE
.align 2
gBattlescriptsForSafariActions::
@ -110,6 +111,25 @@ BattleScript_ItemIncreaseStat::
waitmessage B_WAIT_TIME_LONG
end
BattleScript_UsePokeFlute::
checkpokeflute
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 1, BattleScript_PokeFluteWakeUp
printstring STRINGID_POKEFLUTECATCHY
waitmessage B_WAIT_TIME_LONG
goto BattleScript_PokeFluteEnd
BattleScript_PokeFluteWakeUp::
printstring STRINGID_POKEFLUTE
waitmessage B_WAIT_TIME_LONG
fanfare MUS_RG_POKE_FLUTE
waitfanfare
printstring STRINGID_MONHEARINGFLUTEAWOKE
waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_PLAYER2
waitstate
BattleScript_PokeFluteEnd::
finishaction
BattleScript_ItemSetMist::
call BattleScript_UseItemMessage
setmist

View File

@ -42,6 +42,7 @@
#include "constants/metatile_labels.h"
#include "constants/moves.h"
#include "constants/party_menu.h"
#include "constants/pokedex.h"
#include "constants/pokemon.h"
#include "constants/roulette.h"
#include "constants/script_menu.h"
@ -587,6 +588,37 @@ EventScript_WhiteOut::
goto EventScript_ResetMrBriney
end
EventScript_AfterWhiteOutHeal::
lockall
msgbox gText_FirstShouldRestoreMonsHealth
call EventScript_PkmnCenterNurse_TakeAndHealPkmn
call_if_unset FLAG_DEFEATED_RUSTBORO_GYM, EventScript_AfterWhiteOutHealMsgPreRoxanne
call_if_set FLAG_DEFEATED_RUSTBORO_GYM, EventScript_AfterWhiteOutHealMsg
applymovement VAR_LAST_TALKED, Movement_PkmnCenterNurse_Bow
waitmovement 0
fadedefaultbgm
releaseall
end
EventScript_AfterWhiteOutHealMsgPreRoxanne::
msgbox gText_MonsHealedShouldBuyPotions
return
EventScript_AfterWhiteOutHealMsg::
msgbox gText_MonsHealed
return
EventScript_AfterWhiteOutMomHeal::
lockall
applymovement LOCALID_MOM, Common_Movement_WalkInPlaceFasterDown
waitmovement 0
msgbox gText_HadQuiteAnExperienceTakeRest
call Common_EventScript_OutOfCenterPartyHeal
msgbox gText_MomExplainHPGetPotions
fadedefaultbgm
releaseall
end
EventScript_ResetMrBriney::
goto_if_eq VAR_BRINEY_LOCATION, 1, EventScript_MoveMrBrineyToHouse
goto_if_eq VAR_BRINEY_LOCATION, 2, EventScript_MoveMrBrineyToDewford
@ -693,6 +725,11 @@ EventScript_BackupMrBrineyLocation::
.include "data/scripts/rival_graphics.inc"
.include "data/scripts/set_gym_trainers.inc"
EventScript_CancelMessageBox::
special UseBlankMessageToCancelPokemonPic
release
end
Common_EventScript_ShowBagIsFull::
msgbox gText_TooBadBagIsFull, MSGBOX_DEFAULT
release
@ -887,6 +924,48 @@ gText_PlayerWhitedOut::
.string "{PLAYER} is out of usable\n"
.string "POKéMON!\p{PLAYER} whited out!$"
gText_FirstShouldRestoreMonsHealth::
.string "First, you should restore your\n"
.string "POKéMON to full health.$"
gText_MonsHealedShouldBuyPotions::
.string "Your POKéMON have been healed\n"
.string "to perfect health.\p"
.string "If your POKéMON's energy, HP,\n"
.string "is down, please come see us.\p"
.string "If you're planning to go far in the\n"
.string "field, you should buy some POTIONS\l"
.string "at the POKéMON MART.\p"
.string "We hope you excel!$"
gText_MonsHealed::
.string "Your POKéMON have been healed\n"
.string "to perfect health.\p"
.string "We hope you excel!$"
gText_HadQuiteAnExperienceTakeRest::
.string "MOM: {PLAYER}!\n"
.string "Welcome home.\p"
.string "It sounds like you had quite\n"
.string "an experience.\p"
.string "Maybe you should take a quick\n"
.string "rest.$"
gText_MomExplainHPGetPotions::
.string "MOM: Oh, good! You and your\n"
.string "POKéMON are looking great.\p"
.string "I just heard from PROF. BIRCH.\p"
.string "He said that POKéMON's energy is\n"
.string "measured in HP.\p"
.string "If your POKéMON lose their HP,\n"
.string "you can restore them at any\l"
.string "POKéMON CENTER.\p"
.string "If you're going to travel far away,\n"
.string "the smart TRAINER stocks up on\l"
.string "POTIONS at the POKéMON MART.\p"
.string "Make me proud, honey!\p"
.string "Take care!$"
gText_RegisteredTrainerinPokeNav::
.string "Registered {STR_VAR_1} {STR_VAR_2}\n"
.string "in the POKéNAV.$"
@ -1030,7 +1109,6 @@ EventScript_VsSeekerChargingDone::
.include "data/text/contest_strings.inc"
.include "data/text/contest_link.inc"
.include "data/text/contest_painting.inc"
.include "data/text/trick_house_mechadolls.inc"
.include "data/scripts/tv.inc"
.include "data/text/tv.inc"
.include "data/scripts/interview.inc"
@ -1071,6 +1149,5 @@ EventScript_VsSeekerChargingDone::
.include "data/scripts/trainer_hill.inc"
.include "data/scripts/test_signpost.inc"
.include "data/scripts/follower.inc"
.include "data/text/frontier_brain.inc"
.include "data/text/save.inc"
.include "data/text/birch_speech.inc"

View File

@ -111,6 +111,7 @@ MtChimney_EventScript_LavaCookieLady::
msgbox MtChimney_Text_ThankYouDear, MSGBOX_DEFAULT
checkitemspace ITEM_LAVA_COOKIE
call_if_eq VAR_RESULT, TRUE, MtChimney_EventScript_RemoveMoney
.if OW_SHOW_ITEM_DESCRIPTIONS == OW_ITEM_DESCRIPTIONS_OFF
giveitem ITEM_LAVA_COOKIE
goto_if_eq VAR_RESULT, FALSE, MtChimney_EventScript_BagIsFull
hidemoneybox
@ -122,6 +123,19 @@ MtChimney_EventScript_BagIsFull::
hidemoneybox
release
end
.else
hidemoneybox
giveitem ITEM_LAVA_COOKIE
goto_if_eq VAR_RESULT, FALSE, MtChimney_EventScript_BagIsFull
release
end
MtChimney_EventScript_BagIsFull::
msgbox gText_TooBadBagIsFull, MSGBOX_DEFAULT
release
end
.endif @ OW_SHOW_ITEM_DESCRIPTIONS
MtChimney_EventScript_RemoveMoney::
removemoney 200

View File

@ -52,8 +52,13 @@ Route109_SeashoreHouse_EventScript_BuySodaPop::
msgbox Route109_SeashoreHouse_Text_HereYouGo, MSGBOX_DEFAULT
removemoney 300
updatemoneybox
.if OW_SHOW_ITEM_DESCRIPTIONS != OW_ITEM_DESCRIPTIONS_OFF
hidemoneybox
giveitem ITEM_SODA_POP
.else
giveitem ITEM_SODA_POP
hidemoneybox
.endif
release
end

View File

@ -176,6 +176,8 @@ BerryTree_EventScript_PickBerry::
special IncrementDailyPickedBerries
special ObjectEventInteractionRemoveBerryTree
message BerryTree_Text_PickedTheBerry
delay 10
showberrydescription
playfanfare MUS_OBTAIN_BERRY
waitmessage
waitfanfare
@ -183,6 +185,7 @@ BerryTree_EventScript_PickBerry::
message BerryTree_Text_PutAwayBerry
waitmessage
waitbuttonpress
hideitemdescription
release
end

View File

@ -1258,7 +1258,11 @@ EventScript_CloseMossdeepGameCornerBarrier::
CableClub_OnResume:
special InitUnionRoom
.if OW_FLAG_MOVE_UNION_ROOM_CHECK != 0
return
.else
end
.endif
MossdeepCity_GameCorner_1F_EventScript_InfoMan2::
lock

View File

@ -1,4 +1,3 @@
.if DEBUG_OVERWORLD_MENU == TRUE
Debug_MessageEnd:
waitmessage
waitbuttonpress
@ -448,5 +447,3 @@ Debug_EventScript_EWRAMCounters::
Debug_EventScript_EWRAMCounters_Text::
.string "Follower Steps: {STR_VAR_1}.\n"
.string "Fishing Chain: {STR_VAR_2}.$"
.endif

View File

@ -2,6 +2,7 @@
.set AMOUNT, VAR_0x8001
Std_ObtainItem::
copyvar VAR_0x8006, ITEMID
additem ITEMID, AMOUNT
copyvar VAR_0x8007, VAR_RESULT
call EventScript_ObtainItemMessage
@ -58,8 +59,11 @@ EventScript_ObtainedItem::
EventScript_ObtainedItemMessage:
message gText_ObtainedTheItem
EventScript_ContinueObtainedItem:
delay 10
showitemdescription
waitfanfare
msgbox gText_PutItemInPocket, MSGBOX_DEFAULT
hideitemdescription
setvar VAR_RESULT, TRUE
return
@ -103,6 +107,7 @@ Std_FindItem::
lock
faceplayer
waitse
copyvar VAR_0x8006, ITEMID
copyvar VAR_0x8004, ITEMID
copyvar VAR_0x8005, AMOUNT
checkitemspace ITEMID, AMOUNT
@ -118,20 +123,25 @@ Std_FindItem::
EventScript_PickUpItem::
removeobject VAR_LAST_TALKED
additem VAR_0x8004, VAR_0x8005
copyvar VAR_0x8006 VAR_0x8004
specialvar VAR_RESULT, BufferTMHMMoveName
copyvar VAR_0x8008, VAR_RESULT
call_if_eq VAR_0x8008, TRUE, EventScript_FoundTMHM
call_if_eq VAR_0x8008, FALSE, EventScript_FoundItem
delay 10
showitemdescription
waitfanfare
waitmessage
bufferitemnameplural STR_VAR_2, VAR_0x8004, VAR_0x8005
pyramid_inchallenge
goto_if_eq VAR_RESULT, TRUE, EventScript_PutBattlePyramidItemInBag
msgbox gText_PutItemInPocket, MSGBOX_DEFAULT
hideitemdescription
return
EventScript_PutBattlePyramidItemInBag::
msgbox gText_PlayerPutItemInBag, MSGBOX_DEFAULT
hideitemdescription
return
EventScript_FoundTMHM::
@ -165,6 +175,7 @@ EventScript_NoRoomToPickUpItem::
EventScript_HiddenItemScript::
lockall
waitse
copyvar VAR_0x8006, VAR_0x8005
additem VAR_0x8005
copyvar VAR_0x8007, VAR_RESULT
bufferitemnameplural STR_VAR_2, VAR_0x8005, 1
@ -194,11 +205,14 @@ EventScript_FoundHiddenItem::
end
EventScript_PutHiddenItemInPocket::
delay 10
showitemdescription
waitmessage
waitfanfare
bufferitemnameplural STR_VAR_2, VAR_0x8004, 1
copyvar VAR_0x8004, VAR_0x8008
msgbox gText_PutItemInPocket, MSGBOX_DEFAULT
hideitemdescription
special TryPutTreasureInvestigatorsOnAir
special SetHiddenItemFlag
releaseall

View File

@ -36,6 +36,11 @@ EventScript_PkmnCenterNurse_TakeAndHealPkmn::
applymovement VAR_0x800B, Movement_PkmnCenterNurse_Turn @ Changed from Common_Movement_WalkInPlaceFasterLeft to force the follower to enter their Poké Ball
waitmovement 0
dofieldeffect FLDEFF_POKECENTER_HEAL
.if OW_UNION_DISABLE_CHECK == FALSE && OW_FLAG_MOVE_UNION_ROOM_CHECK != 0
setflag OW_FLAG_MOVE_UNION_ROOM_CHECK
call CableClub_OnResume
clearflag OW_FLAG_MOVE_UNION_ROOM_CHECK
.endif
waitfieldeffect FLDEFF_POKECENTER_HEAL
applymovement VAR_0x800B, Common_Movement_WalkInPlaceFasterDown
waitmovement 0

View File

@ -553,3 +553,4 @@ gSpecials::
def_special Script_GetChosenMonDefensiveEVs
def_special Script_GetChosenMonOffensiveIVs
def_special Script_GetChosenMonDefensiveIVs
def_special UseBlankMessageToCancelPokemonPic

View File

@ -1,108 +0,0 @@
@ Battle Tower
gText_AnabelWonSilver::
.string "It's very disappointing…$"
gText_AnabelDefeatSilver::
.string "Okay, I understand…$"
gText_AnabelWonGold::
.string "I'm terribly sorry…$"
gText_AnabelDefeatGold::
.string "Thank you…$"
@ Battle Dome
gText_TuckerWonSilver::
.string "Ahahaha! Aren't you embarrassed?\n"
.string "Everyone's watching!$"
gText_TuckerDefeatSilver::
.string "Grr…\n"
.string "What the…$"
gText_TuckerWonGold::
.string "My DOME ACE title isn't just for show!$"
gText_TuckerDefeatGold::
.string "Ahahaha!\n"
.string "You're inspiring!$"
@ Battle Factory
gText_NolandWonSilver::
.string "Way to work!\n"
.string "That was a good lesson, eh?$"
gText_NolandDefeatSilver::
.string "Good job!\n"
.string "You know what you're doing!$"
gText_NolandWonGold::
.string "Hey, hey, hey!\n"
.string "You're finished already?$"
gText_NolandDefeatGold::
.string "What happened here?$"
@ Battle Pike
gText_LucyWonSilver::
.string "Humph…$"
gText_LucyDefeatSilver::
.string "Urk…$"
gText_LucyWonGold::
.string "Hah!$"
gText_LucyDefeatGold::
.string "Darn!$"
@ Battle Arena
gText_GretaWonSilver::
.string "Oh, come on!\n"
.string "You have to try harder than that!$"
gText_GretaDefeatSilver::
.string "No way!\n"
.string "Good job!$"
gText_GretaWonGold::
.string "Heheh!\n"
.string "What did you expect?$"
gText_GretaDefeatGold::
.string "Huh?\n"
.string "Are you serious?!$"
@ Battle Palace
gText_SpenserWonSilver::
.string "Your POKéMON are wimpy because\n"
.string "you're wimpy as a TRAINER!$"
gText_SpenserDefeatSilver::
.string "Ah…\n"
.string "Now this is something else…$"
gText_SpenserWonGold::
.string "Gwahahaha!\n"
.string "My brethren, we have nothing to fear!$"
gText_SpenserDefeatGold::
.string "Gwah!\n"
.string "Hahahaha!$"
@ Battle Pyramid
gText_BrandonWonSilver::
.string "Hey! What's wrong with you!\n"
.string "Let's see some effort! Get up!$"
gText_BrandonDefeatSilver::
.string "That's it! You've done great!\n"
.string "You've worked hard for this!$"
gText_BrandonWonGold::
.string "Hey! Don't you give up now!\n"
.string "Get up! Don't lose faith in yourself!$"
gText_BrandonDefeatGold::
.string "That's it! You've done it!\n"
.string "You kept working for this!$"

View File

@ -1,134 +0,0 @@
gTrickHouse_Mechadoll_Oddish::
.string "ODDISH$"
gTrickHouse_Mechadoll_Poochyena::
.string "POOCHYENA$"
gTrickHouse_Mechadoll_Taillow::
.string "TAILLOW$"
gTrickHouse_Mechadoll_Azurill::
.string "AZURILL$"
gTrickHouse_Mechadoll_Lotad::
.string "LOTAD$"
gTrickHouse_Mechadoll_Wingull::
.string "WINGULL$"
gTrickHouse_Mechadoll_Dustox::
.string "DUSTOX$"
gTrickHouse_Mechadoll_Zubat::
.string "ZUBAT$"
gTrickHouse_Mechadoll_Nincada::
.string "NINCADA$"
gTrickHouse_Mechadoll_Ralts::
.string "RALTS$"
gTrickHouse_Mechadoll_Zigzagoon::
.string "ZIGZAGOON$"
gTrickHouse_Mechadoll_Slakoth::
.string "SLAKOTH$"
gTrickHouse_Mechadoll_Poochyena2::
.string "POOCHYENA$"
gTrickHouse_Mechadoll_Shroomish::
.string "SHROOMISH$"
gTrickHouse_Mechadoll_Zigzagoon2::
.string "ZIGZAGOON$"
gTrickHouse_Mechadoll_Poochyena3::
.string "POOCHYENA$"
gTrickHouse_Mechadoll_Zubat2::
.string "ZUBAT$"
gTrickHouse_Mechadoll_Carvanha::
.string "CARVANHA$"
gTrickHouse_Mechadoll_BurnHeal::
.string "BURN HEAL$"
gTrickHouse_Mechadoll_HarborMail::
.string "HARBOR MAIL$"
gTrickHouse_Mechadoll_SamePrice::
.string "Same price$"
gTrickHouse_Mechadoll_60Yen::
.string "¥60$"
gTrickHouse_Mechadoll_55Yen::
.string "¥55$"
gTrickHouse_Mechadoll_Nothing::
.string "Nothing$"
gTrickHouse_Mechadoll_CostMore::
.string "They will cost more.$"
gTrickHouse_Mechadoll_CostLess::
.string "They will cost less.$"
gTrickHouse_Mechadoll_SamePrice2::
.string "Same price$"
gTrickHouse_Mechadoll_Male::
.string "Male$"
gTrickHouse_Mechadoll_Female::
.string "Female$"
gTrickHouse_Mechadoll_Neither::
.string "Neither$"
gTrickHouse_Mechadoll_ElderlyMen::
.string "Elderly men$"
gTrickHouse_Mechadoll_ElderlyLadies::
.string "Elderly ladies$"
gTrickHouse_Mechadoll_SameNumber::
.string "Same number$"
gTrickHouse_Mechadoll_None::
.string "None$"
gTrickHouse_Mechadoll_One::
.string "1$"
gTrickHouse_Mechadoll_Two::
.string "2$"
gTrickHouse_Mechadoll_Two2::
.string "2$"
gTrickHouse_Mechadoll_Three::
.string "3$"
gTrickHouse_Mechadoll_Four::
.string "4$"
gTrickHouse_Mechadoll_Six::
.string "6$"
gTrickHouse_Mechadoll_Seven::
.string "7$"
gTrickHouse_Mechadoll_Eight::
.string "8$"
gTrickHouse_Mechadoll_Six2::
.string "6$"
gTrickHouse_Mechadoll_Seven2::
.string "7$"
gTrickHouse_Mechadoll_Eight2::
.string "8$"

View File

@ -0,0 +1,21 @@
import glob
import re
import json
import os
import subprocess
def rename_subdirs(rootDir, old, new):
for root, dirs, files in os.walk(rootDir):
for name in files:
originalName = os.path.join(root, name)
if root.endswith(old) and os.path.isfile(originalName):
newName = originalName.replace(old + '/', new + '/')
print(originalName + " -> " + newName)
if (not os.path.isdir(root.replace(old, '') + new)):
os.mkdir(root.replace(old, '') + new)
os.rename(originalName, newName)
rename_subdirs("graphics/pokemon", '/alolan', "/alola")
rename_subdirs("graphics/pokemon", '/galarian', "/galar")
rename_subdirs("graphics/pokemon", '/hisuian', "/hisui")
rename_subdirs("graphics/pokemon", '/gigantamax', "/gmax")

View File

@ -0,0 +1,21 @@
import glob
import re
import json
import os
import subprocess
# THIS IS A TEMPORARY SCRIPT MADE TO DELETE FILES WITH THE "footprint.png" NAME
# FROM THE "graphics/pokemon_old" folder, AS MOST OF THEM ALREADY EXISTED IN "graphics/pokemon".
#
# I'M SAVING IT HERE IN CASE IT'S NEEDED SOMEWHERE IN THE FUTURE, THOUGH TWEAKING MIGHT BE NEEDED.
# - AsparagusEduardo
def rename_files(dir, filename):
for root, dirs, files in os.walk(dir):
for name in files:
if name.endswith(filename):
fullName = os.path.join(root, name)
print(fullName + " deleted.")
os.remove(fullName)
rename_files("graphics/pokemon_old", 'footprint.png')

View File

@ -0,0 +1,22 @@
import glob
import re
import json
import os
import subprocess
def rename_files(dirOld, dirNew, old, new):
for root, dirs, files in os.walk(dirOld):
for name in files:
if name.endswith(old):
originalName = os.path.join(root, name)
newName = originalName.replace(old, new)
newName = newName.replace(dirOld, dirNew)
print(originalName + " -> " + newName)
os.rename(originalName, newName)
rename_files("graphics/pokemon_old", "graphics/pokemon", 'anim_front.png', "anim_front_gba.png")
rename_files("graphics/pokemon_old", "graphics/pokemon", 'normal.pal', "normal_gba.pal")
rename_files("graphics/pokemon_old", "graphics/pokemon", 'shiny.pal', "shiny_gba.pal")
rename_files("graphics/pokemon_old", "graphics/pokemon", 'back.png', "back_gba.png")
rename_files("graphics/pokemon_old", "graphics/pokemon", 'icon.png', "icon_gba.png")
rename_files("graphics/pokemon_old", "graphics/pokemon", 'footprint.png', "footprint_gba.png")

300
docs/mmbn_style_names.md Normal file
View File

@ -0,0 +1,300 @@
# Megaman Battle Network Style Names
Prior to 1.10, names in expansion that were too long for the game's UIs were truncated to fit using the naming conventions from the [Megaman Battle Network](<https://www.therockmanexezone.com/wiki/The_Rockman_EXE_Zone_Wiki>) series.
These were removed as part of https://github.com/rh-hideout/pokeemerald-expansion/pull/5240. They are stored here for users that may want to refer back to them or restore them.
# Table
Attribute | MMBN | Official
-- | -- | --
Item | PewtrCrnches | Pewter Crunchies
Item | RageCandyBar | Rage Candy Bar
Item | LumioseGlete | Lumiose Galette
Item | ShalourSable | Shalour Sable
Item | HealthFeather | Health Feather
Item | MuscleFeather | Muscle Feather
Item | ResistFeather | Resist Feather
Item | GeniusFeather | Genius Feather
Item | CleverFeather | Clever Feather
Item | SwiftFeather | Swift Feather
Item | AbilityCapsle | Ability Capsule
Item | AbilityPatch | Ability Patch
Item | AbilityPatches | Ability Patches
Item | Exp.Candy XS | Exp. Candy XS
Item | Exp.Candies XS | Exp. Candies XS
Item | Exp.Candy S | Exp. Candy S
Item | Exp.Candies S | Exp. Candies S
Item | Exp.Candy M | Exp. Candy M
Item | Exp.Candies M | Exp. Candies M
Item | Exp.Candy L | Exp. Candy L
Item | Exp.Candies L | Exp. Candies L
Item | Exp.Candy XL | Exp. Candy XL
Item | Exp.Candies XL | Exp. Candies XL
Item | DynamaxCandy | Dynamax Candy
Item | DynamaxCandies | Dynamax Candies
Item | MaxMushrooms | Max Mushrooms
Item | GoldBottlCap | Gold Bottle Cap
Item | PrettyFeather | Pretty Feather
Item | StrngeSouvnr | Strange Souvenir
Item | FosslzedBird | Fossilized Bird
Item | FosslzedFish | Fossilized Fish
Item | FosslzedFishes | Fossilized Fishes
Item | FosslzedDrke | Fossilized Drake
Item | FosslzedDino | Fossilized Dino
Item | SurprseMulch | Surprise Mulch
Item | YellwApricorn | Yellow Apricorn
Item | GreenApricorn | Green Apricorn
Item | WhiteApricorn | White Apricorn
Item | BlackApricorn | Black Apricorn
Item | WishingPiece | Wishing Piece
Item | GalaricaTwig | Galarica Twig
Item | GalaricaCuff | Galarica Cuff
Item | GalrcaWreath | Galarica Wreath
Item | GalrcaWreathes | Galarica Wreathes
Item | StrwbrySweet | Strawberry Sweet
Item | ElectrcMemory | Electric Memory
Item | ElectrcMemories | Electric Memories
Item | FightngMemory | Fighting Memory
Item | FightngMemories | Fighting Memories
Item | PsychicMemory | Psychic Memory
Item | PsychicMemories | Psychic Memories
Item | RustedSword | Rusted Sword
Item | RustedShield | Rusted Shield
Item | CharizarditeX | Charizardite X
Item | CharizarditeY | Charizardite Y
Item | U-Necrozium Z | Ultranecrozium Z
Item | DeepSeaScale | Deep Sea Scale
Item | DeepSeaTooth | Deep Sea Tooth
Item | Never-MeltIce | Never-Melt Ice
Item | WeaknssPolicy | Weakness Policy
Item | WeaknssPolicies | Weakness Policies
Item | SafetyGoggles | Safety Goggles
Item | AdrenalineOrb | Adrenaline Orb
Item | TerainExtendr | Terrain Extender
Item | ProtectvePads | Protective Pads
Item | Heavy-DtyBts | Heavy-Duty Boots
Item | BlundrPolicy | Blunder Policy
Item | BlundrPolicies | Blunder Policies
Item | UtltyUmbrlla | Utility Umbrella
Item | CatchngCharm | Catching Charm
Item | RotomCatalog | Rotom Catalog
Item | ReinsOfUnity | Reins of Unity
Item | Dowsing MCHN | Dowsing Machine
Item | AbilityShield | Ability Shield
Item | PunchingGlove | Punching Glove
Item | AuspciousArmr | Auspicious Armor
Item | BoosterEnergy | Booster Energy
Item | BoosterEnergies | Booster Energies
Item | BigBmbooShoot | Big Bamboo Shoot
Item | GimighoulCoin | Gimmighoul Coin
Item | Leader'sCrest | Leader's Crest
Item | MaliciousArmr | Malicious Armor
Item | ScrllOfDrknss | Scroll of Darkness
Item | ScrllsOfDrknss | Scrolls of Darkness
Item | ScrollOfWatrs | Scroll of Waters
Item | ScrollsOfWatrs | Scrolls of Waters
Item | TinyBmbooShot | Tiny Bamboo Shoot
Item | Bug TeraShard | Bug Tera Shard
Item | DarkTeraShard | Dark Tera Shard
Item | DragnTeraShrd | Dragon Tera Shard
Item | EltrcTeraShrd | Electric Tera Shard
Item | FairyTeraShrd | Fairy Tera Shard
Item | FghtngTerShrd | Fighting Tera Shard
Item | FireTeraShard | Fire Tera Shard
Item | FlyngTeraShrd | Flying Tera Shard
Item | GhostTeraShrd | Ghost Tera Shard
Item | GrassTeraShrd | Grass Tera Shard
Item | GrondTeraShrd | Ground Tera Shard
Item | Ice TeraShard | Ice Tera Shard
Item | NormlTeraShrd | Normal Tera Shard
Item | PoisnTeraShrd | Poison Tera Shard
Item | PschcTeraShrd | Psychic Tera Shard
Item | RockTeraShard | Rock Tera Shard
Item | SteelTeraShrd | Steel Tera Shard
Item | WaterTeraShrd | Water Tera Shard
Item | AdamantCrystl | Adamant Crystal
Item | LustrousGlobe | Lustrous Globe
Item | BlackAugurite | Black Augurite
Item | UnrmkblTeacup | Unremarkable Teacup
Item | MstrpceTeacup | Masterpiece Teacup
Item | CornrstneMask | Cornerstone Mask
Item | WellsprngMask | Wellspring Mask
Item | HrthflameMask | Hearthflame Mask
Item | FrshStrtMochi | Fresh Start Mochi
Item | GlmmringCharm | Glimmering Charm
Item | StllrTeraShrd | Stellar Tera Shard
Item | JublifeMuffin | Jubilife Muffin
Item | AuxPowerguard | Aux Powerguard
Item | ChoiceDumplng | Choice Dumpling
Item | 2xSpicedRadsh | Twice-Spiced Radish
Move | ThunderPunch | Thunder Punch
Move | PoisonPowder | Poison Powder
Move | ThunderShock | Thunder Shock
Move | SelfDestruct | Self-Destruct
Move | HighJumpKick | High Jump Kick
Move | DynamicPunch | Dynamic Punch
Move | DragonBreath | Dragon Breath
Move | ExtremeSpeed | Extreme Speed
Move | AncientPower | Ancient Power
Move | SmellngSalts | Smelling Salts
Move | FeatherDance | Feather Dance
Move | GrassWhistle | Grass Whistle
Move | PhantomForce | Phantom Force
Move | TrickOrTreat | Trick-or-Treat
Move | ParabolcChrg | Parabolic Charge
Move | Forest'sCurs | Forest's Curse
Move | PetalBlizzrd | Petal Blizzard
Move | DisrmngVoice | Disarming Voice
Move | DrainingKiss | Draining Kiss
Move | CraftyShield | Crafty Shield
Move | FlowerShield | Flower Shield
Move | GrssyTerrain | Grassy Terrain
Move | MistyTerrain | Misty Terrain
Move | King'sShield | King's Shield
Move | DiamondStorm | Diamond Storm
Move | SteamErption | Steam Eruption
Move | HyprspceHole | Hyperspace Hole
Move | WatrShuriken | Water Shuriken
Move | MysticalFire | Mystical Fire
Move | AromaticMist | Aromatic Mist
Move | EerieImpulse | Eerie Impulse
Move | MagneticFlux | Magnetic Flux
Move | ElctrcTrrain | Electric Terrain
Move | DazzlngGleam | Dazzling Gleam
Move | BabyDollEyes | Baby-Doll Eyes
Move | PowerUpPunch | Power-Up Punch
Move | OblivionWing | Oblivion Wing
Move | ThousndArrws | Thousand Arrows
Move | ThousndWaves | Thousand Waves
Move | LightOfRuin | Light Of Ruin
Move | PrcipceBldes | Precipice Blades
Move | DragonAscent | Dragon Ascent
Move | HyprspceFury | Hyperspace Fury
Move | FrstImpressn | First Impression
Move | BanefulBunkr | Baneful Bunker
Move | SpiritShackl | Spirit Shackle
Move | DarkstLariat | Darkest Lariat
Move | SparklngAria | Sparkling Aria
Move | FloralHealng | Floral Healing
Move | HighHorsepwr | High Horsepower
Move | PsychcTrrain | Psychic Terrain
Move | RvlationDnce | Revelation Dance
Move | CoreEnforcer | Core Enforcer
Move | ClngngScales | Clanging Scales
Move | DragonHammer | Dragon Hammer
Move | PsychicFangs | Psychic Fangs
Move | StmpngTantrm | Stomping Tantrum
Move | PrsmaticLasr | Prismatic Laser
Move | SpectrlThief | Spectral Thief
Move | SnsteelStrke | Sunsteel Strike
Move | MoongestBeam | Moongeist Beam
Move | Natur'sMadns | Nature's Madness
Move | PhotonGeyser | Photon Geyser
Move | SplishySplsh | Splishy Splash
Move | BouncyBubble | Bouncy Bubble
Move | SparklySwirl | Sparkly Swirl
Move | VeeveeVolley | Veevee Volley
Move | DublIronBash | Double Iron Bash
Move | DynamxCannon | Dynamax Cannon
Move | FishiousRend | Fishious Rend
Move | ClngrousSoul | Clangorous Soul
Move | BehemthBlade | Behemoth Blade
Move | BehemothBash | Behemoth Bash
Move | BreakngSwipe | Breaking Swipe
Move | StrangeSteam | Strange Steam
Move | FalsSurrendr | False Surrender
Move | MeteorAssalt | Meteor Assault
Move | ExpandngForc | Expanding Force
Move | ShellSideArm | Shell Side Arm
Move | MstyExplsion | Misty Explosion
Move | RisngVoltage | Rising Voltage
Move | TerrainPulse | Terrain Pulse
Move | SkitterSmack | Skitter Smack
Move | BrningJelosy | Burning Jealousy
Move | CorrosiveGas | Corrosive Gas
Move | DualWingbeat | Dual Wingbeat
Move | ScorchngSnds | Scorching Sands
Move | JungleHealng | Jungle Healing
Move | SurgngStrkes | Surging Strikes
Move | DragonEnergy | Dragon Energy
Move | FreezngGlare | Freezing Glare
Move | ThnderusKick | Thunderous Kick
Move | GlacialLance | Glacial Lance
Move | AstrlBarrage | Astral Barrage
Move | PsyshieldBsh | Psyshield Bash
Move | SprngtdeStrm | Springtide Storm
Move | MystcalPower | Mystical Power
Move | MountainGale | Mountain Gale
Move | VictoryDance | Victory Dance
Move | HeadlongRush | Headlong Rush
Move | BitterMalice | Bitter Malice
Move | TripleArrows | Triple Arrows
Move | InfrnlParade | Infernal Parade
Move | CeaslessEdge | Ceaseless Edge
Move | BlekwndStorm | Bleakwind Storm
Move | WildbltStorm | Wildbolt Storm
Move | SndsearStorm | Sandsear Storm
Move | LunarBlessng | Lunar Blessing
Move | LastRespects | Last Respects
Move | SpicyExtract | Spicy Extract
Move | PoplatinBomb | Population Bomb
Move | RevivlBlesng | Revival Blessing
Move | KowtowCleave | Kowtow Cleave
Move | ColisinCours | Collision Course
Move | ElectroDrift | Electro Drift
Move | ChilReceptin | Chilly Reception
Move | ChillingWatr | Chilling Water
Move | GigatonHammr | Gigaton Hammer
Move | BlazngTorque | Blazing Torque
Move | WickedTorque | Wicked Torque
Move | NoxiusTorque | Noxious Torque
Move | CombatTorque | Combat Torque
Move | MagiclTorque | Magical Torque
Move | MatchaGotcha | Matcha Gotcha
Move | TeraStarstrm | Tera Starstorm
Move | BurnngBulwrk | Burning Bulwark
Move | MightyCleave | Mighty Cleave
Move | TachyonCuttr | Tachyon Cutter
Move | AllurngVoice | Alluring Voice
Move | SuprcellSlam | Supercell Slam
Move | PsychicNoise | Psychic Noise
Move | MalignntChan | Malignant Chain
Species | Dudunsprce | Dudunsparce
Species | Corvisquir | Corvisquire
Species | Corviknigh | Corviknight
Species | Barraskewd | Barraskewda
Species | Centiskorc | Centiskorch
Species | Polteageis | Polteageist
Species | Stonjourne | Stonjourner
Species | Meowscarad | Meowscarada
Species | Sqawkabily | Squawkabilly
Species | Kilowatrel | Kilowattrel
Species | Brmblghast | Brambleghast
Species | ScreamTail | Scream Tail
Species | BruteBonet | Brute Bonnet
Species | FluttrMane | Flutter Mane
Species | SlithrWing | Slither Wing
Species | SndyShocks | Sandy Shocks
Species | IronTreads | Iron Treads
Species | IronBundle | Iron Bundle
Species | IronJuguls | Iron Jugulis
Species | IronThorns | Iron Thorns
Species | RoarngMoon | Roaring Moon
Species | IronVliant | Iron Valiant
Species | WalkngWake | Walking Wake
Species | IronLeaves | Iron Leaves
Species | Ptchageist | Poltchageist
Species | Fezndipiti | Fezandipiti
Species | GouginFire | Gouging Fire
Species | RagingBolt | Raging Bolt
Species | IronBouldr | Iron Boulder
Species | Crabminabl | Crabominable
Species | Blacephaln | Blacephalon
Species | Bsculegion | Basculegion
Species | Flechinder | Fletchinder
Type | Fight | Fighting
Type | Electr | Electric
Type | Psychc | Psychic
Type | Stellr | Stellar

View File

@ -27,6 +27,16 @@ If you are not using competitive syntax parties, instead access the trainer data
# What AI Flags does pokeemerald-expansion have?
This section lists all of expansions AI Flags and briefly describes the effect they have on the AIs behaviour. In all cases, please check the corresponding function or surrounding code around their implementation for more details. Some of these functions are vanilla, some share a name with vanilla but have been modified to varying degrees, and some are completely new.
## Composite AI Flags
Expansion has two "composite" AI flags, `AI_FLAG_BASIC_TRAINER` and `AI_FLAG_SMART_TRAINER`. This means that these flags have no unique functionality themselves, and can instead be thought of as groups of other flags that are all enabled when this flag is enabled. The idea behind these flags is that if you don't care to manage the detailed behaviour of a particular trainer, you can use these as a baseline instead, and expansion will keep them updated for you.
`AI_FLAG_BASIC_TRAINER` is expansion's version of generic, normal AI behaviour. It includes `AI_FLAG_CHECK_BAD_MOVE` (don't use bad moves), `AI_FLAG_TRY_TO_FAINT` (faint the player where possible), and `AI_FLAG_CHECK_VIABILITY` (choose the most effective move to use in the current context). Trainers with this flag will still be smarter than they are in vanilla as there have been dramatic improvements made to move selection, but not incredibly so. Trainers with this flag should feel like normal trainers. In general we recommend these three flags be used in all cases, unless you specifically want a trainer who makes obvious mistakes in battle.
`AI_FLAG_SMART_TRAINER` is expansion's version of a "smart AI". It includes everything in `AI_FLAG_BASIC_TRAINER` along with `AI_FLAG_SMART_SWITCHING` (make smart decisions about when to switch), `AI_FLAG_SMART_MON_CHOICES` (make smart decisions about what mon to send in after a switch / KO), and `AI_FLAG_OMNISCIENT` (awareness of what moves, items, and abilities the player's mons have to better inform decisions). Expansion will keep this updated to represent the most objectively intelligent behaviour our flags are capable of producing.
Expansion has LOADS of flags, which will be covered in the rest of this guide. If you don't want to engage with detailed trainer AI tuning though, you can just use these two composite flags, and trust that expansion will keep their contents updated to always represent the most standard and the smartest behaviour we can.
## `AI_FLAG_CHECK_BAD_MOVE`
The AI will avoid using moves that are likely to fail in the current situation. This flag helps prevent the AI from making ineffective choices, such as using moves into immunities, into invulnerable states, or when the moves are otherwise hindered by abilities, terrain, or status conditions.
@ -42,8 +52,8 @@ This flag is divided into two components to calculate the best available move fo
This is different to `AI_FLAG_CHECK_BAD_MOVE` as it calculates how poor a move is and not whether it will fail or not.
## `AI_FLAG_SETUP_FIRST_TURN`
AI will prioritize using setup moves on the first turn. These include stat buffs, field effects, status moves, etc.
## `AI_FLAG_FORCE_SETUP_FIRST_TURN`
AI will prioritize using setup moves on the first turn at the expense of all else. These include stat buffs, field effects, status moves, etc. AI_FLAG_CHECK_VIABILITY will instead do this when the AI determines it makes sense.
This is just a flat increase without any consideration of whether it makes sense to use the move or not. For better move choice quality for those moves, `AI_FLAG_CHECK_VIABILITY` should be used.
@ -124,7 +134,10 @@ Affects when the AI chooses to switch. AI will make smarter decisions about when
* The current mon loses the 1v1 quickly and has at least ½ HP, or ¼ and Regenerator
## `AI_FLAG_ACE_POKEMON`
Marks the last Pokemon in the party as the Ace Pokemon. It will not be used unless it is the last one remaining, or is forced to be switched in (Roar, U-Turn with 1 mon remaining, etc.)
Marks the last Pokemon in the party as the Ace Pokemon. It will not be used unless it is the last one remaining, or is forced to be switched in (Roar, U-Turn with 1 mon remaining, etc.). If you are challenged by two different trainers at the same time, only the ones with this flag will have Ace Pokémon. For example vs one trainer with `AI_FLAG_ACE_POKEMON`and the other without, there will be a total of 1 Ace Pokémon.
## `AI_FLAG_DOUBLE_ACE_POKEMON`
Marks the last two Pokémon in the party as Ace Pokémon, with the same behaviour as `AI_FLAG_ACE_POKEMON`. Intented for double battles where you battle one trainer id that represents two trainers, ie Twins, Couples. If you apply this flag to trainers outside of double battles or in cases where two trainers can challenge you at the same time, it has the same behaviour. For example vs two trainers with `AI_FLAG_DOUBLE_ACE_POKEMON` there will be a total of 4 Ace Pokémon.
## `AI_FLAG_OMNISCIENT`
AI has full knowledge of player moves, abilities, and hold items, and can use this knowledge when making decisions.

File diff suppressed because it is too large Load Diff

View File

@ -44,7 +44,7 @@ SINGLE_BATTLE_TEST("Stun Spore inflicts paralysis")
TURN { MOVE(player, MOVE_STUN_SPORE); } // 3.
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_STUN_SPORE, player);
MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); // 4
MESSAGE("The opposing Wobbuffet is paralyzed, so it may be unable to move!"); // 4
STATUS_ICON(opponent, paralysis: TRUE); // 4.
}
}
@ -86,7 +86,7 @@ SINGLE_BATTLE_TEST("Stun Spore does not affect Grass-types")
TURN { MOVE(player, MOVE_STUN_SPORE); } // 3.
} SCENE {
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_STUN_SPORE, player); // 4.
MESSAGE("It doesn't affect Foe Oddish…"); // 5.
MESSAGE("It doesn't affect the opposing Oddish…"); // 5.
}
}
```
@ -226,7 +226,7 @@ SINGLE_BATTLE_TEST("Paralysis has a 25% chance of skipping the turn")
} WHEN {
TURN { MOVE(player, MOVE_CELEBRATE); }
} SCENE {
MESSAGE("Wobbuffet is paralyzed! It can't move!");
MESSAGE("Wobbuffet couldn't move because it's paralyzed!");
}
}
```
@ -428,7 +428,7 @@ Spaces in pattern match newlines (\n, \l, and \p) in the message.
Often used to check that a battler took its turn but it failed, e.g.:
```
MESSAGE("Wobbuffet used Dream Eater!");
MESSAGE("Foe Wobbuffet wasn't affected!");
MESSAGE("The opposing Wobbuffet wasn't affected!");
```
### `STATUS_ICON`
@ -452,7 +452,7 @@ Causes the test to fail if the `SCENE` command succeeds before the following com
```
// Our Wobbuffet does not Celebrate before the foe's.
NOT MESSAGE("Wobbuffet used Celebrate!");
MESSAGE("Foe Wobbuffet used Celebrate!");
MESSAGE("The opposing Wobbuffet used Celebrate!");
```
**NOTE**: If this condition fails, the viewable ROM freezes at the NOT command.
**WARNING: `NOT` is an alias of `NONE_OF`, so it behaves surprisingly when applied to multiple commands wrapped in braces.**
@ -467,7 +467,7 @@ Causes the test to fail unless one of the `SCENE` commands succeeds.
```
ONE_OF {
MESSAGE("Wobbuffet used Celebrate!");
MESSAGE("Wobbuffet is paralyzed! It can't move!");
MESSAGE("Wobbuffet couldn't move because it's paralyzed!");
}
```
@ -482,9 +482,9 @@ Causes the test to fail if one of the `SCENE` commands succeeds before the comma
// Our Wobbuffet does not move before the foe's.
NONE_OF {
MESSAGE("Wobbuffet used Celebrate!");
MESSAGE("Wobbuffet is paralyzed! It can't move!");
MESSAGE("Wobbuffet couldn't move because it's paralyzed!");
}
MESSAGE("Foe Wobbuffet used Celebrate!");
MESSAGE("The opposing Wobbuffet used Celebrate!");
```
### `PLAYER_PARTY`

BIN
graphics/balls/strange.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
237 28 36
251 239 143
247 228 69
234 209 76
222 186 48
160 113 22
255 255 16
213 222 32
255 255 255
222 153 4
222 171 55
230 188 67
247 210 69
0 0 0
0 0 0
0 0 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
237 28 36
185 255 175
142 243 140
56 177 78
78 214 109
48 126 26
44 177 68
65 206 48
8 248 0
24 189 2
90 189 77
97 210 101
137 226 120
0 0 0
0 0 0
0 0 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
237 28 36
253 242 242
251 225 225
255 210 226
255 198 218
255 181 206
244 159 183
247 187 187
249 210 210
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1003 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
237 28 36
213 206 232
206 186 224
203 168 232
204 145 230
192 87 219
156 51 183
111 36 130
210 51 171
247 4 107
67 21 79
203 113 225
0 0 0
0 0 0
0 0 0
0 0 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
255 0 0
140 214 132
115 181 132
115 181 99
90 148 90
90 148 74
74 115 41
74 107 57
57 82 24
49 82 41
66 74 33
33 57 16
41 49 16
49 41 8
16 24 0
140 222 173

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 B

After

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
180 180 180
164 226 197
238 242 230
139 170 180
8 113 115
0 157 156
106 222 172
41 182 189
90 206 172
90 182 180
8 0 0
65 190 189
115 194 189
0 117 131
0 129 131
0 12 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
246 246 246
255 0 255
255 0 255
255 0 255
255 0 255
213 180 82
172 131 41
148 106 16
98 49 0
255 0 255
255 0 255
255 255 123
255 238 41
213 180 0
139 98 0
16 16 16

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
246 246 246
255 0 255
255 0 255
255 0 255
255 0 255
205 180 180
172 148 148
148 115 123
106 49 123
255 0 255
255 0 255
255 255 222
255 255 115
246 180 41
164 82 0
16 16 16

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 371 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
123 156 180
255 255 255
222 222 238
197 197 213
148 148 172
255 123 115
205 41 32
123 41 49
172 172 205
131 131 172
90 90 131
41 57 57
148 164 164
115 131 131
82 98 98
0 0 0

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
123 156 180
255 255 255
238 222 230
222 189 213
197 156 189
49 180 255
0 115 189
123 41 49
172 172 205
131 131 172
90 90 131
41 57 57
205 115 98
172 82 65
131 41 24
0 0 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 602 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

View File

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

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
213 213 189
255 0 255
255 0 255
255 0 255
98 148 255
65 115 230
16 65 180
24 24 106
222 98 98
139 49 49
16 16 16
255 222 255
238 180 230
180 123 180
123 57 131
255 255 255

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 860 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
148 172 156
74 74 65
106 106 106
139 139 139
172 172 172
57 57 65
123 106 106
156 139 139
189 172 172
222 205 205
255 255 255
172 57 74
222 106 106
255 131 131
106 189 255
0 0 0

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
148 172 156
32 90 90
65 123 115
90 156 148
148 197 205
74 41 24
123 123 90
156 156 123
189 189 156
222 222 197
255 255 255
172 57 74
222 106 106
255 131 131
255 123 82
0 0 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 924 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
205 205 172
255 255 255
213 131 255
180 98 230
139 57 180
82 32 106
255 246 197
255 238 164
238 197 90
197 156 82
139 106 65
255 0 255
213 213 213
123 123 123
90 90 90
0 0 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 848 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
205 205 172
255 255 255
255 131 164
230 98 139
189 57 106
115 32 65
255 238 230
255 222 213
238 189 180
222 123 131
189 82 90
255 0 255
213 213 213
123 123 123
90 90 90
16 16 16

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 864 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
230 230 230
255 255 255
222 222 222
180 180 180
90 90 90
213 180 82
172 131 41
139 98 16
98 49 0
255 0 255
255 0 255
255 255 123
255 238 41
213 180 0
139 98 0
16 16 16

Binary file not shown.

After

Width:  |  Height:  |  Size: 842 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
230 230 230
255 255 255
222 222 222
180 180 180
90 90 90
230 123 189
189 82 148
131 41 106
82 0 41
255 0 255
255 0 255
255 205 74
213 172 0
172 115 0
123 32 0
16 16 16

View File

Before

Width:  |  Height:  |  Size: 514 B

After

Width:  |  Height:  |  Size: 514 B

View File

Before

Width:  |  Height:  |  Size: 815 B

After

Width:  |  Height:  |  Size: 815 B

View File

Before

Width:  |  Height:  |  Size: 484 B

After

Width:  |  Height:  |  Size: 484 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 685 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
115 205 139
255 255 255
131 131 148
197 197 213
255 164 131
255 98 65
131 32 8
172 213 255
115 180 238
98 139 197
65 106 156
238 246 255
222 222 238
172 180 197
41 57 90
0 0 0

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
115 205 139
255 255 255
131 131 148
197 197 213
255 164 131
255 98 65
131 32 8
255 238 131
255 205 98
222 172 65
156 106 0
238 246 255
222 222 238
172 180 197
123 74 0
0 0 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 B

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
205 205 172
255 255 255
255 238 74
255 197 16
213 148 0
148 74 0
255 0 255
230 230 230
172 172 172
98 106 106
16 16 16
255 98 0
197 65 0
139 32 0
90 0 0
255 0 255

View File

@ -0,0 +1,19 @@
JASC-PAL
0100
16
205 205 172
255 255 255
246 180 213
213 148 180
189 115 156
139 82 106
255 0 255
230 230 230
172 172 172
98 106 106
16 16 16
131 205 246
65 106 205
32 65 156
49 74 139
255 0 255

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